Pređi na sadržaj

Merdevinska logika

S Vikipedije, slobodne enciklopedije
Deo "ladder" dijagrama, uključujući kontakte i kaleme, komparatore, tajmere i monostabilne multivibratore

Merdevinska logika je programski jezik koji predstavlja program preko grafičkog dijagrama zasnovanom na šemi kola relejskog hardvera. Uglavnom se koristi za razvoj softvera za programabilne logičke kontrolere (PLC-ove) koji se koriste u svrhe industrijske kontrole. Ime je zasnovano na činjenici da programi u ovom jeziku liče na merdevine.

Pregled[uredi | uredi izvor]

Argument koji je pomogao početnom korišćenju merdevinske logike je da bi veliki broj inžinjera i tehničara mogao je razume i koristi bez dodatne obuke, zbog sličnosti sa poznatim harverskim sistemima.[1] Ovaj argument je postao manje važan zbog toga što većina programera merdevinske logije već ima iskustvo u tradicionalnim programskim jezicima, a i u praksi, implementacije merdevinske logike imaju karaketeristike kao što su sekvencijalno izvršavanje i podrška za kontrolu toka, što čini analogiju sa hardverom nepreciznom.

Merdevinska logika se često koristi za programiranje PLC-ova, gde je potrebna sekvencijalna kontrola procesa ili proizvodne operacije. Merdevinska logika je korisna za proste ali važne kontrolne sisteme ili za preradu starih hardverskih relejskih mreža. Kako su programabilni logički kontroleri postali kompleksniji moguće ih je koristiti i u složenim sistemima za automatizaciju. Često se program merdevinske logike koristi zajedno sa korisničkim interfejsom na radnom kompjuteru.

Proizvođači programabilnih logičkih kontrolera obično takođe dostavljaju i povezani sistem za programiranje u merdevinskoj logici. Obično jezici merdevinske logike dva različita proizvođača neće biti kompletno kompatibilni; merdevinsku logiku je bolje shvatiti kao skup bliskih programskih jezika, nego kao jedan jedinstven programski jezik. (IEC 61131-3 standard je pomogao da se nepotrebne razlike umanje, ali prevođenje programa između sistema i dalje zahteva nezanemarnjiv trud.) Čak i različiti modeli programabilnih kontrolera iz iste porodice mogu imati različitu merdevinsku notaciju tako da se programi ne mogu transparentno koristiti na više modela.

Merdevinska logika se predstavlja kao jezik zasnovan na pravilima, a ne kao proceduralni programski jezik. Lestvica na merdevini predstavlja pravilo. Kada je logika implementirana preko releja i drugih elektromehaničkih uređaja, definisana pravila se „pokreću“ smesta paralelno. Implementacije preko programabilnih logičkih kontrolera tipično izvršavaju sekvencijalno, u neprekidnoj petlji. Izvršavanjem petlje dovoljno brzo, obično mnogo puta u sekundi, efekat simultanog i neposrednog izvršavanja je prisutan, unutar tolerancije (vremena koje je potrebno da se izvrši svako pravilo u dijagramu, vreme skeniranja). Nekako je sličan drugim jezicima zasnovanim na pravilima, kao što su tabele ili SQL. Međutim, pravilno korišćenje programabilnih kontrolera zahteva razumevanje ograničenja redosleda izvršavanja pravila.

Primeri prostih merdevinskih programa[uredi | uredi izvor]

Sam jezik može se prikazati kao skup veza između logičkih provera (kontakata) i aktera (kalema). Ako se može pronaći putanja od leve strane lestvice do izlaza, kroz „tačne“ (zatvorene) kontakte, lestvica je „tačna“ i bit izlaznog kalema postaje 1 ("tačan"). Ako se takva putanja ne može pronaći, onda je izlaz 0 ("netačan") i kalem (zvog analogije sa elektromehaničkim kalemom) se smatra ne-napojenim. Analogija između logičkog statusa i statusa rejelskih kontakta je zbog dela Klod Elvud Šenon-a.

