Loading... Please wait...

RsLogix Lesson - Basic XIC, XIO, and OTE Instructions

Allen Bradley has done an excellent job of making RsLogix 500 graphically pleasing and easy to use.  If you need help downloading and installing RsLogix 500 then click here.

1.  We are going to start from scratch so open up RsLogix 500 and select File > New

2.  The following dialog will pop up.  I recommend naming your processor to help you identify it later.  After that select you processor.  Bizarrely I've never figured out what order these processors are in so you have to do a little hunting.  For this example we will be using the "Bul.1763 Micrologix 1100 Series B".

rslogixnew01.png

 

2.  We could go through a boring overview of what everything that you are looking at now. but you wouldn't remember most of it.  I prefer to just get started and address features as the become relevent.  So we are going to start writing a basic program.  There is one hitch at this point that stumps many beginners of RsLogix 500.  You most have "focus" on the main window to begin adding instructions to it.  By default focus is on the left pane when you create a new program.  So single click the blue area noted below to bring focus to the main window.  If you are trying to add instructions to your program and they "won't go down", this is the problem.

rslogixnew02.png

 

3.  First we need to add a rung to put our instructions on.   So just drag the icon circled below into the green box that is circled.  The green box won't be there until you start drigging the new rung icon down.  If the green box doesn't appear, refer back to step 2.

rslogixnew03.png

 

4.  Next drag the XIC icon circled to the green block that is circled.

rslogixnew04.png

 

5.  Continue dragging icons down until you program looks like this.

rslogixnew05.png

 

6.  Now we must assign addresses to our instructions.  Highlight the first instruction and type "I:0/0" and press enter.

rslogixnew06a.png

 

7.  It will pop up a dialog where you can enter a description.  Enter "Toggle Switch" as a description.

rslogixnew08.png

 

8.  Now open up the "O0 Output" data file in the left pane by double clicking it so we can show you an alternate way of entering addresses until you get the hang of RsLogix 500 addressing.  The far right column of the top row is O:0/0.  Click it and drag it towards the OTE instruction of rung 0.  As you drag it, you will see red boxes appear by each instruction.  As you move closer to the OTE, you will see its box turn green.  Once it turns green, let go of your mouse button and it will assign the address you drug to that instruction.

rslogixnew08a.png

 

10.  Continue entering descriptions until you code looks like this.  DON'T skip this step.  For a beginner program descriptions may seem like a waste of time since it is "fresh in your head", but it will come in handy very soon.

rslogixnew10.png

 

11.  Once you enter all the code, click the "Verify All" icon to check your program for errors that would prevent the program from being downloaded into the PLC.  Once your code is verified, the eee's will disappear from the left side of the rungs.

rslogixnew11.png

 

12.  You are now ready to download your program.  If you need help downloading your program, click here for help connecting serially to a Micrologix PLC and click here for help connecting to a Micrologix PLC over Ethernet.

 


So what does XIC and XIO really mean and what should it mean to you


Provided by Terry Woods and www.PLCS.net

XIO... XIC... What an incredibly dumb idea that was!

XIO... 
When viewed by itself, this acronym is ambiguous...

"Examine If ON"?
"Examine If OFF"?
"Examine if OPEN"?

Only when both of the complimentary acronyms are known, does the meaning become apparent... sort of...

XIC can only mean "Examine If Closed"

Since XIO and XIC are supposed to be opposites...
if XIC means "Examine If Closed" then...
XIO, the opposite of XIC, must mean "Examine If Open".

OK... so the literal meanings of the acronyms, XIO and XIC, are understood.

Now... what is the practical meaning of those acronyms, or, for that matter, what is the practical meaning of the literal translations?

I won't even go into what symbols represent XIO and XIC; it only causes confusion.

Let's just jump into the concept. The concept involves the state of a particular, "imaginary", double-throw relay.

In their infinite wisdom, the originators of the XIO/XIC scheme envisioned the acronyms being applied to the state of a pair of contacts in an imaginary, single-pole, double-throw relay. In this kind of relay, there are two outputs. One output comes from the normally closed contact (--|/|--), the other from the normally open contact (--| |--).

If we assume that the common terminal is always Hot (ON), then, when the relay is OFF, the output from the normally closed contact (--|/|--) is Hot (ON). The output from the normally open contact (--| |--) is Not-Hot (OFF).

