Ladder Logic1

Embed Size (px)

Citation preview

  • 8/6/2019 Ladder Logic1

    1/5

    Ladder Logic Programming

    for Programmable Logic Controllers

    What makes a PLC special? PLC's are used to automate machinery in assembly lines. For our

    project, we use the computer link feature that allows a PLC to take commands and communicatewith a host computer. If something goes wrong with the computer link, the PLC still functions

    and protecting valuable equipment.

    High Resolution Fly's Eye experiment, uses a Toshiba T1 PLC as part of a steerable lasersystem used for monitoring atmospheric clarity. We use a model TDR116-6S. The PLC was

    purchased as part of a starter kit. Specifically the PLC is used to open and close a cover thatprotects the a steering mechanism when the systems is not used. It is programmed to

    automatically close this cover after one hour unless it has received and instruction from the mainPC to keep the cover open. This means that even if the PC or network communication to the site

    fails, the cover will still close. It is also used to power cycle equipment, including the laser andthe radiometer.

    This PLC and most others use a language called relay ladder logic programming. However, if

    you've programmed in high level languages before don't be fooled by that last part. Ladder logicis not necessarily difficult. Once you get the hang of it it isn't hard at all. But.. ladder logic is

    quite different from more common programming languages such as FORTRAN or c. It's truethat ladder logic uses conditional statements, subroutines and FOR NEXT loops but there are

    some very significant differences.

    Unlike FORTRAN or c, with ladder logic, every 'rung' of the code is multithreaded. Normally ina programming language things happen in order. The command or line of code on top is

    executed before the command on the bottom until you hit the end of a loop. This is not so inladder logic. Everything happens at the same time.

  • 8/6/2019 Ladder Logic1

    2/5

    So what is ladder logic programming really like? Ladder logic programming looks, well, like aladder. It's more like a flow chart than a program. There are two vertical lines coming down the

    programming environment, one on the left and one on the right. Then, you have rungs ofconditionals on the left that lead to outputs on the right. For example:

    x0001 x0002 Y0001|---| |-----|/|---------( )-----|| || || x0001 Y002 ||---| |--[01000 TON T012]--( )--|

    | || || R001 ||--[D0140 = 0001]--------( )--|| |

    | R001 Y004 ||--| |---------------------( )--|| ||-{END}-------------------------|In Ladder logic programming you do not have variables, you have registers. There are four kinds

    of registers: X's that are inputs, Y's that are outputs, D's that are data that can form interger, hexand real numbers, and finally R's that are internal relays. X's and Y's are pointers to the

    actual terminal strip connectors (what you use a screw driver on to connect wires) on the PLC. Ifyou energize an input, let's say 5, then X0005 will have an on status; also if you give Y0023 an

    on status then relay 23 will flick on. R's are just about the same as X's and Y's except that theydon't point to any hardware. They just hold an on or off value inside of the PLC's memory. R's

    can be useful. X's Y's and R's can even hold data besides their on and off states on many PLC's,

    but personally I don't recommend it. For data like integers and hexadecimal numbers D's areused as their addresses.

    example one. The things you will probably use the most writing Ladder Logic are the relay

    conditionals --| |-- ---|/|--- and the output coils ---( )---. These three things basically make up a

    kind of IF THEN statement. This --| |-- means closed if energized while --|/|-- means closed if notenergized. The output coil --( )-- basically means then energize this. So the first rung of example

    one means that if input 1 is energized and input 2 is not then energize output 1. You should notethat on the T1, the number of a particular input or output is written on the case of the PLC but for

    T2's and for some other more advanced PLC's this is not necessarily the case. To find out whatthe addresses of your inputs and outputs are you should refer to the documentation that came

    with your PLC. Also, in most ladder logic programming environments you have to specify theaddress of each of your inputs and outputs before it will even let you start programming. [the T

    series can auto configure]

    delay timer. What this means is that after a specified amount of time after x0001 turns on, y0002

    will turn on. You should note that because of the nature of ladder logic you can not simply put atimer attached directly to the left hand side without a relay conditional between it. Remember,

    everything is happening at the same time. PLC's are meant to run on their own for long periods

  • 8/6/2019 Ladder Logic1

    3/5

    of time, so you can't just tell it that 10 seconds after it's first plugged in it should activatesomething. You have to tell it to start timing after something in the outside world has occurred,

    like the energizing or de-energizing of an input.

    In the code --[01000 TON T012]-- there is the parameter 01000 that tells the timer to wait

    1000*10ms or 10 seconds, and the parameter T012 tells the PLC which internal timer you wantto use. Some of the more advanced PLC's have timers with different accuracy. Most measuretime in 10ms intervals but others measure time in single milliseconds. You should check the

    documentation on your PLC to see if any of it's timers measure time in different units than theothers. Also you should not use the same timer for more than one thing.

    On rung three of the ladder we have a conditional statement. If the number stored in D0140 is

    equal to 1 then energize R001. If you look at the entire circuit you'll note that there is no whereelse in it where D0140 is mentioned and you should know that all data registers are set to 0 at

    default. You may think that D0140 will never actually reach the value of 1 and that R001 willnever be activated and that rung three and four are useless garbage code. It's true that during the

    normal operation of the PLC D0140 will never change from zero and the last two rungs beforeend would be useless. However, this is where the computer link function comes in. All Toshiba

    PLC's have a computer link protocol built into them. This allows a host computer, such as anysort of DOS, Linux based PC or even a Unix administrator with an RS232 serial port to send

    commands to the PLC while it's running and read or write values into its registers. This includesdata, inputs, outputs, and relays.

    Suppose that Y004 was attached to equipment that you wanted to turn it on or off at yourpleasure. Suppose it was an air conditioner or maybe some strange contraption that brought you

    a coke from the fridge to your seat at a computer. If you can write a program at your ownspecialized system that can send ASCII characters with 8 data bits 1 start bit 1 stop bit and 9600

    baud rate with odd parity, then you can manipulate the registers in the Toshiba PLC's and toggled0140 between 1 and zero or 1 and any other value. See more about the computer link function

    with a sample C program written under Linux latter. C example

    The final rung on the ladder the -{END}- is basically what it says. It's the end statement. Itdoesn't really do anything except to say, well, your done programming. However, no program

    will work without an end statement and the PLC will ignore any code put in after an endstatement. This shouldn't be a problem for small programs, just look at the screen and make sure

    the end is in there and at the bottom. If you happen to be making a very large and a verycomplicated relay circuit your editor will likely force you to write it in separate blocks. Before

    attempting to write a very large program you should go to the very last programming blockavailable to you and put the end statement there and no where else. The end statement can be

    used in debugging by ending the program early and disabling commands that fall after the endstatement.

    | X001 Y001 Y001 ||-| |---|/|---[01000 TON T002]-[01000 TOF T003]---------( )--| rung one| |

  • 8/6/2019 Ladder Logic1

    4/5

    | X001 Y002 ||--| |----+---------------------------------------------( )--| rung two| | |

    | Y002 | ||--| |----+ || X001 R006 ||--| |--|/|--[01000 TON T004]-----+-------[D150 + 1 -> D150]-| rung three

    | | R006 || +---[01000 TOF T005]--( )--|| || Y003 ||-[D150 >200]-------------------------------------------( )--| rung four| |

    | Y003 ||-| |-----------------------------------------[ 0 MOV D150]--| rung five| ||--{END}-----------------------------------------------------| END rungExample two is a bit more complicated than example one, but once you understand it you'll be

    on your way to being able to design your own relay ladder logic. Rung one is especiallyinteresting. A TON and a TOF combination that lets output Y001 cycle on and off for 10seconds at a time. While TON waits a given time before allowing an energized input to affect an

    output, TOF waits a given time before de-energizing an output after it's input has been cut off.

    Let's analyze the rung. The -| |- conditional with X001 is there for good programming, it isn'tactually necessary in this rung but if it's not there you have no way to stop the oscillating of

    Y001 during the PLC's operation. Now notice that we're not allowing current to flow if Y001 isenergized yet the output of this rung is to energize Y001. Well, if Y001 is off then current is

    passed to TON. After TON has gone through it's specified time it will energize Y001. Now thatY001 is energized current to the rung is cut off. Once the current has stopped TOF will keep

    Y001 powered for a specified amount of time before Y001 feels the affects and de-energizes.With Y001 de-energized TON is energized again and the cycle goes on. (You may want to

    reread that last sentence a few times) The output Y001 stays on for a second, then off for asecond continuously cycling.

    Rung two shows how to set up a push button. With a momentary push button, the input is onlyenergized for a short amount of time, but often it is useful to keep the rung on long afterwards.

    What you should notice about rung two is that the output is connected to the left hand side twice.If either of the two relay conditionals are on, then the output is on. Notice that one of the relay

    conditionals is the output itself. Thus if the output is powered for just one of the PLC's cycles (avery short time) then the output's own momentary on state will keep itself energized. You want

    to put in an internal relay conditional between the Y002 input and output or else you'll never beable to get it off! Well you could if you restart the PLC's program or with the computer link

    protocol.

    Rung three is also spread across two rung slots but you could get it on one rung if it would fit ( itreally doesn't all fit on one rung in the editor). It's basically like rung one except that between the

    timers is a data statement that increments D150 by one. There are other ways to increment a dataregister, but this is what I used. Because it's between the timers, the data function will only get

  • 8/6/2019 Ladder Logic1

    5/5

    power and operate once during the period of the cycle. Since most of the timers only measure inmilliseconds you can use a rung like this to measure time in hours or days if your PLC doesn't

    have any function that will do it for you.

    Rung four simply turns on an output when D150 is greater than a number i.e. a certain amount of

    time has gone by.

    Rung five sets D150 back to 0 when that output has been on momentarily. In a real application of

    something like this you'd probably want to use a TOF on rung four so that when D150 is nolonger greater than 200 Y003 will wait a moment before deactivating, other wise it will

    deactivate after one cycle of the PLC. The PLC probably goes through around a thousand cyclesper second. A cycle is when the PLC updates the on, off, and value states of the relays and

    registers.

    You should notice that I didn't just say D150=0. The = sign is already used in conditionals so

    instead you have to use a move command. The --[0 MOV D150]-- means move the value of 0

    into the register D150. There are many other data functions and ladder logic components that youcan use. So far I've only gone over what I think are the most important ones. For example, the T1also haws its own counters and flip flop's built in to use in your program. Don't be afraid to

    experiment for your self though. When you buy the starter kit a you get PLC, a ladder logiceditor and documentation including a list of all of the programming components, hardware, and

    exactly how everything works.

    by Richard C. Gray

    3209 W.9th streetLawrence, KS

    66049USA

    PhFAX

    EmailWEB

    (785) 841 3089(785) 841 0434

    [email protected]://xtronics.com

    Bookmark this

    page