Merdevinska logija ima kontakte koji spajaju ili razdvajaju kola da bi upravljali kalemima. Svaki kalem ili kontakt je povezan sa statusom jednog bita u memoriji programabilnog kontrolera. Nasuprot elektromehaničkim relejima, merdevinski program može jedan bit koristiti neograničen broj puta, ekvivalent releju sa bezbroj kontakata.

Takozvani „kontakti“ mogu referisati na fizičke ulaze u programabilni kontroler od strane uređaja kao što su dugmad i prekidači preko integrisanog ili eksternog modula za ulaz, ili mogu predstavljati status nekog internog bita koji se generiše na nekom drugom mestu u programu.

Svaka lestvica merdevinskog jezika obično ima jedan kalem na desnoj strani. Neki proizvođači dozvoljavaju i više od jednog izlaznog kalema po lestvici.

  • —()— Običan kalem, koji je napajan kada je lestvica zatvorena.
  • —(\)— Negativan, ili „NE“ kalem, napajan kada je njegova lestvica otvorena.
  • —[]— Običan kontakt, zatvoren kada je njegov povezan kalem ili ulaz koji ga kontroliše napajan.
  • —[\]— Negativan, ili „NE“ kontakt, koji je otvoren kada je njegov povezan kalem ili kontrolišući ulaz napajan.

Taj „kalem“ (izlaz lestvice) može predstavljati fizički izlaz koji upravlja nekim uređajem koji je povezan na programabilni kontroler, ili može predstavljati interni bit koji će se koristiti na nekom drugom mestu u programu.

Primeri[uredi | uredi izvor]

Evo primera kako može izgledati jedna lestvica u programu merdevinske logike. U stvarnim programima, može biti stotine ili hiljade ovakvih lestvica.

Na primer:

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

Ova lestvica realizuje funkciju S = X AND (Y OR Z )

Obično, složena merdevinska logika se „čita“ sa leva na desno, i odozgo nadole. Kako se evaluira svaka lestvica (linija), izlazni kalem te lestvice može se prebaciti na sledeću fazu merdevine kao ulaz. U složenom sistemu biće mnogo „lestvica“ na merdevinama, koji su nabrojani u redosledu evaluacije.

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

2. T = S AND X

Ovo predstavlja malo složeniji sistem za lestvicu 2. Posle evaluacije prve linije, izlazni kalem (S) se prebacuje u lestvicu 2 kao ulaz, koja se posle evaluira i izlazni kalem T se može koristiti kao kontroler nekog urežaja (zvono, svetlo, itd.) ili kao ulaz lestvice 3 na merdevinama. (Primetite da kontakt X na 2. lestvici nema nikakvu korisnu svrhu, pošto je X već definisano u „I“ funkciji od S iz prve lestvice.)

Ovakav sistem dozvoljava da se veoma složena logika razdvoji u manje celine i izvrši.

Slede praktičniji primeri merdevinske logike:


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

Ovo kolo pokazuje 2 prekidača (aktiviranih ključem) koji radnici obezbeđenja mogu koristiti da aktiviraju električni motor na vratima sefa u banci. Kada se obično otvoreni kontakti na oba prekidača zatvore, struja može teći do motora koji će otvoriti vrata. Ovo je funkcija Logičko I.

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

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

Ovo kolo prikazuje 2 stvari koje mogu pokrenuti automatsku bravu automobila. Daljinski risiver je uvek napajan. Brava solenoid dobija napajanje kada je bilo koji od kontakata zatvoren. Ovo je funkcija Logičko ILI.

Često postoji malo zeleno „start“ dugme koje pokreće motor, a želimo da ga ugasimo sa velikim, crvenim „stop“ dugmetom. To stop dugme će biti namešteno kao prekidač koji je normalno zatvoren. To znači da kada je stop dugme u svom normalnom stanju (nije pritisnuto), ulaz PLC-a će biti tačan. Kada se pritisne stop dugme, taj ulaz će postati netačan. Ovo će učiniti ja lestvica postane netačna, i zaustaviće "run" izlaz. U dijagramu se mora koristiti normalno otvoren kontakt, pošto je ovaj ulaz normalno uključen preko norlano zatvorenog pritisnog dugmeta, a gasi se kada je dugme pritisnuto.

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