When the relay is ON, the ouput from the normally closed contact (--|/|--) is Not-Hot (OFF) and the output from the normally open contact (--| |--) is Hot (ON).

Now... looking at it a bit backwards, it can be seen that, if the normally closed contact (--|/|--) is Hot, then the relay must be OFF. If the normally open contact (--| |--) is Hot, then the relay must be ON.

Ultimately, the purpose in this madness is to determine the state of the signal that controls the relay. That is...
Is the signal to the relay ON, or...
Is the signal to the relay OFF.

So now... how is the state of that signal ascertained?

The scheme says that you can determine the state of the signal to the relay by "examining" the state of the output signals from the contacts. 

Now remember,...

...if the relay is OFF...
the normally closed contact (--|/|--) is Hot (ON), and the normally open contact (--| |--) is Not-Hot (OFF).

...if the relay is ON...
the normally closed contact (--|/|--) is Not-Hot (OFF), and the normally open contact (--| |--) is Hot (ON).

It should be immediately apparent that the state of the relay signal can be determined by "seeing" the ON/OFF state of either contact... as long as you know which contact you are looking at.

That is...
...if the normally open contact (--| |--) is Not-Hot (OFF) then the relay signal is OFF.
...if the normally open contact (--| |--) is Hot (ON) then the relay signal is ON.

On the other hand...
...if the normally closed contact (--|/|--) is Hot (ON) then the relay signal is OFF.
...if the normally closed contact (--|/|--) is Not-Hot (OFF) then the relay signal is ON.

Basic Electrical Wiring, using normal relay logic, requires a "hot path" from the left rail (HOT) to the output in order to turn on the output.
 


Relay
N.C. <-- "Normally Closed"
Contact
--|/|-------( ) Indicator Light #1 (Relay is OFF)


.
In the example above, if the relay is OFF then the output from the normally closed contact is Hot (ON); the output will turn ON.
 


Relay
N.O. <-- "Normally Open"
Contact
--| |-------( ) Indicator Light #2 (Relay is ON)


.
In this example, if the relay is ON then the output from the normally open contact is Hot (ON); the output will turn ON.

In the first example, if Indicator Light #1 goes ON then it can do so only because the normally closed contact is Hot (ON). If the normally closed contact is Hot (ON) then that can only be because the relay is OFF.

In the second example, if Indicator Light #2 goes ON then it can do so only because the normally open contact is Hot (ON). If the normally open contact is Hot (ON) then that can only be because the relay is ON.

Indicator Light #1 will go ON only if the relay is OFF. Indicator Light #2 will go ON only if the relay is ON.

That is...
If the relay is OFF, then Indicator Light #1 will be ON and Indicator Light #2 will be OFF.
If the relay is ON, then Indicator Light #1 will be OFF and Indicator Light #2 will be ON.

Now here are a couple of interesting things to notice...

First, in the examples above, the contacts controlling the lights have two different names...
The first is called "Relay N.O. Contact" and the second is called "Relay N.C. Contact".

It should be clear to see that power to the lights is being controlled by two separate entities, namely, a normally open contact and a normally closed contact. Even though these two contacts are within the same relay, they are in fact, two separate signals. Each signal is used to drive a particular output. Each signal "asserts" a particular status. That is, when the signal from the normally closed contact is Hot (ON) then the signal causes Indicator Light #1 to turn ON thus asserting that the relay is OFF. When the signal from the normally open contact is Hot (ON) then the signal causes Indicator Light #2 to turn ON thus asserting that the relay is ON.

Second, since the ultimate aim of the scheme is to determine the state of the relay, is it not apparent that the state of the relay can be determined by monitoring the status of only one of the contacts?

That is, because the results are mutually exclusive... both signals can not be Hot (ON) at the same time.
...if the normally open contact is Hot (ON) then the relay must be ON.
...if the normally open contact is Not-Hot (OFF) then the relay must be OFF.

...if the normally closed contact is Hot (ON) then the relay must be OFF.
...if the normally closed contact is Not-Hot (OFF) then the relay must be ON.

Notice that the state of the relay can be determined by examining the status of only one of the contacts.

