Мердевинска логика

Из Википедије, слободне енциклопедије
Део "ladder" дијаграма, укључујући контакте и калеме, компараторе, тајмере и моностабилне мултивибраторе

Мердевинска логика је програмски језик који представља програм преко графичког дијаграма заснованом на шеми кола релејског хардвера. Углавном се користи за развој софтвера за програмабилне логичке контролере (PLC-ove) који се користе у сврхе индустријске контроле. Име је засновано на чињеници да програми у овом језику личе на мердевине.

Преглед[уреди]

Аргумент који је помогао почетном коришћењу мердевинске логике је да би велики број инжињера и техничара могао је разуме и користи без додатне обуке, због сличности са познатим харверским системима.[1] Овај аргумент је постао мање важан због тога што већина програмера мердевинске логије већ има искуство у традиционалним програмским језицима, а и у пракси, имплементације мердевинске логике имају каракетеристике као што су секвенцијално извршавање и подршка за контролу тока, што чини аналогију са хардвером непрецизном.

Мердевинска логика се често користи за програмирање PLC-ова, где је потребна секвенцијална контрола процеса или производне операције. Мердевинска логика је корисна за просте али важне контролне системе или за прераду старих хардверских релејских мрежа. Како су програмабилни логички контролери постали комплекснији могуће их је користити и у сложеним системима за аутоматизацију. Често се програм мердевинске логике користи заједно са корисничким интерфејсом на радном компјутеру.

Произвођачи програмабилних логичких контролера обично такође достављају и повезани систем за програмирање у мердевинској логици. Обично језици мердевинске логике два различита произвођача неће бити комплетно компатибилни; мердевинску логику је боље схватити као скуп блиских програмских језика, него као један јединствен програмски језик. (IEC 61131-3 стандард је помогао да се непотребне разлике умање, али превођење програма између система и даље захтева незанемарњив труд.) Чак и различити модели програмабилних контролера из исте породице могу имати различиту мердевинску нотацију тако да се програми не могу транспарентно користити на више модела.

Мердевинска логика се представља као језик заснован на правилима, а не као процедурални програмски језик. Лествица на мердевини представља правило. Када је логика имплементирана преко релеја и других електромеханичких уређаја, дефинисана правила се „покрећу“ сместа паралелно. Имплементације преко програмабилних логичких контролера типично извршавају секвенцијално, у непрекидној петљи. Извршавањем петље довољно брзо, обично много пута у секунди, ефекат симултаног и непосредног извршавања је присутан, унутар толеранције (времена које је потребно да се изврши свако правило у дијаграму, време скенирања). Некако је сличан другим језицима заснованим на правилима, као што су табеле или SQL. Међутим, правилно коришћење програмабилних контролера захтева разумевање ограничења редоследа извршавања правила.

Примери простих мердевинских програма[уреди]

Сам језик може се приказати као скуп веза између логичких провера (контаката) и актера (калема). Ако се може пронаћи путања од леве стране лествице до излаза, кроз „тачне“ (затворене) контакте, лествица је „тачна“ и бит излазног калема постаје 1 ("тачан"). Ако се таква путања не може пронаћи, онда је излаз 0 ("нетачан") и калем (звог аналогије са електромеханичким калемом) се сматра не-напојеним. Аналогија између логичког статуса и статуса рејелских контакта је због дела Клод Елвуд Шенон-а.

Мердевинска логија има контакте који спајају или раздвајају кола да би управљали калемима. Сваки калем или контакт је повезан са статусом једног бита у меморији програмабилног контролера. Насупрот електромеханичким релејима, мердевински програм може један бит користити неограничен број пута, еквивалент релеју са безброј контаката.

Такозвани „контакти“ могу реферисати на физичке улазе у програмабилни контролер од стране уређаја као што су дугмад и прекидачи преко интегрисаног или екстерног модула за улаз, или могу представљати статус неког интерног бита који се генерише на неком другом месту у програму.

Свака лествица мердевинског језика обично има један калем на десној страни. Неки произвођачи дозвољавају и више од једног излазног калема по лествици.

  • —()— Обичан калем, који је напајан када је лествица затворена.
  • —(\)— Негативан, или „НЕ“ калем, напајан када је његова лествица отворена.
  • —[]— Обичан контакт, затворен када је његов повезан калем или улаз који га контролише напајан.
  • —[\]— Негативан, или „НЕ“ контакт, који је отворен када је његов повезан калем или контролишући улаз напајан.

Тај „калем“ (излаз лествице) може представљати физички излаз који управља неким уређајем који је повезан на програмабилни контролер, или може представљати интерни бит који ће се користити на неком другом месту у програму.

Примери[уреди]

Ево примера како може изгледати једна лествица у програму мердевинске логике. У стварним програмима, може бити стотине или хиљаде оваквих лествица.

На пример:

 1. ----[]---------|--[]--|------()
         X          |   Y   |       S
                    |       |
                    |--[]--|
                        Z

Ова лествица реализује функцију S = X AND (Y OR Z )

Обично, сложена мердевинска логика се „чита“ са лева на десно, и одозго на доле. Како се евалуира свака лествица (линија), излазни калем те лествице може се пребацити на следећу фазу мердевине као улаз. У сложеном систему биће много „лествица“ на мердевинама, који су набројани у редоследу евалуације.

 1. ----[]-----------|---[]---|----()
         X            |    Y    |     S
                      |         |
                      |---[]---|
                           Z
 2. ----[]----[]-------------------()
         S      X                     T 

2. T = S AND X