Ovako nameštena reza je čest idiom u merdevinskoj logici. Ključ razumevanja ovakve reze je da se primeti da je „start“ dugme momentalno (čim korisnik otpusti dugme, prekidač je ponovo otvoren. Čim se "run" solenoid uključi, on zatvara "run" prekidač, što prebaci solenoid u ukljuleno stanje. Posle toga, otvaranje „start“ prekidača nema efekta.

Dodatna funkcionalnost[uredi | uredi izvor]

Dodatna funkcionalnost može biti dodata u implementaciju merdevinske logike od strane proizvođača PLC-a kao specijalan blok. Kada se takav specijalni blok uključi, on izvršava instrukcije na prethodno definisanim parametrima. Ti parametri mogu biti prikazani unutar specijalnog bloka.

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

U ovom primeru, sistem će brojati koliko puta su pritisnuti interno i daljinsko dugme za otključavanje. Ta informacija će se smestiti u memorijske lokacije A i B. Memorijska lokacija C će sadržati ukupan broj koliko su se puta vrata elektronski otključala. PLC-ovi imaju mnogo vrsta specijalnih blokova. Među njima mogu biti tajmeri, aritmetičke operacije i poređenja, uvid u podatke tabela, obrada teksta, filtriranje, itd. Moćniji PLC-ovi mogu raditi nad grupom internih memorijskih lokacija i izvršiti operaciju na skupu adresa, na primer, kako bi simulirali Konačan automat. U nekim slučajevima, korisnici mogu definisati svoje specijalne blokove, koji se ponašaju kao funkcije ili makroi. Velika bibiloteka specijalnih blokova, kao i brzo njihovo izvršavanje je dozvolilo programabilnim kontrolerima da implementiraju veoma složene automatizovane sisteme.

Ograničenja i napredniji jezici[uredi | uredi izvor]

Merdevinska notacija je najprikladnija za probleme kontrole gde su jedino zahtevane binarne promenljive, i gde je sekvenca izvršavanja primarni problem kontrole. Pošto je izvršavanje lestvica unutar programa sekvencijalno, i može biti nedefinisano unutar lestvice, neke logički problemi utrkivanja su mogući, i koji bi izazvali neočekivane rezultate. Kompleksne lestvice je najbolje razbiti u nekoliko prostijih koraka kako bi se ovaj problem izbegao. Neki proizvođači izbegavaju ovaj problem tako što eksplicitno i kompletno definišu izvršavanje unutar jedne lestvice, ali programeri i tada mogu imati problema u kompletnom shvatanju reultujućih složenih interakcija.

Analogne količine i aritmetičke operacije se teško iskazuju u merdevinskoj logici i svaki proizvođač ima drugačije načine proširivanja notacije za ove probleme. Obično postoji veoma ograničena podrška za nizove i petlje, često izazivajući kopiranje koda kako bi se izrazili složeni slučajevi, koji bi u drugim jezicima koristili indeksirane promenljive.

Kako su mikroprocesori postali sve moćniji, notacije kao što su sekvencijalni funkcijski dijagrami i funkcijski blok dijagrami mogu zameniti merdevinsku logiku za neke ograničene upotrebe. Veoma veliki programski kontroleri mogu imati celo, ili deo programiranja odražen u nekom dijalektu koji je sličan jezicima BASIC ili Programski jezik C, ili nekom drugom programskom jeziku koji ima podršku za rad u orkuženju u realnom vremenu.

Vidi još[uredi | uredi izvor]

Reference[uredi | uredi izvor]

  1. ^ Edvard Kamen Industrijske kontrole i proizvodnja, (Akademski list, 1999) ISBN 978-0-12-394850-2, Poglavlje 8 Dijagrami merdevinske logike i PLC implementacije

Spoljašnje veze[uredi | uredi izvor]