If we choose to use the contact that provides the "positive" indication then we would choose the normally open contact. If the normally open contact is Not-Hot (OFF) then the relay is OFF. If the normally open contact is Hot (ON) then the relay is ON. The state of the contact signal corresponds directly to the state of the relay.

We can determine the state of the relay simply by examining the state of the normally open contact.

So, in general terms, we can say if the state of the normally open contact is Hot (ON) then the state of the relay is ON and thus we turn ON the output that indicates that the relay is ON. This is a "positive" assertion; that is, the signal to the relay is ON.

On the other hand, if the state of the normally open contact is Not-Hot (OFF) then the state of the relay is OFF and thus DO NOT turn ON the output that indicates that the relay is ON. This too is a "positive" assertion; except, in this case, the assertion is that the relay is NOT ON, i.e, the relay is OFF.

So....

Let's say that you need to know the state of the relay in order to control something... a motor, a valve, whatever.

If the relay is ON, then turn ON a valve. If the relay is OFF, then turn ON a Light.

In terms of the valve, it is simple to examine the state of the normally open contact.
 


Relay
N.O. <-- "Normally Open"
Contact
--| |-------( ) Push Valve


.
If the normally open contact is Hot (ON), then the relay is ON and so turn ON the Push Valve, otherwise, DO NOT turn ON the Push Valve.

Now... let's say we have a Light that indictaes that the relay is OFF. How do we control the light?

 

The intent is... 
If the normally open contact is Not-Hot (OFF), then turn ON the light, otherwise, DO NOT turn ON the light.

How do we construct that control? We have already decided that we are only going to monitor the status of the normally open contact to make our determinations. So how can we use the normally open contact to ascertain that the contact is Not-Hot (OFF)?

Think "International Symbols". International symbols are designed to impart the concept pictorially. That is, in those areas where farting is not allowed, there are signs that show a butt with a plume of gas expelling from the brown-eye. There is a circle (usually red) around the whole image. Then there is a diagonal slash through the circle from upper-right to lower-left. The slash indicates "NOT" as in, Not Allowed or Not Permitted.

Let's apply that model to the logic.
 


Relay
N.O. <-- "Normally Open"
Contact
--|/|-------( ) Light


.
This says... if the normally open contact is NOT ON, then turn ON the light!

Hmmm... that was simple... wasn't it? But hang on... there's more...

Since we are only examining the state of the normally open contact to determine the state of the relay we can dispel with the "N.O." in the name of the contact. We can simply say, if the "Relay Contact is ON" (--| |--), or if the "Relay Contact is OFF" (--|/|--), then do such-n-such.
 


Relay
Contact
--| |-------( ) Push Valve


.
While the N.O. Relay Contact IS ON, turn ON the Push Valve.
 


Relay
Contact
--|/|-------( ) Light


.
While the N.O. Relay Contact is NOT ON, turn ON the Light. This means, "Part is NOT present".

Hang on... there's still more...

Since the relay is controlled by something... a switch, a limit switch, a photo-eye... whatever, we can eliminate all references to that damned, convoluted imaginary relay, and go "straight to the horse's mouth"... that is, since the state of the relay indicates the state of L.S. #1...
 


L.S.#1
--| |-------( ) Push Valve


.
While L.S. #1 IS ON, then turn ON the Push Valve. 
 


L.S.#1
--|/|-------( ) Light


.
While L.S. #1 is NOTON, then turn ON the Light. 

Yeah... hang on... there's even more...

Since the state of L.S. #1 indicates something, the name of the bit that represents the state of L.S. #1 should indicate what that "something" is... for example, if L.S. #1 indicates the presence of a part at a particular location then the name of the bit should indicate so, as in...
 