Ово представља мало сложенији систем за лествицу 2. После евалуације прве линије, излазни калем (S) се пребацује у лествицу 2 као улаз, која се после евалуира и излазни калем Т се може користити као контролер неког урежаја (звоно, светло, итд.) или као улаз лествице 3 на мердевинама. (Приметите да контакт X на 2. лествици нема никакву корисну сврху, пошто је X већ дефинисано у „И“ функцији од S из прве лествице.)

Овакав систем дозвољава да се веома сложена логика раздвоји у мање целине и изврши.

Следе практичнији примери мердевинске логике:


 ------[]--------------[]----------------()
  Key Switch 1      Key Switch 2       Door Motor

Ово коло показује 2 прекидача (активираних кључем) који радници обезбеђења могу користити да активирају електрични мотор на вратима сефа у банци. Када се обично отворени контакти на оба прекидача затворе, струја може тећи до мотора који ће отворити врата. Ово је функција Логичко И.

                             +-------+    
 ----------------------------+       +----
                             +-------+      
                          Remote Receiver

 --|-------[]-------+-----------------()
   |                 | 
   |-------[]-------|
      Interior Unlock

Ово коло приказује 2 ствари које могу покренути аутоматску браву аутомобила. Даљински рисивер је увек напајан. Брава соленоид добија напајање када је било који од контаката затворен. Ово је функција Логичко ИЛИ.

Често постоји мало зелено „старт“ дугме које покреће мотор, а желимо да га угасимо са великим, црвеним „стоп“ дугметом. То стоп дугме ће бити намештено као прекидач који је нормално затворен. То значи да када је стоп дугме у свом нормалном стању (није притиснуто), улаз PLC-а ће бити тачан. Када се притисне стоп дугме, тај улаз ће постати нетачан. Ово ће учинити ја лествица постане нетачна, и зауставиће "run" излаз. У дијаграму се мора користити нормално отворен контакт, пошто је овај улаз нормално уклјучен преко норлано затвореног притисног дугмета, а гаси се када је дугме притиснуто.

 --+----[]--+----[]---()
   |   start |    stop   run   
   |         |                 
   +----[]--+                 
        run                    
                               
 -------[]--------------()
        run             motor  

Овако намештена реза је чест идиом у мердевинској логици. Кључ разумевања овакве резе је да се примети да је „старт“ дугме моментално (чим корисник отпусти дугме, прекидач је поново отворен. Чим се "run" соленоид укључи, он затвара "run" прекидач, што пребаци соленоид у укљулено стање. После тога, отварање „старт“ прекидача нема ефекта.

Додатна функционалност[уреди]

Додатна функционалност може бити додата у имплементацију мердевинске логике од стране произвођача PLC-а као специјалан блок. Када се такав специјални блок укључи, он извршава инструкције на претходно дефинисаним параметрима. Ти параметри могу бити приказани унутар специјалног блока.

                             +-------+    
 -----[]--------------------+  A    +----
  Remote Unlock              +-------+      
                          Remote Counter  
                                          
                             +-------+    
 -----[]--------------------+  B    +----
  Interior Unlock            +-------+      
                         Interior Counter 
                                            
                     +--------+           
 --------------------+ A + B  +-----------
                     + into C +             
                     +--------+             
                        Adder              

У овом примеру, систем ће бројати колико пута су притиснути интерно и даљинско дугме за откључавање. Та информација ће се сместити у меморијске локације А и B. Меморијска локација C ће садржати укупан број колико су се пута врата електронски откључала. PLC-ови имају много врста специјалних блокова. Међу њима могу бити тајмери, аритметичке операције и поређења, увид у податке табела, обрада текста, филтрирање, итд. Моћнији PLC-ови могу радити над групом интерних меморијских локација и извршити операцију на скупу адреса, на пример, како би симулирали Коначан аутомат. У неким случајевима, корисници могу дефинисати своје специјалне блокове, који се понашају као функције или макрои. Велика бибилотека специјалних блокова, као и брзо њихово извршавање је дозволило програмабилним контролерима да имплементирају веома сложене аутоматизоване системе.

Ограничења и напреднији језици[уреди]

Мердевинска нотација је најприкладнија за проблеме контроле где су једино захтеване бинарне променљиве, и где је секвенца извршавања примарни проблем контроле. Пошто је извршавање лествица унутар програма секвенцијално, и може бити недефинисано унутар лествице, неке логички проблеми утркивања су могући, и који би изазвали неочекиване резултате. Комплексне лествице је најбоље разбити у неколико простијих корака како би се овај проблем избегао. Неки произвођачи избегавају овај проблем тако што експлицитно и комплетно дефинишу извршавање унутар једне лествице, али програмери и тада могу имати проблема у комплетном схватању реултујућих сложених интеракција.

Аналогне количине и аритметичке операције се тешко исказују у мердевинској логици и сваки произвођач има другачије начине проширивања нотације за ове проблеме. Обично постоји веома ограничена подршка за низове и петље, често изазивајући копирање кода како би се изразили сложени случајеви, који би у другим језицима користили индексиране променљиве.

Како су микропроцесори постали све моћнији, нотације као што су секвенцијални функцијски дијаграми и функцијски блок дијаграми могу заменити мердевинску логику за неке ограничене употребе. Веома велики програмски контролери могу имати цело, или део програмирања одражен у неком дијалекту који је сличан језицима BASIC или Програмски језик C, или неком другом програмском језику који има подршку за рад у оркужењу у реалном времену.

Види још[уреди]

Референце[уреди]

  1. ^ Едвард Камен Индустријске контроле и производња, (Академски лист, 1999) ISBN 0-12-394850-9, Поглавље 8 Дијаграми мердевинске логике и PLC имплементације

Спољашње везе[уреди]