Ako se PLC posmatra kao mikroprocesorski sistem, što on i jeste, onda bi se moglo očekivati da se za njegovo programiranje koriste standardni programski jezici. Međutim, ako se pođe od činjenice da je PLC projektovan kao namenski mikroprocesorski sistem za upravljanje i nadzor rada nekog procesa, i da u skladu sa tim ima poseban operativni sistem koji obezbeđuje periodično ponavljanje ciklusa, onda je logično očekivati da je za njegovo programiranje razvijen i poseban programski jezik. Kao št
To je već ranije istaknuto, PLC je početno razvijen sa idejom da zameni relejne sisteme. To znači da se očekivalo da on realizuje odgovarajuću vremensku sekvencu logičkih operacija. Pored toga, uspešna primena PLC-a u praksi, zahtevala je i da se njegovo programiranje prilagodi tehnici koja je svim korisnicima relejnih sistema dobro poznata. Iz svih ovih razloga, za projektovanje PLC-ova razvijen je programski jezik zasnovan na leder (lestvičastim) dijagramima – leder programski jezik.
Jedna programska linija leder jezika sastoji se iz niza grafičkih simbola (programskih naredbi) koji predstavljaju različite logičke elemente i druge komponente kao što su tajmeri i brojači, koji su poređani duž horizontalne linije – rang (rung) – koja je na oba kraja spojena sa dvema vertikalnim linijama. Prema tome, leder dijagram ima izgled lestvica, odakle potiče i njegov naziv (ladder – lestvice).
Svaki rang leder dijagrama sastoji se iz dva dela. Na levoj strani ranga nalazi se uslov izražen u formi kontaktne (prekidačke) logike, dok se na desnoj strani ranga nalazi akcija koja treba da se izvrši ukoliko je uslov ispunjen (true-istinit) (Slika br.1).
• Uslov – U osnovi, grafički simboli na levoj strani ranga odnose se ili na stanja signala koji predstavljaju fizičke ulaze PLC-a, i čije su vrednosti tokom ulaznog dela sken ciklusa smeštene u input image file, ili na stanja internih promenljivih, čije su vrednosti smeštene u odgovarajućim datotekama. Svaki simbol predstavlja jednu unarnu binarnu operaciju kojoj je pridružena odgovarajuća tablica istinitosti. Uz grafički simbol naznačava se i adresa promenljive koja predstavlja operand. Pri ispitivanju istinitosti uslova smatra se da se nad svim simbolima u jednoj liniji (redna, serijska veza) obavlja logička “I” operacija. To znači da je uslov istinit ukoliko je svaki pojedinačni iskaz istinit. Na levoj strani ranga dozvoljena su i granjanja (paralelene veze). Pri ispitivanju istinitosti uslova paralelene veze se tretiraju kao logička “ILI” operacija. To znači da će iskaz predstavljen nizom paralelnih grana biti istinit, ako bar jedna od grana sadrži istinit iskaz. Potrebno je da se istakne da leva strana ranga može biti formirana i tako da na njoj nema ni jednog simbola. U tom slučaju smatra se da je uslov koji se na taj način definiše uvek istinit.
• Akcija – Grafički simboli na desnoj strani ranga odnose se ili na fizički izlaz (promenljive smeštene u output image file, koje će biti prenete na izlaze kontrolera u toku izlaznog dela sken ciklusa) ili na interne promenljive, čije su vrednosti smeštene u odgovarajućim datotekama. Svaki simbol predstavlja jednu naredbu koja se izvršava ako je uslov na desnoj strani istinit. Uz simbol se naznačava i adresa promenljive čija se vrednost menja prilikom izvršavanja naredbe, ili koja na bilo koji drugi način učestvuje u realizaciji naredbe (npr. otpočinjanje ili zaustavljanje neke aktivnosti, skok na neki drugi rang, poziv potprograma itd.). Serijska veza na desnoj strani ranga nije dozvoljena, dok paralelna veza označava da se više različitih naredbi izvršavaju kao rezultat ispitivnja istinitosti jednog istog uslova.
U literaturi je uobičajeno da se i simboli koji označavaju uslov i simboli koji označavaju akciju označavaju kao naredbe. Otuda je neophodno da se istakne suštinska razlika između naredbi uslova i naredbi akcije. Naime, izvršavanje naredbi uslova obavlja se tako što se u zavisnosti od vrednosti operanda, prema pridruženoj tablici istinitosti, naredbi dodeljuje vrednost (0 ili 1). Dakle, naredbe uslova se izvršavaju u svakom sken ciklusa i rezultat njihovog izvođenja je vrednost naredbe. Za razliku od toga naredbama akcije se ili dodeljuje vrednost nekoj promenljivoj ili izvršava neka druga aktivnost. Ove naredbe se izvršavaju samo ako je uslov koji im prethodi istinit (dodeljena mu je vrednost 1). Pri tome se samim naredbama akcije ne dodeljuje nikakva vrednost.
Leder program se izvršava u toku programskog dela sken ciklusa i to tako što se obrađuje rang po rang u nizu kako su oni definisani. U svakom rangu ispituje se istinitost uslova i ukoliko je uslov istinit izvršavaju se odgovarajuće naredbe u desnom delu ranga. To znači da promenljive na desnom delu ranga mogu menjati svoju vrednost samo jedanput u toku sken ciklusa, i to upravo onda kada se odgovarajući rang ispituje. Potrebno je zapaziti, međutim, da ukoliko se promenljiva na desnoj strani ranga odnosi na fizički izlaz, vrednost izlaza neće biti promenjena u istom trenutku vremena.
Za vreme programskog skena menjaju se samo vrednosti promenljivih smeštenih u slici izlaza. Tek kasnije, za vreme izlaznog dela sken ciklusa, sve promenljive iz slike izlaza biće prenete na odgovarajuće izlazne linije. Ista stvar važi i za ulazne promenljive. Drugim rečima, za vreme programskog skena ispitivanje istinitosti uslova odnosi se na vrednosti promenljivih u slici ulaza, koje su tu upisane za vreme ulaznog dela sken ciklusa koji je prethodio programskom skenu, a ne na trenutne vrednosti promenljivih na ulaznim linijama. Naravno, svi uslovi i naredbe koji su vezani za interne promenljive izvršavaju se u trenutku skaniranja pojedinog ranga.
Slika br.1 Leder rang
Više o Leder programiranju saznajte OVDE.
Napomena: Tekst je preuzet iz materijala za predmet PROCESNI RAČUNARI, na ETF, Univerziteta u Beogradu. Iz originalnog teksta su izostavljene pojedine slike, a dalja objašnjenja pojmova korišćenih u ovom uvodnom tekstu možete naći u pomenutim materijalima.