Part is at
Push Location
(L.S.#1)
--| |-------( ) Push Valve


.
While a part IS present at the Part Push Location (L.S. #1 IS ON), turn ON the Push Valve.
 


Part is at
Push Location
(L.S.#1)
--|/|-------( ) Light


.
While a part is NOT present at the Part Push Location (L.S. #1 is NOT ON), turn ON the Light... this means, the "Push Location is Empy".

Now we come full circle....
 


Part is in
Push Location
(L.S.#1)
--| |-------( ) Push Valve


.
If a part IS present at the Part Push Location, then turn ON the Push Valve.
If a part is NOT present at the Push Location, then DO NOT turn ON the Push Valve (turn the Push Valve OFF).
 


Part is in
Push Location
(L.S.#1)
--|/|-------( ) Light


.
If a part is NOT present at the Part Push Location, turn ON the Light.
If a part IS present at the Push Location, then DO NOT turn ON the Light (turn the Light OFF).


So... Bottom Line....

--| |-- asks... is the "appropriately" named condition TRUE?

--|/|-- asks... is the "appropriately" named condition FALSE?

If the answer, to either question, is "YES", then power flow proceeds through that portion of the rung.

If the answer, to either question, is "NO", then power flow stops through that portion of the rung.



Positive logic asserts a named condition with the presence of a "1". That is, if the named condition is True then the signal is ON, or "1". If the named condition is NOT True then the signal is OFF, or "0".

So... Bottom, Bottom Line....

--| |-- asks... is the value of the named condition "1"?

--|/|-- asks... is the value of the named condition "0"?

Again, if the answer, to either question, is "YES", then power flow proceeds through that portion of the rung.

And again, if the answer, to either question, is "NO", then power flow stops through that portion of the rung.


If the value of the bit named "Part is in Push Location (L.S. #1)" is "1" then a part is indeed at the push location. Since a part is at the push location, turn ON the Push Valve (and leave the Light OFF).

If the value of the bit named "Part is in Push Location (L.S. #1)" is "0" then a part is NOT at the push location. Since a part is NOT at the push location, turn ON the Light (and leave the Push Valve OFF

ADDENDUM

Use Positive Logic whenever possible and reasonable to do so.
The name of an input should indicate the condition that exists when the input signal is present.

 


LS1 LS2
[ ] [ ]
/+-----+ |
|Table|
+-----+


.
This figure shows the Table at the fully retracted position. Using positive logic, LS1 is wired through the normally open contacts. Again using positive logic, when the Table is at LS1, the output from the switch is ON. This means that the input to the PLC is ON. If the LS1 input is ON, the Table is retracted.

Renaming the Limit Switch inputs to indicate the particular conditions...
 


Table is Table is
Retracted Extended
(LS1) (LS2)
[ ] [ ]
/+-----+ |
|Table|
+-----+

Table is
Retracted
(LS1)
---| |----------( ) Indicator Light, Table is Retracted
THIS INDICATOR IS ON!!!
Table is
Extended
(LS2)
---| |----------( ) Indicator Light, Table is Extended
THIS INDICATOR IS OFF!!!


.
Now, the Table is sent to the other extreme (extended). Before it arrives at LS2, the Table must first leave LS1.
 


Table is Table is
Retracted Extended
(LS1) (LS2)
[ ] [ ]
| +-----+ |
|Table|-->
+-----+

Table is
Retracted
(LS1)
---| |----------( ) Indicator Light, Table is Retracted
THIS INDICATOR IS OFF!!!
Table is
Extended
(LS2)
---| |----------( ) Indicator Light, Table is Extended
THIS INDICATOR IS OFF!!!


.
The Table now finishes the move to LS2.
 


Table is Table is
Retracted Extended
(LS1) (LS2)
[ ] [ ]
| +-----+\
|Table|
+-----+


.
This figure shows the Table at the fully extended position. Using positive logic, LS2 is wired through the normally open contacts. Again using positive logic, when the Table is at LS2, the output from the switch is ON. This means that the input to the PLC is ON. If the LS2 input is ON, the Table is extended.
 


Table is
Retracted
(LS1)
---| |----------( ) Indicator Light, Table is Retracted
THIS INDICATOR IS OFF!!!
Table is
Extended
(LS2)
---| |----------( ) Indicator Light, Table is Extended
THIS INDICATOR IS ON!!!


.
The Indicator rungs shown above use positive logic to determine the state of the indicator lights. That is, if the particular input signal is on then the corresponding indicator light is on.

Let's put a little twist into this...
 


Table is
Retracted
(LS1)
---|/|----------( ) Indicator Light, Table is NOT Retracted
This indicator light will be ON if the
Table is anywhere except fully retracted.
Table is
Extended
(LS2)
---|/|----------( ) Indicator Light, Table is NOT Extended
This indicator light will be ON if the
Table is anywhere except fully extended.