137
PLC Programmable Logic Controller

Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

PLC

Programmable Logic Controller

Page 2: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

Programabilni logički kontroler (PLC)

1. Osnovna struktura PLC-a Prema standardizaciji Udruženja proizvođača električne opreme (The National

Electrical Manufacturers Association -NEMA) programabilni logički kontroler je definisan kao:

“Digitalni elktronski uređaj koji koristi programabilnu memoriju za pamćenje naredbi kojima se zahteva izvođenje specifičnih funkcija, kao što su logičke funkcije, sekvenciranje, prebrojavanje, merenje vremena, izračunavanje, u cilju upravljanja različitim tipovima mašina i procesa preko digitalnih i analognih ulazno-izlaznih modula.” Prvobitno PLC je zamišljen kao specijalizovani računarski uredjaj koji se može

programirati tako da obavi istu funkciju kao i niz logičkih ili sekvencijalnih elemenata koji se nalaze u nekom relejnom uređaju ili automatu. Postepeno, obim i vrsta operacija koju može da obavi PLC proširena je uljučivanjem složenijih funkcija potrebnih za direktno digitalno upravljanje nekim sistemom.

Nezavisno od repertoara funkcija, od samog početka projektovanja PLC-a, vodilo se računa o tome da on treba da radi u krajnje nepovoljnim klimo-tehničkim uslovima koji vladaju u industrijskom okruženju i da treba da bude dovoljno fleksibilan u smislu prilagođavanja različitim izmrnama na procesu. Otuda je PLC projektovan kao izuzetno pouzdan modularan uređaj koji se veoma lako održava i programira. Pored toga, najveći broj metoda za programiranje PLC-a zasniva se na grafičkom metodu - lestvičasti logički dijagram – koji je već dugi niz godina u upotrebi u industriji pri projektovanju logičkih i sekvencijalnih relejnih uređaja.

Funkcionalna organizacija PLC-a prikazana je na slici Sl. 1. Procesorski modul sadrži centralnu jedinicu i memorju. U okviru ovog modula smeštaju se i program i podaci i odatle se upravlja radom celog sistema. Naziv izlazni i ulazni moduli se odnosi na digitalne ulaze i izlaze preko kojih se primaju binarni signali sa senzora, odnosno zadaju binarni signali pojedinim aktuatorima, dok specijalni U/I moduli obuhvataju analogne U/I kao i module posebne namene kao što su brzi brojač, pozicioni servo sistem, PID regulator itd. Komunikacioni moduli obezbeđuju spregu sa komunikacionom opremom preko koje se razmenjuju podaci sa drugim računarskim uređajima u mreži i/ili

operatoriskim uredjajima preko kojih se PLC programira i nadzire njegov rad.

NapajanjeUlazni moduli

Izlazni moduli

Senzori

Izvršni organi

Specijalni U /I moduli

Komunikacioni moduli

Uređaji na pogonu

Čvorovi u mreži

PLC

Procesorski modul

Sl. 1 Funkcionalni blok dijagram PLC-a

Page 3: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

PLC se sastoji iz šasije (rack) koja ima određeni broj slotova u koji se stavljaju

pojedini moduli kao što je to ilustrovano na slici Sl. 2 . Prvi dva slota u šasiji zauzimaju uredjaj za napajanje i procesorski modul, dok je raspored modula u preostalim slotovima proizvoljan. U zavisnosti od broja modula, PLC može imati i više od jedne šasije. Svaka šasija ima sopstveno napajanje, dok se procesorski modul nalazi samo u prvoj šasiji. Programabilini logički kontroleri iz familije Allen Bradley SLC 500 Modular Controllers mogu imati najviše tri šasije sa najviše 30 slotova. Pri tome, postoje šasije sa 4, 7, 10 i 13 slotova.

Sl. 2 Izgled PLC-a

Kao što se vidi, PLC se razlikuje od računarskog sistema opšte namene po tome

što nema spoljnu memoriju (diskove), kao i niz standardne ulazno/izlazne opreme. Pored toga, njegov operativni sistem je jednostavniji i pruža komparativno manje mogućnosti od računara opšte namene. Zapravo, PLC je koncipiran i projektovan za jedan relativno uzan i jasno definisan obim poslova vezanih za nadzor i upravljanje pojedinim uređajima, što je rezultovalo u njegovoj izuzetnoj efikasnosti i jednostavnosti. U izvesnom smislu, područje primene PLC-a isto je kao i za specijalizovane mikroračunarske kontrolere ili signal procesore. Ključna razlika leži u činjenici da korišćenje PLC-a ne zahteva od korisnika gotovo nikakvo predznanje o arhitekturi mikroračunarskih sistema i programiranju. Drugim rečima, korisnik PLC-a je u najvećoj mogućoj meri oslobođen rešavanja različitih problema vezanih za čisto računarski aspekt, kao što su promena ili dodavanje U/I jedinica, vezivanje u računarsku mrežu, razema podataka i sl. i može da se u punoj meri koncentriše na projektovanje same aplikacije.

Može se slobodno reči da se PLC od svih drugih računarskih uredjaja slične namene razlikuje po svom operativnom sistemu, koji je skrojen tačno za određenu vrstu primene. Naime, predpostavlja se da će u svojoj osnovnoj formi, PLC biti korišćen za realizaciju izvesnih logičkih funkcija koje preslikavaju signale sa senzora u signale koji se prenose na aktuatore. Otuda se od PLC-a očekuje da periodično očitava (unosi) signale sa senzora, izvršava određen broj aritmetičko-logičkih operacija (u skladu sa zadanom funkcijom) čiji rezultati se prenose na izvršne organe ili neke druge

Page 4: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

indikatorske uređaje. Pored toga, sa istom ili nekom drugom učestanošću, PLC treba da održava komunikaciju (razmenjuje podatke) sa nekim drugim računarskim sistemima u

mreži. Polazeći od ovog zahteva, operativni sistem PLC-a projektovan je tako da, u toku rada sistema, automatski obezbedi ciklično ponavljanje navedenih aktivnosti (Sken ciklus) kao što je to ilustrovano na Sl. 3.

Sken ciklus započinje sa ulaznim skenom u okviru koga PLC očitava sadržaj ulaznih linija (registara ulaznih modula). Očitani podaci se prenose u odredjeno područje memorije – slika ulaza. Zatim se aktivira programski sken u okviru koga procesor izvršava programske naredbe kojima su definisane odgovarajuće aritmetičko-logičke funkcije. Podaci (operandi) koji se koriste u programskim naredbama uzimaju se iz memorije i to iz područja označenog kao slika ulaza (ako su operandi ulazni podaci) ili iz područja gde se smeštaju interne

promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde je važno da se istakne da se pri izvršavanju programskih naredbi ne uzimaju podaci disrektno sa ulaznih modula, niti se rezultati direktno iznose na izlazne module, već program razmenjuje podatke isljučivo sa memorijom (Sl. 4) . Po zvršetku

ken u okviru koga se podaci iz slike izlaza prenose na izlazne linije (registre izlaznih modula). Četvrti deo sken ciklusa – komunikacija - namenjen je realizaciji razmene podataka sa uređajima koji su povezani sa PLC-om. Nakon toga, operativni sistem dovodi PLC u fazu održavanja u okviru koje se ažuriraju interni časovnici i registr obavlja upravljanje memorijom kao i niz drugih poslova

vezanih za održavanje sistema, o kojima korisnik i ne mora da bude informisan. U zavisnosti od tipa procesora ulazni i izlazni sken ciklus izvršavaju se u vremenu reda mili sekundi (od 0.25 ms do 2,56 ms). Trajanje programskog skena, svakako zavisi od veličine programa.

2.

programski

sken

5.održavanje

Sken ciklus4.

komuni-kacija

1.ulazni sken

3.izlazni sken

Sl. 3 Sken ciklus PLC-a

programskog skena, operativni sistem PLC-a aktivira izlazni s

i,

3izlazni sken

1ulazni sken

izla

zni m

odul

i

slika ulaza

interne promenljive

memorija

slika izlaza

2programski sken

program

4 i 5komunikacija i održavanje

ulaz

ni m

odul

i

Sl. 4 Razmena podataka za vreme sken ciklusa

Page 5: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

Osnovni sken ciklus može biti modifikovan pomoću zahteva za prekid ili nekih

drugih specijalnih programskih naredbi o kojima đe kasnije biti više reči. Gledano potpuno opšte, od korisnika PLC-a se očekuje da, u zavisnosti od

aplikacije koju namerava da razvije, izvrši izbor ulaznih, izlaznih komunikacionih i specijalnih modula, dakle da odabere strukturu PLC-a i da formira program obrade podataka. Sve ostale aktivnosti obavljaće i nadzirati operativni sistem PLC-a.

2. SLC 500 Procesorski modul

1. Osnovne karakteristike Kao što je već rečeno procesorski modul sadrži centralnu procesorsku jedinicu

(CPU) i memoriju. Centralna jedinica obuhvata aritmetičko-logičku jedinicu (ALU), registre i upravljačku jedinicu. U funkcionalnom smislu centralna jedinica se bitno ne razlikuje od centralne jedinice bilo kog mikroračunara opšte namene. Osnovna razlika se ogleda u skupu naredbi koji je odabran tako da se zadovolje osnovni zahtevi u pogledu korišćenja PLC-a. Osnovne karakteristike procesorskog modula izražavaju se preko sledećih elemenata. Memorija(RAM) - je okarakterisana svojom veličinom, mogućnošću proširenja i

konfigurisanja za smeštanja programa ili podataka. U/I tačke - su okarakterisane najvećim brojem lokalnih U/I adresa koje podržava

procesor u toku ulaznog i izlaznog skena, kao i mogućnošću proširenja preko udaljenih U/I. (Pod udaljenim U/I podrazumeva se posebna šasija koja sadrži U/I module koji razmenjuju podatke sa PLC-om).

Komunikacione opcije - odnose se na raznovrsnost uredjaja za spregu (komunikaciong interfejsa) koji podržavaju različite topologije mreža i različite komunikacione protokole.

Specifikacija SLC 5/01 SLC 5/02 SLC 5/03 SLC 5/04

Memorija 1K UI ili 4K DW 4K UI ili 16K DW

4K UI ili 16K DW

12K UI i 4K DW

12K UI i 4K DW 28K UI i 4K DW 60K UI i 4K DW

Lokalni U/I 256 digitalnih 480 digitalnih 960 digitalnih 960 digitalnih

Udaljeni U/I nema Kapacitet zavisi od vrste napajanja i veličine programske memorije - najviše može biti 4096 ulaza i 4096 izlaza -

Trajno pamćenje

EEPROM ili UVPROM

EEPROM ili UVPROM

Fleš EPROM Fleš EPROM

Tipično vreme programskog skeniranja

8 ms/K 4.8 ms/K 1 ms/K 0.9 ms/K

Izvršavanje bit naredbe 4 µs 2.4 µs .44 µs .37 µs

Broj mašinskih naredbi 52 71 99 99

T. 1 Osnovne karakteristike procesorskog modula SLC 5

Opcije trajnog pamćenja - odnose se na raspoloživost različitih tipova memorijskih EPROM modula koji obezbeđuju trajno pamćenje podataka.

Performansa - se specificira preko vremena programskog skeniranja potrebnog za 1Kbajt programa, preko vremena potrebnog za ulazni i izlazni sken, kao i vremena izvršavanja jedne bit naredbe.

Page 6: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

Programiranje - se specificira u odnosu na broj različitih mašinskih naredbi, kao i na vrstu raspoloživih programskih jezika.

U tabeli T. 1 dat je pregled osnovnih karakteristika procesora SLC 5. Oznaka “UI” odnosi se na “naredbe korisničkog programa”, dok je sa “DW” označena “podatak dužine jedne reči”. Potrebno je da se istakne da su iz tabele izostavljeni podaci koji se odnose na komunikacione opcije. O njima će biti reči kasnije kada budu objašnjenji osnovni aspekti povezivanja SLC-ova u računarsku mrežu.

2. Organizacija RAM memorije Operativni sistem kontrolera, koji realizuje sken cikluse, upravlja i zauzećem

RAM memorije, koja je organizovana na poseban način. U principu, RAM meorija se deli na program files (programske datoteke) i data files (datoteke podataka).

Skup programa i datoteka podataka koje su formirane za jednu aplikaciju čini processor file (procesorsku datoteku). Ona sadrži sve naredbe, podatke i specifikaciju modula koji su relevantni za datu aplikaciju, odnosno korisnički program. Procesorska datoteka čini jednu celinu koja se može prenositi sa jednog procesorskog modula na drugi, sa odnosno na EPROM memorijski modul, kao i operatorski terminal. To zapravo znači da se jedna aplikacija može razviti na jednom sistemu i zatim u celini preneti i koristiti na drugom sistemu. Programske datoteke

Programske datoteke sadrže,informacije o samom kontroleru, glavni korisnički program i potprograme. Svaka aplikacija (procesorska datoteka) mora da ima sledeće tri programske datoteke:

System Program – sistemski program (file 0) - sadrži različite informacije o samom sistemu kao što su tip proceosra, konfiguracija U/I modula, ime procesorske datoteke, lozinku i niz drugih relevantnih podataka.

Reserved – datoteka rezervisna za potrebe operativnog sistema (file 1) Main Ladder Program – glavni leder program (file 2) – program koji formira

sam korisnik i u okviru koga se definiše niz operacija koje SLC treba da izvede. Subroutine Ladder Program - potprogrami (file 3 - 255) – korisnički

potprogrami koji se aktiviraju u skladu sa naredbama za njihovo pozivanje koje se nalaze u glavnom programu.

Datoteke podataka Datoteke podataka sadrže podatke koji se obradjuju pomoću naredbi leder

programa. Pri tome se pod pojmom podaci podrazumevaju konvertovane (numeričke) vrednosti signala koji se preko ulazno/izlaznih modula unose u konrtoler, ili se iz kontrolera prenose na izlazne uređaje, kao i interne promenljive koje se koriste kao operandi u različitim operacijama.

Datoteke podataka organizovane su u skladu sa tipom promenljivih koje sadrže. To zapravo znači da jedna datoteka sadrži samo jedan tip (vrstu) podataka. Jedna procesorska datoteka može da ima najviše 256 datoteka podataka.

3. Organizacija datoteka podataka Tipovi promenljivih i datoteka

Osnovna karakteristika datoteke podataka je njen tip. Kao što je već istaknuto tip datoteke, zapravo ukazuje na vrstu promenljivih koje se u njoj pamte. To nadalje podrazumeva da tip datoteke ujedno odrđeuju i njenu organizaciju, koja zavisi od vrste podatka i usvojenog načina za njegovo prikazivanje u računaru.

Page 7: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

Jedna datoteka se označava pomoću rednog broja, koji jednoznačno određuje mesto te datoteke u nizu datoteka podataka koje se nalaze u jednoj procesorskoj datoteci i slova kojim se identifikuje tip datoteke. Prvih 9 datoteka imaju unapred definisan tip koji ne može da se menja. Tipove preostalih datoteke korisnik sam odabira i definiše u skladu sa aplikacijom koju razvija. File 0 – Tip O - output (izlaz) – sadrži sliku izlaza; sadržaj datoteke se prenosi na

izlazne linije za vreme izlaznog skena. File 1 – Tip I - input (ulaz) - sadrži sliku ulaza; u ovu datoteku se za vreme ulaznog

skena smeštaju vrednosti sa ulaznih linija. File 2 – Tip S - status - sadrži podatke vezane za rad kontrolera. Pregled značenja

pojedinih bitova u ovoj datoteci dat je u posebnom dodatku (Dodatak S). File 3 – Tip B - bit – sadrži interne promenljive bit tipa. File 4 – Tip T - timer (časovnik) - sadrži podatke koji se koriste za interne časovnike. File 5 – Tip C - counter (brojač) - sadrži podatke koji se koriste za interne brojače. File 6 – Tip R - control (upravljanje) – sadrži dužinu, položaj pokazivača i bitove statusa

za određene naredbe kao što su naredbe za pomeranje sadržaja registara i sekvenci.

File 7 – Tip N - integer (celobrojna) – sadrži podatke celobrojnog tipa. File 8 – Tip F - floating point (realna) - sadrži podatke predstavljene u tehnici pokretnog

zareza kao 32-bit brojeve u opsegu (±1.1754944e-38 to ±3.40282347e+38) - ovo važi samo za SLC 5/03 i SLC5/04.

File 9 do file 255 – Tip definiše korisnik - korisničke datoteke – ove datoteke definiše korisnik kao datoteke tipa B, T, C, N.

Za procesore tipa SLC 5/03 i SLC 5/04 korisnik može da definiše i datoteke tipa F, St - string, A - ASCII. Pored toga datoteka 9 se može koristiti i kao komunikacioni interfejs, o čemu će kasnije biti više reči.

Specijalni U/I moduli imaju takođe memoriju u kojoj se, pored ostalog, nalaze i njima pridružene datoteke. One se označavaju kao M0 i M1 files, i njihova organizacija zavisi od specifičnosti pojedinog modula. Elemenat datoteke

Osnovna jedinica datoteke je jedan element. Svaki elemenat se satoji iz nekoliko 16-bitnih reči. Broj reči koje čine jedan element zavisi od tipa datoteke, odnosno vrste podataka koji se u nju smeštaju.

Kao što je već istaknuto, podaci koji su smešteni u datotekama predstavljaju operande (promenljive) koje se koriste u pojedinim programskim naredbama. Svaka od ovih promenljivih ima definisanu logičku adresu. Pri tome, adrese omogućavaju da se pozove ne samo elemenat u celini, već i njegov deo. To znači da se mogu adresirati pojedine reči u okviru elementa ili pojedini bitovi u okviru reči. Budući da su podaci u izvesnom smislu hijerarhijski organizovani: 1 elemenat sadrži nekoliko reči, a 1 reč 16 bitova, to su i odgovarajuće adrese struktuirane po istom hijerahijskom principu. Pojedine reči i bitovi u nekim datotekama imaju i pridružene akronime, što dodatno olakšava njihovo korišćenje. Napomenimo i da se svakom elementu, reči ili bitu u okviru elementa, u fazi formiranja aplikacije može dodeliti i simboličko ime.

◊ Adresa elementa – u principu, svaki element u okviru datoteke se identifikuje pomoću njegovog relativnog položaja u odnosu na početak datoteke (nulti, prvi, drugi, … element).

X f : e

redni broj elementa

Tip datoteke

Broj datoteke

Page 8: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

◊ Adresa reči – jedna reč elementa

se identifikuje ili pomoću relativnog položaja te reči u okviru elementa, ili pomoću posebnog akronima (ukoliko je isti definisan).

X f : e

Redni broj reči (ili

akronim )

Tip datoteke

Broj datoteke

. w

Redni broj elementa

◊ Adresa bita – Jedan bit u okviru reči identifikuje se ili preko njegovog relativnog položaja u okviru te reči (nulti, prvi, drugi bit, … brojano s desna u levo) ili preko relativnog položaja u odnosu na početak odgovarajućeg elementa kome pripada reč čiji se bit adresira.

Refni broj bita (u odnosu na

početak reči ) ili akronimTip

datoteke

Broj datoteke

Redni broj elementa

/X f : e . w b

Redni broj reči ili akronim

1.

Dužine elemenata u pojedinim datotekama date su u tabeli T. 2. Potrebno da se istakne da se teorijski u svakoj datoteci mogu adresirati i elemenat u celini i njegove reči i bitovi. U tabeli su, međutim, navedene samo one adrese koje sa aspekta vrste podatka i načina organizacije datoteke imaju smisla. Podrazumeva se pri tome da je:

X f : e

Redni broj bita (u odnosu na početak

elementa )

Tip datoteke

Broj datoteke

/ b

Redni broj elementa

• adresirani bit 0 ≤ b ≤ 15 • adersirni element 0 ≤ e ≤ 255

Može se uočiti da su iz tabelei T. 2 izostavljene ulazne i izlazne datoteke (I i O). Ovo je učinjeno zato što one donekle odstupaju od navedenog pravila. Naime, kao što će se kasnije videti, kod ovih datoteka elementi mogu biti dužine od jedne ili dve reči, što zavisi od tipa U/I modula. Elemenat ovih datoteka je zapravo određen slotom u šasiji u koji se modul postavlja.

Tip datoteke Dužina elementa Adresira se

bit “b” - Xf:e/b ; B, N, A 1 reč element “e“ – Xf:e

F 2 reči element “e“ – Xf:e bit “b” u reči 0– Xf:e.0/b ; (indikatori stanja su bitovi reči 0) T, C, R 3 reči reč “w“ – Xf:e.w ; w = {1,2}, promenljive su u rečima 1 ili 2 bit “b” u reči “w”– Xf:e.w/b reč “w“ - “ – Xf:e.w ; 0 ≤ w ≤ 41 St 42 reči element “e” – Xf:e

T. 2 Veličine elemenata pojedinih datoteka

U cilju ilustracije organizacije datoteka posmatrajmo binarnu datoteku – bit file. Maksimalna veličina ove datoteke iznosi 256 elemenata. Svaki elemenat je jedna 16-bitna reč, što znači da ova datoteka može imati najviše 4096 bitova. U skladu sa izloženim načinima adresiranja, jedan bit može biti adresiran pomoću rednog broja elementa (0 - 255) i rednog broj bita u okviru elementa (0 – 15) ili pomoću rednog broja bita u okviru datoteke (0 – 4095), kao što je to ilustrovano u tabeli T. 3. Bit označen sa * je jedanaesti bit u drugom elementu, odnosno četrdesetčetvrti bit u celoj datoteci.

Page 9: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

Prema tome njegova adresa je B3:2/11 ili B3/44. Iz tabele se takođe vidi da je moguće da se adresira i ceo element ove datoteke.

Data file 3 – Bit file

bitovi Adresa

elementa Adrese pojedinih bitova

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

B3:0 B3:0/0 … B3:0/15 B3/0 … B3/15

B3:1 B3:1/0 … B3:1/15 B3/16 … B3/31

B3:2 B3:2/0 … B3:2/15 B3/32 … B3/47 *

B3:3 B3:3/0 … B3:3/15 B3/48 … B3/63

. . .

. . .

.

.

B3:255 B3:255/0 ... B3:255/15 B3/4080 … B3/4095

T. 3 Datoteka 3 – Bit

Potrebno je da se zapazi da će u svakoj datoteci tipa bit koju korisnik sam definiše adrese biti iste, s tim što će se umesto broja datoteke (3) staviti broj koji korisnik pridružuje svojoj datoteci (9 - 255).

O organizaciji ostalih datoteka biće reči kasnije kada se budu opisivali moduli ili

funkcije koje su sa njima povezane. Kreiranje datoteke i zauzeće memorije

Jedna datoteka podataka zauzima memorijski prostor koji obuhvata niz susednih reči. Broj reči koje zauzima jedna datoteka određen je najvećom adresom elementa te datoteke koji se koristi u programskim naredbama. Naime, sa izuzetkom datoteke statusa S, koja se kreira automatski, sve ostale datoteke podataka ne postoje a priori same po sebi, već se formiraju u toku kreiranja programa i to navođenjem odgovarajuće adrese u programu. Prvo navođenje broja datoteke inicijalizuje njeno kreiranje. Pri tome tip datoteke koji je naveden u adresi određuje broj reči koje se pridružuju jednom elementu, dok adresa elementa određuje niz konsekutivnih elemenata za koje se u memoriji rezerviše prostor. Taj niz počinje od nule, a završava se sa adresom elementa koja je navedena u naredbi. Ako se kasnije pojavi veća adresa elementa iste datoteke onda se prethodno rezervisani prostor proširi tako da uključi i tu adresu.

Predpostavimo da se u programskim naredbama pojavljuju redom adrese operanada F8:3, F8:1 i F8:5. U tom slučaju, pri kreiranju prve naredbe rezervisaće se memorijski prostor za datoteku 8 i zauzeti ukupno 8 reči (elementi 0,1,2 i 3 ; svaki element po dve reči). Kada se kasnije naiđe na adresu F8:1, ona neće prouzrokovati nikakve promene u zauzeću memorije, jer je memorijski prostor za taj element već zauzet. Međutim, adresa F8:5, dovešće do povećanja zauzetog prostora na ukupno 12 reči (6 elemenata), kao što je to ilustrovano na slici Sl. 5. Ovde je takođe predpostavljeno da su pre nailaska na pomenute tri naredbe, nekim drugim naredbama već kreirane datoteka N7 i korisnička datoteka 9, kojoj je pridružen tip B.

Potrebno je da se istakne da veličina datoteke nije određena stvarnim brojem elemenata koji se koriste, već najvećem adresom. U posmatranom primeru se tako koriste samo tri elementa datoteke 8, ali je zauzet prostor za 6 elemenata. To nadalje

Page 10: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

znači, da se pažljivim izborom adresa elemenata može ostvariti ušteda u zauzetom memorijskom prostoru.

24

33

29

28

25

RAM

reč 0

reč 6

reč 5

reč 4

reč 3

reč 2

reč 1

N7integer

B9bit

reč 7

34

36

37

41

42

adreseRAM-a

24

33

29

28

25

RAM

reč 0

reč 6

reč 5

reč 4

reč 3

reč 2

reč 1

N7integer

B9bit

reč 7

34

36

37

41

42

adreseRAM-a

24

33

29

28

25

reč 0

reč 6

reč 5

reč 4

reč 3

reč 2

reč 1

N7integer

B9bit

reč 7

34

36

37

41

42

adreseRAM-a

RAM

24

33

29

28

25

B9bit

34

RAM

adreseRAM-a

reč 11

reč 10

reč 9

reč 8

40

45

46

F8:3

F8:1

F8:5

prekreiranjanaredbi

posleobrade

prvenaredbe

posleobradedruge

naredbe

posleobradetreće

naredbe

N7integer

Sl. 5 Promena zauzeća RAM memorije pri kreiranju naredbi

Kao što je već rečeno, dozvoljeno je kreiranje najviše 256 datoteka podataka.

Samo se po sebi razume da će broj kreiranih datoteka zavisiti od promenljivih koje korisnik definiše u programu. Pri tome sve kreirane datoteke ređaju se u nizu jedna iza druge. U formiranoj aplikaciji, datoteke podataka zauzimaju jedan neprekidan memorijski prostor. Redni brojevi ovih datoteka poređani su u rastućem nizu, ali ne moraju da čine kontinuallni niz.

Operativni sistem kontrolera dozvoljava da se datoteke podataka kreiraju i direktno, a ne preko naredbi u kojima se navode adrese operanada. U tu svrhu koristi se posebna procedura memory map function, koja omogućuje da se rezerviše odgovarajući prostor i u njega direktno upišu podaci. Ista procedura omogućava i da se obriše grupa elemenata u nekoj definisanoj datoteci ili cela datoteka, naravno samo uz uslov da se ne koriste u programu.

Indirektno adresiranje

U nekim slučajevima poželjno je da se omogući da se ista naredba izvrši sa različitim promenljivima. Koja od promenljivih će se koristiti može zavisiti od nekih spoljnih uslova, rezultata nekog izračunavanja i sl. Radi pojednostavljenja relaizacije ovakvih aplikacija kontroleri SLC 5/03 i SLC 5/04 omogućavaju korišćenje indirektnog adresiranja.

Page 11: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

U principu indirektno adresiranje se realizuje tako što se navodi adresa promenljive čiji sadržaj predstavlja adresu promenljive (operanda) nad kojom se vrši neka operacija. U skladu sa time promenom sadržaja navedene promenljive menja adresa operanda.

Adresa promenljive uključuje broj datoteke (f), broje elementa (e), broj reči(w) i broj bita (b). Svaki od ovih podataka može biti indirektno adresiran navođenjem adrese promenljive koja sadrži traženi podatak. Pri tome, budući da su svi ovi podaci celi brojevi, jasno je da promenljiva čija se adresa navodi mora biti celobrojnog tipa, dužine 1 reči. Shodno tome, za indirektno adresiranje mogu se koristiti promenljive iz datoteke tipa N, ili posebne promenljive iz datoteka tipa T ili C (ACC i PRE), odnosno datoteke tipa R (LEN i POS). Indirektna adresa specificira se navođenjem promenljive koja sadrži adresu u uglastim zagradama, kao što je to ilustrovano u tabeli T. 4.

Indirektna adresa Indirektno se

adresira Ako je vrednost N7:e = 13, adresirana promenljiva je

N[N7:e]:e1 broj datoteke N13:e1 elemenat e1 u datoteci 13 tipa integer

Ff:[N7:e] broj elementa Ff:13 elemenat 13 u datoteci f tipa floating point

Stf:e.[N7:e] broj reči Stf:e.13 reč 13 elementa e u datoteci f tipa srtring

Bf:e/[N7:e] broj bita Bf:e/13 bit 13 elementa e u datoteci f tipa bit

St[N7:e]:[N7:e].[N7:e] broj datoteke, elementa i reči St13:13.13 reč 13 elementa 13 u datoteci 13 tipa

string

T. 4 Primeri indirektnog adresiranja Imajući u vidu činjenicu da se pri indirektnom adresiranju, isto kao i pri

indeksnom, adresa promenljive određuje tek za vreme izvođenja programa, potrebno je i ovde voditi računa o zauzimanju meorije i mogućem prekoraćenju granica. Indeksno adresiranje

Pored direktnog adresiranja promenljive, kod kontrolera SLC 5/02, SLC 5/03 i SLC 5/04 dozvoljeno je i indeksno adresiranje. Indeksnim adresiranjem se mesto u memoriji na kome se nalazi jedna promenljiva definiše relativno u odnosu na položaj neke druge promenljive. Pomeraj (ofset) promenljive sadržan je u 25. reči datoteke 2 (status file) tako da je adresa reči koja sadži pomeraj S:24. Ovaj način adresiranja je izuzetno pogodan ako je potrebno da se manipuliše sa nizom uzastopnih promenljivih.

Tip datoteke (promenljive) Indeksna adresa Pomeraj (S:24) izražen u

Ako se bazna promenljiva nalazi u RAM-u na adresi 200, i S:24=6 promenljiva je na adresi

O-output; I-input; B-bit #O:e ; #I:e ; #Bf:e rečima 206 N-integer #Nf:e rečima 206 F-floating point #Ff:e elementima (2 reči) 212 i 213 St-string #Stf:e.w rečima 206 T-timer; C-counter (ACC i PRE)

#Tf:e.ACC ; #Tf:e.PRE #Cf:e.ACC ; #Cf:e.PRE elemtima (3 reči) 219 ; 220 (2. i 3. reč elementa)

R-control (LEN i POS) #Rf:e.LEN ; #Rf:e.POS elementima 3 reči) 219 : 220 (2. i 3. reč elementa)

T. 5 Indeksno adresiranje

Indeksno adresiranje promenljive ostvaruje se navođenjem simbola # neposredno ispred adrese promenljive koja predstavlja bazu u odnosu na koju se izračunava indeksna adresa. Pomeraj može biti pozitivan ili negativan i u zavisnosti od

Page 12: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

tipa promenljive predstavlja broj reči ili elemenata koje treba dodati baznoj adresi. Tipovi promenljivih koje se mogu indeksno adresirati, kao i značenje odgovarajućeg pomeraja

dati su u tabeli T. 5. Potrebno je obratiti pažnju na

činjenicu da se za sve različite indeksne adrese koje se žele koristiti, pomeraj mora nalaziti u istoj reči (S:24). Isto tako, neke naredbe prilikom izvođenja, koriste tu reč i uništavaju njen prethodni sadržaj. Otuda je neobično važno da se pre korišćenja indeksne adrese obezbedi da se u lokaciji S:24 nađe odgovarajući, željeni pomeraj. Konačno, napomenimo da se prilikom servisiranja prekida, sadržaj lokacije S:24 čuva.

U skladu sa onim što je rečeno o načinu kreiranja datoteka, treba uočiti da indeksno adresiranje može da prouzrokuje izvesne probleme. Naime, veličina datoteke određena je najvećom adresom koja se neposredno navodi u programu, i pri tome nema načina da se u toku prevođenja programa ustanovi da li će sve indeksne adrese biti unutar

zauzetog prostora. Drugim rečima, postoji opasnost da pomeraj bude takav da indeksna adresa premaši najveću adresu koja je eksplicitno navedena u programu, što bi prouzrokovali prekoračenje gornje granice datoteke. Da bi se ovo izbeglo, neophodno je da se pri kreiranju datoteke definiše najveća adresa do koje indeksno adresiranje može da dosegne. Isto tako, preveliki negativni pomeraj mogao bi da dovede do prekoračenja donje granice datoteke.

N7:0

N7:7

F8:0.0

F8:0.1

N7:1

N7:2

N7:3

N7:4

N7:5

N7:6

F8:1.0

F8:1.1

F8:2.0

F8:2.1

F8:3.1

F8:3.0

-3

+4

dozvoljeni pomeraj bez prekoračenja

granica

indeksna adresa #N7:3

-3

+4

pomeraj = +10prekoračena

granica

Sl. 6 Indeksno adresiranje

Prekoraćenje granica datoteke samo po sebi ne mora da ima negativne posledice, sve dotle dok je korisnik svestan da do toga može da dođe i vodi računa o tipu susednih datoteka. U tom smislu korisnuku se pruža mogućnost da izabere da li želi da dozvoli ili zabrani prekoraćenje granica. Ukoliko je prekoračenje zabranjeno, a do njega dođe u toku izvođenja programa, signaliziraće se greška. Ako se predpostavi da se u nekoj aplikaciji koriste samo dve datoteke N7 sa ukupno 8 elemenata i F8 sa ukupno 4 elementa, onda indeksna adresa #N7:3 može da prouzrokuje efekte koji su ilustrovani na slici Sl. 6. Napomenimo i da je prekoračenje granica dozvoljeno kod kontrolera SLC 5/02 samo ako se indeksno adresiranje ne koristi u datotekama tipa: O, I ili S. Isto tako, prekoračenje granica nije dozvoljeno kod kontrolera SLC 5/03 i SLC 5/04 ukoliko se koristi indeksno adresiranje u datotekama tipa St. Adresiranje datoteka

Pri realizaciji nekih algoritama, postoji potreba da se istovremeno ili na neki uređen način operiše sa nizom podataka koji je smešten u nekoj datoteci, ili sa datotekom u celini. U tu svrhu koristi se takođe indeksno adresiranje, ali se programski sistem sam stara o adekvatnoj promeni sadržaja indeksnog registra. Naime, ukoliko se radi sa nizom podataka u datoteci onda se taj niz specificira tako što se definiše bazna adresa #fn:e gde je prvi ili nulti elemenat niza, što zavisi od konretne programske naredbe. Istovremeno se na odgovarajući način definiše i dužina niza. Rad sa

Page 13: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

podacima iz niza se odvija uz korišćenje indeksnog registra, s tim što, za razliku od naredbi u kojima se koristi indeksna adresa, korisnik ne mora da vodi računa o sadržaju indeksnog registra. Važno je jedino da se ima na umu da sve naredbe za rad sa datotekama menjaju sadržaj indeksnog registra.

4. Programske konstante Pored promenljvih koje se smeštaju u datotekama podataka, u pojedinim

programskim naredbama doyvoljeno je korišćenje i programskih konstanti, brojnih vrednosti koje sedefinišu pri formiranju aplikacije i ne mogu se programski menjati.

Programska konstanta se definiše tako što se na mestu predviđenom za adresu promenljive (operanda), direktno navede odgovarajuća brojna vrednost. Celobrojna brojna vrednost je 16 bitna reč, dok realna vrednost zauzima 2 reči (SLC 5/03 i SLC 5/04). Celobrojna brojna vrednost se može zadati u dekadnom brojnom sistemu ili kao heksadecimalna, oktalna ili binarna konstanta (T. 6). Pored toga, konstanta se može definisati i kao ASCII podatak sa 4 karaktera, pri čemu svaki karakter zauzima 1 bajt. Ako se konstanta ne specificira u dekadnom brojnom sistemu onda se ona definiše sa prefiksom & i odgovarajuđim slovom koje ukazuje na način predstavljanja konstante.

Naziv Specifikacija Opseg

celobrojna konstanta direktno navođenje vrednosti -32768 do +32767

realna konstanta direktno navođenje vrednosti, koja sadrži decimalnu tačku

±1.1754944e-38 do ±3.40282347e+38

heksadecimalnia konstanta &H⌧⌧⌧⌧ &H0000 do &HFFFF

oktalna konstanta &O⌧⌧⌧⌧⌧⌧ &O000000 do &177777

binarna konstanta &B⌧⌧⌧⌧ &B0000000000000000 do &B1111111111111111

ASCII konstanta &A⌧⌧⌧⌧

T. 6 - Specifikacija programskih konstanti

2. Diskretni U/I moduli (Discrete I/O modules)

1. Ulazno/izlazni moduli Uprkos činjenici da diskretni senzori i aktuatori koji se nalaze na nekom procesu

ili postrojenju mogu imati veoma različite tehničke karakteristike, zahtev koji se postavlja pri njihovom vezivanju za kontroler je uvek isti. Naime, od kontrolera se očekuje da obezbedi konverziju digitalnog (binarnog) signala koji dolazi sa semzora u numeričku vrednost 0 ili 1 i da taj podatak smesti kao jedan bit na odogovarajuće mesto u memoriji, ili da očita numeričku vrednost (sadržaj) nekog bita u memoriji, da ga konvertuje u binarni signal koji se vodi na aktuator. Ova činjenica omogućila je projektovanje i izradu tipiziranih U/I kola koja su u stanju da obrađuju gotovo sve signale koji se sreću kod industrijske merne opreme i izvršnih organa. Pored toga, nekoliko U/I kola su grupisana zajedno i čine Diskretni U/I modul, čija veza sa kontrolerom se ostvaruje jednostvanimo ubacivanjem u odgovarajući slot na šasiji.

Izgled tipičnog U/I modula prikazan je na Sl. 7. Na prednjoj ploči U/I modula nalazi se određeni broj pinova (terminal points) za koje se vezuju izlazi sa mernih instrumenata, odnosno ulazi u izvršne organe. Svaki pin je zapravo ulazna ili izlazna

Page 14: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

tačka

Za vreme rada U/I modula, stanje svakog pina se pLED indikatoru. Indikator koji je povezan sa ulaznoim pinom

rezultat obrade

ifikacija U/I modula data je u Dod

bodnih slotova (uz uslov da je šasija ima odgovarajući modul napajanja – Dod

rnog signala koji dolazi na ulazni pin nekog U/I modula očitava se avisnosti od toga da li očitana vrednost

se odgovarajuća vrednost bita (0 ili 1) i upisuj

odgovarjućeg kola za spregu sa kontrolerom. U skladu sa time svaki pin se identifikuje svojim tipom (ulaz ili izlaz) i brojem koji odredjuje položaj U/I kola u okviru modula, i koji zapravo predstavlja adresu pina. Opis pinova dat je na unutrašnjoj strani vrata na modulu. Pored U/I pinova, na prednjoj ploči modula nalaze se i pinovi koji su interno povezani sa napajanjem (DC ili AC), sa zajedničkom (nultom) tačkom i sa zemljom. Način sprezanja pojedinog urđaja sa modulom zavisi od specifičnosti samog uredjaja, kao i karakteristika

modula (Dodatak UI). Detaljna šema sprege vezivanja data je uz svaki modul. rikazuje na odogovarajućem svetli ako je ulazni signal u

stanju logičke jedinice. Indikator povezan sa izlaznim pinom svetli ako je, kao

Sl. 7 Digitalni U/I modul

modul

xnn

xnn

xnn

xnn

xnn

xnn

xnn

xnn

xnn

xnn

xnn

xnn

xnn

xnn

xnn

xnn

šasija

slot

opis pinova

indikatori

U/I

pinovi

U/I moduli

Procesorski modul

napajanje

programa, na izlazni pin postavljena logička jedinica. Postoje tri tipa U/I modula: ulazni, izlazni i kombinovani ulazno/izlazn modul. Oni

se izrađuju sa različitim gustinama pinova (4, 8, 16 i 32 pina po modulu) i mogu se sprezati sa AC, DC i TTL naponskim nivoima. Detaljnija spec

atku UI. Kao što se vidi na Sl. 7 U/I moduli se smeštaju u slotove na šasiji. Maksimalni

broj modula koji se može direktno povezati sa jednim kontrolerom, zavisi od veličine šasije i broja slo

atak POW). Budući da svaki slot ima svoju adresu unutar šasije, to znači da je samim stavljanjem modula u slot određena i njegova adresa. Konačno, kao što je već istaknuto, i svaki pin unutar jednog modula ima svoju adresu. U skladu sa time svaki pin ima u okviru kontrolera jedinstvenu adresu, koja je određena adresom slota u koji se modul postavljai adresom pina unutar modula. Potrebno je da se naglasi da je adresa pina određena automatski stavljanjem modula u šasiju kontrolera i da se ne može programski menjati.

2. Sprezanje U/I modula sa kontrolerom Vrednost bina

za vreme ulaznog dela sken ciklusa. U zpredstavlja logičku nulu ili jedinicu formira

e na mesto u datoteci 0 (Input image file) koje odgovara adresi ulaznog pina. Isto tako, vrednost bita koji treba da se prenese na izlazni pin kontrolera kao binarni signal, nalazi se u datoteci 1 (output image file). Za vreme izlaznog dela sken ciklusa ova vrednost se očitava, konvertuje u odgovarajući signal i prenosi na izlazni pin čija adresa odgovara mestu u datoteci na kome se nalazi posmatrani bit.

Page 15: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

vi

Svakom modulu koji nema

više od 16 pinova pridružuje se po jedna 16-bitna reč u datoteci 0 odnosn

adresiranja prikazan je na slici Sl. 8. D vanja a

sa 7 slotova koja je poveza

o 1. Ako modul ima manje od 16 pinova, onda se ne koriste svi bitovi u pridruženoj reči. Ako modul im 32 pina, njemu se pridružuju dve susedne 16-bitne reči. Pri tome, koja reč će biti pridružena modulu zavisi od slota u kome se modul nalazi. Format

dresa modula sa odgovarajućim datotekama posmatraće se kontroler koji se sastoji iz jedne šasije

Sl. 8 Format adresa binarnih U/I signala

a bi se ilustrovao način povezi

na sa šasijom od 10 slotova kao što je to ilustrovano na slici Sl. 9. Kao što se vidi prva šasija sadrži procesorski modul u slotu 0; kombinovani U/I modul sa 6 ulaza i 6 izlaza u slotu 1; ulazni modul sa 32 ulazna pina u slotu 2 itd. U drugoj šasiji koriste se samo prva četiri slota, dok se preostali slotovine koriste. Struktura datoteka 0 i 1 koje odgovaraju datoj konfiguraciji prikazana je u tabelama T. 7 i T. 8.

Redni brojevi slotova

Napa janje

I/OI 16

I/OI 8

I/O

O 16

I/O

O 16

7 8 9 10 11 12 13 14 15 16

ProcessNapa janje CPU

I/OI 6O 6

I/OI 32

I/O

O 16

I/OI 8O 8

I/O

O 32

I/OI 16

0 1 2 3 4 5 6

Moguće proširenje

Sl. 9 - Konfiguracija kontrolera

aci da e 0

Potrebno je da se sitakne da su I i O datoteke jedine dve datoteke kod kojih elementi nisu poređani u nepr elementi promenljive dužine. U ovo

tput image

T. 7 – Organiz ja totek

(pinovi 10 9 8 7 6 5 - out

(0-5) O:1 O:1/0 …O:1/5 Ne koristi se

3 - out (0-15) O:3 O:3/0 …

O:3/15

4 – out (0-7) O:4 O:4/0 …

O:4/7 rist

5 – out (0-15) O:5 O:5/0 …

O:5/15

5 – out (16-32) O:5.1 O:5.1/0 ...

O:5.1/159 – out (0-15) O:9 O:9/0 …

O:9/15

10 – out (0-15) O:10 O:10/0 …

O:10/15

Data file 0 – Oubitovi

Slot - U/I tip

)

Adresa reči

Adrese bitova

15 14 13 12 11 4 3 2 1 01

Ne ko i se

N : e . w / b

Tip pina O - output (izlaz)I - input (ulaz)

Redni broj slota 0-30 - (decimalno)

Redni broj reči [1] (0 se može izosta ti)

Potrebno samo ako je broj pinova na modulu veći od

16

Redni broj pina(redni broj bita ) 0 - 15 - (decimalno)

ekidnom nizu i kod kojih sum primeru tako posle elementa O:1, kao susedna reč u memoriji nalazi se

Page 16: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

element O:3. Isto tako posle elementa O:5 koji zauzima dve reči dolazi elemnat O:9 koji zauzima jednu reč. Ovo je, naravno, prirodna posledica činjenice da su redni brojevi elemenata vezani za slotove, a da je njihova dužina određena brojem pinova na modulu. Neophodno je, međutim da se to ima na umu prilikom korišćenja indeksnog adresiranja ili pri radu sa nizovima podataka. Naime, kao što je već istaknuto, kod datoteka ovog tipa indeksna adresa se određuje tako što se baznoj adresi dodaje sadržaj indeksnog registra, pri čemu je pomeraj izražen u rečima. To znači da redni broj reči na koju pokazuje indeksni registar ne mora biti, a najčešće i nije jednak rednom broju elementa datoteke.

Data file 1 – Input image Slot - U/I tip Adresa

reči Adrese bitova bitovi

(pinovi) 15 14 13 12 11 3 2 1 0 10 9 8 7 6 5 4 1 - in (0-5) I:1 I:1/0 …

I:1/5 Ne koristi se

2 - in (0-15) I:2 I:2/0 …

I:2/15

2 – in (16-32) I:2.1 I:2.1/0 …

I:2.1/15

4 – in (0-7) I:4 I:4/0 …

I:4/7 Ne risko ti se

6 – in (0-15) I:6 I:6/0 …

I:6/15

7 – in (0-15) I:7 I:7/0 …

I:7/15

8 – in (0-7) I:8

I:8/0 … I:8/7 rist

Organizacija

Ne ko i se

T. 8 - datoteke 1

U posmatranom primeru, ako se esa definiše #I:2, ako se podatak čija je bazna adresa I: si 200, i ako je sadržaj indeks registr

gitalni senzori i digitalni izvršni organi ao što je već rečeno digitalni signal je ija amplituda može imati jednu od

konačn

ov

pomoću relea

kao indeksna adr2 nalazi u memoriji na adre

a S:24=3, onda će biti adresirana memorijska lokacija 203 na kojoj se prema T. 8 nalazi element I:6. Zapazimo da kada bi pri istom zauzeću memorije i sadržaju indeks registra koristila indeksna adresa #N:2, onda bi adresirani elemenat, na lokaciji 203, bio N:5.

3. DiK

signal č

Sl. 10 NO i NC kontakt upravljani

NOkontakt

NCkontaktNapajanje

opruga

navoj

og broja različitih vrednosti. Posebna podvrsta digitalnog signala je binarni (diskretni) signal čija amplituda ima jednu od dve moguće vrednosti koje se kodiraju kao binarna nula i binarna jedinica (0 i 1). Ove vrednosti, u zavisnosti od određene aplikacije imaju značenje uključen/isključen, istinit/neistinit, prisutan/odsutan itd. Diskretni signali se koriste za uključivanje i isključivanje prekidača, pokretanje ili zaustavljanje motora, otvaranje ili zatvaranje ventila i drugih aktuatora u zavisnosti d radnih uslova ili u funkciji vremena. U isto reme, ovi signali se koriste i kao indikatori

stanja ovih uređaja.

Page 17: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

Bez želje da se upuštamo u detaljan pregled svih davača digitalnih signala i digitaln

ktuatora je kontakt. U principu, kontakt

• fizičku veličinu)

l Kontakt može biti normalno

oji se koriste

(šalju signale prema kontroleru)

akcije (npr. granični prekidači), čoveka (npr. taste

zni procesni uređaji koji primaju signale iz kontrolera se koriste za pokretanje i

Sl. 11 Pregled grafičkih simbola različitih kontakta

ih izvršnih organa, izložiće se sa samo osnovne odlike prekidača kao digitalnih davača i solenoida koji se veoma često koriste kao izvršni organi. Ovi elementi će se kasnije koristiti pri formiranju programa za PLC. Osnovna komponenta diskretnog senzora i a

može biti realizovan kao bilo koja vrsta prekidača, ili neka drugi elektro-mehanički, elektro-optički, pneumatski ili hidraulični uređaj koji ima dva stanja: zatvoren (closed) – provodi struju (odnosno propušta odgovarajuću

• otvoren (open) - ne provodi struju (odnosno ne propušta odgovarajuću fizičkuve ičinu).

otvoren (NO) ili normalno zatvoren (NC), pri čemu se izraz “normalno” odnosi na stanje u kome se kontakt nalazi pre nego što se delovanjem nekog spoljnog agensa promeni stanje kontakta. Na slici (Sl. 10) prikazana su dva tipična relejna kontakta, od kojih je jedan normalno otvoren a drugi normalno zatvoren. Naime, sve dok u kolu relea nema struje, kotve koje su vezane za oprugu imaju položaj kao na slici, tako da je kontakt označen sa NC zatvoren, a kontakt označen sa NO otvoren. Kada se zatvori prekidač u kolu relea, u jezgru će se generisati elektromagnetna sila koja će privući kotve koje su vezane za oprugu. Pri tome oba kontakta menjaju stanje i to tako što se NC kontakt otvara, a NO kontakt zatvara. Kada se prekidač u kolu relea otvori, opruga vraća kontakte u početni položaj.

Senzori i kontakti k kao ulazni procesni uređaji

mogu biti otvarani ili zatvarani kao rezultat dejstva neke mehaničke ri), prisustvom ili odsustvom nekog

objekta (npr. senzori rastojanja), promenom temperature (npr. temperaturni prekidači) itd. Simboli koji se koriste za prikazivanje najčešće korišćenih tipova kontakta prikazani su na Sl. 11. Potrebno je zapaziti da se ni relejni namotaj, ni dvopolžajni prekidač, s obzirom na specifičan način njihovog funkcionisanja, ne mogu klasifikovati ni kao NO ni kao NC. Izla

Taster

Opis Normalno otvoren

Normalno zatvoren

Običan prekidač

Granični prekidač

Prekidač sa oprugom

Temperaturni prekidač

Prekidač aktiviran protokom

Prekidač aktiviran nivoom

Prekidač aktiviran pritiskom

Prekidač aktiviran rastojanjem

Relejni namotaj

Dvopoložajni prekidač

Relejni kontakt

Osigurač

Simbol

zaustavljanje motora ili promenu smera obrtanja, za aktiviranje i dezaktiviranje signalizacije alarma, za paljenje i gašenje kontrolnih sijalica, otvaranje i zatvaranje

Page 18: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

ventila, spajanje i razdvajanje kvačila, upravljanje releima, solenoidima itd. Osnovni izlazni element je rele, koje se realizuje kao tranzistorsko rele (za mala opterećenja), elektromehaničko rele (za srednja opterećenja) i kao kontaktor (za velika opterećenja). Svi ovi uređaji su ekvivalentni u smislu logičke funkcije koju realizuju, ali se razlikuju u pogledu električnih karakteristika. Ukoliko je potrebno da se izvrši prekidanje izuzetno velikih napona ili struja, mogu se koristiti više stepeni relei. Nezavisno od realizacije, rele se može posmatrati kao električni prekidač čijim stanjem se upravlja pomoću drugog prekidača (npr. pomoću binarnog signala koji dolazi iz kontrolera).

Pored relea, često se koristi i solenoid – još jedan elektromehanički aktuator, čjim radom

id – koji ima

solenoida, mehanička opruga vraća jezgro u počjaju i dva granična

prekid

smerni solenoid – koji ima dva izvoda za napajanje, tako da smer struje,

s

Sl. 13 Dvosmerni solenoid

se upravlja pomoću elektromagnetne sile proizvedene u namotaju. U principu, rad solenoida zasniva se na struji koja postoji u namotaju i koja proizvodi magnetno polje. U zavisnosti od smera struje, menja se i smer sile magnetnog polja koja privlači gvozdeno jezgro ka centru namotaja ili ga odbija od centra. Postoje dva tipa solenoidnih aktuatora: • Jednosmerni soleno

Opseg kretanja

samo jedan izvod za napajanje, tako da struja ima uvek isti smer, što znači da se i jezgro pod dejstvom magnetne sile može pomerati samo u jednom smeru. U odsustvu napajanja etni položaj (Sl. 12).

Potrebno je da se istakne da se uz solenoid po pravilu postavlača koji omogućavaju da se detektuje kada jezgro dođe u krajnji desni ili krajnji

levi položaj. • Dvo

Sl. 12 Jednosmerni solenoid

opruga A+

a- a+

- +Smer kretanja

Izlaz kontrolera

Ulaz kontrolera

odnosno odgovarajuće magnetne sile zavisi od toga na koji izvod je priključeno napajanje. U skladu sa time i jezgro se kreće u jednom od dva moguća smera. Ukoliko se napajanje dovede na oba izvoda, jezgro se neće pomerati, Isto tako, ukoliko ni na jednom kraju nema napajanja, jezgro će ostati u zatečenom položaju, uz uslov da ne postoji neka mehanička sila (npr. sila zemljine teže, ako je solenoid u vertikalnom položaju) koja bi izazvala njegovo kretanje. Drugim rečima, u odsustvu napajanja, olenoid se nalazi u slobodnom stanju

(Sl. 13).

Opseg kretanja

A- A+

a- a+

- +Smer kretanja

Izlaz kontrolera Ulaz

kontrolera

Page 19: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

4. Vezivanje digitalnih uređaja za digitalni modul Samo se po sebi razume da će digitalni senzor moći da generiše odgovarajući

binarni signal ukoliko se nalazi u električnom kolu koje se zatvara (ili otvara) kada se senzor aktivira. Otuda, se senzor mora vezati u električno kolo digitalnog ulaznog modula. Ovo kolo će omogućiti detekciju binarnog signala i prenos odgovaajuće vrednosti u memoriju PLC-a. Na isti način, diskretni izvršni organ mora biti povezan u električno kolo digitalnog izlaznog modula. Ovo kolo omugaćava da se binarni signal koji odgovara vrednosti bita u memoriji prenese na izvršni organ.

Prilikom povezivanja digitalnih uređaja neobično je važno da se vodi računa o tome kako je uređaj projektovan, odnosno kakav treba da bude smer električnog signala. U tom smislu razlikuju se dve vrste uređaja: • uređaji koji su izvor signala (source devices) – povezuju se na pozitivni pol izvora

napajanja • uređaji koji su primaoci signala (sinking device) – povezuju se na zajedničku tačku

izvora napajanja. Da bi se obezbedila kompatibilnost digitalnih uređaja i PLC-a za koji se oni

vezuju, digitalni moduli se takođe proizvode u dve kategorije • digitalna U/I kola koja su izvor signala za uređaje koji su projektovani kao primaoci. • digitalna U/I kola koja su primaoci signala za uređaje koji su projektovani kao izvor.

Način vezivanja, ovih uređaja prikazan je na Sl. 14 i Sl. 15. Pri tome, potrebno je

da se istakne da digitalni moduli koji predstavljaju izvor signala moraju u sebi da imaju i izvor napajanja. U tom slučaju, postojanje još jednog spoljnog izvora, je opciono. Za razliku od njih digitalni moduli koji primaju signale nemaju izvor napajanja. To znači da u kolu preko koga se vezuje digitalni uređaj mora da postoji spoljni izvor napajanja.

DC ulazno kolo

(prijemnik)

ulazni pin

DC COM

DCizvor napajanja

+-

Digitalni ulazni uređaj(izvor)

izvor signal

izlazni pin

DC COM

DCizvor napajanja

+-

Digitalni izlazni uređaj(izvor)

izvor signal

VDC

DC izlazno kolo

(prijemnik)

Sl. 14 Sprezanje digitalnih uređaja koji su projektovani kao izvori

DC ulazno kolo

(izvor)

ulazni pin

VDC

DCizvor napajanja(opcioni) +

-

Digitalni ulazni uređaj

(prijemnik)com signal

izlazni pin

DC COM

Digitalni izlazni uređaj

(prijemnik)com сигнал

VDC

DC izlazno kolo

(izvor)DCizvor napajanja(opcioni)

+-

Sl. 15 Sprezanje digitalnih uređaja koji su projektovani kao prijemnici

Izvesno je da postoje i digitalni uređaji koji ne pripadaju ni jednoj od ovih kategorija. Tako, na primer, mehanički prekidači mogu da provode struju u oba smera, što znači da se mogu povezati na oba tipa modula. Sa druge strane, uređaji koji imaju neke elektronske komponente zahtevaju da se vodi računa o smeru struje, tako da mogu da se koriste samo sa odgovarajućom vrstom digitalnih U/I modula.

Page 20: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

3. Analogni U/I moduli Analogni ulazni moduli su kola za spregu između kontinualnih (analognih) signala

koji dolaze od mernih instrumenata i digitalnih (numeričkih) vrednosti kojima su ovi signali prikazani u PLC-u. Analogni izlazni moduli obezbeđuju spregu između numeričkih vrednosti u PLC-u i analognih signala koji predstavljaju ove vrednosti i koji služe za upravljanje izvršnim organima.

Analogni instrument

Analogni itvršni organ

AU

AI

U principu jedan modul se spreže sa više spoljnih uređaja, pri

čemu se svaka sprega posmatra kao jedan ulazni ili izlazni kanal. Moduli se međusobno razlikuju po broju i vrsti kanala. Neki moduli su samo ulazni ili samo izlazni, a neki su kombinovani, što zanči da imaju i izlazne i ulazne linije.

Sl. 16 Kombinovani Analogni U/I modul

Svaki modul se smešta u jedan slot na šasiji PLC-a (Sl. 16). Otuda se, sa gledišta adresiranja, on tretira isto kao i digitalni modul, s tim što je značenje pinova i broj bitova koji odgovaraju jednom pinu drugačiji. Drugim rečima podaci koji se preko modula unose u računar nalaziće se u određenim lokacijama datoteke ulaza (I), a podaci koji se iznose iz računara, nalaziće se u datoteci izlaza (O). Broj reči koji odgovara jednom kanalu zavisi od vrste

samog modula. U principu se može smatrati da svakom ulaznom ili izlaznom kanalu odgovara po jedna reč, tako da se adresa kanala formira u skladu sa rednim brojem slota i rednim brojem kanala (Sl. 17). Sadržaj odgovarajućih memorijskih lokacija u ovim datotekama menja se u toku ulaznog ili izlaznog sken ciklusa.

P : e . w

Tip pina O - izlaz (output)I - ulaz (input)

Redni broj slota

Redni broj reči(analognog kanala0, 1, ...)

Sl. 17 Adresiranje analognih ulaza i izlaza

Analogni ulazni kanal Nezavisno od toga koliko se ulaznih kanala nalazi na jednom modulu, modul, po

pravilu, ima samo jedan A/D konvertor. U toku ulaznog sken ciklusa, uz pomoć multipleksera, odabira se jedan po jedan ulazni kanal na modulu, izvrši se konverzija odgovarajućeg signala i on se smešta u odgovarajuću reč u memorijskom području koje odgovara datoteci ulaza.

Imajući u vidu da je merni signal uvek zašumljen, signal koji dolazi preko analognog kanala se posle konverzije propušta kroz digitalni filter koji ima za cilj da odbaci komponente visokih učestanosti koji potiču od šuma. Tip i vrsta ovog ugrađenog filtra zavisi od proizvođača. Kod nekih tipova modula korisniku može sam da podešava parametre filtra. Pored toga, neki analogni moduli pružaju mogućnost korisniku da dobije i informacije o prekoraćenju opsega ili o drugim aspektima rada modula.

Vrsta A/D konvertora i njegova rezolucija zavise od tipa modula. U principu oni se kreću od 12 do 16 bitova. Kod posmatrane klase SLC kontrolera koriste se 16-bitni

Page 21: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

A/D konvertori. Otuda se svakom ulaznom kanalu pridružuje po jedna memorijska reč. To nadalje znači da se svaki ulazni kanal adresira pomoću adrese oblika I:e.w. U principu, moguće je pristupiti i pojedinom bitu unutar svake od ovih reči, no ti bitovi nemaju nikakvo pojedinačno značenje, pa se ne vidi razlog zašto bi se to radilo.

izvor

ANL COM

izvor

izvor

+-

+-

+-

IN0+

IN0-

-+

ANL COM

IN2+

IN2-

ANL COM

IN1+

IN1-

GNDizvor

izvor

signal

signal

davač

davač

davač

Analogni ulazni modul

+-

+-

Analogni davač se vezuje tako što se formira zatvoreno električno kolo. Pri tome, izvor napajanja tog kola može biti u samom modulu ili spolja. Za razliku od digitalnih U/I, kod analognih modula izvor napajanja je veoma često spoljni. Samo električno kolo se zatvara vezivanjem krajeva analognog davača sa pinovima na ploči analognog modula (Sl. 16). Svakom analognom ulaznom kanalu pridružena su 3 pina. Dva pina služe za ulaz signala, dok je treći pin vezan za zajedničku masu na samom modulu. Način njihovog korišćenja zavisi od vrste analognog davača sa koga se signal vodi na kanal. Ako davač ima dva, tri ili četiri izlaza onda se može izvesti diferencijalna sprega davača i modula. Svakom davaču pridružuje se zaseban izvor napajanja i svi kanali su međusobno odvojeni (Sl. 18). Za davače koji imaju samo dva ili tri izlaza, može se izvesti veza sa jednim krajem, tako da se električno kolo zatvara preko zajedničke tačke (mase) na samom modulu. U tom slučaju, dovoljan je jedan izvor napajanja za više analognih kanala (Sl. 19).

Sl. 18 Diferencijalna sprega analognog ulaza

ANL COM

izvor+-

IN0+

IN0-

+

ANL COM

IN2+

IN2-

ANL COM

IN1+

IN1-

GNDizvor signal

davač

davač

Analogni ulazni modul

+

davač

signal

signal

Potrebno je da se istakne da diferencijalna sprega ima bolje karakteristike posebno kad se radi o potiskivanju smetnji koje potiču od napajanja.

Sl. 19 Sprega analognog ulaza sa jednim krajem

Anolgni ulazni kanali su, po pravilu, prilagođeni za standardizovane vrste signala (strujne ili naponske) i to u opsezima koji se najčešće sreću kod različitih analognih davača. Najčešće je modul tako podešen da se postavljanjem internih prekidača može definisati da li će se kanal koristiti za strujni ili naponski signal. Tipični skup signala koji se sreće kod analognih ulaza, zajedno sa njihovim celobrojnim prezentacijama kod 16-bitne konverzije dat je tabeliT. 9.

U skladu sa vrednostima iz tabele, očigledno je da se pretvaranje dobijenih vrednosti u odgovarajuće električne veličine može izvršiti prema sledećim formulama

ulazni napon (V) ×=32768

10 celobrojna decimalna vrednost

Page 22: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

ulazna struja (mA) ×=16384

20 celobrojna decimalna vrednost

Opseg napona/struje Celobrojna decimalna

reprezentacija (datoteka ulaza)

Rezolucija

-10V dc do +10V dc -32768 do +32767 0 do 10V dc 0 do 32767 0 do 5V dc 0 do 16384 1 do 5V dc 3277 do 16384

305.176µV

-20mA do +20mA -16384 do +16384 0 do 20mA 0 do 16384 4 do 20mA 3277 do 16384

1.2207µA

T. 9 Opseg ulaznih signala i njihova konverzija u celobrojne vrednosti

Neki analogni moduli pružaju mogućnost da se zahteva da sam modul interno izvrši konverziju u električne ili inžinjerske jedinice. Ukoliko modul nema takvu opciju, konverzija može da se izvrši programski. Problemima transformacije signala biće kasnije, kada se prouči programiranje PLC-a, posvećeno više pažnje.

Napomenimo još, da najveći broj analognih modula interno skenira ulazne kanale i vrši A/D konverziju ulaznih signala daleko češće nego što to zahteva sken ciklus PLC-a. Sve konvertovane vrednosti nalaze se u skupu internih registara PLC-a i bivaju zamenjene sa novim vrednostima posle sledeće konverzije. Sadržaj tih registara, se međutim, prebacuje u odgovarajuće područje datoteke ulaza samo u toku ulaznog sken ciklusa. Ukoliko je korisniku, iz nekog razloga, važno da raspolaže i sa trenutnom vrednošću ulaza na nekom kanalu, on to može da ostvari posebnom programskom naredbom koja će uzeti traženu vrednost iz registra i smestiti je na odgovarajuče mesto u datoteci. Analogni izlazni kanal

Za razliku od analognih ulaza, svakom analognom izlaznom kanalu pridružen je poseban D/A konvertor. Pomoću njega se celobrojna vrednost koja se nalazi na odgovarajućem mestu u datoteci izlaza pretvara u strujni ili naponski signal. U principu, moduli se razlikuju po rezoluciji, ali se najčešće sreću konvertori čija je rezolucija 12 do 14 bitova. Kod posmatrane klase SLC kontrolera koriste se 14-bitni D/A konvertori. Otuda se svakom ulaznom kanalu pridružuje po jedna memorijska reč. To nadalje znači da se svaki ulazni kanal adresira pomoću adrese oblika O:e.w. Pri tome se za smeštanje podatka koristi 14 levih bitova, tako da dva poslednja desna bita nisu u upotrebi.

Kao i analogni ulazi, i analogni izlazi se prave za standardizovane naponske i strujne signale. Pri tome, za razliku od ulaznih modula, ovde je svaki kanal unapred formiran za prenošenje ili naponskih ili strujnih signala. Tipičan skup signala i način njihovog pretvaranja iz celobrojnih vrednosti u električne signale dat je u tabeli T. 10.

U skladu sa podacima iz tablice, vidi se da se konverzija vrednosti može izvršiti prema sledećim relacijama

celobrojna decimalna vrednost ×=10

32768 izlazni napon (V)

celobrojna decimalna vrednost ×=21

32768 izlazna struja (mA)

Pri tome je potrebno zapaziti da će se isti rezultat dobiti i ako se u gornjim

Page 23: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

relacijama koristi konstanta 32764 umesto 32768. Naime, razlika u rezultatu ogledaće se samo u poslednja dva bita, koja se ne koriste pri D/A konverziji.

Celobrojna decimalna reperezentacija (datoteka izlaza)

Opseg napona/struje Rezolucija

-32768 do +32764 -10V dc do +10V dc0 do 32764 0 do 10V dc 0 do 16384 0 do 5V dc

3277 do 16384 1 do 5V dc

1.2207mV

0 do 32764 0 do 21mA 0 do 31208 0 do 20mA

6242 do 31208 4 do 20mA 2.56348µA

T. 10 Opseg izlaznih signala i konverzija celobrojnih vrednosti u električne veličine

4. Formiranje aplikacije Formiranje jedne aplikacije započinje uvek specifikacijom samog kontrolera na

kome će se data aplikacija realizovati. To znači da korisnik mora da pruži informaciju o vrsti i tipu procesorskog modula koji će se koristiti, o ulazno izlaznim modulima koji će se postaviti u šasiji i o tipu računarske mreže u koju će taj kontroler biti vezan. Najveći broj proizvođača PLC-ova razvio je i odgovarjući grafički korisnički interfejs koji omogućava korisniku da na veoma jednostavan način izvrši ove operacije. U tom slučaju specifikacija se odvija kroz sistem "prozora" okviru kojih se korisniku nude sve moguće opcije među kojima on odabira onu koja odgovara datoj konfiguraciji.

Na prikazan je izgled prozora pri definiciji konfiguracije PLC-a iz familije Allen Bradley SLC 500 Modular Controllers.

Sa slike (Sl. 20) se vidi da se u slotu 0 nalazi procesorski modul tipa 5/03, koji u šasiji ima prostor za još tri modula.

Sl. 20 Primer konfigurisanja PLC-a

Page 24: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

U slotu 1 nalazi se kombinovani digitalni modul sa 6 ulaza i 6 izlaza. Ovaj modul imaće adrese I:1.0/b i O:1.0/b gde je b redni broj bita koji može imati vrednost od 0 do 5. Pri tome, ulazni signali moraju biti jednosmerni u opsegu do 24 V, dok su izlazni signali prilagođeni standardima za upravljanje relejima.

U slotu 2 smešten je modul sa 2 analogna ulazna kanala i 2 analogna izlazna kanala. Ulazni kanali mogu da se koriste za ulaz strujnih signala (-20mA do +20 mA) ili za ulaz naponskih signala (–10V do +10V), što se podešava postavljanjem internih prekidača. Adrese ova dva ulazna kanala su I:2.0 i I:2.1. Oba izlazna kanala daju jednosmerne naponske signale u opsegu od –10V do +10V, dok su adrese ova dva izlaza O:2.0 i O:2.1.

U slotu 3 nalazi se digitalni ulazni modul sa osam ulaza (adrese I:3.0/b , b = 0, 1, 2, ... , 7). Ovaj modul prima digitalne signale koji su naizmenični u opsegu do 200/240 V.

Tek kada se definiše struktura PLC-a može se početi sa formiranjem programa. Pri tome, potrebno je da se istakne da svaki proizvođač PLC-a razvija i posebni softverski alat koji omogućava da se na izuzetno jednostavan način definiše struktura PLC-a i formira odgovarajući program. Ovaj alat, koji kod najvećeg broja proizvođača korristi grafički interfejs (GUI), omogućava da se PLC emulira na standardnom PC računaru. To zapravo znači da se, sa gledišta korsinika, PC računar na kome je softverski alat instaliran ponaša kao PLC. Korisnik, u fazi definisanja aplikacije, razvijanja i testiranja programa, ima mogućnost da koristi sve opcije i pogodnosti PC računara. Kada je program razvijen on se, posebnom tehnikom, prebaci na PLC (down load programa). Ukoliko PLC ostane i dalje u vezi sa PC računarom, onda se isti softverski alat može koristiti da se pomoću PC-a prati izvršavanje formiranog algoritma i obavljaju eventualne korekcije.

Page 25: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

1/plc_leder

Leder programiranje

1. Uvod u leder programiranje Ako se PLC posmatra kao mikroračunarski sistem, što on sasvim sigurno i jeste,

onda bi se moglo očekivati da se za njegovo programiranje koriste standardni prgramski jezici. Međutim, ako se pođe od činjenice da je PLC projektovan kao namenski mikroračunarski sistem za upravljanje i nadzor rada nekog procesa, i da u skladu sa tim ima poseban operativni sistem koji obezbeđuje periodično ponavljanje sken ciklusa, onda je logično očekivati da je za njegovo programiranje razvijen i poseban programski jezik.

Kao š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.

Kada je reč o projektovanju relejnih sistema onda je zapravo potrebno da se reši problem grafičkog predstavljanja vremenske sekvence logičkih operacija. Klasični logički dijagrami su izuzetno korisni za prikazivanje relacija između elemenata kombinacione logike. Međutim, oni ne pružaju mogućnost za prikazivanje različitih ulazno/izlaznih promenljivih kao funkcija vremena. Sa druge strane, vremenski dijagrami su izuzetno pogodni za prikazivanje odnosa pojedinih promenljivih u toku vremena, ali ne omogućavaju da se prikaže logika koja uslovljava te odnose. U cilju spajanja obe vrste prikazivanja, za projektovanje relejnih sistema razvijeni su leder (lestvičasti) dijagrami.

Projektovanje PLC-ova je, dakle, podrazumevalo da se za njih mora razviti i odgovarajući programski jezik zasnovan na leder dijagrmima – leder programski jezik. Potrebno je da se istakne da leder programski jezik nije jedini jezik za programiranje PLC-a. U upotrebi su i jezici koji koriste funkcionalne blokove, zatim jezici na bazi operacija Bool-ove algebre, BASIC orijentisani jezici, i u novije vreme objektno orijentisani jezici tipa Visual BASIC-a. Činjenica je međutim da je, uprkos svojevrsnoj proliferaciji programskih jezika koju je donela računarska industrija, leder programiranje i danas posle više od 20 godina koriščenja PLC-a daleko najrasprostranjeniji način programiranja. Ima mišljenja da je to dokaz konzervativnosti krajnjih korisnika koji su navikli na projektovanje relejnih sistema. Izvesno je, međutim, da se i projektanti koji dolaze iz sveta računara, koji su dakle naviknuti na korišćenje različitih programskih jezika, kada sagledaju problem koji treba da se reši opredeljuju za projektovanje u lederu.

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 časovnici 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) (Sl. 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

Page 26: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

2/plc_leder

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. Naime, za vreme programskog skena menjaju se samo vrednosti promenljivih smeštenih u datoteku izlaza (output image file). Tek kasnije, za vreme izlaznog dela sken ciklusa, sve promenljive iz datoteke 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

Sl. 1 Leder rang

Page 27: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

3/plc_leder

istinitosti uslova odnosi se na vrednosti promenljivih u datoteci ulaza (input image file), 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.

2. Bit naredbe Bit naredbe su, kao što samo ime kaže naredbe čiji su operandi bitovi. Sa

gledišta lokacije operanada, to znači da se oni najčešće nalaze u datoteci 3 (bit file), digitalnim ulaznim ili izlaznim datotekama (input image file 1 ili output image file 0) ili u korisničkim datotekama bit tipa. Pored toga, adresirani operand može da se nalazi i u bilo kojoj drugoj datoteci u okviru koje je moguće adresirati pojedini bit. Gledano potpuno opšte za vreme programskog skena u okviru bit naredbi ispituje se stanje pojedinog bita, ili se njegova vrednost postavlja na 1 (set) ili na 0 (reset).

⇒ Bit naredbe za definisanje uslova Ove naredbe se postavljaju na levoj strani ranga i definišu uslov koji se odnosi na stanje bita čija je adresa definisana u naredbi. Kao rezultat izvođenja naredba dobija istinosnu

vrednost true (istinit) ili false (neistinit) .

• XIC - Examine if closed (ispitivanje da li je kontakt zatvoren)

• XIO - Examine if open (ispitivanje da li je kontakt otvoren)

Nazivi ove dve naredbe potiču od ispitivanja binarnnih signala koji dolaze sa

prekidačkih kola. U tom smislu XIC naredba se odnosi na normalno otvoren prekidač (ima vrednost 1 kada je prekidač pritisnut), dok se XIO naredba odnosi na normalno zatvoren prekidač (ima vrednost 1 kada prekidač niej pritisnut – "ne a").

⇒ Bit naredbe za postavljanje vrednosti izlaza

Ovim naredbama se bitu čija je adresa navedena u naredbi dodeljuje vrednost 1 ili 0. Podsetimo se da se ove nardebe nalaze na desnoj strani ranga, što znači da će se one izvršiti samo ako je iskaz (uslov) na levoj strani ranga istinit.

Page 28: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

4/plc_leder

• OTE - Output energize (pobuđivanje izlaza)

Potrebno je da se zapazi da se ovom naredbom vrednost bita čija je adresa “a”

može promeniti samo jedanput za vreme sken ciklusa. Ova vrednost ostaće neizmenjena sve do sledećeg sken ciklusa, kada će se pri skeniranju odgovarajućeg ranga ponovo ispitati uslov i izvesti odgovarajuća akcija.

• OTL - Output latch (pamćenje izlaza)

OTL naredbom se adresovani bit može isključivo postaviti na 1. Naime za razliku

od OTE naredbe kojom se vrednost bita može postavljati na 0 ili 1 svaki put kad se rang skenira, kod OTL naredbe vrednost bita se postavlja (lečuje) na 1 u prvom skenu u kome je uslov istinit. Nakon toga ova naredba postaje neosetljiva na istinosnu vrednost uslova. To znači da će vrednost bita ostati neizmenjena bez obzira na to kako se menja vrednost uslova.

• OTU - Output unlatch (resetovanje izlaza)

OTU naredbom se adresovani bit može isključivo postaviti na 0. Pri tome,

vrednost bita se postavlja (lečuje) na 0 u prvom skenu u kome je uslov ispunjen. Nakon toga ova naredba postaje neosetljiva na vrednost uslova.

Potrebno je da se istakne da se OTL i OUT naredba koriste uvek u paru, pri čemu se u obe naredbe adresira isti bit.

Page 29: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

5/plc_leder

⇒ Bit triger naredba • OSR - One-shot rising (uzlazna ivica)

OSR naredba omogućava da se obezbedi izvodjenje neke akcije samo

jedanput. Potrebno je da se istakne da je ovo specifična naredba koja istovremeno pripada i kategoriji uslova i kategoriji akcije. Naime ova naredba se postavlja u rangu između dela koji predstavlja uslov i dela koji predstavlja akciju. Kada se u toku sken ciklusa detektuje da je uslov promenio svoju vrednost sa neistinit na istinit (uzlazna ivica) onda OSR naredba takođe dobija vrednost istinit (što ovu naredbu svrstava u kategoriju naredbi uslova). Istovremeno se i bitu čija je adresa pridružena toj naredbi dodeljuje vrednost 1 (po čemu se ova naredba svrstava i u kategoriju akcija). Obe ove vrednosti ostaju nepromenjene do sledećeg sken ciklusa, kada naredba dobija vrednost neistinit, dok se adresovani bit postavlja na vrednost 0 ili 1 u zavisnosti od vrednosti uslova. U narednim sken ciklusima vrednost naredbe ostaje nepromenjena sve dok se u uslovu (koji predstavlja ulaz u OSR) ponovo ne detektuje prelaz “neistinit/istinit”.

Potrebno je da se istakne da bit čija je adresa pridružena ovoj naredbi ne predstavlja vrednost naredbe. Naime, ovaj bit se koristi kao interna promenljiva i služi za pamćenje vrednosti uslova koji prethodi OSR naredbi. Vrednost ovog bita je 1 ako je uslov istinit, odnosno 0 ako je uslov neistinit. U tom smislu, sa aspekta dodeljivanja vrednosti bitu čija se adresa navodi u OSR naredbi, ova naredba je identična sa OTE naredbom. Navedeni bit se može nalaziti u bilo kojoj bit-adresibilnoj datoteci izuzev datoteke ulaza i izlaza.

Vrednost koju dobija OSR naredba koristi se kao uslov za izvođenje naredbe akcije koja se nalazi na desnoj strani ranga (neposredno iza OSR naredbe). Shodno tome, naredba akcije biće izvršavana po jedanput pri svakom prelazu uslova “neistinit/istinit”.

Iza OSR naredbe se može nalaziti samo jedna naredba akcije. (Kod kontrolera tipa SLC 500 i SLC 5/01 OSR naredba se ne sme nalaziti u paralelenim granama na desnoj strani ranga).

3. Programski sken i vremenski dijagram U toku programskog skena procesor izvršava pojedinačne naredbe, obrađujući

rang po rang od početka pa do kraja programa. U okviru obrade jednog ranga, procesor ispituje stanja bitova u datotekama podataka, određuje vrednost pojedinačnih naredbi uslova, izvršava logičke I i ILI operacije nad tim vrednostima, u skladu sa načinom na koji je formiran desni deo ranga, i kao rezultat tih operacija određuje istinosnu vrednost uslova. Ukoliko je ova vrednost istinit, procesor će izvršiti naredbe koje se nalaze na levoj strani ranga i koje predstavljaju akciju.

U cilju ilustracije izvršavanja leder programa u PLC-u posmatrćemo jedan rang

Page 30: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

6/plc_leder

(Sl. 2) nekog programa. U okviru ovog ranga ispituje se stanje jedne ulazne linije koja je vezana za nulti pin ulaznog dela kombinovanog U/I modula, smeštenog u slotu 1 PLC-a. Na osnovu stanja ulazne linije generiše se signal na izlaznoj liniji koja je vezana za nulti pin izlaznog dela istog U/I modula. Na slici Sl. 3 prikazan je vremenski dijagram promene signala na ulaznoj liniji, vrednosti bita u input image file-u koji je pridružen toj liniji, vrednosti bita u output image file-

u i signala na izlaznoj liniji koji je sa tim bitom povezan. Predpostavljeno je da ceo program ima više ulaznih signala i više izlaznih signala čije očitavanje, odnosno generisanje zahteva određeni period vremena za ulazni i izlazni sken interval. Isto tako, predpostavljeno je i da se program sastoji od više rangova, čija obrada zahteva neki period vremena (programski sken interval).

Potrebno je da se zapazi da se stanje signala na ulaznoj liniji može promeniti u bilo kom trenutku. Međutim, vrednost bita pridružena toj liniji biće promenjena tek u toku prvog ulaznog sken ciklusa koji nastupa posle promene stanja ulazne linije. Za vreme programskog skana vrednost XIC naredbe se određuje na osnovu stanja odgovarajućeg bita, a ne njemu odgovarajućeg ulaznog signala. Otuda je u prvom sken ciklusu vrednost ove naredbe 0 iako je ulazni signal već u stanju logičke jedinice. Međutim, budući da je on promenio stanje tek posle prvog ulaznog skena, ta promena još uvek nije registrovana postavljanjem njemu odgovarajućeg bita, koji je odgovaran za vrednost XIC naredbe. U skladu sa tim, ne izvršava se OTE naredba, pa izlazni bit i

Sl. 2 Postavljanje izlaza u zavisnosti od vrednosti ulaza

Sl. 3 Vremenski dijagram promene U/I linija i odgovarajućeg ranga

Page 31: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

7/plc_leder

njemu odgovarajuća izlazna linija ostaju u stanju 0. Promena na ulazu dovodi do promene ulaznog bita tek u drugom ulaznom sken ciklusu, tako da tek u drugom programskom ciklusu XIC naredba dobija vrednost istinit. Kao rezultat ove vrednosti izvršava se OTE naredba i izlazni bit postavlja na vrednost 1. U toku drugog izlaznog sken ciklusa ova vrednost prenosi se na izlaznu liniju gde se generiše signal koji odgovara logičkoj jedinici.

Kašnjenje između trenutka u kome signal na ulaznoj liniji menja vrednost i trenutka u kome se ta promena registruje postavljanjem odgovarajućeg bita, kao i kašnjenje između trenutka u kome izlazni bit dobija neku vrednost i trenutka kada se ta vrednost pojavi na izlaznoj liniji može se izbeći posebnim neposrednim naredbama, o kojima će kasnije biti više reči.

4. Primeri ⇒ Upravljanje paljenjem sijalice

Posmatra se električno kolo (Sl. 4) u kome sijalica S svetli kada je zatvoren prekidač P1 i jedan od prekidača P2 ili P3. Potrebno je da se ovo električno kolo zameni sa PLC-om.

Da bi se postavljeni zadatak rešio neophodno je kao prvo da se sa kojom opremom se raspolaže i da se odluči kako će se ona vezati za PLC.

Predpostavimo da imamo tri tastera od kojih su dva normalno

otvorena i jedan normalno zatvoren i jedno električno kolo u kome se nalazi sijalica koje se zatvara pomoću releja. Usvojićemo da normalno otvoreni tasteri obavljaju funikciju prekidača P1 i P3, dok će normalno zatvoren taster obavljati funkciju prekidača P2.

U skladu sa odabranim senzorima i izvršnim organom neophodno je da raspolažemo sa tri digitalna ulaza i jednim digitalnim izlazom. Budući da imamo PLC koji u prvom slotu ima digitalni U/I modul, možemo

izvršiti vezivanje opreme. Po prirodi stvari vezaćemo tri tastera za ulazne pinove 0, 1 i 2, dok će rele na izlazu biti vezano za izlazni pin 0. Shodno tome, adrese prekidača P1, P2 i P3 su respektivno I:1/0, I:1/1 i I:1/2, dok je adresa sijalice O:1/0 (Sl. 5).

Kada je formirana šema vezivanja opreme za PLC, onda se pristupa pisanju leder programa.

U cilju formiranja levog dela ranga treba uočiti da je uslov za paljenje sijalice da se istovremeno pritisne taster P1 i jedan od tastera P2 ili P3. Budući da su tasteri P1 i P3 normalno otvoreni, pritisak na njih dovodi do zatvaranja odgovarajućih prekidačkih kola, tako da se može detektovati pomoću XIC naredbe, koja će dobiti vrednost istinit kada su

Sl. 4 Električno kolo

Sl. 5 Sprezanje senzora i izvršnog organa sa PLCom

Page 32: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

8/plc_leder

vrednosti odgovarajućih bitova u datoteci ulaza (I:1/0 и I:1/2) postavljene na 1. Pritisak na taster P2 koji je normalno zatvoren, dovodi do otvaranja njegovog prekidačkog kola, što znači da se može detektovati pomoću XIO naredbe, koja će dobiti vrednost istinit kada je vrednost odgovarajućeg bita u datoteci ulaza (I:1/1) postavljena na 0. Konačno, kako se nad tasterima 2 i 3 zahteva logička ILI opreacija, to odgovarajuće naredbe moraju biti vezane paralelno. Ispunjenost uslova treba da obezbedi da se na izlaznom pinu generiše naponski signal koji će da prouzrokuje paljenje sijalice. Ovaj zahtev se može ostvariti OTE naredbom. U skladu sa time odgovarajući rang leder programa ima izgled kao na Sl. 6.

Sl. 6 Leder program koji realizuje električno kolo

Svakom bitu koji se koristi u leder programu može se pridružiti simboličko ime. U principu nema nikakvih posebnih pravila u pogledu davanja imena. Ipak praksa je pokazala da je pogodno da se ime formira tako da što vernije opisuje fizičko značenje signala na koji se odnosi. Pored toga, u cilju lakše provere ispravnosti programa, pogodno je da se ime formira tako da odgovara stanju pri kome bit koji se ispituje ima vrednost 1. Poštujući taj princip, u ovom primeru je bitu I:1/0 dato ime p1_on (bit I:1/0 ima vrednost 1 kao je P1 pritisnut (on), dok je bitu I:1/1 dato ime p2_off (bit I:1/1 ima vrednost 1 kad je P2 nepritisnut(off). U skladu sa time prva XIC naredba koja ispituje vrednost bita na adresi I:1/0 dobiće vrednost istinit ako bit ima vrednost 1 što znači da taster P1 jeste pritisnut. Isto tako XIO naredba koja ispituje vrednost bita na adresi I:1/1 dobiće vrednost istinit ukoliko bit nema vrednost 1, što znači da taster P2 nije nepritisnut.

Opisani sistem će ispravno raditi samo dotle dok se odgovarajući tasteri drže pritisnuti. Naime, čim se taster otpusti on se vraća u normalni položaj i u sledećem sken ciklusu, uslov viče neće biti ispunjen, pa će se sijalica ugasiti. Prirodno je međutim da se zahtev postavi tako da sijalica nastavi da svetli i posle otpuštanja tastera.

Sl. 7 Leder program koji trajno postavlja izlazni bit ("pamti" ako je uslov bio ispunjen)

Page 33: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

9/plc_leder

Postavljeni zadatak može se rešiti tako što će se na neki način upamtiti da je uslov za paljenje sijalice u nekom trenutku bio ispunjen. U tu svrhu može se na izlaznom delu ranga umesto OTE naredbe postaviti OTL naredba koja će obezbediti trajno postavljanje (lečovanje) izlaza (Sl. 7).

Sl. 8 – Leder program sa postupkom samodržanja

Umesto korišćenjem naredbe OTL isti efekat se može postići i postupkom takozvanog samodržanja kojim se zadržava vrednost izlazne promenljive i posle prestanka uslova za njeno aktiviranje. Naime, ako se u delu ranga koji predstavlja uslov doda još jedna paralelna grana sa XIC naredbom u kojoj se ispituje upravo bit koji se postavlja kao izlaz tog ranga (Sl. 8) onda će, čim se pritiskanjem tastera uslov prvi put ispuni, odgovarajući bit biti postavljen na 1, što znači da će u sledećim sken ciklusima naredba u paralelnoj grani stalno imati vrednost istinit, pa se vrednost izlaznog bita neće menjati sa promenom stanja tastera.

Potrebno je da se istakne da su poslednja dva primera formirana tako da će sijalica kad se jedanput upali nastaviti da svetli neograničeno dugo.

Sl. 9 – Leder program sa trajnim pamćenjem uslova do ptitiska STOP tastera

Da bi se omogućilo i gašenje sijalice neophodno je da sistemu doda još jedan taster (Stop). Pritiskom na ovaj taster, jedanput upaljena sijalica, bi bila isključena. Ako se predpostavi da je ovaj taster normalno otvoren i da je vezan na pin 3 istog ulaznog modula, onda se postavljeni zadatak može realizovati na način koji je prikazan na

Page 34: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

10/plc_leder

slikama Sl. 9 i Sl. 10. Ovde je, naime na red sa delom ranga kojim se ostvaruje paljenje sijalice, vezan uslov kojim se proverava da li Stop taster nije pritisnu. Sve dok Stop taster nije pritisnut, vrednost tog dela uslova je istinita, dakle on ne utiče na ponašanje sijalice. Kad se Stop taster pritisne, vrednost tog dela uslova postaje neistinita, a budući da je to redni (serijski) uslov, i vrednost celog ranga postaje neistinita. U tom slučaju u programu sa trajnim postavljanjem izlaznog bita uslov u drugom rangu postaje istinit i aktivira naredba OTU (Sl. 9). Kod rešenja sa smodržanjem, sama činjenica da u rangu jedan od redno vezanih uslova postaje neistinit dovodi do toga da je uslov neistinit pa se izlazni bit OTE naredbom postavlja na 0 (Sl. 10).

Sl. 10 – Leder program sa samodržanjem do pritiska STOP tastera

Naravno, ceo problem oko paljenja i gašenja sijalice bio bi rešen rangom

koji je prikazan na slici Sl. 6, da su umesto tastera koriščeni dvopoložajni prekidači.

⇒ Puštanje sistema u rad

Posmatra se sistem koji počinje da radi kada se pritisne START taster. Sistem nastavlja sa radom sve dok se ne pritisne stop taster. Istovremeno se zahteva da se prilikom započinjanja rada sistema generiše impulsni signal koji realizuje brzo “zamrzavanje” nekog LED displeja. Potrebno je da se formira leder program koji će podržavati rad opisanog sistema uz predpostavku da se on pušta u rad pomoću jednog “on/off” motora.

Neka su kola koja sadrže START i STOP taster kao i kolo za pobudu motora vezani za U/I modul koji je smešten u slotu 1 PLC-a i to na pinove kojima respektivno odgovaraju adrese I:1/0, I:1/1 i O:1/0. Neka je nadalje signal koji upravlja zamrzavanjem displeja vezan za izlazni pin čija je adresa O:1/1. Odgovarajući leder program dat je na slici Sl. 11.

U prvom rangu uslov je ispunjen ako je START taster pritisnut i STOP taster nije pritisnut. U tom slučaju generisaće se signal za start motora i on će biti zalečovan, tako da se njegova vrednost neće menjati ukoliko se zbog otpuštanja START tastera promeni vrednost uslova. Istovremeno će, prilikom pritiska START tastera, OSR naredba detektovati promenu neistinit/istinit što će dovesti do toga da ona u tom sken ciklusu dobije vrednost istinit tako da će se izvršiti OTE naredba kojom se na izlazu O:1/1 generiše potreban impulsni signal. Sve dok se ne pritisne STOP taster, vrednost uslova u drugom rangu biće neistinita, tako da se naredba unletch neće izvršavati. Kada se pritisne STOP taster, uslov u prvom rangu postaje neistinit, što znači da se letch

Page 35: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

11/plc_leder

naredba ne izvršava. Međutim, vrednost uslova u drugom rangu postaje istinita, pa se izvršava unletch naredba, i time signal za start motora dobija vrednost “logičke” nule, pa se motor zaustavlja.

Sl. 11 – Start/Stop leder program

⇒ Realizacija sekvence Dat je sistem koji sadrži jedan jednosmerni solenoid (A) i dva dvosmerna (B i C).

Potrebno je realizovati sledeću sekvencu pomeranja klipova: A+ B+ C+ B- A- C- . Pri tome se predpostavlja da su u početnom trenutku svi klipovi uvučeni. Granični prekidači koji indiciraju uvučenost klipa A i B su normalno zatvoreni, dok su svi ostali granični prekidači normalno otvoreni. Sistem se pušta u rad pomoću pritiska na taster i prestaje sa radom kada se jedanput izvrši zahtevana sekvenca.

Jedno moguće rešenje postavljenog zadatkadata je na slici. Pri tome je predpostavljeno da su granični prekidači vezani za PLC preko ulaznog modula koji se nalazi u slotu 3 (adrese I:3/b), dok se pobude solenoida dobijaju preko izlaznig linija modula u slotu 1 (adrese O:1/b). Start taster je vezan preko nultog pina modula u slotu 1 (I:1/0).

Interne promenljive kreni (B3:0/0) i kraj (B3:0/2) koriste za otpočinjanje i završetak rada. Interna promenljiva vrati A (B3:0/1) služi za deaktiviranje pobude klipa A, posle čega ga opruga vraća u početni položaj.

Potrebno je da se obrati pažnja na činjenicu da se, da ne bi došlo do slučajnog pomeranja klipova (izazvanog recimo nekim opterećenjem), oni u izvučenom položaju drže pod naponom, sve dok ne dođe trenutak za njihovo uvlačenje. Budući da se stanje graničnih prekidača menja čima se klip pomeri, da bi se obezbedio kontinuitet napajanja koristi se postupak samodržanja (rang 3 i 4).

Zapazimo, takođe, da se stanje prekidača koji indiciraju uvučen položaj klipa ne može ispitivati samo po sebi. Naime ovi prekidači su pritisnuti u početnom stanju, pa je neophodno utvrditi da je došlo do pokreta pre nego što su oni ponovo pritisnuti (rang 5, 6 i7).

Page 36: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

12/plc_leder

Sl. 12 Realizacija sekvence pomeranja klipova

Page 37: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

1/plc_T/C

Naredbe za merenje vremena i prebrojavanje događaja –

časovnik (timer) i brojač (counter)

1. Uvod Prilikom upravljanja ili nadzora procesa često je potrebno da se neka aktivnost

otpočne ili zaustavi posle određenog vremenskog perioda, ili da se ponovi određeni broj puta. U tom smislu neophodno je da kontroler koji će se koristiti za upravljanje procesom pruži mogućnost za merenje vremena i prebrojavanje događaja. Prebrojavanje događaja obavlja brojač (counter), koji nakon registrovanja unapred zadanog broja događaja generiše odgovarajući signal. Merenje vremena ostvaruje se pomoću časovnika (timer). U suštini časovnik izražava vreme kao multipl određenog osnovnog intervala (vremenska baza). To zapravo znači da časovnik radi kao brojač protoka osnovnih intervala i da nakon isteka određenog, unapred zadanog intervala vremena, generiše odgovarajući signal.

Gledano potpuno opšte merenje protoka vremena i prebrojavanje događaja u okviru kontrolera može se realizovati hardverski pomoću odgovarajućih računarskih komponenti (modula) ili softverski (programski). Hardverska realizacija podrazumeva da kontroler ima posebni modul koji ostvaruje funkciju časovnika i brojača. Korisnik odgovarajućim naredbama definiše parametre modula i u toku izvršavanja programa kontroliše njegov rad. U slučaju softverske realizacije, ovu funkciju ostvaruje posebni programski modul, koji korisnik, po potrebi, uključuje u svoj program i odgovarajućim naredbama upravlja njegovim radom. Sa aspekta načina korišćenja, gotovo da i nema razlike između ove dve realizacije. Razlika se zapravo ogleda samo u funkcionalnom smislu. U principu, ukoliko su časovnik i brojač hardverski realizovani oni svoju funkciju obavljaju autonomno, što znači da ne koriste procesor za svoj rad. Nasuprot tome, softverski realizovani časovnik i brojač, kao i svi drugi programski moduli, za izvođenje svojih funkcija zahtevaju izvesno procesorsko vreme. Budući da je procesor opterećen čitavim nizom poslova, to znači da postoji samo određeno vreme koje on može posvetiti radu časovnika i brojača. Otuda hardverska realizacija, bar u principu, omogućava rad sa manjim intervalima vremena, odnosno bržim ponavljanjem događaja od softverske. Sa druge strane međutim, softverska realizacija omogućava da se definiše i koristi praktično neograničen broj časovnika i brojača, jer se kao jedino ograničenje javlja veličina raspoložive memorije.

U seriji kontrolera SLC 5 časovnici i brojači su realizovani softverski, i koriste se kao naredbe akcije. Kao što je već istaknuto ne postoji nikakvo posebno ograničenje u pogledu njihovog broja. Potrebno je da se naglasi da su za neke od SLC 5 kontrolera razvujeni i posebni hardverski brojači.

Pri korišćenju časovnika i brojača neophodno je da se definišu sledeći parametri. • Vremenska baza (time base) određuje dužinu osnovnog intervala vremena. Kod

fiksnog kontrolera SLC/500 i modularnog SLC 5/01, vremenska baza je definisana kao 0.01 sec. Kod kontrolera SLC 5/02, 5/03 i 5/04 bira se jedna od dve moguće vrednosti: 0.01 sec ili 1.0 sec.

• Zadana vrednost (preset value - PRE) je vrednost kojom se definiše željeni broj osnovnog intervala vremena (čime se određuje ukupno vreme koje časovnik treba da izmeri), odnosno ukupni broj događaja koje brojač treba da registruje pre nego što se generiče signal koji označava da su časovnik ili brojač završili rad. Zadana vrednost za časovnik može da se kreće u intervalu od 0 do +32767, dok se zadana vrednost za brojač kreće u opsegu od -32768 do +32767.

Page 38: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

2/plc_T/C

• Akumulirana vrednost (accumulated value - ACC) predstavlja broj osnovnih vremenskih intervala koje je časovnik izbrojao, odnosno broj događaja koje brojač registrovao u nekom trenutku. Kada akumulirana vrednost postane veća ili jednaka od zadane vrednosti časovnik, odnosno brojač, završavaju svoj rad. Opseg dozvoljenih vrednosti za akumuliranu vrednosti isti je kao i za zadanu vrednost.

2. Realizacija časovnika Datoteka podataka o časovniku (timer data file)

S obzirom da je časovnik realizovan softverski, parametri koji definišu njegov rad moraju biti smešteni u memoriji kontrolera. Za pamćenje podataka o časovnicima koristi se datoteka podataka broj 4 (timer file – T). U ovoj datoteci može se definisati najviše 256 različitih časovnika. Ukoliko je potrebno da se koristi veći broj časovnika, korisnik može definisati i dodatne datoteke (korisnički definisane datoteke) čiji su brojevi od 9 do 255.

Svakom časovniku pridružuju se po jedan element u odgovarajućoj datoteci. Osnovni element ovih datoteka sastoji se od tri 16-bitne reči: • Reč 0 je kontrolna reč koja sadrži tri bita koja ukazuju na stanje časovnika, kao i

bitove za interno upravljanje radom časovnika • Reč 1 sadrži zadanu vrednost (PRE) • Reč 2 sadrži akumuliranu vrednost (ACC)

Sl. 1 Elemenat datoteke časovnika i adresiranje časovnika

Na slici Sl. 1 prikazan je jedan elemenat datoteke časovnika, kojim se definiše jedan časovnik. Pored toga, prikazan je format adrese časovnika. Potrebno je da se zapazi da broj elementa zapravo definiše jedan određeni časovnik unutar jedne datoteke časovnika. Svaki od tri bita stanja, kao i zadana i akumulirana vrednost mogu se posebno adresirati i to bilo na standardan način na koji se formira adresa u bilo kojoj datoteci podataka, bilo preko odgovarajućih simbola. To zapravo znači da su sledeće adrese međusobno ekvivalentne: Tf:e.1 ili Tf:e.PRE Tf:e.2 ili Tf:e.ACC Tf:e.0/15 ili Tf:e/15 ili Tf:e/EN

Page 39: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

3/plc_T/C

Tf:e.0/14 ili Tf:e/14 ili Tf:e/TT Tf:e.0/13 ili Tf:e/13 ili Tf:e/DN

Naredbe časovnika Kao što je već rečeno naredbe časovnika su naredbe akcije, što znači da se

nalaze na desnoj strani ranga u leder programu. Postoje tri tipa naredbi kojima se realizuju tri vrste časovnika, i jedna naredba kojom se stanje časovnika resetuje.

Potrebno je da se istakne da se sam časovnik i način njegovog rada definiše preko naredbe koja se uvrštava u leder program. Drugim rečima, kad se u program stavi jedna od moguće tri naredbe i u njoj naznači adresa časovnika u odgovarajućem formatu, onda operativni sistem sam zauzme tri reči u datoteci koja je navedena u adresi.

• Timer on-delay (TON) Kao što je već rečeno,

stavljanjem ove naredbe u leder program automatski se definiše prva vrsta časovnika i zauzimaju tri reči koje čine elemenat broj e u datoteci časovnika broj f. Prilikom

formiranja naredbe specificaraju se i vremenska baza (tx) i zadana vrednost (ns). TON naredba započinje rad časovnika (prebrojavanje osnovnih vremenskih

intervala) za vreme onog programskog sken ciklusa u kome uslov u rangu u kome se naredba nalazi prvi put postaje istinit (prelaz neistini/istinit – uzlazna ivica). U svakom sledećem sken ciklusu, sve dok je uslov istinit časovnik vrši ažuriranje akumulirane vrednosti (ACC) u skladu sa proteklim vremenom između dva ciklusa. Kada akumulirana vrednost dostigne zadanu vrednost, časovnik prekida svoj rad i postavlja DN bit na 1. Pri tome, ako u nekom sken ciklusu uslov postane neistinit, časovnik prekida svoj rad i akumulirana vrednost se postavlja na 0, bez obzira da li je časovnik pre toga izmerio zahtevano vreme ili ne.

Bitovi stanja časovnika menjaju se u toku programskog sken ciklusa na sledeći način: DN - Timer done bit se postavlja na 1 kada je ACC ≥ PRE. On se resetuje na 0 kad uslov u rangu

postane neistinit. EN - Timer enable bit se postavlja na 1 kada je uslov u rangu istinit i resetuje na 0 kada uslov postane neistinit. TT - Timer timing bit se postavlja na 1 kada je uslov istinit i ako je ACC ≤ PRE. On se resetuje na 0

kada uslov postane neistinit ili kada se DN bit postavi na 1, odnosno kada se završi merenje vremena.

U vezi sa radom časovnika potrebno je da se zapazi nekoliko činjenica. Pre svega časovnik radi samo dok je uslov istinit (signal na ulazu u časovnik je u stanju “on”). Istonosnu vrednost uslova pokazuje EN bit. Drugim rečima, ovaj bit ima vrednost 1 onda kada je uslov istinit i to označava da je rad časovnika omogućen (enable). Kada je uslov neistinit, EN bit ima vrednost 0, što znači da je rad časovnika onemogućen. Međutim, činjenica da EN bit ima vrednost 1 ne mora da znači da časovnik zaista i radi, jer je on mogao i da završi rad zbog isteka zadanog vremena, a da pri tome uslov i nadalje ostane istinit. Rad časovnika indicira TT bit. Naime, taj bit je postavljen na 1 za svo vreme za koje časovnik aktivno meri vreme (timer timing), i postavlja se na 0 kada časovnik ne radi. Konačno, kada je vrednost DN bita 1, onda to znači da je časovnik završio (done) svoj posao, tj. izmerio zadano vreme. Pri tome, DN bit ne govori o tome kada je časovnik završio sa poslom, jer će on ostati na vrednosti 1 sve dok uslov ne postane neistinit. Vremenski dijagram rada časovnika ilustrovan je na slici Sl. 2.

Page 40: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

4/plc_T/C

Sl. 2 Vremenski dijagram izvršavanja TON naredbe

Stanje časovnika se može restovati posebnom RES naredbom, o čemu će

kasnije biti više reči.

• Timer off-delay (TOF) Ovom naredbom se definiše

druga vrsta časovnika i zauzimaju tri reči koje čine elemenat broj e u datoteci časovnika broj f. Prilikom formiranja naredbe specificaraju se

i vremenska baza (tx) i zadana vrednost (ns). Akumulirana vrednost se automatski postavlja na 0.

TOF naredba započinje rad časovnika za vreme onog programskog sken ciklusa u kome uslov u rangu u kome se naredba nalazi prvi put postaje neistinit (prelaz istini/neistinit – silazna ivica). U svakom sledećem sken ciklusu, sve dok je uslov neistinit časovnik vrši ažuriranje akumulirane vrednosti (ACC) u skladu sa proteklim vremenom između dva ciklusa. Kada akumulirana vrednost dostigne zadanu vrednost, časovnik prekida svoj rad. Pri tome, ako u nekom sken ciklusu uslov postane istinit, časovnik prekida svoj rad i akumulirana vrednost se postavlja na 0, bez obzira da li je časovnik pre toga izmerio zahtevano vreme ili ne.

Bitovi stanja časovnika menjaju se u toku programskog sken ciklusa na sledeći način: DN - Timer done bit se postavlja na 1 kada je uslov istinit. On se resetuje na 0 kada je uslov neistinit i

pri tome je ACC ≥ PRE. EN - Timer enable bit se postavlja na 1 kada je uslov istinit, i resetuje na 0 kada je uslov neistinit. TT - Timer timing bit se postavlja na 1 kada je uslov neistinit i pri tome je ACC ≤ PRE. One se

Page 41: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

5/plc_T/C

resetuje na nulu kada uslov postane istinit ili kada se DN bit resetuje.

Sl. 3 Vremenski dijagram izvršavanja TOF naredbe

U vezi sa radom časovnika potrebno je da se zapazi nekoliko činjenica. Pre svega časovnik radi samo dok je uslov neistinit (signal na ulazu u časovnik je u stanju “off”). Istonosnu vrednost uslova pokazuje EN, ali za razliku od TON naredbe, ovde on onemogućava rad časovnika. Drugim rečima, ovaj bit ima vrednost 1 onda kada je uslov istinit i to označava da je rad časovnika onemogućen. Kada je uslov neistinit, EN bit ima vrednost 0, što znači da je rad časovnika omogućen. Međutim, činjenica da EN bit ima vrednost 0 ne mora da znači da časovnik zaista i radi, jer je on mogao i da završi rad zbog isteka zadanog vremena, a da pri tome uslov i nadalje ostane neistinit. Rad časovnika indicira TT bit. Naime, taj bit je postavljen na 1 za svo vreme za koje časovnik aktivno meri vreme (timer timing), i postavlja se na 0 kada časovnik ne radi. Konačno, kada je vrednost DN bita 0, onda to znači da je časovnik završio (done) svoj posao, tj. izmerio zadano vreme. Pri tome, DN bit ne govori o tome kada je časovnik završio sa merbjen vremena, jer će on ostati na vrednosti 0 sve dok uslov ne postane istinit. Vremenski dijagram rada časovnika ilustrovan je na slici Sl. 3. • Retentive Timer (RTO)

Ovom naredbom se definiše treća vrsta časovnika i zauzimaju tri reči koje čine elemenat broj e u datoteci časovnika broj f. Prilikom formiranja naredbe specificaraju se i vremenska baza (tx) i zadana

vrednost (ns). Akumulirana vrednost se automatski postavlja na 0.

Page 42: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

6/plc_T/C

Sl. 4 Vremenski dijagram izvršavanja RTO naredbe

RTO naredba razlikuje se od TON naredbe samo po tome što se akumulirana

vrednost ne resetuje, već zadržava i onda kada uslov postane neistint. Drugim rečima, ovaj časovnik počinje da radi kada uslov postane istinit, i nastavlja sa radom povećavajući akumuliranu vrednost sve dok je uslov istinit. Kada uslov postane neistinit, časovnik prekida rad, ali se akumulirana vrednost pri tome ne menja. To znači da će kada uslov ponovo postane istinit, časovnik nastaviti sa radom i prethodno izmerenom vremenu (ACC) dodavati nove vrednosti. Na taj način ovaj časovnik omogućuje da se kumulativno mere intervali vremena u kojima je uslov bio istinit (Sl. 4).

Bitovi stanja časovnika menjaju se u toku programskog sken ciklusa na sledeći način: DN - Timer done bit se postavlja na 1 kada je ACC ≥ PRE (časovnik je izmerio zadano vreme). On se resetuje na 0 pomoću posebne RES naredbe. EN - Timer enable bit se postavlja na 1 kada je uslov u rangu istinit (rad časovnika je omogućen) i resetuje na 0 kada uslov postane neistinit (rad časovnika je onemogućen). TT - Timer timing bit se postavlja na 1 kada je uslov istinit i ako je ACC ≤ PRE (časovnik radi). On se resetuje na 0 kada uslov postane neistinit ili kada se DN bit postavi na 1 (časovnik prestaje sa radom).

• Reset naredba (RES) RES naredba je naredba akcije i koristi

se za resetovanje časovnika. Kada je uslov istinit ova naredba se izvršava tako što se u časovniku čija je adresa (ili simboličko ime) a navedena u RES naredbi, resetuju na nulu

bitovi DN, TT i EN, kao i akumulirana vrednost (ACC). S obzirom na način rada očigledno je da se RES naredbe ne sme koristiti za TOF tip časovnika.

Page 43: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

7/plc_T/C

Način rada časovnika Sve dok časovnik radi u svakom sken ciklusu povećava se akumulirana

vrednost. Pri tome, iznos za koji će se povećati ACC vrednost zavisi od dužine trajanja sken ciklusa. Naime, kada se prilikom obrade ranga ustanovi da su se stekli uslovi da časovnik počne sa radom onda se istovremeno startuje jedan interni časovnik, koji se ažurira preko prekida (interapta) na svakih 0,01 sec. Broj registrovanih vremenskih intervala se smešta u interni 8-bitni registar (bitovi 0-7 u prvoj reči). Ukoliko je u pitanju časovnik čija je vremenska baza 0,01 sec, onda se u sledećem programskom skenu, kada se naiđe na dati rang, vrednost internog registra, koja zapravo predstavlja interval vremena koji je protekao između dva sukcesivna sken-a, dodaje akumuliranoj vrednosti. Nakon toga se interni rgistar resetuje na 0 i počinje ponovo da meri vreme do sledećeg skena. Budući da je maksimalna vrednost koju može da ima interni registar oko 2,5 sec (255x0,01), može se očekivati da će tajmer raditi ispravno samo ako sken ciklus ne traje duže od 2,5 sekundi. Ukoliko se tajmer koristi u programu čiji sken ciklus traje duže, onda je neophodno da se ista naredba za časovnik postavi na više mesta u programu čime će se obezbediti da se rangovi koji sadrže taj časovnik obrađuju sa učestanošću koja nije veća od 2,5 sekundi. (Svaki put kada se prođe kroz rang koji sadrži časovnik izvršić se ažuriranje internog registra i povećati akumulirana vrednost).

Ukoliko časovnik radi sa vremenskom bazom od 1 sekunde obrada časovnika je donekle složenija. Ovde se, naime i dalje koristi interni časovnik koji se ažurira na svakih 0,01 sekundi, ali se pri tome u toku obrade ranga akumulirana vrednost ažurira samo ako je akumulirana vrednost veća ili jednaka od 1 sekunde. Pri tome se akumulurina vrednost uvećava za 1, dok se eventualni ostatak vremena pamti u internom brojaču i na njega se dodaju sledeći inkrimenti od po 0,01 sekunde. Postupak ažuriranja akumulirane vrednosti je takav da se može očekivati da će časovnik raditi ispravno ako sken ciklus ne traje duže od 1,5 sekundi (maksimalni mogući ostatak posle očitavanja je 0,99, što uvećano za 1,5 čini 2,5). Naravno, i ovde se problem ciklusa dužeg trajanja može prevazići stavljanjem naredbe časovnika na više mesta u programu.

Potrebno je da se naglasi da je pri koriščenju časovnika neophodno da se posebna pažnja posveti naredbama za skok. Naime, i ako je trajanje sken ciklusa u dozvoljenim granicama, može se desiti da se nekom od naredbi za skok u jednom ili viče suskcesivnih sken ciklusa preskoči rang koji sadrži časovnik. Jasno je da se u tom slučaju neće vršiti ažuriranje akumulirane vrednosti. To nadalje znači da je neophodno da se obezbedi da u slučaju bilo kakvog programskog skoka, naredba za časovnik ne bude isključena iz obrade u periodu koji je duži od maksimalno dozvoljenog vremena.

Tačnost časovnika (timer accuracy) je pojam koji se odnosi na dužinu vremenskog intervala koji protekne od trenutka kada se časovnik uključi do trenutka kada DN bit indicira da je merenje vremena završeno. Kao što je već istaknuto, za časovnike koji rade sa vremenskom bazom od 0,01 sekunde tačnost je u granicama od ±0,01 sec sve dok sken ciklus ne traje duže od 2,5 sekunde. Časovnici koji rade sa vremenskom bazom od 1 sekunde zadržavaju svoju tačnost ukoliko je programski sken kraći od 1, 5 sec.

Neophodno je da se istakne, međutim, da tačnost rada časovnika ne implicira da će i neki događaj koji je vezan sa časovnikom da bude aktiviran sa istom tačnošću. Aktiviranje događaja se ostvaruje ispitivanje DN bita. U najvećem broju slučajeva ovaj uslov se ispituje jedanput u okviru sken ciklusa. To nadalje znači da je tačnost aktiviranja događaja određena trajanjem jednog sken ciklusa.

Page 44: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

8/plc_T/C

3. Realizacija brojača Datoteka podataka o brojaču (counter data file)

Budući da je brojač, isto kao i časovnik, realizovan softverski, parametri koji definišu njegov rad moraju biti smešteni u memoriji kontrolera. Za pamćenje podataka o brojačima koristi se datoteka podataka broj 5 (counter file – C). U ovoj datoteci može se definisati najviše 256 različitih brojača. Ukoliko je potrebno da se koristi veći broj brojača, korisnik može definisati i dodatne datoteke (korisnički definisane datoteke) čiji su brojevi od 9 do 255.

Svakom brojaču pridružuju se po jedan element u odgovarajućoj datoteci. Osnovni element ovih datoteka sastoji se od tri 16-bitne reči: • Reč 0 je kontrolna reč koja sadrži 6 bitova koji ukazuju na stanje brojača. • Reč 1 sadrži zadanu vrednost (PRE) • Reč 2 sadrži akumuliranu vrednost (ACC)

Postoje dva osnovna tipa brojača brojač unapred (CTU – count up) i brojač unazad (CTD – count down) i oba koriste istu datoteku (Sl. 5). Isto kao i kod časovnika i brojaču i pojedinim bitovima mogu se umesto adrese dodeliti simbolička imena.

Sl. 5 Elemenat datoteke brojača i adresiranje brojača

Naredbe brojača

Naredbe za oba tipa brojača su naredbe akcije, što znači da se smeštaju u desni deo ranga. Oba brojača broje promenu vrednosti uslova sa neistinit na isitinit (uzlazna ivica). Pri svim ostalim vrednostima uslova, oni zadržavaju prebrojani iznos i

Page 45: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

9/plc_T/C

čekaju sledeći prelaz. Drugim rečima, brojači se niti puštaju u rad, niti zaustavljaju. Oni neprekidno rade i beleže (broje) svaki prelaz istinit/neistinit. Dostizanje zadane vrednosti se signalizira postavljavanjem odgovarajućeg bita – done bit (DN) – na 1, ali se brojanje i dalje nastavlja. Prebrojani iznos se može izbristai jedino posebnom RES naredbom.

Sl. 6 Kružni rad brojača

Jedina razlika između brojača sastoji se u tome što prvi (CTU) broji unapred od 0 do 32767, i postavlja overflow bit (OV) na 1 kad pređe 32767, dok drugi (CTD) broji unazad, od 0 do –32767, i postavlja underflow bit (UN) kad pređe –32767. Potrebno je zapaziti da se u oba slučaja brojanje nastavlja (Sl. 6). Kada pređe 32767, brojač unapred dodavanjem još jednog bita dobija vrednost –32767 (u binarnoj aritmetici drugog komplementa, sa 16-bitnom reči 32767+1= –32768) i nastavlja da broji unapred od tog broja. Na isti način, kada brojač unazad dostigne vrednost od –32768, oduzomanjem sledećeg bita, brojač dobija vrednost 32767 (u binarnoj aritmetici drugog komplementa, sa 16-bitnom reči –32768-1= 32767) i nastavlja da broji unazad od te vrednosti. To nadalje znači da korisnik sam mora da vodi računa o eventualnom prekoračenju opsega.

• Count up (CTU) Bitovi stanja brojača

menjaju se u toku programskog sken ciklusa na sledeći način: OV - Count up overflow bit se postavlja na 1 kada akumulirana vrednost (ACC) prelazi sa 32767 na

–32768 (u binarnoj aritmetici drugog komplementa, sa 16-bitnom reči 32767+1= –32768), i nastavlja brojanje unapredi. DN - done bit se postavlja na 1 kada je ACC ≥ PRE; CU - Count up enable bit se postavlja na 1 kada je uslov istinit, a resetuje na 0 kada je uslov neistinit ili kada se aktivira odgovarajuća RES naredba.

• Count down (CTD)

Bitovi stanja brojača menjaju se u toku programskog sken ciklusa na sledeći način: UN- Count down underflow bit se postavlja na jedan kada akumulirana vrednost (ACC) prelazi sa – 32768 na 32767 (u binarnoj aritmetici drugog

komplementa, sa 16-bitnom reči –32768-1= 32767), i nastavlja da broji unazad od te vrednosti. DN - done bit se postavlja na 1 kada je ACC ≤ PRE; CU - Count up enable bit se postavlja na 1 kada je uslov istinit, a resetuje na 0 kada je uslov neistinit ili kada se aktivira odgovarajuća RES naredba.

Page 46: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

10/plc_T/C

• Reset naredba (RES)

RES naredba je naredba akcije i koristi se za resetovanje brojača. Kada je uslov istinit ova naredba se izvršava tako što se u brojaču čija je adresa (ili simboličko ime) a navedeno u RES naredbi, postavljaju na nulu svi indikatorski

bitovi, kao i akumulirana vrednost (ACC).

4. Primeri korišćenja časovnika i brojača ⇒ Ekscentar presa

Zadatak Data je jedna ekscentar presa koja se koristi za izradu zatvarača za flaše.

Zatvarači se proiuvode tako što se komad metala stavi na postolje ispod bata prese koji se pomera u vertikalnoj ravni (dole – gore). Bat udara u metal kada dođe u krajnji donji položaj i deformiše ga, odnosno oblikuje na ženjeni način. Za bat prese pričvršćena je poluga čiji je gornji kraj vezan ekscentrično za osovinu prese. Položaj tačke vezivanja odabran je tako da obrtanje osovine prese uzrokuje linearno (vertikalno) pomeranje bata. Pri tome, za vreme za koje osovina prese napravi pun obrt, bat prese

pređe put od gorenjeg krajnjeg do donjeg krajnjeg položaja i nazad. Obrtanje osovine prese ostvaruje se preko motora čija je osovina vezana sa osovinom prese preko frikcione spojnice. Uprošćeni model opisane prese prikazan je na slici Sl. 7.

Na presi radi radnik koji postavlja komad metala ispod bata, zatim aktivira presu, sačeka da ona završi jedan krug, izvadi zatvarač i stavlja novi komad metala.

Potrebno je napraviti sistem koji će pomoću PLC-a upravljati radom prese. Sistem treba da je projektovan tako da obezbedi maksimalnu zaštitu radnika u toku rada.

Rešenje

Polazeći od funkcionalnog opisa uređaja očigledno je da bi presom trebalo da se upravlja tako što će poslužilac prese na neki način dati znak za pokretanje bata prese. Tada će frikciona spojnica spojiti osovinu prese na motor i on će pokrenuti bat. Kada bat napravi jedan puni radni ciklus (gore→dole→gore), spojnica rastavlja motor od prese i presa se zaustavlja.

Iz navedenog opisa željenog rada prese izvesno je da mora da postoji jedan prekidač kojim se motor pušta u rad. Pri tome, postoje dve mogućnosti. Ili da se sa svakom aktivacijom prese motor pokreće i zaustavlja ili da se jedanput pokrenut motor stalno vrti, dok se radom same prese upravlja isključivo preko spojnice. Imajući

Sl. 7 Šematski prikaz ekscentar prese

Osovina motora

Glavna osovina motora

Frikciona spojnica Poluga bata

Ekscentrična čaura

Bat prese Hod bata

Page 47: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

11/plc_T/C

u vidu da je proces proizvodnje zatvarača serijski proces, ovo drugo rešenje je povoljnije. Budući da je brzina motora konstantna za upravljanje je dovoljan jedan digitalni signal koji ćemo vezati za nulti pin izlaznog dela digitalnog U/I modula u prvom slotu. Simboličko ime ovog signala je "motor_on". Ovaj motor pokretaće se pritiskom na jedan poseban taster "start" i zaustavljatipritiskom na taster "stop". Signale sa ova dva tastera dovodićemo na ulazni deo digitalnog U/I modula i to na pinove 0 i 1.

Radom spojnice upravlja se preko jednog elektromagneta koji, kada ima priključeno napajanje, aktivira frikcionu spojnicu, čime se obrtni momenat motora prenese na osovinu ekscentar-prese. Elektromagnet se napaja jednosmernim naponom od 24V. Otuda nam je neophodan još jedan digitalni izlazni signal. Neka je on vezan za pin 1 izlaznog dela digitalnog U/I modula u prvom slotu i neka je njegovo simboličko ime "spoj_on".

Da bi presom moglo da se upravlja neophodno je da se raspolaže sa informacijom o položaju bata. Ovaj problem ćemo rešiti postavljanjem jednog graničnog prekidača na samu presu i to tako da je on zatvoren kada je presa u gornjem graničnom položaju. Digitalnom signalu sa ovog prekidača daćemo simboličko ime "swggr_on" i dovešćemo ga na drugi pin ulaznog dela U/I modula u prvom slotu.

Preostaje još da rešimo način na koji rukovaoc presom pušta presu u rad. Izvesno je da bi se to moglo rešiti postavljanjem jednog tastera koji se pritisne svaki put kad presa treba da napravi jedan hod. Međutim, ovo rešenje bi moglo ozbiljno da ugrozi bezbednost radnika. Naime, njegov radni proces sastojao bi se u tome što on uzme komad metala, stavi ga ispod prese, pritisne taster, sačeka da presa izvrši jedan puni radni ciklus, izvadi formirani zatvarač i stavi novi komad metala. U želji da se taj proces odvija što brže, rukovaoc presom bi mogao da odluči da jednom rukom pritiska taster, a drugom postavlja materijal ispod prese. Jasno je da bi bio dovoljan samo jedan trenutak nepažnje pa da on ozbiljno povredi ruku. To nadalje znači da je neophodno da se osmisli takav način puštanja prese u rad da je potpuno izvesno da se u tom trenutku nijedna njegova ruka ne nalazi ispod bata. Ovako formulisan zahtev prirodno nameće ideju da se presa pušta u rad pomoću dva prostorno udaljena tastera koji se mogu istovremeno pritisnuti samo sa obe ruke. Postavićemo zato uz presu dva tastera za desnu i levu ruku i signale sa njih dovešćemo na treći i četvrti pin ulaznig dela digitalnog U/I modula u prvom slotu. ("taster_lr_on" i "taster_dr_on").

Budući da je osmišljena potrebna oprema (senzori i izvršni organi) može se pristupiti formiranju samog algoritma upravljanja i pisanju LADDER programa. U tom cilju neophodno je da se reše dva problema. Prvi, jednostavniji, odnosi se na detekciju trenutka kada je presa završila puni ciklus. Jasno je da će, kada je poluga bata u gornjem graničnom položaju, granični prekidač biti pritisnut. Problem je međutim u tome što on to stanje ima i na početku pre bilo kakvog pomeranja bata i na kraju svakog punog ciklusa. Otuda, samo stanje graničnog prekidača ne govori o tome da li je pokret izvršen ili ne. Da bi se ovaj problem prevazišao, uvodi se jedna interna bit promenljiva (u programu označena kao hod) koja se postavlja dok se bat pomera. Na taj način, kada se ustanovi da je granični prekidač zatvoren, potrebno je proveriti da li je istovremeno i interni bit (hod) i tek ta dva uslova zajedno ukazuju da je presa završila jedan puni ciklus.

Drugi problem vezan je za ostvarivanje pune zaštite rukovaoca presom. Praksa pokazuje da postavljanjem dva tastera problem i dalje nije rešen. Naime, može se desiti da rukovaoc, zanemarujući sopstvenu bezbednost, odluči da mu je lakše i brže da radi tako što će jedan od dva tastera zaglaviti tako da stalno bude

Page 48: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

12/plc_T/C

pritisnut, pa će onda jednom rukom pritiskati drugi taster, a drugom menjati materijal. Naš je zadatak, da algoritam osmislimo tako da nateramo rukovaoca presom da sa obe ruke istovremeno pritiska tastere. Jedan od načina da se postavljeni problem reši je da se uslov za aktiviranje spojnice postavi tako da se ona ne sme aktivirati ako je jedan od tastera stalno pritisnut, odnosno ako između pritiskanja jednog i drugog tastera prođe više od nekog vremenskog intervala. Recimo da je to 500ms.

Sl. 8 Leder program sa trajnim pamćenjem bita za upravljanje ekscentar presom

Dve varijante LADDER programa kojima se realizuje navedeni algoritam

Page 49: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

13/plc_T/C

prikazane su na Sl. 8 i Sl. 9 . Posmatrajmo kao prvo program koji koristi naredbe za trajno pamćenje bitova

(Sl. 8). U toku programskog sken ciklusa obrađuje se rang po rang. Sve dok se ne pritisne "start" taster uslov u rangu 0 neće biti istinit pa motor neće dobiti pobudu. Otuda je potpuno nebitno šta će se dešavati u sledećim rangovima jer presa neće raditi. Rang 1 će biti istinit tek kada se pritisne "stop" taster i tada će motor iѕgubiti pobudu. U međuvremenu rad prese biće diktiran ostalim rangovima programa.

Sl. 9 Leder program sa samodržanjem za upravljanje ekscentar presom

Page 50: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

14/plc_T/C

Kada se pritisne taster leve ili desne ruke (ili oba) časovnik će početi da meri vreme. Pri tome, budući da se taster nakon pritiska može i otpustiti, informacija o tome da je on bio pritisnut pamti se trajno u jednom internom bitu, koji se onda u sledećem rangu (broj 3) koristi kao uslov za pokretanje časovnika. Ovde je potrebno zapaziti da bi časovnik neprekidno radio kada bi jedan od tastera bio zaglavljen u pritisnutom položaju, to znači da bi on stalno pokazivao vreme koje je veće od 500ms.

Sledeći rang (broj 4) služi za aktiviranje spojnice. Uslov da bi se spojnica aktivirila je da su oba tastera prititsnuta, da od trenutka pritiska prvog od njih nije proteklo više od 500ms, i da se presa nalazi u gornjem graničnom položaju. Ukoliko je spojnica aktivirana, dolazi do pokreta što znači da se otvara gornji granični prekidač. Kada su ova dva uslova istovremeno istinita, u rangu broj 5 će se postaviti indikator pokreta bata . Konačno, ako je došlo do pokreta i pri tome je gornji granični prekidač zatvoren (hod), u rangu broj 6 se resetuje pobuda spojnice i svi upamćeni bitovi, čime se omogućava izvršavanje sledećeg ciklusa rada prese. (Podsetimo se da za svaku OTL naredbu u programu mora da se stavi i OTU naredba koja će pod datim uslovima resetovati trajno postavljen bit).

Program sa samodržanjem prati istu osnovnu logiku (Sl. 9). Razlika je jedino u tome što se ovde u svakom rangu u kome se postavljaju bitovi, pomoću paralelne grane obezbeđuje da uslov bude istinit i kada neki od tastera ili prekidača promeni stanje. Pri tome, da bi se obezbedilo da se ovi bitovi resetuju kada se završi jedan ciklus rada prese uvodi se interna promenljiva "kraj" koja se postavlja na 1 kada se ciklus prese završi. Posle toga, u sledećem programskom sken ciklusu uslovi u svim rangovima biće nesitiniti (jer se u njima ispituje promenljiva "kraj").

⇒ Regulacija protoka vazduha Zadatak

Posmatra se neki ventil čijim radom se upravlja pomoću jednosmernog solenoida (A). Pri tome, kada se aktvira ventil, pritisak vazduha dostiže željeni nivo u roku od 5 sekundi. Nakon toga, ventilom se može upravljati (pomeranjem klipa solenoida) i to u vremenu od 10 sekundi. Posle isteka 10 sekundi, opruga solenoida vraća klip u početni položaj i zatvara ventil.

Rešenje

Dva moguća rešenja postavljenog problema, od kojih jedno koristi izlaznu naredbu sa trajnim postavljanjem bita, a drugo postupak samodržanja, prikazana su na Sl. 10 i Sl. 11. Predpostavljeno je da se signal sa prekidača za otpočinjanje programa vodi na nulti pin digitalnog ulaza (simboličko ime START_ON), a da se signal na priključak A+ solenoida vodi preko nultog pina digitalnog izlaza (simboličko ime MOVE_APLUS).

Pri analizi programa potrebno je imati na umu da se u svakom sken ciklusu ispituje redom rang po rang. Pri tome, akcija će se izvršiti samo u onim rangovima u kojima je uslov istinit. Tako će na primer, u prvom prolazu biti aktivan samo rang 0 i on će ostati jedini aktivan u svim sledećim sken ciklusima, sve dok ne istekne 5 sekundi.

U sken ciklusu u kome se dostiže 5 sekundi, časovnik PRITISAK će postaviti DN bit, tako da će uslov u rangu 1 biti istinit, pa će on postati aktivan i postaviti MOVE_APLUS na 1. Budući da se ta promenljiva ispituje u rangu 2 i on će postati aktivan u istom sken ciklusu pa će pokrenuti časovnik CONTROL. Uslov u rangu 3 (verzija sa trajnim postavljanjem bita Sl. 10) će i dalje biti neistinit, pa se taj rang neće aktivirati.

U narednim sken ciklusima, sve dok ne prođe 10 sekundi biće istinit samo

Page 51: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

15/plc_T/C

uslov u rangu 2. Konačno, kada časovnik CONTROL izmeri 10 sekundi, on će postaviti svoj DN bit na 1. Odmah zatim, u sledećem rangu u programu sa trajnim postavljanjem bita (Sl. 10), bit MOVE_APLUS će biti resetovan i ventil će se zatvoriti. Kod programa sa samodržanjem (Sl. 11) to će se desiti tek u sledećem sken ciklusu, kada uslov u paralelnoj grani ranga 2 postane neistinit.

Sl. 10 Leder program sa trajnim pamćenjem bita za regulaciju protoka vazduha

Potrebno je obratiti pažnju na činjenicu da program u kome se koristi samodržanje ima jedan rang manje i to zato što se kod njega u okviru istog ranga ostvaruje i aktiviranje i dezaktiviranje signala A+. U programu u kome se koristi trajno postavljanje bita, aktivacija solenoida se postiže u jednom rangu i to na isti način na koji se to ostvaruje kod samodržanja, dok se deaktivacija, prirodno, mora naći u zasebnom rangu. U ovom primeru ta činjenica pokdnostavljuje završetak programa, te nije neophodno da se uvodi interna promenljiva koja označava kraj rada.

Page 52: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

16/plc_T/C

Sl. 11 Leder program sa samodržanjem za regulaciju protoka vazduha

⇒ Paljenje i gašenje signalne lampe Zadatak

Predpostavlja se da postoji neki hidraulicni mehanizam za čiji rad je neophodno da se ulje zagreje do određene temperature. Pri tome se postizanje zadane temperature detektuje pomocu jednog termo-prekidača koji daje binarni signal kada temperatura postugne željenu vrednost. Za vreme procesa zagrevanja ulja neophodno je da se signalna lampa pali i gasi, čime se indicira da se ulje zagreva. Kada ulje dostigne željenu temperaturu, signalna lampa pčinje stalno da svetli.

Sistem se pušta u rad pritiskom na jedan dvopolžajni prekidač.

Rešenje Predpostavimo da je prekidač za puštanje sistema u rad vezan za nulti pin

ulaznog modula, tako da ima adresu I:1/0 i neka je njegovo simbolicko ime START_ON. Indikator temeperature je vezan za prvi pin, tako da je adresa signala I:1/1, i pridruženo simboličko ime KRAJ_GREJANJA. Signalan sijalica je vezana za pin 0 izlaznog modula (adresa O:2/0) i dodeljeno joj je simbolično ime LAMPA_ON.

Jedno moguće rešenje postavljenog zadatka prikazano je na slici Sl. 12 Paljenje i gasenje signalne lampe može se ostvariti korišćeme dva časovnika

od kojih je jedan TON tipa (simboličko ime PALI), a drugi TOF tipa (simboličko ime GASI) i koji su vezani tako da, za svo vreme za koje traje grejanje ulja, rade u protiv fazi.

Pre prvog prolaza kroz program nijedan od časovnika ne radi, tako da su njihovi odgovarajući DN bitovi postavljeni na 0 (PALI/DN) odnosno 1 (GASI/DN). U

Page 53: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

17/plc_T/C

skladu sa time uslov ranga 0 će biti neistinit (PALI/EN=0), te časovnik PALI neće raditi. Uslov ranga 1 će zbog toga biti neistinit i pokrenuće časovnik GASI. Uslov u rangu 2 je neistinit i sijalica ne svetli. Ovakvo stanje trajaće dok časovnik GASI ne izmeri zadano vreme (ovde je usvojeno da to bude 1 sec). Kada protekne 1 sekunda, časovnik GASI je završio rad i njegov DN bit postaje 0. U sledećem sken ciklusu, uslov u rangu 0 će biti istinit (PALI/EN=1) i aktiviraće se časovnik PALI.

Sl. 12 - Leder program za paljenje i gašenje sijalice

Uslov za rad časovnika GASI je i dalje neistinit, što znači da bi on mogao da radi. Međutim, kako je on izmerio zadano vreme i kako njegov DN bit nije resetovan (resetuje ga promena uslova na istinit), to on neće raditi (GASI/TT=0). Uslov u rangu 2 je istinit, te sijalica svetli. Ovakva situacija ostaće i u svim sledećim sken ciklusima sve dok ne prođe 1 sekunda, kada će da se postavi PALI/DN bit na 1. Uslov u rangu 1 posstaje istinit što dovodi do resetovanja GASI/DN bita (postavlja se na 1). Sijalica i dalje svetli. U sledećem sken ciklusu uslov u rangu 0 postaje neistinit (resetuju se bitovi časovnika PALI). Zbog toga se u rangu 1 aktivira časovnik GASI (GASI/TT=1). Sijalica se gasi u rangu 3 i ceo ciklus se ponavlja.

Potrebno je zapaziti da se svaki od časovnika aktivira pomoću DN bita drugog časovnika. To je ujedno i razlog, zašto časovnici ne mogu biti istog tipa (oba TON ili oba TOF). Naime, u tom slučaju ne bi bilo moguće da se otpočne sa radom, jer bi na početku oba DN bita imala istu vrednost (0 ili 1). Vremenski dijagram promene odgovarajućih bitova dat je na Sl. 13.

Sve dok se ne dostigne željena temperatura, bit označen kao KRAJ_GREJANJA ima vrednost 0, što znači da sijalica svetli samo za ono vreme za koje radi časovnik PALI, odnosno za koje je njegov EN bit postavljen na 1. Kada se dostigne zadana temperatura sijalica će stalno svetleti zahvaljujući samodržanju u rangu 2.

Page 54: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

18/plc_T/C

Sl. 13. Vremenski dijagram promene indikatorskih bitova časovnika

⇒ Mašina za pakovanje

Zadatak Posmatra se jedna mašina koja pakuje konzerve u kutiju i to tako da u kutiji

ima tri reda konzerrvi, pri čemu u svakom redu ima po 5 konzervi. Mašina radi tako što se pomoću jednog klipa (A) konzerve koje dolaze preko pokretne trake guraju, jedna po jedna, na pomoćno postolje. Kada se na postolje smesti 5 konzervi, onda se one, sve zajedno, pomoću drugog klipa (B) gurnu u kutiju. U skladu sa time, za pakovanje jedne kutije potrebno je da se ostvari sledeća sekvenca pomeranja klipova:

[ (A+ A-)x5 B+ B-]x3 Rešenje

Dva moguća rešenja (sa i bez lečovanja) data su na Sl. 14 i Sl. 15. U prvom rešenju (Sl. 14) je predpostavljeno da su i klip A koji pomera

konzerve i klip B koji pomera ceo red konzervi dvosmerni solenoidi, što znači da se mora upravljati pokretima u oba smera. Pri tome se signali za napajanje vode preko digitalnih izlaza u prvom slotu, pinovi od 0 do 4 redom za A-, A+, B- i B+. Senzori položaja oba klipa su normalno otvoreni prekidači čiji signali se dovode na digitalni ulaz u prvom slotu i to na pinove od 1 do 4 redom za a-, a+, b- i b+. Taster za otpočinjanje rada vezan je za pin 0. Budući da se početak rada zadaje tasterom, neophodno je da se koristi interna promenljiva koja će pamtiti da je taster u nekom trenutku bio pritisnut. U programu je ta promenljiva označena sa "nije kraj" i ona zapravo utiče na istinitost uslova ranga broj 1 kojim se započinje ceo siklus pokretanja klipova.

Za brojanje konzervi koristi se programski brojač na adresi C5:1 ("Brojac_5"), dok se za brojanje redova konzervi koristi programski brojač C5:0 ("Brojac_3").

Sam program je veoma jednostavan i njegova logika se može pratiti uz pomoć komentara koji su dati uz svaki rang. Napomenimo, da je dobra programerska praksa da se program opiše detaljnim komentarima. Ovo ne samo da olakšava traženje grešaka pri testiranju programa, već je od neobične koristi i kasnije kada dođe do eventualnih modifikacija programa. Program je realizovan pomoću tehnike samodržanja. Samo se po sebi razume da se zadatak može rešiti i pomoću naredbi za trajno postavljanje bitova.

Kao i kod primera sa upravljanjem ekscentar presom i pri korišćenju solenoida

Page 55: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

19/plc_T/C

pokazuje se da testiranje stanja prekidača nije dovoljno da bi se pratio njihov rad. Jasno je da je, kada je solenoid potpuno uvučen, njegov prekidač na "-" kraju pritisnut, no on to stanje ima i na početku pre bilo kakvog pomeranja klipa i na kraju svakog punog ciklusa (pomeranje napred – nazad). Drugim rečima, samo stanje prekidača "-" ne govori o tome da li je pokret izvršen ili ne. Da bi se ovaj problem prevazišao, uvodi se jedna interna bit promenljiva (u programu označena kao hod unazad) koja se postavlja dok se klip pomera. Na taj način stanje te promenljive, zajedno sa stanjem prekidača na "-" kraju solenoida ukazuju na to da li je ciklus završen ili ne.

Page 56: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

20/plc_T/C

Sl. 14 Leder program za upravljanje mašinom za pakovanje koja ima dva solenoida sa po dva kraja

U drugom rešenju (Sl. 15) je predpostavnjeno da je klip A dvosmerni solenoid,

dok je klip B jednosmerni solenoid, koga opruga vraća u početni položaj čim prestane napajanje njegovog kraja. Pri tome se signali za napajanje vode preko istih pinova kao i u prvom rešenju, s tim što je pin 3 slobodan (nema napajanja za kraj B-). Granični prekidači oba klipa vezani su na isti način, s tim što je su prekidači klipa B realizovani kao normalno zatvoreni kontakti. Program je realizovan pomoću naredbi za trajno pamćenje bitova. Sama logika programa je veoma slična prvom rešenju, tako da nema potrebe da se posebno komentariše.

Page 57: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

21/plc_T/C

Sl. 15 Leder program za upravljanje mašinom za pakovanje koja ima jedan solenoid sa dva kraja i jedan solenoid sa oprugom

Page 58: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

1/plc_math

Naredbe za operacije nad podacima

1. Uvod U realizaciji različitih algoritama često je potrebno da se izvrše određena

izračunavanja, da se prenesu odgovarajuće poruke ili da se u zavisnosti od vrednosti nekih parametara promeni algoritam obrade. U osnovi svih navedenih aktivnosti nalaze se promenljive – podaci koji predstavljaju operande ili rezultate u različitim matematičkim ili logičkim operacijama.

• operandi Kao što je već rečeno, promenljive se u memoriji kontrolera pamte kao

numerički podaci ili alfanumerički podaci – stringovi. Numerički podaci se pri tome mogu pamtiti kao celoborjne vrednosti (integers) ili decimalni brojevi prikazani u tehnici pokretnog zareza (floating point). Različiti tipovi numeričkih podataka smeštaju se u datoteke podataka odgovarajućeg tipa.

Celobrojni podaci smeštaju se u datoteke tipa N, što znači da je njihova adresa oblika Nn:w, gde je n broj datoteke (7 ili bilo koji broj od 9 do 255), a w redni broj reči u datoteci (0 do 255).

Realni podaci smeštaju se u datoteke tipa F, što znači da je njihova adresa oblika Fn:w, gde je n broj datoteke (8ili bilo koji broj od 9 do 255), a w redni broj reči u datoteci (0 do 255).

U principu, operandi mogu biti promenljive iz bilo koje datoteke. Potrebno je uočiti, međutim, da iako se dozvoljava korišćenje bit-adresibilnih datoteka (B,I,O), podaci smešteni u njima se u ovim operacijama mogu koristiti samo kao cele reči (elementi), što znači da se operacija ne može izvoditi nad pojedinim bitovima. Pored toga, u datotekama časovnika i brojača (T i C) mogu se kao operandi koristiti samo druga i treća reč elementa koje predstavljaju akumuliranu vrednost (ACC) i zadanu vrednost (PRE). Konačno, kao operandi se mogu javiti i neke promenljive iz kontrolne datoteke (R). O značenju i ulozi ovih promenljivih biće reči kasnije.

Pri adresiranju promenljivih može se, pored direktnog adresiranja, koristiti i indeksno i indirektno adresiranje. Pored promenljivih, operandi u pojedinim operacijama mogu biti i programske konstante – nepromenljive veličine koje se definišu eksplicitnim navođenjem vrednosti u okviru naredbe. Pri tome, nije dozvoljenno da oba operanda budu programske konstante. Samo se po sebi razume da se programska konstanta ne može korsititi kao rezultat.

• operacije Operacija koja treba da se izvrši nad operandima definiše se u okviru naredbe. Najveći broj ovih naredbi pojavljaju se kao naredbe akcije. Ovo je sasvim prirodno ako se ima u vidu da je glavna svrha ovih naredbi da se obavi neka aritmetička ili logička operacija nad operandima i dobijeni rezultat upamti kao odgovarajuća promenljiva. Drugim rečima, sam proces izračunavanja predstavlja jednu akciju, čije izvršavanje može biti uslovljeno istinosnom vrednošću nekog uslova koji se nalazi u levom delu ranga. Izuzetak su jedino naredbe za poređenje, koje opet, po svojoj prirodi, proveraju da li je neka relacija između operanada ispunjena ili nije odnosno da li njena vrednost istinita ili neistinita. Shodno tome, takve naredbe moraju biti naredbe uslova, tako da je rezultat njihovg izvođenja istinosna vrednost naredbe.

2. Naredbe za poređenje Naredbe za poređenje su naredbe uslova. U okviru ovih naredbi proverava se

Page 59: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

2/plc_math

istinosna vrednost relacije između dva operanda. Kao rezultat provere naredba dobija vrednost istinit ili neistinit. Jedna grupa naredbi za poređenje ima oblik kao što je to prikazano na slici Sl. 1. U tabeli T. 1 dat je pregled svih naredbi za poređenje iz ove grupe. Potrebno je da se istakne da je prvi operand je uvek promenljiva, dok drugi operand može biti ili promenljiva ili programska konstanta.

Sl. 1 Opšti izgled naredbe za poređenje

relacija Kod naredbe Ime naredbe istinita ako

je neistinita ako

je EQU Equal (jednako) A = B A ≠ B NEQ Not equal (nejednako) A ≠ B A = B LES Less than (manje) A < B A > B LEQ Less than or equal (manje ili jednako) A ≤ B A ≥ B GRT Greater than (veće) A > B A < B GEQ Greater than or equal (veće ili jednako) A ≥ B A ≤ B

T. 1 - Grupa naredbi za poređenje

Pored navedenih naredbe među nardbama za poređenje postoje i sledeđe

dve naredbe.

• MEQ - masked comparison for equal (ispitivanje jednakosti pojedinih bitova)

Sl. 2 Naredba za ispitivanje pojedinih bitova

Ova naredba služi za poređenje delova pojedinih reči. Naime na položaju onih

bitova koji ne učestvuju u poređenju (maskirani bitovi) u maski se stavljaju nule. Ostali bitovi maske, koji odgovaraju bitovima koji se porede (nemaskirani bitovi), se postavljaju na 1. Ukoliko su bitovi operanda i reference koji nisu maskirani

Page 60: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

3/plc_math

međusobno jednaki naredba ima vrednost istinit. U protivnom ona ima vrednost neistinit. Pri definisanju maske, pogodno je koristiti heksadecimalnu konstantu ili promenljivu.

• LIM – Limit test (ispitivanje granica)

Sl. 3 Naredba za proveru granica LIM naredbom se proverava da li se vrednost operanda Test nalazi unutar

datih granica. Ako je donja granica manja od gornje granice, vrednost naredbe je istinita ako operand pripada segmentu koji određuju granice. Potrebno je obratiti pažnju na činjenicu da “donja granica” može biti i veća od “gornje granice”. U tom slučaju naredba je istinita ako se operand nalazi izvan granica ili na njima, a neistinita ako operand pripada intervalu koji određuju granice.

Ako je operand test konstanta, onda obe granice moraju biti adrese promenljivih. Međutim, ukoliko je test adresa promenljive, onda granice mogu biti bilo adrese promenljivih bilo konstante.

3. Matematičke naredbe Opšte napomene

Kako im i samo ime kaže, matematičke naredbe služe za realizaciju različitih operacija nad operandima. Ove naredbe su naredbe akcije i u najvećem broju slučajeva imaju dva operanda. Izvršavanjem naredbe obavlja se zahtevana matematička operacija nad operandima i dobija rezultat čija se vrednost pamti. Operandi mogu biti programske poromenljive ili konstante, s tim što oba operanda ne mogu biti konstante.

Postavljanje indikatorskih bitova Tok izvođenje zahtevane operacije u smislu prekoraćenja dozvoljenog opsega

brojeva, prenosa, pokušaja deljenja sa nulom itd, može se pratiti preko vrednosti indikatorski bitova u datoteci 2 (Status), koje se automatski postavljaju kad se naredba izvršava. Pri tome se postavljaju sledeći bitovi. • S:0/0 – Carry bit (C) Ovaj bit se postavlja na 1 kada pri obavljanju operacije dolazi do prenosa

bita iz najviše, 15. lokacije, u protivnom bit C ima vrednost 0. Sa aspekta korisnika, vrednost ovog bita je od značaja ako se operacije izvode nad celobrojnim pozitivnim vrednostima. U tom slučaju, ako je bit C postavljen na 1, onda to znači da je prilikom sabiranja dobijen rezultat koji ima više od 16 bitova, ili da je od manjeg broja oduzet veći broj.

Page 61: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

4/plc_math

• S:0/1 – Overflow bit (V) Ovaj bit se postavlja na vrednost 1 onda kada je rezultat matematičke operacije premašio dozvoljeni opseg brojeva., ili ako je operacijom zahtevano deljenje sa nulom, u protivnom vrednost bita V je 0. Očigledno je da se ovaj bit zapravo koristi pri izvođenju matematičkih operacija nad celobrojnim ili realnim vrednostima. Pri tome, ako su operandi celobrojne promenljive i pri izvođenju operacije dođe do prekoračenja opsega, onda se kao rezultat dobija ili gornja (32767) ili donja granica opsega (-32768). Napomenimo, da se negativni brojevi i kod celobrojnih i kod realnih promenljivih predstavljaju u tehnici drugog komplementa.

• S:0/2 – Zero bit (Z) Ovaj bit se postavlja na vrednost 1 ako je rezultat zahtevane operacije jednak nuli, u protivnom Z bit ima vrednost 0.

• S:0/3 – Sign bit (S) Ovaj bit se postavlja na vrednost 1 ako je rezultat matematičke operacije negativan, (odnosno ako bit 15 rezultata ima vrednost 1), u protivnom vrednost bita S je nula.

• S:5/0 – Overflow trap bit Ovaj bit se postavlja na 1 onda kada je overflow bit V bit postavljen na 1. Pri tome, ako se vrednost bita S:5/0 ne resetuje na nulu, pre završetka programskog sken ciklusa, operativni sistem će signalizirati da je došlo do popravljive greške (kod greške 0020). Izraz popravljiva, zapravo označava da neće doći do prekida rada programa, već se samo korisniku skreće pažnja da negde u zahtevanim operacijama ima problema, jer rezultati premašuju dozvoljeni opseg brojeva.

• Izvođenje operacija celobrojnog množenja i deljenja – matematički registar S:13 i S:14

Ako su operandi celobrojne promenljive dužine 1 reči (16 bita) i ako se zahteva njihovo množenje onda rezultat ima 32 bita. Budući da rezultat treba da se upamti, ponovo kao celobrojna promenljiva, onda je jasno da se postavlja pitanje šta raditi sa eventualnim viškom bitova koji se nalaze na pozicijama od 16 pa naviše. Da bi se omogućio ispravan rad i u ovom slučaju, koriste se dve reči datoteke 2 (Status) i to na S:13 i S:14 koje predstavljaju 32-bitni matematički registar. Naime, prilikom izvođenja množenja, rezultat se dobija u matematičkom registru i to tako što reč na adresi S:13 sadrži prvih (manje značajnih) 16 bitova rezultata, dok S:14 sadrži preostalih (više značajnih) 16 bitova rezultata. Pri tome, se donji, manje značajni, deo rezultata istovremeno smešta i na adresu koja je u naredbi navedana kao promenljiva u kojoj se čuva rezultat. Korisnik, tako ima mogućnost da proverom overflow bita V ustanovi da li je prilikom množenja dobijen rezultat koji veći od 15 bitova, i ako jeste može nekom programskom naredbom obezbediti da se i sadržaj reči S:14 upamti na nekoj adresi. Naravno, u tom slučaju korisnik treba da obezbedi i da se resetuje overflow trap bit, jer će u protivnom dobiti poruku o grešci.

Sl. 4 Realizacija operacije množenja

Kod deljenja celih brojeva neminovno dolazi do situacije u kojoj se pojavljuje ostatak deljenja. Naredba celobrojnog deljenja izvodi se tako što se rezultat zaokruži i smešta u adresu koja je u naredbi navedena kao promenljiva u kojoj se čuva rezultat. Pri tome se nezaokruženi, ceo deo rezultata pamti u reči S:14, dok se

Page 62: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

5/plc_math

ostatak pamti u reči S:13.

Sl. 5 Realizacija operacije deljenja

Sadržaj matematičkog registra ostaje neizmenjen sve do izvođenja sledeće programske naredbe koja ga koristi.

• 32-bitno sabiranje i oduzimanje – bit S:2/14 Procesori SLC 5/02 (počev od serije C) i SLC 5/03 i SLC5/04 omogućavaju da

se realizuje sabiranje i oduzimanje 32-bitnih podataka. Ovo se ostvaruje postavljanjem bita S:2/14 na vrednost 1.

Kao što je već rečeno, ukoliko kod celobrojnih operacija dođe do prekoračenja opsega, onda se kao rezultat dobijaju donja ili gornja granica opsega. Međutim, ukoliko je bit S:2/14 postavljen na 1, onda će detekcija prekoračenja (postavljanje overflow bita na 1) prouzrokovati samo da se prvih, najmanje značajnih 16 bitova rezultata, bez ikakvog zaokruživanja, prenese na adresu koja je u naredbi označena kao promenljiva za čuvanje rezultata. Na taj način je korisniku ostavljena mogućnost, da po dve susedne reči koristi kao jednu jedinstvenu vrednost (jedan podatak) i da odgovarajućim progranskim naredbama obrađuje deo po deo podatka. Korisnik, takođe mora da vodi računa da pre isteka sken ciklusa resetuje overflow bit.

O ovoj tehnici biće kasnije više reči kada se bude ilustrovalo korišćenje matematičkih naredbi.

Pregled matematičkih naredbi U odnosu na broj operanada i tip operacije koja se izvršava, matematičke

naredbe se mogu podeliti u nekoliko grupa.

Aritmetičke i logičke binarne operacije Opšti oblik naredbe za aritmetičke i logičke binarne operacije dat je na Sl. 6,

dok je u tabeli T. 2 dat prikaz svih naredbi iz ove grupe.

Sl. 6 Opšti oblik naredbe za aritmetičke i logičke binarne operacije

Page 63: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

6/plc_math

Postavlja indikatorske bitove

Kod Ime naredbe Operacija C – bit V – bit (ako je S:2/14=0) Z – bit S – bit

ADD Add (sabiranje) d = a + b uvek 0 1 za d izvan opsega 1 za d=0 1 za d<0

SUB Subtract (oduzimanje) d = a – b uvek 0 1 za d izvan opsega 1 za d=0 1 za d<0

MUL Multiply (množenje) d = ab uvek 0 1 za d izvan opsega 1 za d=0 1 za d<0

DIV Divide (deljenje) d = a/b uvek 0 1 za d izvan opsega, i deljenje sa 0 1 za d=0 1 za d<0

XPY X to the power of Y d = xy uvek 0 1 za d izvan opsega 1 za d=0 1 za d<0

AND And (logičko “i”) d = a∧b bit po bit

uvek 0 uvek 0 1 za d=0 1 za d<0

OR Or (logičko “ili”) d = a∨b bit po bit

uvek 0 uvek 0 1 za d=0 1 za d<0

XOR Exclusive OR (ekskluzivno “ili”)

d = a∨b bit po bit

uvek 0 uvek 0 1 za d=0 1 za d<0

T. 2 - Pregled naredbi za aritmetičke i logičke binarne operacije

Primedba: U naredbi XPY ukoliko eksponent (y) nije ceo broj, vrednost izraza

se računa prema relaciji d=2(ylog2

x). To znači da ukoliko je osnova (x) negativna, eksponent mora da bude ceo broj. Ukoliko ovaj uslov nije ispunjen V – bit se postavlja na 1.

Primer: Celobrojno sabiranje sa dvostrukom tačnošću Operandi: Prvi operand smešten je u reči B3:1, dok je drugi operand celobrojna vrednost dvostruke tačnosti, tako da je donjih 16 bitova smešteno u reči na adresi B3:2, a gornjih 16 na adresi B3:3. Rezultat takođe ima dvostruku tačnost i pamti se na istom mestu gde i drugi operand. Algoritam: Donjih 16 bitova se dobija direktno naredbom za sabiranje ADD (Sl. 7). Pri tome da bi se sprečilo da se rezultat postavi na graničnu vrednost reba postaviti bit S:2/14 na 1.

Prilikom realizacije naredbe za sabiranje moguća su tri slučaja: • zbir prvog operanda i donjih 16 bitova drugog operanda ima manje od 17 bitova

⇒ operacija je završena (B3:3 se ne menja) • zbir prvog operanda i donjih 16 bitova drugog operanda ima više od 16 bitova ⇒

ovo se identifikuje uz pomoć C bita i taj bit prenosa treba dodati reči koja sadrži gornjih 16 bitova rezultata

• prvi operand je negativan broj ⇒ taj broj smešten u tehnici drugog komplementa primenjenoj na 16 bitova, a u dvostrukoj tačnosti drugi komplement treba da se

Sl. 7 Algoritam sabiranja

Page 64: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

7/plc_math

primeni na 32 bita (što bi dovelo do toga da su svih gornjih 16 bitova jedinice koje bi trebalo sabrati sa reči drugog operanda koja sadrži gornjih 16 bitova). Otuda sledi da se rezultat koriguje tako što se toj reči drugog operanda dodaje broj čiji su svih 16 bitova 1. Budući da ovaj broj predstavlja drugi komplement broja 1, to znači da je potrebno da se od druge reči drugog operanda oduzme 1.

Sl. 8 Realizacija sabiranja sa dvostrukom tačnošću

Leder program za sabiranje sa dvostrukom tačnošću dat je na Sl. 8. Da bi se lakše razumela logika programa, svi mogući slučajevi i ilustrovani su na primeru četvorobitnih brojeva (Sl. 9)

Page 65: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

8/plc_math

Sl. 9 Sabiranje sa dvostrukom tačnošću (četvorobitni brojevi) Unarne operacije

U grupu unarnih operacija svrstane su i aritmetičke i logičke unarne operacije, ali i bibliotečke funkcije jedne promenljive. Sve ove naredbe imaju isti opšti oblik (Sl. 10). Pregledsvih naredbi dat je u tabeli T. 3.

Sl. 10 Opšti oblik naredbe za unarne operacije

Postavlja indikatorske bitove Kod Ime naredbe Operacija

C – bit V – bit (ako je

S:2/14=0) Z – bit S – bit

NEG Negate (negacija) d = -a 0 za d=0 ili V=1

1 za d izvan opsega (samo ako je a=-32768)

1 za d=0 1 za d<0

NOT Not (komplement) d = a⎯ bit po bit

uvek 0 uvek 0 1 za d=0 1 za d<0

DDV

Double divide (deljenje 32-bitnog celog broja iz mat. reg. sa 16-bitnim

d = reg/a (rezultat zaokružen)

uvek 0 1 za d izvan opsega 1 za d=0 1 za d<0

1 0

1

10

1110 0 0 1ADD

-7

15

800010 0 0 1C=1

1ADD

00010 0 1 0

16

40rezultat

1 1 1 18. bitni negativan broj

24

1SUB

00010 0 0 1

16

24rezultat

31

(9)

8. bitni 4. bitni

Page 66: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

9/plc_math

operandom)

SQR Square Root (kvadratni koren)

ad = uvek 0 1 za d izvan opsega 1 za d=0 1 za d<0

ABS Absolute (apsolutna vrednost) d =|a| uvek 0 1 samo za =-32768 1 za d=0 uvek 0

SIN Sine d = sin(a) uvek 0 1 za d izvan opsega 1 za d=0 1 za d<0

COS Cosine d = cos(a) uvek 0 1 za d izvan opsega 1 za d=0 1 za d<0

TAN Tangent d = tg(a) uvek 0 1 za d izvan opsega 1 za d=0 1 za d<0

ASN Arc Sine d = arcsin(a) uvek 0 1 za d izvan opsega 1 za d=0 1 za d<0

ACS Arc Cosine d = arccos(a) uvek 0 1 za d izvan opsega 1 za d=0 1 za d<0

ATN Arc Tangent d = artg(a) uvek 0 1 za d izvan opsega 1 za d=0 1 za d<0

LN Natural log (prirodni logaritam)

d = ln(a) uvek 0 1 za d izvan opsega 1 za d=0 1 za d<0

LOG Log to the base 10 (dekadni logaritam)

d = log(a) uvek 0 1 za d izvan opsega 1 za d=0 1 za d<0

T. 3 - Pregled naredbi za unarne operacije

Primedba: Prilikom izračunavanja funkcija proverava se da li se operand

nalazi u oblasti definisanosti funkcije. Ukoliko to nije slučaj, izračunavanje se ne vrši, i V-bit se postavlja na 1.

Složene matematičke naredbe

• CPT – Compute (izračunavanje aritmetičkog izraza)

uslovDest - rezultatexpression - aritmetički izraz koji ima najviše 255 zbnakova raspoređenih u linijama. Svaka linija može da ima najviđe 28 znbkovafn:w - adresa promenljive ili simboličko ime

COMPUTE Dest fn:w

expression

CPT

Pri formiranju izraza koriste se promenljive, konstante i sledeći operatori:

– ili NEG (unarni minus), +, –,* , | ili DIV, ** ili XPY, SQR, ABS, SIN, COS, TAN, ASN, ACS, ATN, LN, LOG, NOT, AND, OR, XOR, TOD, FRD, DEG, RAD. (Značenje nekih od navedenih simbola biće objašnjeno kasnije).

Prilikom izvođenja naredbe, odnosno izračunavanja izraza postavljaju se sledeći bitovi:

C – bit, S – bit i Z – bit se postavljaju u zavisnosti od rezultata poslednje operacije u izrazu.

V – bit se postavlja svaki put kada pri izračunavanju izraza dođe do prekoračenja vrednosti.

• SCP – Scale with parameters (parametarsko skaliranje podatka)

Page 67: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

10/plc_math

Ovom naredbom se ostvaruje linearno preslikavanje ulazne promenljive, prema relaciji

( ) .scaled_mininput_min.-inputinput_min.-input_max.

.scaled_min-.scaled_max putscaled_out +×=

Potrebno je da se istakne da se u ovoj naredbi pojmovi “najmanja i najveća vrednost ulaza i rezultata” zapravo koriste samo za određivanje dve tačke kroz koje se provlači prava linija koja određuje preslikavanje (Sl. 11). To znači da vrednost ulazne promenljive ne mora biti unutar intervala određenog sa (input_min., input_max.), niti da vrednost input_min. mora biti manja od input_max.

Prilikom izvođenja naredbe, odnosno izračunavanja izraza postavljaju se sledeći bitovi:

C – bit se uvek resetuje na nulu. V – bit se postavlja na 1 ako je u toku izračunavanja došlo do prekoraćenja

dozvoljenog opsega brojeva.. Z – bit se postavlja na 1 ako je rezultat jednak nuli. S – bit se postavlja na 1 ako je rezultat negativan.

• SCL - Scale data (skaliranje podatka)

Ova naredba je veoma slična naredbi SCP, jer se i pomoću nje ostvaruje linearno skaliranje promenljive. Razlika je, zapravo samo u načinu definisanja parametara skaliranja, odnosno prave linije . Skaliranje ulaza se izvodi prema sledećoj relaciji:

OffsetSource10000Rate

Dest +×=

Prilikom izvođenja naredbe, odnosno izračunavanja izraza postavljaju se sledeći bitovi:

C – bit je rezervisan za potrebe operativnog sistema

V – bit se postavlja na 1 ako je u toku izračunavanja došlo do prekoraćenja dozvoljenog opsega brojeva.

Z – bit se postavlja na 1 ako je

rezultat jednak nuli. S – bit se postavlja na 1 ako je

rezultata negativan.

Sl. 11 Grafička ilustracija skaliranja (SCP)

Sl. 12 Grafička ilustracija skaliranja (SCL)

( ) 1112

12 yx-xx-x

y-y y +=

bx10000

a y +=

Page 68: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

11/plc_math

• RMP – Ramp instruction (generisanje signala)

uslov Control - početna adresa upravljačkog bloka sa podacima koji određuju signal Dest - rezultatfn:w - adresa promenljive ili simboličko ime

RMPControl fn:w

Dest fn:w

RMP

Ovom naredbom generiše se vremenski

signal određenog oblika. Vrednost koja se izračunava pri skeniranju ranga (ako je uslov istinit) jednaka je amplitudi signala u tom vremenskom trenutku. Naredba omogućava da se generišu četiri različite funkcije: • Linearna nagibna rastuća funkcija (nagibni

signal) • Rastući parabolični signal (ubrzanje) • Opadajući parabolični signal (usporenje) • "S" funkcija

Pri tome se vreme izražava kao multipl osnovne jedinice koja se može definisati kao

0.01 sec ili 1 sec. Signali ne mogu trajati duže od nekog utvrđenog vremenskog intervala ts.

a

2

sab y

tt

)yy(y +⎟⎟⎠

⎞⎜⎜⎝

⎛×−=

Naredba se izvršava svaki put kada

je uslov istinit. Pri tome se ažurira vrednost vremena i primenom odgovrajuće relacije odredi vrednost signala na izlazu (y). Kada je uslov neistinit, vreme se ne ažurira i vrednost izlaza se ne izračunava. Prilikom sledećeg prelaza uslova sa neistinitog na istinit vreme će biti ažurirano u odnosu na poslednju vrednost koju je imalo.

Pri svakoj promeni uslova ažuriranje se ostvaruje sa tačnošću od ±1 (jedinica vremena) ili ±1(vreme sken ciklusa), ukoliko je vreme sken ciklusa veće od jedinice vremena (0.01sec ili 1 sec). Kao i kod časovnika i ovde ja za tačan rad

as

ab ytt

)yy(y +×−=

a

2

s

sab y

t

tt1)yy(y +⎟⎟

⎞⎜⎜⎝

⎛ −−×−=

t(sec)

yb

ya

⎪⎪⎪

⎪⎪⎪

>>+⎥⎥

⎢⎢

⎟⎟⎠

⎞⎜⎜⎝

⎛ −×−×−

≤≤+⎟⎟⎠

⎞⎜⎜⎝

⎛××−

=

ssa

2

s

sab

sa

2

sab

tt2/tyt

tt21)yy(

2/tt0ytt

2)yy(

y

y

ts

«S»

Page 69: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

12/plc_math

neophodno da vremenski interval između dva sken ciklusa ne bude veći od 1.5 sekunde. Parametri signala se specificiraju u upravljačkom bloku koji je celobrojna datoteka (tip N) dužine sedam elemenata

Sl. 13 Značenje pojedinih reči i bitova u upravljačkom bloku

Ova naredba je izuzetno pogodna za generisinje upravljačkog signala kod

ručnog vođenja procesa.

4. Naredbe za manipulaciju sa numeričkim podacima Naredbe za manipulaciju sa podacima služe za definisanje vrednosti

promenljivih ili za određene izmene u formi prezentacije podataka. U tom smislu one se ne razlikuju bitno od matematičkih naredbi. Naime, nema nikakve sumnje da se matematičkim naredbama takođe vrši određena manipulacija sa podacima. Izdvajanjem ovih naredbi u posebnu grupu se zapravo želi naglasiti specifičnost oblika same naredbe i obrade podataka koja se njima vrši.

Naredbe za postavljanje vrednosti • CLR – Clear (postavi na nulu)

Bitovi C, V i S se postavljaju na 0, dok se bit Z postavlja na 1.

• MOV – Move (postavljanje vrednosti promenljive)

Page 70: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

13/plc_math

• MVM – Masked move (postavljanje vrednosti pojedinih bitova)

uslovSource - prvi operand (adresa promenljive)Mask - maska (promenljive ili konstanta) Dest - rezultat (promenljive)fn:w - adresa promenljive ili simboličko ime

MASKED MOVE Source fn:w Mask fn:w Dest fn:w

MVM

Maskiranim bitovima, koji se ne prenose u dest u maski odgovaraju vrednosti 0, dok nemaskiranim bitovima odgovaraju vrednosti 1 (Sl. 14).

Sl. 14 Izvršavanje maskirane move naredbe

U obe naredbe (MOV i MVM) bitovi C i V se postavljaju na 0. Bitovi Z i S se postavljaju na 1 ukoliko je rezultat nula odnosno negativan.

⇒ Primer – generisanje testerastog signala

U principu, generisanje signala se prekida kada vreme koje se meri od početka rada RMP naredbe dostigne vrednost koja odgovara zadanom vremenu trajanja signala. To znači da ova naredba neće više generisati signal čak i ako je uslov u rangu istinit. Ukoliko se želi ponovno generisanje istog signala (dobijanje testerastog signala) neophodno je da se, kada je RMP generisao ceo signal (DN=1) ili kada je došlo do greške u specifikaciji parametara (ER=1), vreme resetuje na nulu, odnosno da se sadržaj druge reči odgovarajućeg upravljačkog bloka postavi na nulu. Opisani postupak može se realizovati pomoću dva ranga u lestvičastom programu (Sl. 15).

Pri formiranju programa bilo je neophodno i da se definišu vrednosti pojedinih

Sl. 15 Generisanje testerastog signala

Page 71: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

14/plc_math

reči u upravljačkom bloku koji je smešten od početne adrese N7:0. Odabrano je da se generiše nagibni signal (kod 00, bitovi 0 i 1 u reči N7:0) sa vremenskom bazom od 1 sekunde (kod 1, bit 4 u reči N7:0). Otuda reč nula u upravljačkom bloku ima decimalnu vrednost 16. Trajanje signala je postavljeno na 100 sekundi (N7:1). Početno vreme je nula (N7:3), dok je krajnje vreme 100 (N7:4). U skladu sa tim, reči u

upravljačkom bloku imaju sledeće vrednosti N7:reč 0 1 2 3 4 5 6

16 100 0 0 100

Naredbe za konverziju

Sl. 17 Opšti oblik naredbi za konverziju

Postavlja indikatorske bitove Kod Ime naredbe Operacija

C – bit V – bit Z – bit S – bit

DEG Radians to degrees (radiani u stepene)

d = (180/π) a (pretvara radiane u stepene)

uvek 0 1 za prekoračenje opsega

1 za d=0 1 za d<0

RAD Degrees to radians (stepenei u radiane)

d = (π/180) a (pretvara stepene u radiane)

uvek 0 1 za prekoračenje opsega

1 za d=0

1 za d<0

TOD To BCD (u BCD kod)

pretvara 16-bitni ceo broj u 4-oro cifreni BCD broj

uvek 0 1 za d > 9999 1 za d=0

1 za d<0

FRD From BCD (iz BCD koda)

pretvara 4-oro cifreni BCD broj u 16-bitni ceo broj uvek 0

1 ako a nije BCD ili je d > 32767

1 za d=0 uvek 0

DCD Decode 4 to 1 of 16 (dekodiranje 4 – 16)

dekodira prva 4 bita operanda u ceo broj čiji samo 1 bit ima vrednost 1

ne menja bitove

ENC Encode 1 of 16 to 4 (kodiranje 16 – 4)

kodira operand (ceo broj) čiji samo 1 bit ima vrednost 1 u poslednja 4 bita rezultata

uvek 0

1 ako operand nije ispravan (ne postavlja S:5/0)

1 za d=0

uvek 0

T. 4 Pregled naredbi za konverziju podataka

Po svojoj funkciji ove naredbe vrše različite oblike konverzije počev od fizičkih veličina (konverzija ugaonih stepeni u radijane i obratno), preko načina prezentacija podatka (konverzija binarne prezentaciju u binarno kodiranu decimalnu prezentaciju), do kodiranja i dekodiranja binarnih podataka. Zajedničko za sve naredbe je njihov opšti oblik (Sl. 17). Pregled svih naredbi iz ove grupe dat je u tabeli T. 4.

• BCD kod (Binary coded decimal) je kôd kod koga se svaka decimalna cifra predstavlja pomoću jednog četvorocifrenog binarnog broja, kao što je to ilustrovano na Sl. 18. (Samo se po sebi razume da je decimalni broj predstavljen u računaru kao binarni podatak). Ukoliko se kao celobrojni podatak u BCD naredbi unese negativan broj, konvertovaće se njegova apsolutna vrednost.

Postoji mogućnost da se pomoću TOD i FRD naredbi konvertuju i celi

Sl. 16 Generisani testerasti signal

t(sec)

yb=100

ya=0

y

ts=100

Page 72: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

15/plc_math

decimalni brojevi koji imaju više od 4 cifre (najveći ceo broj je 32768). U tom slučaju u naredbi TOD treba kao adresa rezultata dest da se stavi matematički registar S:13, S:14. Prilikom izvršavanja naredbe dobijeni BCD kod biće smešten u reči S:13 i u prva četiri bita reči S:14. Potrebno je da

se istakne da će se tom prilikom V- bit postaviti na vrednost 1. Kod kontrolera SLC 5/01 dest u BCD naredbi, odnosno source u FRD naredbi

mora biti matematički registar, dok kod ostalih kontrolera to može biti adresa reči bilo koje datoteke. Po prirodi konverzije, source u BCD naredbi, odnosno dest u FRD naredbi treba da bude celobrojna promenljiva.

Kod kontrolera SLC 5/01 dest u BCD naredbi, odnosno source u FRD naredbi mora biti matematički registar, dok kod ostalih kontrolera to može biti adresa reči bilo koje datoteke. Po prirodi konverzije, source u BCD naredbi, odnosno dest u FRD naredbi treba da bude celobrojna promenljiva.

⇒ Primer – konverzija iz BCD koda

Korišćenje FRD naredbe pretpostavlja da svaki bajt operanda pretstavlja BCD kodiranu cifru. Međutim pri radu mernih uređaja koji daju BCD kod može se dogoditi da u toku promene veličine koja se meri izlaz uređaja ima podatak koji ne pretstavlja BCD cifru. Ako se FRD naredba izvodi baš u tom trenutku postaviće se V bit. Da bi se to izbeglo, pri korišćenju ove naredbe vrši se filtracija mernog podatka i to tako da se porede dve uzastopne vrednosti izmerene veličine. Ukoliko su one iste, to znači da nema nagle promene podatka, pa se može smatrati da su svi bajtovi BCD kodirane cifre. Ukoliko se oni, međutim razlikuju, osnovano je pretpostaviti da neki bajt ne sadrži BCD cifru, pa se u skladu sa time konverzija ne vrši.

Sl. 19 Konverzija iz BCD koda

Opisani postupak ilustrovan je na primeru učitavanja podatka sa BCD merača čiji se signal dovodi na reč 0 u slotu 1 (adersa I:1.0, simbolicko ime bcd_merac). Ovaj

Sl. 18 Ilustracija BCD koda

Page 73: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

16/plc_math

podatak se pamti u reči N7:1 (bcd podatak), koja se u sledećem sken ciklusu poredi sa novo učitanim podatkom. Tek ako su oba podatka identična izvršava se FRD naredba i rezultat se smešta u N7:2 (dec_podatak). Budući da u prvom sken ciklusu nije moguće poređenje podataka, poređenje se vrši tek od drugog sken ciklusa. Ovo se postiže ispitivanjem stanja indikatorskog bita u statusnoj datoteci S. Naime, petnaesti bit prve reči (S:1/15) ima vrednost 1 samo u prvom sken ciklusu. Otuda i potiče njegovo simboličko ime first_pass (Sl. 19). ⇒ Primer – konverzija u BCD kod

Celobrojni podatak smešten na adresi N7:3 treba da se konvertuje u BCD kod i preko digitalnog izlaza prenese na BCD svetleći displej. Budući da originalni podatak može imati najviše pet cifara, konvertovani BCD podatak se smešta u matematički registar. Pretpostavlja se da se u slotovima 4 i 5 nalaze dva 16. bitna digitalna izlaza. Donje četiri cifre podatka prebacuju se na izlaz O:4, dok se peta cifra prebacuje na O:5.

Ovaj zadatak može da se realizuje pomoću dve MOV naredbe. Pri tome budući da se iz gornjeg dela matematičkog registra koristi samo jedan bajt neophodno je da se realizuje maskirano prenošenje podataka (Sl. 20).

U posmatranom primeru predpostavljeno je da je pocetni podatak 32760. U rangu 0, sadržaj odredišnog registra se prikazuje u heksadecimalnom formatu (koji odgovara BCD kodu) i vide se prve četiri cifre (registar S:13). U rangovima 1 i 2 usvojen je decimalni prikaz podataka. Binarni broj koji odgovara decimalnom podatku 10080 je 0010 0111 0110 0000, odnosno odgovarajući heksadecimalni broj je 2760h.

Sl. 20 Formiranje BCD izlaznih signala

• Dekodiranje 4 – 16 (DCD) je postupak u kome se četvorobitni numerički podatak koji može imati vrednost u opsegu od 0 do 15, pretvara (dekodira) u 16-bitni

Page 74: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

17/plc_math

numerički podatak i to tako što se u njemu na 1 postavlja onaj bit čiji redni broj u reči odgovara numeričkom podatku koji se konvertuje (Sl. 21). U ovoj naredbi koriste se samo prva četiri bita promenljive source, što znači da se preostali bitovi mogu koristiti u bilo koje druge svrhe. Ova naredba je pogodna kada se želi multipleksiranje podataka kod uređaja kao što su višepoložajni prekidač, tastatura i sl. • Kodiranje 16 – 4 (ENC) je postupak u kome se 16 bitni podatak čiji samo jedan bit ima vrednost 1, pretvara (kodira) u četvorobitni podatak i to tako što se redni broj bita čija je vrednost 1, a koji se kreće u opsegu od 0 do 15, zapisuje kao četvorocifreni binarni broj (Sl. 21). Ukoliko je u promenljivoj source više od jednog bita postavljeno na 1, kodiranje će se izvršiti prema bitu koji ima najmanji redni broj od svih bitova koji imaju vrednost 1. U tom slučaju i V – bit će biti postavljen na 1, ali matematički bit prekoračenja (S:5/0) neće dobiti vrednost 1.

Ova naredba je pogodna kada se želi multipleksiranje podataka kod uređaja kao što su višepoložajni prekidač, tastatura i sl.

Sl. 21 Ilustracija DCD i ENC naredbe

Naredba za premeštanje bajtova • SWP – Swap (zamena bajtova)

Ovom naredbom se zamenjuju vrednosti prvog i drugog bajta u reči. Adresa operanda (source) mora biti indeksna adresa, dok se broj reči kojima se zamenjuju bajtovi (length) zadaje kao celobrojna programska konstanta. Pri tome broj reči ne može biti veći od dužine elementa. U principu, operandi mogu biti smešteni u bilo

kojoj datoteci, ali se najčešće ova naredba koristi za manipulaciju nizom podataka (datoteka tipa STRING). Naravno, i ovde je dužina ograničena veličinom elementa.

Ako je formirana datoteka tipa STRING,

dužine elemenata od 6 reči, i ako se predpostavi da je sadržaj prvog elementa, takav da bajtovi sadrže ASCII kodove prvih 12 slova abecede:

Sl. 22 Ilustracija SWAP naredbe na dužini od jedne reči

Page 75: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

18/plc_math

ab | cd | ef | gh | ij |kl tada će SWP naredba u kojoj se kao source adresira taj elemenat, i koja ima

dužinu (length) jednaku 4 promeniti sadržaj tog elementa u: ba | dc | fe | hg | ji | lk

5. Primeri korišćenja naredbi za matematičke operacije ⇒ Izračunavanje rastojanja i nagiba

Zadatak Pravougaone koordinate (x,y) koje

određuju položaj nekog objekta smeštene su u memoriji PLC-a u datoteci realnih podataka F8, na adresama F8:0 i F8:1. Ovim lokacijama pridružena su simbolička imena x i y. Ukoliko su obe koordinate u opsegu od 700m do 1400m na osnovu njih se izračunava rastojanje do objekta

( 22 yx +=ρ ), kao i ugao koji radijus zaklapa sa apscisnom osom ( )x/y(arctg=α (Sl. 23).

Dobijeni podaci se smeštaju u memoriju PLC-a na adrese F8:2 i F8:3, čija su simbolička imena ro i alfa. Ukoliko je bilo koja od

koordinata izvan opsega pali se kontrolna sijalica, koja je vezana u električno kolo preko nultog pina izlaznog dela digitalnog U/I modula u slotu 1 (adresa O:1/0, simboličko ime sijalica).

Potrebno je formirati program za PLC koji će realizovati zahtevanu operaciju.

Rešenje

Na Sl. 24 i Sl. 25prikazana su dva moguća rešenja ovog problema, od kojih prvo koristi elementarne naredbe za poređenje i matematičke naredbe, a drugo složenije naredbe. U prvom rešenju korišćena su dva moguća načina ispitivanja da li su koordinate y datim granicama. Za koordinatu x se proverava da li je izvan opsega, dok se za koordinatu y proverava da li je unutar opsega. Samo se po sebi razume da su oba načina provere potpuno ekvivalentna. Jedina je razlika u tome što indikatorski bitovi imaju suprotna značenja, o čemu mora da se vodi računa kada se oni koriste u ostalim rangovima. U drugom rešenju koristi se LIM naredba za proveru granica.

Sl. 23 Grafička ilustracija potrebnih izračunavanja

22 yx +=ρ

⎟⎠⎞

⎜⎝⎛=α

xy

arctg

Page 76: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

19/plc_math

Sl. 24 Leder program za izračunavanje rastojanja i ugla koji koristi elementarne naredbe

Page 77: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

20/plc_math

⇒ Transformacije ulaznih analognih signala

Zadatak

Posmatra se jedan radarski sistem za praćenje objekata koji određuje pravougaone koordinate objekta u opsegu od 250m do 1700m i generiše strujne signale u opsegu od 4mA do 20 mA. Signali sa radara dovode se u PLC preko ulaznog dela analognog U/I modula koji se nalazi u slotu 2. Pri tome su signali vezani za nulti i prvi ulazni kanal tako da se nakon A/D konverzije celobrojna vrednost koja odgovara koordinati x smešta na adresu I:2.0, a koordinati y na adresu i I:2.1.

Potrebno je formirati program za PLC koji će konvertovane vrednosti pretvoriti u fizičke veličine i smestiti u memoriju PLC-a u datoteku realnih podataka F8, na adrese F8:0 i F8:1. Ovim lokacijama pridružena su simbolička imena x i y. Pri tome, sistem se pušta u rad pomoću start/stop prekidača, koji je vezan za nulti pin ulaznog dela digitalnog U/I modula u slotu 1 (adresa I:1.0/0, simboličko ime start). Prekidač je normalno otvoren, tako da sistem radi sve dok je prekidač pritisnut.

Sl. 25 Leder program za izračunavanje rastojanja i ugla

Page 78: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

21/plc_math

Transformacije analognih ulaznih signala

Pre nego što se pristupi rešavanju postavljenog zadatka razmotrićemo u opštem slučaju problem konverzije analognih ulaznih signala. Kao što je već istaknuto analogni signali koji dolaze sa mernih instrumenata su standardizovani električni signali koji reprezentuju neke fizičke veličine. Ovi signali se prilikom A/D konverzije pretvaraju u celobrojne vrednosti, koje se zatim mogu dalje pretvoriti u odgovarajuće fizičke veličine. Drugim rečima signal prolazi kroz niz transformacija (Sl. 26) koje sve zavise od granica signala u svakoj fazi transformacije, te se mogu definisati na potpuno opšti način.

• Transformacija fizičke veličine v u električni signal e – ovu transformaciju obavlja sam merni instrument koji meri neku fizičku veličinu u opsegu (vmin, vmax) i proizvodi signal e (strujni ili naponski) u opsegu (emin, emax). Funkcionalna zavisnost između veličina v i e zavisi od tipa instrumenta i određena je nekom poznatom funkcijom e=f(v). Najčešće je ova relacija linearna tako da je

minminminmax

minmax e)vv(vv

eee +−

−−

=

• Transformacija električnog signala e u celobrojnu vrednost c – ovu transformaciju obavlja A/D konvertor koji signale koji su u opsegu (umin, umax) pretvara u celobrojne vrednosti u opsegu (cmin, cmax). Veza između ovih veličina je linearna i određena je relacijom

minminminmax

minmax c)ue(uu

ccc +−

−−

= ,

Kao što je već ranije istaknuto, za standardizovane signale granice celobrojnih vrednosti dobijaju se direktno iz tablica konverzije za dati tip analognog modula.

Zapazimo da opseg mernog signala (emin, emax) ne mora biti jednak opsegu signala sa kojim radi A/D konvertor (umin, umax), ali je izvesno da mora biti sadržan u njemu. To nadalje znači da moraju biti zadovoljene sledeće relacije umin ≤ еmin < emax ≤ umax

• Transformacija celobrojne vrednosti c u fizičku veličinu v – ovu transformaciju, po pravilu, korisnik obavlja sam. U principu odgovarajuća relacija zavisi od samog instrumenta i dobija se preko inverzne funkcije )e(fv)v(fe 1−=⇒= , pri čemu se veličina e dobija inverznom transformacijom iz celobrojne veličine c

Sl. 26 Transformacije analognih ulaznih signala

Page 79: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

22/plc_math

minminminmax

minmax u)cc(cc

uue +−

−−

=

Ukoliko je funkcija f linearna tada se fizička veličina određuje prema relaciji

minminminmax

minmax v)ee(ee

vvv +−

−−

=

Konačno, ukoliko su granice električnog signala e i granice A/D konvertora jednake, odnosno ako je umin = еmin < emax = umax

tada se fizička veličina može odrediti direktno na osnovu celobrojne vrednosti iz relacije

minminminmax

minmax v)cc(cc

vvv +−

−−

=

Rešenje Na osnovu svega što je rečeno o transformacijama ulaznog signala sada se

može pristupiti rešavanju postavljenog zadatka. Ovde su fizičke veličine koordinate objekta h i u, koje radar prati u opsegu od 250m do 1700m. To znači da su granice fizičkih signala xmin = ymin = 250 i xmax = ymax = 1700. Nadalje, budući da radar generiše strujni signal opsega od 4mA do 20mA to je emin = 4mA, a emax = 20mA. Ako se pogledau karakteristike analognog U/I modula u slotu 3 videće se da on ovaj strujni signal konvertuje u celobrojne vrednosti opsega od 3277 do 16384. To znači da je cmin = 3277, a cmax =16384. Uzimajući u obzir sve što je rečeno o transformaciji signala, kao i činjenicu da radar generiše standardni strujni signal čije granice odgovaraju granicama A/D konvertora, fizičke veličine koje odgovaraju izmerenim koordinatama mogu se odrediti preko relacije

. 53,112c11,0250)3277c(

3277163842501700

y

53,112c11,0250)3277c(3277163842501700

x

yy

xx

−=+−−−=

−=+−−−=

gde cx i cy pretstavljaju celobrojne vrednosti koje su dobijene A/D konverzijom i koje su, u toku ulaznog sken ciklusa smeštene na adresama I:2.0 i I:2.1.

Obe relacije se mogu realizovati bilo matematičkim naredbama bilo korišćenjem posebne naredbi za skaliranje. U programu (Sl. 27) je korišćena naredba za skaliranje sa parametrima (SCP). Pri tome, da bi se ilustrovao postupak inicijalizacije promenljivih, minimalna i maksimalna vrednost celobrojne promenljive definišu se posebnim naredbama u nultom rangu. Samo se po sebi razume da to nije neophodno i da se one mogu direktno zadati kao konstante u SCP naredbi kao što je to urađeno sa minimalnom i maksimalnom vrednošću fizičke veličine.

Da se naredbe za definisanje vrednosti parametara ne bi izvršavale u svakom programskom sken ciklusu, kao uslov je korišćen "bit prvog prolaza" (S2:1/15). Ovaj bit se nalazi u sistemskoj datoteci i njega sam procesor postavlja na 1 pre prvog sken ciklusa i resetuje na nulu po završetku prvog sken ciklusa. Otuda se, korišćenjem ovog bita uvek može izdvojiti deo programskih rangova u kojima se obavlja inicijalizacija svih promenljivih.

Page 80: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

23/plc_math

⇒ Transformacija izlaznih analognih signala

Zadatak

Podaci o rastojanju i nagibnom uglu nekog objekta nalaze se u memoriji PLC-a na adresama F8:2 (simboličko ime ro) i F8:3 (simboličko ime alfa). Poznato je da su ovi podaci izračunati na osnovu izmerenih pravougaonih koordinata objekta koje se kreću u opsegu od 700m do 1400m. Ovi podaci se koriste kao referentni signali za jedan sistem za protiv-gradnu odbranu i potrebno je da se oni prenesu na ulaz tog sistema kao naponski signali u opsegu od 2V do 8V. Ulazi protiv-gradnog sistema vezani su preko izlaznog dela analognog U/I modula koji se nalazi u slotu 3. Ulaz koji prima informaciju o rastojanju vezan je preko nultog kanala (adresa O3:0, simboličko ime ro_out). Informacija o uglu dolazi preko prvog kanala (adresa O3:1, simboličko ime alfa _out). Pri tome je uređaj za upravljanje uglom podešen tako da prima

Sl. 27 Leder program kojim se transformišu analogni signali u fizičke veličine

Page 81: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

24/plc_math

informaciju o procentu ugla koji treba da ostvari u odnosu na maksimalni ugao (kome odgovara napon od 8V).

Formirati leder program kojim se realizuje ovaj zadatak.

Transformacije izlaznog signala Kao i kod ulaznog signala očigledno je da je i pri formiranju izlaznog signala

neophodno da se izvrši jedan broj transformacija (Sl. 28).

• Transformacija fizičke veličine v u električnu veličinu e – ovu transformaciju obavlja sam korisnik

U suštini analogni izlazni signal je najčešće neka fizička veličina koja pretstavlja upravljački signal u nekom sistemu. Ova veličina je, po pravilu, linearno srazmerna nekom električnom (strujnom ili naponskom) signalu koji pretstavlja pobudni signal za odgovarajući izvršni organ. Pretpostavljajući da se fizički signal kreće u opsegu (vmin, vmax), a da je njemu odgovarajući električni signal u opsegu (emin, emax), fizička veličina v se transformiše u električnu veličinu e prema relaciji

minminminmax

minmax e)vv(vv

eee +−

−−

=

Naglasimo i da se analogni izlazi često definišu kao procenat od maksimalne aktivnosti izvršnog organa tako da 0% odgovara veličini emin, a 100% odgovara veličini emax. U tom slučaju transformacija se izvodi prema relaciji

minminmin

minmax e(%))v(%)v((%)v100

eee +−

−−

=

• Transformacija električne veličine e u celobrojnu vrednost c– ovu transformaciju obavlja korisnik

Da bi analogni izlazni modul mogao da generiše zahtevani električni signal on mora dobiti odgovarajuću celobrojnu vrednost. Budući da se za celobrojne vrednosti koje su u opsegu (cmin, cmax) generišu električni signali u opsegu (umin, umax) očigledno je da će signalu e odgovarati celobrojna vrednost koja se dobija prema relaciji

minminminmax

minmax c)ue(uu

ccc +−

−−

=

Konačno, ukoliko su granice signala e i u jednake, odnosno ako je umin = еmin < emax = umax

tada se celobrojna vrednost može dobiti direktno iz relacije

Sl. 28 Transformacije analognih izlaznih signala

Page 82: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

25/plc_math

minminminmax

minmax c)vv(vv

ccc +−

−−

= ,

odnosno

minminmin

minmax c(%))v(%)v((%)v100

ccc +−

−−

=

• Transformacija celobrojne vrednosti c u električni signal – obavlja D/A konvertor sam

Rešenje

Na osnovu svega što je rečeno o transformacijama analognih izlaznoh signala, očigledno je da je kao prvo potrebno da se odrede granice fizičkih veličina na osnovu kojih se generišu nanalogni signali.

Polazeći od granica izmerenih pravougaonih koordinata za koje se vrši izračunavanje rastojanja i ugla 700 ≤ x ≤ 1400, i 700 ≤ y ≤ 1400, kao i relacija koje povezuju rastojanje i ugao sa pravougaonim koordinatama

⎟⎠⎞

⎜⎝⎛=α+=ρ

xy

arctg;yx 22

vidi se da su minimalna i maksimalna vrednost rastojanja i ugla

⎟⎟⎠

⎞⎜⎜⎝

⎛=α⎟⎟

⎞⎜⎜⎝

⎛=α

+=ρ+=ρ

min

maxmax

max

minmin

2max

2maxmax

2min

2minmin

y

xarctg)rad(,

y

xarctg)rad(

yx)m(,yx)m(

Pošto minimalne vrednosti. treba da budu predstavljene signalima od emin=2V, a maksimalne vrednosti signalima od emax=8V, sledi da se za vrednost rastojanje ρ(m) odgovarajući naponski signal može dobiti prema relaciji

2)(28

e minminmax

+ρ−ρρ−ρ

−=ρ

S obzirom na prirodu izvršnog organa, veličinu ugla α(rad) treba prvo pretvoriti u procenat od maksimalne vrednosti ugla

100(%)max

p αα=α

Električni signal koji odgovara vrednosti ugla dobija se prema relaciji

2(%))(%)((%)100

28e minpp

minp+α−α

α−−=α

Ove veličine nadalje treba transformisati u celobrojne vrednosti koje će D/A konvertor da pretvori u odgovarajuće naponske signale. Podsetimo se da se za dati analogni U/I modul naponski signal u opsegu od od 0V do 10V konvertuje u ceo broj u opsegu od 0 do 32764. U skladu sa time odgovarajuće granične vrednosti su umin=0V, umax=10V, cmin=0, cmax=32764 tako da se konverzija vrši prema sledećim relacijama

Sl. 29 Adrese i simbolička imena internih promenljivih

Page 83: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

26/plc_math

0)0e(010

032764c;0)0e(

010032764

c +−−

−=+−−

−= ααρρ

Da bi se lakše razumela struktura programa koji realizuje opisani algoritam na Sl. 29 je dat pregled simboličkih imena i adresa internih promenljivih koje se koriste u leder programu (Sl. 30).

Page 84: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

27/plc_math

Sl. 30 Leder program za formiranje analognih izlaznih signala

Page 85: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

1/plc_block_data

V. Naredbe za rad sa datotekama podataka

1. Opšte napomene Naredbe za rad sa datotekama namenjane su manipulaciji sa nizom podataka

koji su smešteni u sukcesivnim elementima neke datoteke. U principu početak niza ne mora biti prvi element datoteke, ali niz mora početi od nultog bita, nulte reči nekog od elemenata u datoteci. Kraj niza podataka ne mora biti na kraju elementa, što znači da se niz može završiti i u nekoj od reči elementa, ali se u tom slučaju preostali bitovi i/ili reči do kraja tog elementa ne mogu da koriste.

Za rad sa nizom podataka neophodno je da se definiše bazna adresa od koje niz počinje. Bazna adresa mora biti početak jednog elementa datoteke, što znači da je ona oblika #fn:e i da kao indeksna adresa, uz uslov da je sadržaj indeksnog registra S:24 jednak nuli, pokazuje na nulti bit, nulte reči tog elementa (#fn:e.0/0). U zavisnosti od konkretne naredbe, sam niz podataka počinje ili od bazne adrese ili od elementa čija je adresa za 1 veća od bazne adrese.

Pored bazne adrese, potrebno je da se specificira i dužina niza, kojom se definiše broj podataka u nizu. U zavisnosti od vrste naredbe ovaj broj može biti izražen u bitovima, rečima ili elementima. Pri tome se mora voditi računa da svi podaci koji su obuhvaćeni zadanom dužinom niza budu unutar datoteke koja je navedena kao bazna adresa. Ukoliko se to ne poštuje, programski sistem će detektovati značajnu grešku.

U principu, ako se poznaju bazna adresa i dužina niza moguće je odrediti i adresu poslednjeg elementa u nizu. Izuzetak su jedino nizovi u datotekama tipa I i O, kod kojih naredni elemenat ne mora imati redni broj koji je za 1 veći od prethodnog, i kod kojih elementi ne moraju biti iste dužine. Ukoliko se želi rad sa nizovima iz ovih datoteka onda je neophodno da se pri definisanju dužine posebno obrati pažnja na raspored U/I modula u slotovima kontrolera.

Potrebno je da se istakne da kod ove vrste naredbi postoji jedna terminološka nepreciznost. Naime, često se niz podataka sa kojima se u nekoj od naredbi operiše označava kao datoteka. U izvesnom smislu, taj naziv je ispravan jer nema nikakve sumnje da niz podataka smešten u nekom povezanom području memorije predstavlja datoteku. Međutim, kod kontrolera je pojam datoteke pre svega vezan za područje u koje se smeštaju određene vrste podataka i koje se identifikuje određenom adresom kojom se precizira tip datoteke i njen broj. Takva, osnovna datoteka može sada da sadrži više grupa podataka (datoteka) sa kojima se operiše u naredbama za rad sa datotekama podataka. Teorijski, ove grupe podataka mogu čak i da se međusobno preklapaju, i ako je teško zamisliti aplikaciju u kojoj bi to imalo smisla. Bitno je jedino da sve pojedinačne grupe podataka (datoteke) čija je bazna adresa definisana preko elemenata osnovne datoteke budu smeštene unutar te iste osnovne datoteke.

Sve naredbe iz ove grupe koriste pointer koji ukazuje na adresu pojedinog podatka u grupi. Ako je naredba takva da se pri svakom izvršavanju obrađuje drugi podatak iz niza, onda se vrednost pointera pamti u upravljačkoj datoteci (tipa R), što znači da se svakom nizu podataka pridružuje jedan elemenat te datoteke. Nad jednim istim nizom podataka može da se izvršava više različitih tipova naredbi koje se nalaze u ratličitim rangovima, ili se isti tip naredbi vezan za isti niz podataka, može naći u više različitih rangova u programu. Od korisnika se, pri tome, očekuje da ima na umu da se prilikom izvršavanja svake od ovih naredbi menja vrednost pointera i da vodi računa da jednom od tih naredbi ne pokvari željeni efekat druge naredbe.

Page 86: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

2/plc_block_data

Sve naredbe iz ove grupe koriste indeksni registar S:24, što znači da je posle njihovog izvršavanja, sadržaj tog registra promenjen.

2. Naredbe za kreiranje datoteke • COP – Copy file (kopiranje datoteke) • FLL – Fil file (punjenje datoteke)

Ove naredbe se izvršavaju ukoliko je uslov istinit i to tako što se elementima datoteke dest pridružuju određene vrednosti. Pri tome se pri izvršavanju COP naredbe ove vrednosti uzimaju iz neke druge datoteke, označene kao source. Podaci se prenose u rastućem nizu, što znači da se vrednost prvog podatka koji se nalazi na baznoj adresi u datoteci source prenosi na prvo mesto (na baznu adresu) u datoteci dest i tako dalje. Ukupan broj podataka koji se prenosi jednak je zadanoj dužini length. Međutim, prilikom izvršavanja FLL naredbe jedan isti podatak, koji se nalazi na adresi source se prenosi u sve elemente odredišne datoteke i to počev od bazne adrese #fn:e zaključno sa adresom #fn:(e+length-1). Naravno da se pri tome podrazumeva da je izvorni podatak istog tipa (odnosno zauzima isti broj reči) kao i element odredišne datoteke. Budući da su obe ove naredbe naredbe akcije, one se izvršavaju svaki put kada je uslov istinit. Ukoliko su elementi odredišne datoteke reči, onda je maksimalna dozvoljena dužina length ≤ 128. Kada se radi sa datotekama čiji je element dugačak 2 reči, maksimalna dozvoljena dužina je lengt h≤ 64, dok je za datoteke dužine tri reči, maksimalna dužina length ≤ 42. Kod datoteka tipa String, dužina ne može biti veća od dužine jednog elementa (42 reči). U slučaju kada su odredišne datoteke tipa T,C i R, treba voditi računa šta će se staviti u prvu reč elementa gde se nalaze indikatorski bitovi. Naime postavljanje nekih od ovih bitova na 1 ili na 0, može prouzrokovati krajnje nepredvidive efekte prilikom izvršavanja naredbi za koje su ti elementi vezani. Potrebno je da se istakne da se pomoću COP naredbe može ostvariti i translacija čitavog niza podataka unazad za određeni broj mesta. Ovo se ostvaruje tako što se obe adrese vežu za istu datoteku, s tim što se kao source adresa definiše adresa koja je veća od bazne adrese odredišta dest za iznos koji odgovara broju mesta za koji se vrši translacija. Ukoliko se želi translacija unapred (u smislu rastućih adresa) onda je to moguće da se ostvari samo ako je razlika između odredišne i izvornne adrese veća od dužine niza podataka. U protivnom, ako taj uslov nije ispunjen, doći će do preklapanja podataka i deo niza podataka će biti izgubljen. Nakon izvođenja ovih naredbi indeks registar S:24 se postavlja na 0.

Page 87: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

3/plc_block_data

3. Naredbe za translaciju bitova

• BSL – Bit shift left (translacija bitova u levo) • BSR – Bit shift right (translacija bitova u desno)

Naredbe za translaciju bitova su naredbe akcije. Međutim, one se izvode samo kada se uslov menja sa neistinit na istinit. Prilikom izvršavanja naredbe niz od length bitova koji je smešten u datoteci fn, počev od nultog bita u elementu e, se translatorno pomera za jedno mesto u levo (BSL) odnosno u desno (BSR), pri čemu se na upražnjeno mesto smešta bit čija je adresa fn:w/b dok se prvi (BSR), odnosno poslednji (BSL) bit niza prebacuje u indikatorski bit UL (Sl. 1). Posle izvođenja ove naredbe indeksni registar S:24 se postavlja na nulu.

Potrebno je da se istakne da kod svih datoteka, izuzev datoteke tipa String, dužina niza može da bude veća od dužine elementa. Drugim rečima, niz može da se proteže preko više elemenata, ali ne sme da prekorači granicu datoteke. Ukoliko se to dogodi, ER bit se postavlja na jedan i na kraju ciklusa se indicira da je došlo do značajne greške. Bitovi koji pripadaju jednom elementu, ali ne čine sastavni deo niza (ostatak od kraja niza do kraja elementa) ne mogu da se koriste.

Sl. 1 Realizacija naredbi za pomeranje bitova

Svakoj datoteci (file) koja se navodi u okviru jedne od ovih naredbi pridružuje

se po jedan elemenat upravljačke datoteke tipa R. U okviru elementa pamte se indikatorski bitovi i dužina niza. Pri tome se može koristiti sistemska upravljačka datoteka broj 6, ili korisnička datoteka (brojevi od 9 do 255). Jedan elemenat ove datoteke, koji se odnosi na BSR i BSL naredbu ima izgled kao na slici Sl. 2. Potrebno je zapaziti da se dužina niza koje se pomera može menjati u toku rada programa, jednostavnim korišćenjem neke od naredbi za promenu podataka u kojoj se kao

Page 88: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

4/plc_block_data

odredišna adresa navodi Rn:1. Naravno, pri tome treba voditi računa da se ne prekorači maksimalna dužina niza.

Ukoliko se kao dužina niza zada 0 (len 0), naredba se izvodi tako što se zadani bit smešta u UL.

Sl. 2 - Element upravljačke datoteke za BSL i BSR naredbu

Bitovi stanja u elementu datoteke R menjaju se na sledeći način: EN – Enable bit se postavlja na 1 kada uslov prelazi sa neistinit na istinit. Postavljanje ovog bita prouzrokuje da se izvrši zahtevano pomeranje niza bitova u levo ili u desno za jedno mesto. Pri svakom sledećem prolazu kroz ovaj rang, sve dok je uslov istinit, EN bitr zadržava vrednost 1, ali se pomeranje bitova ne vrši. Kada uslov postane neistinit, EN bit se resetuje na nulu. DN – Done bit se postavlja na 1 kada se niz bitova pomeri za jedno mesto, kada uslov postrane neistinit vrednost ovog bita se resetuje na nulu. ER – Error bit se postavlja na 1 ukoliko se pri izvršavanju naredbe detektuje neka nepravilnost (dužina je negativan broj ili premašuje veličinu datoteke) i ako se ne restuje pre kraja sken ciklusa, javlja se značajna greška. Kada uslov postrane neistinit vrednost ovog bita se resetuje na nulu; UL – Unload bit posle pomeranja sadrži poslednji bit početnog niza, kod pomeranja u levo, odnosno prvi bit kod pomeranja u desno.

S obzirom na način na koji se izvršava ova naredba, očigledno je da se rotacija niza može ostvariti tako što će se kao bit address stvaiti ili adresa UL-bita, ili adresa prvog (BSR) odnosno poslednjeg (BSL) bita u nizu.

Ukoliko se želi da se u okviru jednog sken ciklusa izvrši pomeranje za više mesta, to se može ostvariti pomoću programskog ciklusa, koji će omogućiti da se ista naredba (pomeranje za jedno mesto) izvrši više puta. O načinu formiranja cilklusa biće kasnije više reči.

4. Naredbe za sekevencijalnu obradu podataka Jedan od izuzetno čestih zadataka pri upravljanju procesima je sekvencijalno

upravljanje. Ovim upravljanjem se izvršnim organima na procesu zadaje niz naredbi

Page 89: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

5/plc_block_data

binarnog tipa (uključi/isključi, napred/nazad, kreni/stani i sl.) koje se smenjuju u vremenu, pri čemu svaka aktivnost traje određeni, unapred definisani interval vremena, ili dok se ne detektuje nastanak nekog događaja. Bitno obeležje ovog načina upravljanja je da je sekvenca unapred potpuno određena i da se niz aktivnosti može definisati kao sukcesivan niz binarno kodiranih reči, kod kojih se svaki bit odnosi na pojedini izvršni organ, koji je vezan za kontroler preko odgovarajućeg digitalnog izlaznog modula. Kako se proces odvija, tako se na izlazni modul prenosi reč po reč iz upravljačke sekvence.

Budući da prelazak sa jedne aktivnosti na drugu može da bude uslovljen stanjem u pojedinim delovima procesa, to znači da je neophodno da se, pod određenim uslovima, očitavaju stanja indikatora na procesu i porede sa unapred definisanim stanjima. U zavisnosti od rezultata poređenja, odlučuje se da li je došlo vreme za sledeću aktivnost. Kada je odgovor potvrdan, onda je izvesno da proces ulazi u sledeću fazu, te da se nadalje stanje mora porediti sa drugim nizom vrednosti koji ukazuje na završetak sledeće faze. Dakle, i ovde je moguće da se svi parametri koji učestvuju u poređenju, urede u jedan niz binarno kodiranih reči, i da se stanje procesa, koje se učitava preko digitalnih ulaznih modula poredi sa odgovarajućom reči iz niza.

Nema nikakve sumnje da bi se opisane operacije mogle izvesti kombinovanjem naredbi za unošenje i iznošenje digitalnih podataka, naredbi za poređenje i tehnike indirektnog ili indeksnog adresiranja. Međutim, pošto je potreba za ovim operacijama izuzetno izražena, predviđene su dve posebne naredbe kojima se one u celosti mogu realizovati. Obe naredbe su naredbe akcije

⇒ Naredbe za sekvencijalni rad sa datotekama

U okviru ovih naredbi bar jedan od operanada je datoteka u kojoj se nalazi niz podataka. Pri tome se dozvoljava rad samo sa onim datotekama čiji elementi su dužine jedne reči. Adrese pojedinih podataka određuju se pomoću bazne adrese koja se definiše u naredbi i pointera koji predstavlja upravljački paramater, čija se vrednost menja u toku ponovljenih izvršavanja naredbe. Pri tome se adresa operanda dobija kao zbir bazne adrese i vrednosti pointera. U naredbama se definiše početna vrednost pointera kao i ukupna dužina niza.

Ako neka aplikacija zahteva da se sekvencijalna obrada izvrši nad podacima koji su duži od 16 bitova, onda se ti podaci moraju podeliti na više datoteka. Tada se u svakom rangu na izlazu kao naredbe akcije mogu paralelno staviti više istih naredbi kojima se adresiraju sve definisane datoteke.

Svakoj datoteci koja se specificira u okviru neke sekvencijalne naredbe pridružuje se po jedan elemenat upravljačke datoteke R. U okviru ovog elementa pamte se indikatorski bitovi, kao i vrednost pointera i dužina same datoteke. O formatu jednog elementa ove datoteke biće kasnije više reči.

Prilikom izvršavanja ovih naredbi menja se sadržaj indeksnog registra. Nakon završetka naredbe, sadržaj indeksnog registra jednak je vrednosti pointera.

Potrebno je da se naglasi da se ove naredbe ne izvode uvek na isti način. Naime, samo kada se uslov u rangu menja sa neistinit na istinit menja se vrednost pointera i on ukazuje na drugi podatak. Međutim, ako uslov posle toga ostane i dalje istinit, pointer ne menja vrednost već se naredba izvršava sa podatkom koji je uzet pri poslednjoj promeni pointera.

Page 90: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

6/plc_block_data

• SQL – Sequencer Load (sekvencijalno punjenje datoteke)

Svaki put kada se uslov menja sa neistinit na instinit, ova naredba se izvršava

tako što se vrednost pointera poveća za 1 i podatak koji je određen kao source prenese u datoteku file na onu adresu na koju pokazuje pointer. Na taj način se pri svakom sledećem izvršavanju naredbe menja sadržaj sledeće reči u nizu. Ukoliko se kao source adresa navede konstanta onda se ceo niz postavlja na istu vrednost. Ako je source adresa promenljiva (fn:s), onda svaka reč niza dobija vrednost koju promenljiva ima u trenutku izvođenja naredbe. Međutim, ako se kao source adresa navede datoteka (#fn:s), onda se ta adresa uzima kao bazna adresa izvorne datoteke, što znači da se pri izvođenju naredbe podatak uzima sa one adrese na koju u izvornoj datoteci pokazuje pointer. Pri tome se podrazumeva da obe datoteke imaju istu dužinu, definisanu kao length.

Pri sledećim sken ciklusima, za svo vreme za koje uslov ostaje istinit, vrednost pointera se ne menja, već se isti, prethodno određeni, podatak prenosi u promenljivu označenu sa dest. • SQO – Sequencer output (sekvencijalno upravljanje)

Sl. 3 - Ilustracija izvršavanja SQO naredbe

Svaki put kada se uslov menja sa neistinit na instinit, ova naredba se izvršava tako što se vrednost pointera (position) poveća za 1 i uzme ona reč iz datoteke file (#fn:w) na koju pokazuje pointer. Ta reč se filtrira kroz masku mask i rezultat filtracije se prenosi u promenljivu označenu sa dest. Ako je kao dest navedena datoteka #fn:d

Page 91: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

7/plc_block_data

onda će se rezultat upisati u onu reč te datoteke na koju pokazuje pointer (Sl. 3). Isto tako, ako je kao mask navedena datoteka #fn:m onda i maska prestaje da bude fiksna, već se svaki put kao maska uzima ona reč iz datoteke na koju pokazuje pointer. Potrebno je zapaziti da se u reči koja označena sa dest menjaju samo oni bitovi koji su nemaskirani (odgovorajući bitovi maske su postavljeni na 1).

Pri sledećim sken ciklusima, za svo vreme za koje uslov ostaje istinit, vrednost pointera se ne menja, već se isti, prethodno određeni, podatak prenosi u promenljivu označenu sa dest. • SQC – Sequencer compare (sekvencijalno poređenje)

Sl. 4 - Ilustracija izvršavanja SQC naredbe

Svaki put kada se uslov menja sa neistinit na instinit, SQC naredba se

izvršava tako što se vrednost pointera (position) poveća za 1 i uzme ona reč iz datoteke #fn:w na koju pokazuje pointer. Ta reč se poredi sa filtriranim podatkom koji sadrži promenljiva označena kao source i rezultat poređenja se upisuje u odgovarajući indikatorski bit. Filtracija podatka vrši se pomoću maske mask i to tako da u poređenju učestvuju samo oni bitovi kojima u maski odgovara vrednost bita 1 (nemaskirani bitovi). Ako je kao source navedena datoteka #fn:s onda će se podaci koji učestvuju u poređenju uzimati iz one reči te datoteke na koju pokazuje pointer (Sl. 4). Isto tako, ako je kao mask navedena datoteka #fn:m onda i maska prestaje da bude fiksna, već se svaki put kao maska uzima ona reč iz datoteke na koju pokazuje pointer.

Pri sledećim sken ciklusima, za svo vreme za koje uslov ostaje istinit, vrednost pointera se ne menja, već se isti, prethodno određeni, podatak (source) uzima kao podatak za poređenje.

⇒ Datoteka R – Control

Naredbama za sekvenciranje pridružuju se indikatorski bitovi i upravljački

Page 92: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

8/plc_block_data

parametri. Ove informacije se smeštaju u upravljačku datoteku tipa R. Pri tome se može koristiti sistemska upravljačka datoteka broj 6, ili korisnička datoteka (brojevi od 9 do 255). Jedan elemenat ove datoteke, koji se odnosi na SQO i SQC naredbu ima izgled kao na slici Sl. 5.

Sl. 5 - Elemenat upravljačke datoteke za SQO i SQC naredbu

Bitovi stanja u elementu datoteke R menjaju se na sledeći način:

EN – Enable bit se postavlja na 1 kada uslov prelazi sa neistinit na istinit. Postavljanje ovog bita prouzrokuje da se izvrši naredba i vrednost pointera poveća za 1. Pri svakom sledećem prolazu kroz ovaj rang, sve dok je uslov istinit, EN bit ozadržava vrednost 1, ali se vrednost pointera ne menja, već se naredba izvršava sa istom vrednošću pointera. Kada uslov postane neistinit, EN – bit se resetuje na 0. DN – Done bit se postavlja na 1 kada vrednost pointera, posle niza izvođenja SQL, SQO ili SQC naredbe, dođe do kraja niza u zadanoj datoteci. Ovaj bit će biti resetovan na 0 tek u onom sken ciklusu u kome uslov, pošto je prethodno postao neistinit, ponovo postaje istinit (kada se EN-bit ponovo postavi na 1). ER – Error bit se postavlja na 1 kada se u programu detektuje negativna vrednost pointera, ili negativna ili nulta vrednost dužine niza. Ako se ovaj bit ne resetuje pre kraja sken ciklusa nastaće značajna greška. FD – Found bit se postavlja na 1 ako je rezultat poređenja u SQC naredbi istinit. Drugim rečima ovaj bit ukazuje na to da su nemaskirani bitovi podataka jednaki odgovarajućim bitovima u datoteci referentnih vrednosti. ⇒ Length i position

Promenljive length se pamti u prvoj reči datoteke R i predstavlja broj reči koji se nalazi u nizu u jednoj sekvencijalnoj datoteci. Maksimalna vrfednost dužine je 255. Pri definisanju dužine, potrebno je voditi računa o činjenici da navedena adresa reči w u datoteci #fn:w zapravo predstavlja nultu, početnu poziciju. To znači da se za datu dužinu len u datoteci koristi zapravo len+1 reč. Ovo se naravno odnosi i na mask, source i dest ukoliko su u naredbi specificirane kao datoteke.

Page 93: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

9/plc_block_data

Vrednost pointera, označena kao position, pamti se u drugoj reči datoteke R. Početna vrednost pointera se definiše pri specifikaciji naredbe. Vrednost pointera se kreće od 1 do len i ukazuje na reči u datoteci od fn:(w+1) do fn:(w+len+1). Kada pointer stigne do poslednje reči u datoteci, postavlja se DN-bit na 1 i pri tome se u prvom sledećem sken ciklusu u kome uslov ima prelaz sa neistinit na istinitinit (isiti ciklus u kome se resetuje DN-bit) vrednost pointera automatski vraća na 1. Pri definiciji početne vrednosti pointera potrebno je obratiti pažnju na činjenicu da se ona poveća za 1 pre prvog izvođenja naredbe.

Ako se kao početna vrednost pointera definiše 0, onda će pri izvođenju SQC naredbe obrada početi od reči u datoteci čija je adresa fn:(w+1). Međutim kod SQO naredbe način izvođenja operacije zavisi od istinitosti uslova u prvom sken ciklusu. Ako je uslov istinit naredba se izvršava počev od nulte reči, čija je adresa fn:(w+0). Međutim, ako je uslov neistinit, izvršavanje naredbe se odlaže sve dok uslov ne postane istinit i tada se uzima prva reč, čija je adresa w+1.

Konačno, važno je da se istakne da se prilikom eventualne programske promene dužine i pozicije mora voditi računa da se ne prekorači veličina definisanog niza u datoteci.

⇒ Resetovanje parametara

Ukoliko se iz nekog razloga želi prekinuti sekvencijalno upravljanje ili poređenje, to se može ostvariti pomoću RES naredbe u kojoj se navodi adresa nulte reči elementa datoteke R koji je vezan za naredbu

čiji se rad želi resetovati Rf:e. RES naredbom se vrednosti svih indikatorskih bitova, izuzev FD-bita, postavljaju na 0. Istovremeno se i vrednost pointera postavlja na 0 (ova vrednost će se povećati na 1 pre prvog sledećeg izvođenja naredbe).

5. Naredbe za formiranja steka U računarskoj terminologiji stek označava niz podataka koji se sekvencijalno puni i prazni. Naime, stek se formira u nekom području memorije i to tako što se definiše početna adresa steka i pointer steka se postavi na tu početnu adresu. Svaki put kada se podatak unese u stek, vrednost pointera poraste za 1, tako da on uvek ukazuje na sledeću slobodnu lokaciju. U pogledu uzimanja podataka iz steka postoje dva principa: • LIFO stek (Last in last out) – je stek kod koga se podatak uzima sa “vrha”

steka, odnosno kod koga se kao prvo uzima podatak koji je poslednji smešten u stek. Vrednost pointera se pri tome smanjuje za 1, ali se položaj preostalih podataka ne menja.

• FIFO stek (First in first out) – je stek kod koga se podatak uzima sa “dna” steka, odnosno kao prvo uzima podataka koji je prvi stavljen na stek, pri čemu se svi preostali podaci transliraju za jedno mesto na dole prema dnu steka, dok se memorijsko mesto koje je zauzimao podatak na vrhu steka postavlja na 0. Istovremeno se i vrednost pointera smanjuje za 1.

S obzirom na izloženi princip formiranja steka, očigledno je da za svaki tip steka moraju postojati odvojene naredbe. Pri tome se one javljaju u paru (za punjenje i pražnjenje steka). U okviru naredbe mora da se definiše bazna adresa steka, početna vrednost pointer, kao i maksimalna dužina steka. Svakom steku koji se specificira u okviru neke naredbe se pridružuje po jedan elemenat upravljačke datoteke. U ovom elementu postavljaju se određeni indikatorski bitovi, a takođe se

Page 94: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

10/plc_block_data

pamti i vrednost pointera, kao i dužina steka. Nardbe za punjenje i pražnjenje steka su naredbe akcije, ali se iztvode samo

onda kada se uslov menja sa neistinit na istinit.

⇒ Punjenje steka • LFL – LIFO load (punjenje LIFO steka) • FFL – FIFO load (punjenje FIFO steka)

Ove naredbe se izvršavaju svaki put kada se uslov menja sa neistinit na istinit,

i to tako što se podatak čija je adresa navedena kao source, prenese na položaj u steku koji je određen pointerom. Nakon toga se vrednost pointera poveća za 1. Ovaj postupak je ilustrovana na slici Sl. 6, gde su prikazana tri uzastopna izvršavanja bilo koje od ove dve naredbe. Pri tome je predpostavljeno da je bazna adresa steka locirana na memorijskoj adresi 200, i da su u steku, pre izvršavanja ovih naredbi već smeštena dva podatka (a i b).

Sl. 6 - Ilustracija izvršavanja naredbi za punjenje steka LFL i FFL

I ako obe naredbe za punjenje steka rade na isti način, one se mogu koristiti samo za punjenje odgovarajućeg tipa steka. Drugim rečima ne može se LFL naredbom puniti FIFO stek i obratno. U principu, kao početna pozicija pointera može da se zada bilo koja vrednost, ali je prirodno da ona bude nula, odnosno da se stek puni od bazne adrese. Prilikom izvođenja ovih naredbi menja se sadržaj indeksnog registra S:24 i to

Page 95: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

11/plc_block_data

tako što on dobija vrednost pointera pre otpočinjanja izvršavanja naredbe.

⇒ Pražnjenje steka

a

e

d

c

b

a

d

c c

b b

a

pointer=3

200

201

204

203

202

pointer=4 pointer=2

dest

pointer=5 pointer=4 pointer=3pre

u toku i posle

izvođenja UNLOAD LIFO

naredbe

prva LFUnaredba

trećaLFUnaredba

druga LFUnaredba

bazna adresa steka

Stekpre posle

prve LFU naredbe205

Sl. 7 - Ilustracija izvršavanja naredbe za pražnjenja LIFO steka

Sl. 8 - Ilustracija izvršavanja naredbe za pražnjenja FIFO steka

Page 96: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

12/plc_block_data

• LFU – LIFO unload (pražnjenje LIFO steka) • FFU – FIFO unload (pražnjenje FIFO steka)

Ove naredbe se izvršavaju svaki put kada se uslov menja sa neistinit na istinit, i to tako što se vrednost pointera smanji za 1 i uzme podataka sa vrha steka (LFU), odnosno sa dna steka (FFU) i prenese na adresu koja je navedena kao dest. Ovaj postupak je ilustrovana na slikama Sl. 7 i Sl. 8, gde su prikazana tri uzastopna izvršavanja ovih naredbi. Pri tome je predpostavljeno da je bazna adresa steka locirana na memorijskoj adresi 200, i da su u steku, pre izvršavanja ovih naredbi već smeštena dva podatka (a i b). U toku izvršavanja ovih naredbi menja se vrednost indeksnog registra S:24 i to tako da on sadrži vrednost koju pointer ima nakon izvršavanja naredbe.

⇒ Datoteka R – Control Naredbama za rad sa stekom pridružuju se indikatorski bitovi i upravljački parametri. Ove informacije se smeštaju u upravljačku datoteku tipa R. Pri tome se može koristiti sistemska upravljačka datoteka broj 6, ili korisnička datoteka (brojevi od 9 do 255). Jedan elemenat ove datoteke, koji se odnosi na naredbe za rad sa stekom ima izgled kao na slici Sl. 9.

Sl. 9 - Elemenat R datoteke za LFL, FFL, LFU i FFU naredbu

Page 97: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

13/plc_block_data

Bitovi stanja u elementu datoteke R menjaju se na sledeći način: EN – Enable bit se postavlja na 1 kada uslov u rangu koji sadrži FFL ili LFL naredbu za punjenje steka, prelazi sa neistinit na istinit. Postavljanje ovog bita prouzrokuje da se izvrši naredba. Pri svakom sledećem prolazu kroz ovaj rang, sve dok je uslov istinit, vrednost EN bita ostaje 1, ali se naredba ne izvršava. Kada uslov postane neistinit, EN – bit se resetuje na 0. EU – Enable bit se postavlja na 1 kada uslov u rangu koji sadrži FFU ili LFU naredbu za pražnjenje steka, prelazi sa neistinit na istinit. Postavljanje ovog bita prouzrokuje da se izvrši naredba. Pri svakom sledećem prolazu kroz ovaj rang, sve dok je uslov istinit, vrednost EU bita ostaje 1, ali se naredba ne izvršava. Kada uslov postane neistinit, EU – bit se resetuje na 0. DN – Done bit se postavlja na 1 kada vrednost pointera dođe do vrha steka (odnosno kada on ukazuje na prvu sledeću adresu iznad vrha steka). Ovaj bit indicira da je stek pun i sve dotle dok je njegova vrednost 1, naredbe za punjenje steka se neće izvršavati, bez obzira na to što bi prema uslovu u rangu trebalo da se izvrše. Ovaj bit će biti resetovan na 0 tek nakon izvršavanja naredbe za pražnjednje steka, čime u steku ostaje upražnjeno jedno mesto. EM – Empty bit se postavlja na 1 kada vrednost pointera ukazuje na dno steka, odnosno kada je stek prazan. Sve dotle dok je vrednost ovog bita 1, naredbe za pražnjenje steka se neće izvršavati, bez obzira na to što bi prema uslovu u rangu trebalo da se izvrše.

Page 98: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

1/plc_tok

Naredbe za upravljanje izvršavanjem programa

1. Opšte napomene U principu kada PLC počne sa radom (uđe u tzv Run mode) on započinje sken

ciklus koji se satoji iz ulaznog sken ciklusa, programskog sken ciklusa, izlaznog sken ciklusa, komunikacionog ciklusa i održavanja. Pri tome se u okviru programskog sken ciklusa obrađuje rang po rang u redosledu u kome su oni napisani.

Različite aplikacije mogu zahtevati da se redosled izvođenja leder programa, pod određenim uslovima, promeni. Isto tako može biti potrebno da se program privremeno prekine, da se pojedine aktivnosti suspenduju, da se stanja nekih veličina resetuju ili da se usled nastanka nekih događaja preduzimaju i neke druge aktivnosti. Svi ovi efekti mogu se ostavriti posebnim naredbama za upravljanje izvršavanjem programa.

2. Naredba za skok Leder program se izvršava u okviru programskog sken ciklusa i to tako što se

obradjuje rang po rang u redosledu u kome su oni napisani u programu. U samom procesoru postoji jedan registar, koji igra ulogu pokazivača (pointera), koji sadrži memorijsku adresu sledećeg ranga u programu koji treba da se obradi. U svakom rangu ispituje se istinitost uslova i ako je on istinit izvršavaju se naredbe akcije. Kod nekih aplikacija, međutim, neophodno je da se, pod određenim uslovima odstupi od normalnog toka programa, tako što se preskače jedan niz naredbi ili se neki niz naredbi ciklično ponavlja određeni broj puta. Ovakvi zahtevi mogu se ostvariti pomoću naredbi za skok.

• LBL - naredba Sve dotle dok se naredbe programa izvršavaju u

redosledu u kome su napisane nema nikakve potrebe da se pojedini rangovi posebno označe. Međutim, ukoliko se od programa očekuje da omogući skok na neku nardebu, onda je neophodno da se omogući da se jedna određena naredba identifikuje na nedvosmislen način. Identifikacija

naredbe ostvaruje se pomoću simboličkog imena – labele koja se kao naredba uslova postavlja na prvo mesto u

rangu (Sl. 1). Labela se definiše kao decimalni broj koji se kreće od 0 do 999. U jednom programu može se definisati najviše 256 različitih labela. Samo se po sebi razume da se jedna labela, budući da predstavlja simboličko ime ranga, može nalaziti u samo jednom rangu.

Iako labela ima grafički simbol naredbe uslova njoj se ne pridružuju nikakvi bitovi čije bi stanje određivalo istinosnu vrednost naredbe. Pri izvodjenju programa smatra se da je naredba uvek istinita.

• JMP – Jump (skok) Ova naredba je naredba akcije, što znači da se

izvršava ukoliko je uslov istinit (Sl. 2). Naredba se izvodi tako što se menja vrednost pointera tako da on ukazuje na memorisjku adresu na kojoj se nalazi rang čija je labela naznačena u JMP naredbi. To zapravo znači da se vrši skok na rang koji sadrži datu labelu, i od njega se nastavlja izvršavanje programa. Više različitih JMP

Sl. 1 Simbol i položaj labele u rangu

Sl. 2 Simbol i položaj naredbe za skok

uslov iakcija

lbl

uslovjmp

lbl

Page 99: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

2/plc_tok

naredbi mogu koristiti istu labelu. U principu skok se može izvršiti unapred ili unazad u odnosu na rang u kome se

nalazi JMP naredba. Ukoliko se skok unazad kombinuje sa brojačem ili nekim uslovom može se ostvariti programska petlja. Prilikom formiranja petlje treba voditi računa da se ukupno vreme skeniranja ne produži preko unapred definisane gornje granice trajanja jednog programskog sken ciklusa. ukoliko se to dogodi procesor će prijaviti grešku i obustaviti rad.

3. Potprogrami Veoma često u okviru neke aplikacije javlja se potreba da se jedna ista sekvenca

naredbi ponovi više puta na različitim mestima u programu. Nesumnjivo je da se ovo može rešiti i tako što će se dati niz programskih rangova ponoviti onoliko puta koliko to aplikacija zahteva, ali će se na taj način nepotrebno zauzimati memorijski prostor. Da bi se to izbeglo, dati niz rangova formira se samo jedanput kao podprogram (subroutine), koji se poziva na izvršavanje na više mesta u leder programu.

⇒ Poziv potprograma

• JSR – Jump to Subroutine (skok na podprogram)

Ova naredba je naredba akcije (Sl. 3). Ukoliko je uslov istinit JSR naredba prouzrokuje prekid u normalnom izvršavanju leder programa i ostvaruje skok na podprogram čije je simboličko ime (broj programske datoteke) naveden kao adresa u JSR naredbi. Izvršavanje programa nastavlja se od

prvog ranga podprograma.

⇒ Formiranje i identifikacija podprograma

• SBR – Subroutine (podprogram) Potprogram je zasebna celina leder

programa koja se mora formirati u okviru posebne programske datoteke. Broj te datoteke (3 – 255) predstavlja istovremeno i simboličko ime potprograma. SBR naredba se koristi da bi se naznačilo da programska datoteka predstavlja podprogram (Sl. 4). Ova naredba formalno pripada kategoriji naredbi uslova, što znači da se postavlja na levu stranu ranga. Pri tome ona se mora

definisati kao prva naredba, prvog ranga u programskoj datoteci u okviru koje se definiše potprogram. Budući da SBR naredba predstavlja identifikator podprograma njoj se ne pridružuju nikakvi bitovi čije bi stanje određivalo istinosnu vrednost naredbe. Pri izvodjenju programa smatra se da je naredba uvek istinita.

U principu, u okviru podprograma izdvaja se jedna programska celina (procedura) koja se ponavlja na više mesta u programu, čime se, kao što je već rečeno, štedi na potrebnom memorijskom prostoru. Pored toga, kod složenijih aplikacija, pogodno je da se pojedine logičke celine izdvoje u podprograme, čime se značajno povećava preglednost programa. i olakšava njegovo testiranje.

Sl. 3 Simbol i položaj naredbe za poziv potprograma

Sl. 4 Simbol i položaj naredbe za identifikaciju potprograna

SUBROUTINE

SBR

uslov JUMP TO SUBROUTINESBR file number

JSR

Page 100: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

3/plc_tok

Pri korišćenju podprograma treba voditi računa o činjenici da će se svi bitovi digitalnih izlaza kojima se upravlja u okviru podprograma menjati samo onda kada se podprogram pozove.

⇒ Završetak potprograma

• RET – return (povratak)

• END – End (kraj) Poslednji rang svakog potrpograma, kao i glavnog programa, sadrži samo jednu

naredbu akcije – END naredbu. Pri tome, u delu za uslov nema nikakve naredbe, što znači da se ovaj rang izvršava u svakom programskom sken ciklusu. Izvršavanje END naredbe u potprogramu ima za posledicu da se promeni vrednost pointera sledećeg ranga i to tako da on ukazuje na prvi rang koji se nalazi neposredno iza JSR naredbe kojom je ostvaren skok na ovaj potprogram.

U nekim aplikacijama potrebno je da potrpogram ima više različitih završetaka u zavisnosti od vrednosti pojedinih podataka. U tu svrhu koristi se RET naredba (Sl. 5). Ova naredba akcije izvršava se isto kao i END naredba, što znači da prekida rad

potprograma i vraća izvršavanje na prvi rang neposredno iza JSR naredbe. Jedina razlika je u tome što se na levoj strani ranga koji

sadrži RET naredbu mogu naći naredbe uslova. Ukoliko je uslov istinit izvođenjem RET naredbe prekinuće se rad potrpograma i pre njegovog fizičkog kraja koji označava END naredba.

Unutar jednog potprograma može se naći više RET naredbi.

⇒ Učaureni podprogrami U principu jedan podprogram može pozvati drugi podprogram koji poziva treći i

tako redom. Način izvršavanja tako učaurenih podprograma ilustrovan je na Sl. 6 . Dozvoljeno je povezivanje do osam nivoa podprograma.

Sl. 5 Simbol i položaj naredbe za izlazak iz potprograma

Sl. 6 Učaureni potprogrami

uslov RETURN

RET

Page 101: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

4/plc_tok

4. Promena toka sken ciklusa Ova grupa naredbi koristi se u fazi testiranja programa ili za ubrzavanje sken

ciklusa u nekimslučajevima.

• TND – Temporary end Ukoliko je uslov istinit (Sl. 7) ova naredba

prekida izvršavanje programskog sken ciklusa. U tom slučaju odmah započinje izlazni sken ciklus, posle koga se nastavlja ciklus komunikacija i održavanja. Sledeći programski sken ciklus započinje od prve programske naredbe.

Samo sepo sebi trazume da se ova naredba najčešće koristi u fazi testiranja programa, kada se želi ispitati ispravnost pojedinih programskih celina.

• SUS – Suspend naredba Ukoliko je uslov istinit ova naredba (Sl.

8) prouzrokuje suspenziju rada procesora (suspend idle mode PLCa) i ukidanje pobude na svim izlaznim linijama. Istovremeno se ID kod, koji se navodi u naredbi, upisuje u sedmu reč statusne datoteke (S:7), dok se broj

programske datoteke u kojoj se nalazi ova naredba upisuje u osmu reč (S:8). Naredba se koristi u fazi testiranja

programa i pronalaženja grešaka. Ona se stavlja u onim segmentima programa koje se

žele ispitati i kada procesor uđe u stanje suspenzije ispituju su sve reči u statsnoj doatoteci koje mogu dati informaciju o radu programa.

ID kod koji se navodi u naredbi služi za identifikaciju same nardbe. Naime, budući da se u jednom programu može naći više ovakvih naredbi. One se međusobno razlikuju po svom identifikacionom kodu i po broju programske datoteke u kojoj se nalaze. Očitavanjem ova dva podatka iz statusne datoteke korisnik može da identifikuje deo programa koji se izvršavao neposredno pre toga i da proveri ostale podatke iz statusne datoteke.

• MCR – Master control reset Par naredbi MCR i END MCR definiše zonu unutar

leder programa (Sl. 9) koja se može izvršavati na specifičan način. Ukoliko je uslov u MCR naredbi neistinit onda se sve naredbe koje nalaze u MCR zoni izvršavaju regularno. To znači da se u svakom rangu ispituje uslov i u zavisnosti od vrednosti uslova izvršava odgovarajuća akcija. Međutim, ukoliko je uslov istinit u svim rangovima unutar zone se postavlja vrednost odgovarajućih bitova uslova, dok se nezavisno od ove vrednosti svi bitovi akcije resetuju. Na taj način se u izvesnoj meri smanjuje

trajanje programskog sken ciklusa. Smisao ove nardbe je da omogući kreiranje programskih celina koej se po potrebi mogu aktivirati ili inhibirati. Na ovaj način se može realizovati granjanje

programa na više putanja. Tako, na primer, ukoliko se realizuje program koji upravlja nekim procesom koji radi sa različitim recepturama, svaka od receptura se može

Sl. 7 Simbol i položaj naredbe za prekid programskog sken ciklusa

Sl. 8 Simbol položaj naredbe za suspenziju

Sl. 9 Simbol i položaj MCR naredbe

uslovMCR

ENDMCR

naredbe u MCR zoni

Page 102: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

5/plc_tok

definisati unutar posbne MCR zone. Pažljivo odabranim uslovima može se postići da u svakom trenutku samo jedna od ovih zona bude aktivna.

Pri korišćenju MCR zone potrebno je voditi računa da se nekom naredbom za skok ne skoči unutar zone, jer se u tom slučaju poništava efekat inhibicije zone i nastavlja se sa normalnim obrađivanjem rangova.

5. Ažuriranje ulaznih i izlaznih podataka Već je istaknuto da se u toku programskog sken ciklusa ne obrađuju direktno

ulazni podaci, već vrednosti koje se u toku ulaznog sken ciklusa upisane u datoteku ulaza. Na isti način, rezultati obrade se ne prenose direktno na izlazne linije već se upisuju u datoteku izlaza iz koje će, u toku izlaznog sken ciklusa, biti prenete na izlazne linije. To zapravo znači da postoji neko kašnjenje između očitavanja podataka i njihove obrada, kao i između definisanja izlaznih signala i njihovog prenošenja na izvršne organe. U nekim aplikacijama, međutim, kašnjenje nekih signala može prouzrokovati ozbiljnije poremećaje u efikasnosti upravljačkog algoritma. Da bi se to izbeglo omogućeno je da se u toku samog programskog sken ciklusa zahteva očitavanje trenutne vrednosti signala na nekoj od ulaznih linija, ili trenutno prenošenje izračunate akcije na izlaznu liniju. Ovo se postiže posebnim naredbamakojima se privremeno prekida programski sken ciklus i izvršava deo ulaznog odnosno izlaznog sken ciklusa.

• IIM – Immediate input with mask

• IOM – Immediate output with mask

Ukolikoje uslov istinit, IIM naredba će prouzrokovati očitavanje (sken) svih ulaznih linija koje se nalaze u modulu u datom slotu. Vrednosti bitova koji odgovaraju bitovima koji su u masci postavljeni na 1 biće smešteno u sliku ulaza (ulaznu datotreku) i korišćena u svim sledećim sken naredbama. Na isti način, pri isitnitom uslovu IOM naredba će prouzrokovati da se vrednosti bitova koji se nalaze u slici izlaza (izlaznoj datoteci), a koji odgovaraju bitovima koji su u masci postavljeni na 1, trenutno prenesu na izlazne linije modula u datom slotu.

• REF – I/O refresh Ukoliko je uslov istinit REF naredba prouzrokovaće

prekid programskog sken ciklusa i obavljanje izlaznog sken ciklusa, ciklusa komunikacije i održavanja, kao i ulaznog sken ciklusa. Posle toga se programski sken ciklus nastavlja od mesta gde je prekinut.

Očigledno je da se ova naredba koristi u slučajevima kada je programski sken ciklus relativno dugačak pa je, radi smanjivanja kašnjenja u operacijinad podacima, neophodno da se oni ažuriraju češće nego što

Sl. 10 Simbol i položaj naredbe za trenutno ažuriranje ulaznih ili izlaznih linija

Sl. 11 Simbol i položaj naredbe za ažuriranje svih podataka

Page 103: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

6/plc_tok

bi to bio slučaj da se obavlja regularni sken ciklus.

6. Sistem prekida (Interrupt) Prekid je mehanizam pomoću koga se neki program privremeno prekida da bi se

omogućilo izvršavanje nekog drugog posebnog dela programa, koji se označava kao servisni potprogram. Kada se servisni potprogram završi, nastavlja se izvršavanje programa koji je bio prekinut. Ovaj postupak je ilustrovan na slici (Sl. 12). Mehanizam sistema prekida se aktivira pomoću signala prekida, koji dolaze iz spoljašnje sredine i imaju poseban direktan ulaz u centralnu jedinicu. Svrha ovih signala je "obaveštavanje" procesora o nastanku nekih spoljašnjih događaja. U zavisnosti od vrste događaja procesor menja redosled izvođenja operacija ili reaguje na neki drugi unapred predviđen način.

naredbe

glavni program

Servisni potprogram

pamtiMemorija

(stek)

operater

n

oprema

dogadjaj

vreme

CPU

Programski brojač (PC)registri

vraća

1

2

3

5

6

7

4

Skok na servisni potprogram

Povratak na sledeću naredbu glavnog programa

Pored već pominjane mogućnosti da se signalima prekida ukazuje da je neki U/I

uređaj spreman za prenos podataka, čime se eliminiše potreba za ispitivanjem njegovog stanja, ovi signali imaju izuzetan značaj za rad sistema u realnom vremenu i koriste se kao:

□ časovnik realnog vremena, gde spoljašnji hardverski uređaj generiše signal u ravnomernim vremenskim intervalima; servisni potprogram broji ove signale i na osnovu njih formira informaciju o vremenu;

□ događaji (alarmi), gde se nastanak neke nepredviđene situacije (događaja) na procesu može identifikovati tako što će odgovarajući senzori generisati digitalne signale. Ovakvi signali alarma su relativno retki, ali zahtevaju izuzetno brzu reakciju sistema, pa je očigledno da njihovo opsluživanje preko sistema prekida pruža efikasno rešenje;

□ ručno upravljanje, gde se korišćenjem prekida može omogućiti da se preuzme ručno upravljanje procesom u slučaju regularnog remonta ili opravki na sistemu;

Sl. 12 Realizacija sistema prekida

Page 104: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

7/plc_tok

□ indikacije hardverskog otkaza, gde se informacija o otkazu spoljašnjeg hardvera ili podsistema za spregu može dobiti preko signala prekida, posle čega servisni potprogram može da realizuje aktivnost predviđenu u tom slučaju (automatska zamena, ako postoji paralelni uređaj; promena algoritma dok se ne izvrši opravka itd.);

□ pomoć pri traženju grešaka u programu, gde se prekid često koristi za prekidanje rada programa na određenim mestima u fazi provere njegove ispravnosti;

□ nestanak napajanja, gde se u računar uključuje kolo koje veoma brzo detektuje gubitak napajanja u sistemu i obezbeđuje upozorenje nekoliko milisekundi pre nego što sistem prestane da radi. Ukoliko je ovakvo kolo vezano za signal prekida koji ima prioritet nad svim ostalim aktivnostima u računaru, onda ima dovoljno vremena da se izvrši nekoliko naredbi pomoću kojih se rad procesa kojim se upravlja prekida na neki predviđeni način.

Realizacija sistema prekida obuhvata detekciju signala prekida, suspenziju trenutne aktivnosti, pronalaženje uređaja koji je tražio prekid, opsluživanje prekida i nastavak suspendovane aktivnosti.

⇒ Tipovi prekida i hijerarhijski nivoi PLCovi iz familije SLC operišu sa četiri tipa prekida:

i. User Fault Routine – upravlja radom PLCa u slučaju detekcije greške ii. DII – Discrete Input Interrupt – detekcija događaja iii. STI – Selectable Timed Interval – detkcija protoka vremena (odabiranje) iv. I/O Interrupt – obrađuje signale prekida koji dolaze sa specijalnih U/I modula

Ukoliko se istovremeno javi više od jednog signala prekida, procesor ih opslužuje u redosledu kojim su ovde dati. Isto tako prekid nižeg hijerarhijskog nivoa ne može odpočeti da se opslužuje ukoliko se u tom trenutku opslužuje neki prekid višeg hijerarhijskog nivoa.

⇒ Detekcija signala prekida i period latentnosti

Sl. 13 Način obrade signala prekida u zavisnosti od dela sken ciklusa u kome nailazi

Page 105: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

8/plc_tok

Nailazak signala prekida, po pravilu, ne može baš trenutno da prekine rad procesora. To znači da će do početka opsluživanja signala prekida proteći izvesno vreme. Taj vremenski interval označava se kao interval latentnosti i njegova dužina zavisi od operacije koja se trenutno izvodi i od zahteva koje specificira korisnik. Postavljanjem bita S:33/8 korisnik može zahtevati da se prekid opsluži u najkraćem mogućem periodu (Sl. 13). Ukoliko signal prekida naiđe u trenutku kada se obrađuje jedan slot u kome se nalazi modul sa više reči i ukoliko opsluživanje prekida zahteva taj isti slot, onda će opsluživanje biti odloženo dok se na završi obrada slota (nezavisno od stanja bit S:33/8).

⇒ Opsluživanje prekida Kada PLC registruje prekid i završi započetu operaciju, odnosno dođe u stanje u

kome se dozvoljava opsluživanje prekida, on sačuva vrednosti statusnih bitova S:0 (indikator rezultata matematičkih operacija), S:13 i S:14 (matematički registar) i S:24 (indeks registar), a zatim pozove odgovarajući servisni potprogram.

⇒ Servisni potprogram Servisni potrogram je posebna programska datoteka (broj 3 do 255). U servisnom potprogramu ne smeju se koristiti TND, REF i SVC naredbe. Pored

toga, servisni potprogram može pozivati najviše tri nivoa učaurenih potprograma. Ukoliko se želi trenutna spoljna reakcija na detektovani prekid moraju se koristi

naredbe za trenutno očitavanje ulaza i izlaza (IIM i IOM).

7. User Fault Routine User Fault Routine je specifična vrsta prekida koja nastaje ukoliko se u toku

izvođenja leder programa javi greška. Jedan broj ovih grešaka može biti prouzrokovan izvođenjem matematičkih operacija (npr. delenje sa nulom), nekom neusaglašenošću naredbi (npr. nepostojeća datoteka u indirektnoj adresi) ili neadekvatnim adresiranjem ulazno/izlaznih modula i tome slično.

Ukoliko se detektuje greška korisnik ima mogućnost da zahteva prekid i da pokuša da otkloni grešku.

⇒ Definisanje servisnog potprograma □ S:29 - broj programske datoteke koja sadrži servisni potprogram. Ukoliko je ovaj broj nula, prekid je onemogućen. Servisni potprogram, po pravilu ispituje kod greške i ustanovljava da li je ona

popravljiva ili nije. Ukoliko je greška popravljiva, ona se ispravlja i pri tome se, na izlasku iz servisnog potprograma resetuje bit S:1/13. Ukoliko greška nije popravljiva, bit S:1/13 se ne menja, ali se tada, po pravilu, pošalje poruka nekom susednom čvoru u mreži da PLC privremeno obustavlja rad (sve dok se ne ustanovi šta izaziva grešku i ne unesu se odgovarajuće korekcije). ⇒ Detekcija i način opsluživanja prekida

Kada se u toku izvršavanja programa detektuje greška procesor generiše određen broj podataka u datoteci statusa i zatim proverava sadržaj reči S:29. Ako je podatak u reči S:29 jednak 0, to znači da korisnik nije želeo da se bavi ispitivanjem i eventualnim popravkom grešeka, te će procesor zaustaviti dalji rad. Ukoliko se međutim u toj reči nalazi bilo koji broj između 3 i 255, onda taj broj označava programsku datoteku koja sadrži servisni potprogram i procesor otpočinje izvođenje servisnog potrprograma.

Page 106: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

9/plc_tok

⇒ Postavljanje internih indikatorskih bitova i reči Ukoliko dođe do greške procesor će postaviti sledeće bitove u datoteci statusa

□ S:1/13 (major error bit) □ S:6 - kod greške □ S:20 - broj ranga u kome je greška nastala □ S:21 - broj programske datoteke u kome se taj rang nalazi.

Primer

Potrebno je pratiti nastanak dve vrste grešaka: □ Minor error at the end of scan (kod 0020h), postavljen bit S:5/0 □ Negative value in time pre or acc (0034h)

Ukoliko se greška detektuje predviđaju se sledeće reakcije □ Sprečava se reakcija ako je V bit S:5/0 setovan manje od 5 puta, posle toga procesor prekida rad (odlazi u fault mode) □ Sprečava se reakcija ako je kod časovnika T4:0 acc<0. Pri tome se acc resetuje na nulu i pali se signalna lampa koja indicira da je akumulirana vrednost bila manja od nule. □ Dozvoljava se prekid rada PLC za sve ostale grešeke

Sl. 14 Glavni servisni potprogram čija je adresa upisana u S:29

Page 107: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

10/plc_tok

Rešenje

Osnovni servisni potprogram je programska datoteka broj 3 (Sl. 14) i taj broj se mora upisati u statusnu datoteku u reč S:29. Budući da postoje dva tipa grešaka na koje se očekuje neka reakcija one se zasebno obrađuju u programskim datotekama broj 4 (kod greške 20h) (Sl. 15) i broj 5 (kod grešeke 34h) (Sl. 16). To znači da servisni potprogram mora da obezbedi pozivanje jednog od ova dva potprograma u zavisnosti od koda greške.

Sl. 15 Servisni potprogram koji obrađuje grešku čiji je kod 0020h

Page 108: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

11/plc_tok

Pored servisnih potprograma formiran je i glavni program u okviru koga se

generiše bilo jedna bilo druga greška (Sl. 17). Vrednost bita B3:0 određuje koja će od dve greške biti generisana. Pri tome se predpostavlja da će se taj bit, na neki način, postavljati spolja.

Sl. 16 Servisni potprogram koji obrađuje grešku čiji je kod 0034h

Page 109: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

12/plc_tok

8. DII – Discrete Input Interrupt Ovaj nivo prekida koristi se za registrovanje nastanka određenih događaja i

obezbeđivanje odgovarajuće reakcije na te događaje. Događaji se detektuju preko očitavanja stanja linija na nekom ulaznom modulu.

Jedan događaj se definiše specificiranjem niza od 8 bitova. Istovremeno se specificira i

Sl. 17 Glavni program koji generiše greške

Page 110: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

13/plc_tok

slot u kome se nalazi digitalni ulazi koji primaju ove bitove. Kada procesor detektuje pojavljivanje zadanog niza u odgovarajućem slotu, on registruje nastanak događaja. Pri tome, ako je sistem prekida definisan tako da registruje svaki događaj, procesor će automatski da pozove servisni potprogram. Ukoliko je, međutim sistem definisan tako da prebrojava događaje, onda će servisni potprogram biti pozvan tek kad se dostigne zadani broj nastanka događaja.

Definisanje načina rada ovog prekida, kao i odgovarajuće reakcije obavlja se pomoću šest reči u statusnoj datoteci. Sam procesor, opslužujući prekid postavlja još neke indikatorske bitove u statusnoj datoteci (Sl. 18).

⇒ Definisanje događaja Da bi se definisao spoljni događaj neophodno je da korisnik, na neki način,

definiše vrednosti sledećih reči u statusnoj datoteci □ S:47 – broj slota – broj slota u kome je smešten digitalni ulaz koji prima informacije o događaju. Ukoliko se upiše 0, sistem prekida je onemogućen. □ S:48 – maska – broj između 0 i 255 pomoću koga se specificira kojih se od 8 bitova prate pri detekciji događaja. Vrednost bita 1 znači da se odgovarajuća ulazna linija očitava i da se taj bit upoređuje sa zadanim kodom događaja □ S:49 – referenca – broj između 0 i 255 kojim se definiše kod događaja. Bitovi reference koji se nalaze na mestima na kojima bitovi maske imaju vrednost 1 se porede sa bitovima na ulaznim linijama u definisanom slotu. Kada se i poslednji od ovih bitova složi generiše se signal prekida. □ S:50 – način rada – ukoliko je ova vrednost 0 ili 1, sistem prekida radi kao detektor događaja. Ukoliko je vrednost veća od 1, sistem prebrojava događaje i generiše prekid kada se registruje zadani broj događaja.

Sl. 18 Šematski prikaz izvršavanja DII prekida

Page 111: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

14/plc_tok

⇒ Definisanje servisnog potprograma □ S:46 - broj programske datoteke koja sadrži servisni potprogram. Ukoliko je ovaj broj nula, prekid je onemogućen.

⇒ Detekcija i način opsluživanja prekida Bar jedanput u svakih 100μs procesor očitava podatke o prvom bajtu u slotu čiji je broj definisan u S:47. (Ovo očitavanje se odvija paralelno sa sken ciklusom i ne utiče na vreme trajanja sken ciklusa.) Očitani podaci se uz pomoć maske (S:48) porede sa referencom (S:49). Ukoliko se podaci slažu dalji postupak zavisi od vrednosti reči S:50 □ S:50 = 1 (ili 0) – Detekcija događaja – generiše se prekid i poziva se servisni potprogram. Istovremeno se u interni merač vremena S:45 upisuje vreme koje je proteklo od prethodne detekcije prekida (kao multipl od 10ms). □ S:50 > 1 – Brojanje događaja – vrednost akumulatora (S:52) se povećava za 1. Ukoliko ova vrednost dostigne zadanu vrednost poziva se servisni potprogram i resetuje se akumulirana vrednost (S:52) na nulu. Istovremeno se u interni merač vremena S:45 upisuje vreme koje je proteklo od prethodne detekcije prekida (kao multipl od 10ms).

⇒ Rekonfiguracija sistema prekida – praćenje sekvence događaja U principu, definisanjem vrednosti reči u statusnoj datoteci omogućava se

definisanje jednog događaja. Kod sekvencijalnog programiranja, detkcija jednog događaja i izvršavanje odgovarajuće reakcije na njega, po pravilu, zahteva da se pristupi detekciji nekog drugog događaja. Realizacija ovakvog zahteva je moguća samo ako se promene vrednosti odgovarajućih reči u statusnoj datoteci. Iako se vrednosti ovih reči mogu redefinisati programski, za rekonfiguraciju celog sistema prekida neophodno je i da se izvrši resetovanje nekih internih promenljivih. Da bi se omogućilo dinamičko rekonfigurisanje DII sistema prekida koristi se bit za rekonfiguraciju..

□ S:33/10 – bit za rekonfiguraciju -. ukoliko je S:33/10 = 1, onda će na kraju programskog sken ciklusa (naredbe END, TND i REF) ili na izlasku iz bilo kog prekida da se obave sledeće aktivnosti:

• akumulirana vrednost S:52 se postavlja na nulu • vrednosti kojima se definiše događaj (S:47, S:48, S:49 i S:50) se ponovo očitavaju i uvrštavaju u DII prekid • resetuje se pending bit (S:2/11) • resetuje se bit za rekonfiguraciju (S:33/10)

⇒ Postavljanje internih indikatorskih bitova i reči U toku rada, procesor postavlja niz inidkatorskih bitova vezanih za DII prekid čime se korisniku omogućava da prati način na koji se prekid opslužuje.

□ S:2/11 – DII pending bit – kada je vrednost ovog bita 1, ona ukazuje da je akumulirana vrednost (S:52) jednaka zadanoj (S:50) i da servisni potprogram čeka na izvršenje. Ovaj bit se resetuje kada otpočne izvršavanje servisnog potprograma. Ova vrednost ostaje 1 ako je izvršavanje servisnog potprograma onemogućeno.

□ S:2/12 – DII enable bit – postavljanjem ovog bita na 1 omogućava se opsluživanje prekida (ako servisnog potprograma nije 0). Ako je vrednost ovog bita 0, kada se detektuje prekid, servisni potprogram se neće izvršiti, već će se samo pending bit postaviti na 1.

Page 112: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

15/plc_tok

Ukoliko je pending bit 1, tada se na kraju sken ciklusa još jedanput ispituje enable bit.

□ S:2/13 – DII execution bit – kada je vrednost ovog bita 1, ona ukazuje da je izvršavanje servisnog potprograma u toku. Kada se servisni potprogram završi bit se resetuje na nulu.

□ S:5/12 – DII overflow bit – ovaj bit se postavlja na 1 svaki put kad se detektuje signal prekida, a servisni potprogram još uvek obrađuje prethodni. U tom slučaju, odmah po završetku opsluživanja prethodnog prekida, započinje opsluživanje novog. Ovaj bit će biti postavljen na 1 i svaki put kada se detketuje prekid, a pri tome je postavljen pending bit (S:2/11=1) ili je opsluživanje prekida onemogućeno (S:2/12=1).

□ S:36/8 – DII lost bit – ovaj bit se postavlja ukoliko se detektuje signal prekida a pri tome je pending bit postavljen na 1, odnosno kada se čeka na otpočinjanje opsluživanja prethodnog prekida. U tom slučaju, novo registrovani prekid neće biti opslužen.

□ S:45 – DII Timer – DII interni časovnik se ažurira svaki put kada nastupa prekid. Vreme se izražava se kao multipl od 10μs. To zapravo znači da PLC ima interni časovnik koji neprekidno radi sa taktom od 10μs tako da meri vreme od 0 do 0.32767s. Kada dostigne 0.32767s, časovnik nastavi da meri vreme od 0. U trenutku detekcije DII prekida vrednost ovog časovnika se upisuje u S:45.

□ S:51 – return mask – sadržaj ove reči se ažurira neposredno pre ulaska u DII servisni potprogram. Ova reč sadrži bit-mapu koja odgovara poslednjem bitu čiji je prelaz doveo do detekcije događaja. Ako se desila promena više od jednog bita od poslednjeg očitavanja ulaza, svi promenjeni bitovi će biti smešteni. Ova reč će biti resetovana pri izlasku iz servisnog potprograma. Podatak iz reči S:51 može da se koristi u servisnom potprogramu da bi se ustanovio redosled postavljanja bitova koji čine neki događaj. Isto tako, ovaj podatak se može koristiti da bi se utvrdilo da je okončana neka aktivnost i da je potrebno preći na sledeći događaj u sekvenci događaja.

Primer

Posmatra se pokretna linija na kojoj se boce pune nekim sokom i zatim se svaka boca zatvara. Potrebno je ustanoviti da li se na svakoj boci nalazi zatvarač. Ukoliko se ne nalazi, otvaranjem opruge, boca se izbaciju sa trake. Rešenje Na samoj traci (Sl. 19) postavljen je prekidač koji detektuje prisustvo boce i koji je vezan za nulti pin ulaznog modula u slotu 1 (I:1/0). Sl. 19 Šema vezivanja senzora i izvršnog organa

Page 113: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

16/plc_tok

Aktiviranje ovog prekidača posmatra se kao događaj. Kada se događaj detektuje poziva se servisni potprogram koji se nalazi u

programskoj datoteci broj 4. Ovaj potprogram očitava stanje senzora zapušača koji je vezan za osmi pin ulaznog modula u slotu 1 – I:1/8. Ukoliko nema zapušača, otvara se opruga koja je vezana za PLC preko nultog pina izlaznog modula u slotu 2 (O:2/0).

Da bi se omogućio rad DII sistema neophodno je upisati sledeće vrednosti u statusnoj datoteci □ S:46 = 4 – servisni potprogram je u datoteci broj 4

Sl. 20 Servisni potprogram koji obrađuje reakciju na događaj

Page 114: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

17/plc_tok

□ S:47 (Slot) = 1 – digitalni ulaz je u slotu 1 □ S:48 (Mask) = 0000 0001 – testira se bit na nultom pinu □ S:49 (Referenca) = 0000 0001 – događaj nastupa kada je bit na nultom pinu 1 □ S:50 (Preset) = 1 – sistem prekida radi kao detektor događaja S:33/8 = 1 – želi se opsluživanje prekida sa najvećom mogućom brzinom, da se ne bi propustila nijedna boca

Odgovarajući servisni potprogram prikazan je na Sl. 20.

9. STI – Selectable timed interrupt STI je sistem prekida koji omogućava da se sken ciklus periodično prekida i da

se pri svakom prekidu obradi odgovarajući niz naredbi koji se nalazi u servisnom potprogramu. Kada se servisni potprogram završi, sken ciklus se nastavlja od momenta u kome je bio prekinut.

Šematski prikaz izvršavanja STI prekida prikazan je na .

⇒ Definisanje periode ponavljanja prekida Sistemom prekida se upravlja pomoću internog časovnika. Periodu ponavljanja

korisnik definiše sam upisivanjem odgovarajuće vrednosti u statusnoj datoterci. □ S:30 – period – multipl osnovnog takta. Period ponavljanja se dobija kao proizvod sdržaja reči S:30 i osnovnog takta. Ukoliko se kao multipl upiše 0, sistem prekida je onemogućen. □ Takt zavisi od tipa procesora □ SLC 5/02 – takt = 10ms, period : 10 – 2550 ms

Sl. 21 Šematski prikaz izvršavanja STI prekida

Page 115: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

18/plc_tok

□ SLC 5/03 i više takt zavisi od vrednosti bita S:2/10 o S:2/10 = 0 – takt = 10ms, period od 10 do 32760ms o S:2/10 = 1 – takt = 1ms, priod od 1 do 32767ms

⇒ Definisanje servisnog potprograma □ S:31 - broj programske datoteke koja sadrži servisni potprogram. Ukoliko je ovaj broj nula, prekid je onemogućen.

⇒ Detekcija i način opsluživanja prekida U trenutku započinjanja programa interni časovnik, smešten na adresi S:43, otpočinje sa radom. Časovnik radi sa osnovnim taktom od 10μs. Kada časovnik izmeri vreme koje odgovara periodi odabiranja generiše se signal prekida i otpočinje izvršavanje servisnog potprograma. Izvršavanjem STI prekida se može dodatno upravljati pomoću tri posebne naredbe □ STS – selectable timed start

Ukoliko je uslov istinit, ova naredba će prouzrokovati resetovanje internog časovnika i upisivanje podataka o adresi servisnog potrpograma i perioda prekida u reči S:31 i S:30 (čime se briše prethodni sadržaj tih reči). Posle izvršavanja ove naredbe, STI interni časovnik započinje

ponovno merenje vremena i STI enable bit je postavljen na 1. Kada uslov postane neistinit podaci o STI pekidu se ne menjaju.

□ STE – Selectable timed enable Ukoliko uslov prelazi sa neistinit na

istinit, ova naredba postavlja STI enable bit S:2/21, čime se omogućava opsluživanje STI prekida. Kada je uslov neistinit stanje STI enable bita se ne menja. To znači da će on, ako je imao

vrednost 1 zadržati tu vrednost sve dok ga naredba STD ne resetuje na 0. Potrebno je zapaziti da ova naredba ne utiče na rad internog časovnika,

veća samo na to da li će, kada časovnik imeri zadani interval vremena, biti dozvoljeno opsluživanje prekida ili ne. □ STD – selectable timed disabled

Ukoliko je uslov istinit ova naredba resetuje STI enable bit čime se onemogućava izvršavanje servisnog potprograma. Kada je uslov neistinit naredba ne menja stanje STI enable bita. Drugim rečima ukoliko je STI enable bit

postavljen na 0, on će ostati 0 sve dok ga STE naredba ili STS naredba ne postave na 1.

Parovi STD i STE naredbi mogu se koristiti za izdvajanje zona unutar

leder programa čiji rad se ne može prekidati usled STI prekida.

⇒ Postavljanje internih indikatorskih bitova i reči U toku rada, procesor postavlja niz inidkatorskih bitova vezanih za STI prekid

uslov Selectable Timed Start

File nnTime tt

STS

File – broj servisnog potprogramaTime – period prekida

uslov Selectable Timed Enable

STE

Page 116: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

19/plc_tok

čime se korisniku omogućava da prati način na koji se prekid opslužuje.

□ S:2/0 – STI pending bit – kada je vrednost ovog bita 1, ona ukazuje da je časovnik izmerio jednu periodu i da servisni potprogram čeka na izvršenje (recimo zato što se izvršavaju prekidi višeg prioriteta, Fault routine ili DII). Ovaj bit se resetuje kada otpočne izvršavanje servisnog potprograma ili kada je uslov za STS naredbu istinit. Ova vrednost ostaje 1 ako je izvršavanje servisnog potprograma onemogućeno.

□ S:2/1 – STI enable bit – postavljanjem ovog bita na 1 omogućava se opsluživanje prekida uz uslov da adresa servisnog potprograma nije 0 i da zadani period nije 0. Ako je vrednost ovog bita 0, kada se detektuje prekid, servisni potprogram se neće izvršiti, već će se samo pending bit postaviti na 1. STI enable bit se automatski postavlja izvršavanjem STE i STS naredbe, i automatski resetuje izvršavanjem STD naredbe. U tom slučaju, postavljene vrednosti direktno utiču na opsluživanje prekida. Međutim, ukoliko se vrednost ovog bita promeni pomoću neke druge naredbe onda će ta promene da ima efekta tek u sledećem sken ciklusu. Ukoliko je pending bit 1, tada se na kraju sken ciklusa još jedanput ispituje enable bit.

□ S:2/2 – STI execution bit – kada je vrednost ovog bita 1, ona ukazuje da je izvršavanje servisnog potprograma u toku. Kada se servisni potprogram završi bit se resetuje na nulu.

□ S:5/10 – STI timer expires bit – ovaj bit se postavlja na 1 svaki put kad treba da nastane prekid, a STI servisni potprogram još uvek obrađuje prethodni, ili je izvršavanje servisnog potprograma onemogućeno. Interni časovnik nastavlja sa radom. Budući da postavljanje ovog bita prouzrokuje kod za grešku neophodno je da se on resetuje pre završetka sken ciklusa.

□ S:36/9 – STI lost bit – ovaj bit se postavlja ukoliko treba da nastupi prekid, a pri tome je pending bit postavljen na 1, odnosno kada se čeka na otpočinjanje opsluživanja prethodnog prekida. U tom slučaju, novo registrovani prekid neće biti opslužen. Ukoliko se neželi prekid rada usled greške, ovaj bit treba resetovati pre završetka sken ciklusa.

□ S:43 – STI Timer – STI interni časovnik se ažurira svaki put kada nastupa prekid. Vreme se izražava se kao multipl od 10μs. To zapravo znači da PLC ima interni časovnik koji neprekidno radi sa taktom od 10μs tako da meri vreme od 0 do 0.32767s. Kada dostigne 0.32767s, časovnik nastavi da meri vreme od 0. U trenutku detekcije STI prekida vrednost ovog časovnika se upisuje u S:43.

Vreme će biti ispravno upisano ako između dva susedna prekida ne prođe više od 0.32767s. Primer STI prekid treba da radi sa periodom od 10ms.

Odrediti vremenski interval koji protekne između dva poziva servisnog potprograma. Smestiti izmereno vreme u neku datoteku radi kasnijeg prikazivanja na displeju. Sl. 22 Određivanje proteklog vremena

Page 117: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

20/plc_tok

Rešenje Servisni potprogram je formiran u programskoj datoteci broj 4 (Sl. 24). To znači da je neophodno da se pri inicijalizaciji STI prekida upiše S:31=4. Budući da STI prekid treba da radi sa periodom od 10ms odabraće se takt od 10ms (S:2/10=0) i kao period će se upisati 1 (S:30=1).

Ukoliko se u ovaj program ulazi prvi put tada se samo upamti trenutna vrednost časovnika u memorijskoj lokaciji N10:1 i postavi se indikatorski bit (B3:0/0) koji označava da je prvi prolaz završen. U svim sledećim pozivanjima ovog potprograma oduzima se trenutna vrednost časovnika (S:45) od prethodne i rezultat se smešta u memoriju na adresu N10:2. Pri tome, ukoliko je rezultat oduzimanja negativan to znači da je od prethodnog pozivanja interni časovnik napravio pun krug.(prešao preko 32767) i počeo da broji od 0, tako da se to vreme mora dodati (Sl. 22).

U delu glavnog programa koji je ovde prikazan se u prvom prolazu inicijalizuju indikatorski bit i vrednost rezultata (postavljaju se na nulu). Uz pomoć samoresetujućeg časovnika se vrednost izračunata u servisnom potprogramu na svakih pola sekunde smešta na memorijsku lokaciju N10:3. Potrebno je zapaziti da se isti program može koristiti za detekciju vremena koje proteklo između dva DII prekida ili I/O prekida s tim što se umesto adrese časovnika

Sl. 23 Glavni program za primer korišćenja STI prekida

Page 118: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

21/plc_tok

S:43 mora koristiti adresa časovnika koji odgovara tom prekidu (S:44 za I/O, odnosno S:45 za DII)

Sl. 24 Servisni potprogram koji opslužuje STI prekid

Page 119: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

22/plc_tok

10. I/O Prekid Neki specijalni U/I moduli imaju sposobnost generisanja signala prekida. Ukoliko

se ovaj signal detektuje, procesor prekida sken ciklus i započinje opsluživanje odgovarajućeg servisnog potprograma.

Specijalni moduli koji se koriste uz sistema prekida treba da se postave u početne slotove. Maksimalni broj slotova za PLC iz familije SLC 5 je 30. Blok šema izvršavanja I/O prekida data je na Sl. 25

Prog. File 2 Prog. File n(servisni

potprogram)

S:11

Prekid

ažuriraPamtiS:0 mat. indikatoriS:13,14 mat. reg.S:24 indeks reg.

Specijalni moduli

S:25 Pending bitsS:26 S:32 I/O executing slot

S:12 slot enable

S:27 interrupt enableS:28

interni časovnik

S:44 t (m 10 s)

⇒ Definisanje servisnog potprograma □ Broj programske datoteke koja sadrži servisni potprogram mora se upisati u samom specijalnom modulu za vreme njegove konfiguracije.

□ Prva naredba u prvom rangu servisnog potprograma je INT naredbom koja ukazuje da se radi o potprogramu koji opslužuje I/O prekid. (nije obavezno)

⇒ Detekcija i način opsluživanja prekida Kada specijalni U/I modul generiše signal prekida onda procesor prekida svoj rad

i poziva odgovarajući servisni potprogram na izvršavanje. Ukoliko se u trenutku zahteva za prekidom izvršava neki prekid višeg prioriteta, onda će se sačekati da se svi prekidi

Sl. 25 Šematski prikaz izvršavanja I/O prekida

Page 120: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

23/plc_tok

višeg prioriteta završe pre nego što počne opsluživanje ovog prekida. Na isti način, ukoliko se u toku opsluživanja prekida pojavi zahtev za nekim prekidom višeg prioriteta (Fault, DII ili STI), opluživanje se prekida i započinje opsluživanje prekida višeg prioriteta.

Izvršavanjem I/O prekida se može dodatno upravljati pomoću dve posebne naredbe

□ IIE – Interrupt enable Ukoliko je uslov istinit, ova

naredba postavlja I/O interrupt enable bitove (S:27/1 do S:28/14) u skladu sa podatkom Slots koji je u naredbi definisan, čime se omogućava opsluživanje prekida koji potiču od strane specijalnih modula koji se nalaze u datim

slotovima. Kada je uslov neistinit stanje enable bitova se ne menja. To znači da će oni, koji su imali vrednost 1 zadržati tu vrednost sve dok ih naredba IID ne resetuje na 0, ili dok se u okviru programa nekom drugom naredbom ne promeni stanje bitova u datoteci statusa.

Ukoliko je za neki od slotova čiji se prekid omogućava ovom naredbom, postavljen pending bit (S:25/1 do S:26/14), odgovarajući servisni potprogram će se odmah pozvati na izvršavanje. Podatak o slotovima se može zadati na sledeći način

o n – ukazuje na slot broj n o m,n,... – ukazuje na slotove m, n itd o m to n – ukazuje na slotove od broja m do broja n (m<n)

□ IID – Interrupt disable Ukoliko je uslov istinit ova

naredba resetuje I/O interrupt enable bitove (S:27/1 do S:28/14) u skladu sa podatkom Slots koji je u naredbi definisan, čime se onemogućava izvršavanje odgovarajućih servisnih potprograma. Umesto toga, ukoliko se

traži prekid, postaviće se odgovarajući pending bit. Kada je uslov neistinit naredba ne menja stanje enable bitova. Drugim rečima ukoliko je neki enable bit postavljen na 0, on će ostati 0 sve dok ga IIE naredba ne postavi na 1, ili dok se u okviru programa nekom drugom naredbom ne promeni stanje bitova u datoteci statusa.

Parovi IID i IIE naredbi mogu se koristiti za izdvajanje zona unutar leder

programa čiji rad se ne može prekidati usled I/O prekida.

⇒ Postavljanje internih indikatorskih bitova i reči U toku rada, procesor postavlja niz inidkatorskih bitova vezanih za I/O prekid čime se korisniku omogućava da prati način na koji se prekid opslužuje.

□ S:11 i S:12 – I/O Slots enables – Bitovi S:11/1 do S:11/15 i S:12/0 do S:12/14 se odnose na slotove od 1 do 30. Kada je vrednost bita 1, ona ukazuje da je odgovarajući slot aktivan. Ukoliko se pojavi signal prekida sa slota koji nije aktivan, procesor javlja grešku.

Page 121: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

24/plc_tok

Primedba I/O Slots enables bitovi (S:11 i S:12) se mogu koristiti i u slučajevima kada se ne traži prekid. Naime, ukoliko se bilo koji bit postavi na nulu onda se u toku ulaznog i izlaznog sken ciklusa ne vrši skeniranje slota kome odgovara taj bit (slot nije aktivan). To nadalje znači da se ni odgovarajući podatak u slici ulaza neće promeniti, i da se podatak iz slike izlaza neće preneti na izlazni modul. Pri inicijalizaciji PLCa ovi bitovi s epostavljaju na 1.

□ S:25 i S:26 – I/O Interrupt pending bits – Bitovi S:25/1 do S:25/15 i S:26/0 do S:26/14 se odnos ena slotove od 1 do 30. Ovi bitovi s epostavljaju na 1 ako modul iz nekog slota traži prekid, a izvršavanje tog prekida nije omogućeno. Bit se restuje na nulu kada se odgovarajući enable bit postavi na 1 Stanje pending bitova se može promeniti i pomoću posebne RPI naredbe.

Kada je uslov istinit ova naradeba resetuje pending bitove za prekide koji su izazvali specijalni moduli koji se nalaze u slotovima definisanim pomoću promenljive slots. Pri tome, procesor obaveštava odgovarajuće specijalne module da prekidi koji su

bili traženi neće biti opsluženi. Posle toga modul može da odluči da li će ponovo da zatraži prekid ili ne. Kada je uslov neistinit, stanje pending bitova se ne menja.

□ S:27 i S:28 – I/O Interrupt enables – Bitovi S:11/1 do S:11/15 i S:12/0 do S:12/14 se odnose na slotove od 1 do 30. Kada je vrednost bita 1, ona ukazuje da je omogućeno opsluživanje prekida koji dolazi sa odgovarajućeg slota.

□ S:32 – I/O Interrupt executing – ova reč sadrži broj slota u komne se nalazi modul koji je generisao prekid koji se trenutno opslužuje. Ovaj podatak je veoma koristan kada se više prekida multipleksia u jednom servisnom potprogramu. koristiti kada se

□ S:44– I/O Interrupt Timer – I/O interni časovnik se ažurira svaki put kada nastupa prekid. Vreme se izražava se kao multipl od 10μs. To zapravo znači da PLC ima interni časovnik koji neprekidno radi sa taktom od 10μs tako da meri vreme od 0 do 0.32767s. Kada dostigne 0.32767s, časovnik nastavi da meri vreme od 0. U trenutku detekcije I/O prekida vrednost ovog časovnika se upisuje u S:44.

Page 122: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

1/plc_pid

Naredba za realizaciju proporcionolno-integralno-diferencijalnog zakona upravljanja (PID)

1. Jednačina PIDa Kontroler koji realizuje linearne zakone upravljanja – PID - se može formirati

softverski kao poseban modul koji se koristi u leder programu. U principu PID modul uzima vrednost analognog signala sa nekog mernog mesta i korišćem proporcionlno integralno diferencijalnih zakona upravljanja, izračunava upravljački signal, koji se preko analognog izlaznog modula prenosi na izvršni organ. Ukoliko to struktura izvršnog organa zahteva, analogni izlazni signal se može pretvoriti i u širinski modulisan impulsni signal.

PID modul se, kod familije SLC kontrolera, realizuje jednom naredbom – PID naredbom – koja pripada grupi naredbi akcije. U principu ova naredba se izvršava tako što seobavi jedan korak diskretnog algoritma PIDa.

U skladu sa teroijom direktnog digitalnog upravljanja, PID naredba se mora izvršavati periodično, sa nekom zadanom peridom odabiranja. Periodičan rad može realizovati sam PID modul ukoliko se konfiguriše na odgovarajući način. Pored toga, periodičnost se može ostvariti i pomoću vremenski uslovljenog sistema prekida (STI). U tom slučaju PID naredba se mora postaviti u STI servisni potprogram, tako da se ulaz i izlaz PIDa ažuriraju svaki put kada se ovaj potprogram izvršava. Samo se po sebi razume da perioda izvršavanja STI potprograma i perioda sa kojom radi PID moraju biti iste.

Potrebno je uočiti razliku između periodičnog programskog sken ciklusa sa kojim se obrađuju sve naredbe i periodičnog izvođenja algoritma diskretnog PIDa kod koga se jedan algoritamski korak izvodi unutar jedne periode odabiranja. U prvom slučaju radi se zapravo o cikličnom ponavljanju niza operacija pri čemu dužina trakanja pojedinog ciklusa zavisi od više faktora. Otuda se ciklus ne ponavlja periodično u striktnom smislu značenja te reči. Za razliku od sken ciklusa, jedan algoritamski korak PID se mora ponavljati sa tačno definisanom periodom.

PID naredba realizuje diskretizovani algoritam lineranih zakona upravljanja (Sl. 1)

of)y(fTd)(eT1

1K)t(u d

t

0ip +

⎥⎥⎦

⎢⎢⎣

⎡+ττ+= ∫

gde je • u(t) upravljački signal (CV – control value) • e(t) = r-y(t) signal greške koji predstavlja razliku referentne vrednosti - r (SP – set

point) i izmerene vrednosti izlaza procesa - y (PV – process variable) • f(y) – je funkicija koja realizuje diferencijalno dejstvo i to tako da se signal iz

diferencijatora koji je realizovan kao visoko propusni filtar funkcije prenosa

;N/sT1

s)s(G

dd +

=

propušta kroz nisko propusni filtar čija je učestanost odsecanja 16 puta (za dve oktave) veća od prelomne učestanosti diferencijalnog filtra (N/Td) (Sl. 1).

Interesanto je napomenuti da proizvođač ne daje podatke o prelomnoj učestanosti visoko propusnog filtra niti o metodi koja se koristi za diskretizaciju PIDa.

Pri osnovnoj realizaciji diferencijalnog dejstva se pretpostavlja da je zadana vrednost konstanta (što znači da je njen izvod nula), pa se diferencijalno dejstvo

Page 123: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

2/plc_pid

primenjuje samo na izlaz procesa. Na ovaj način izbegavaju se problemi koji mogu nastati kod diskrente realizacije PIDa usled nagle promene zadanih vrednosti. Ukoliko zadana vrednost nije konstanta, postoji mogućnost i da se, u toku konfiguracije PID modula, specificira zahtev da diferencijalno dejstvo obrađuje signal greške.

• of (offset) – signal kojim se uspostavlja stacionarno stanje izvršnog organa ili signal

prenosnog upravljanja (feedforward) kojim se želi kompenzacija dejstva poremećaja (posebno izraženo kod značajnog transportnog kašnjenja)

Sl. 1 Blok dijagrama PIDa

• Kp bezdimenziona konstanta proporcionalnog dejstva koja se kreće u sledećim vrednostima

o 0.1 do 25.5 (SLC 5/02) o 0.01 do 327.67 (SLC 5/03 i višim)

• Ti konstanta integralnog dejstva koja se zadaje u jedinicama minut/obrt i kreće se u sledećim vrednostima

o 0.1 do 25.5 min/obrt (SLC 5/02) o 0.01 do 327.67 min/obrt (SLC 5/03 i višim)

• Td konstanta diferencijalnog dejstva koja se zadaje u jedinicama minuta o 0.1 do 25.5 min (SLC 5/02) o 0.01 do 327.67 min (SLC 5/03 i višim)

2. Skaliranje mernih i upravljačkih signala Ulazni signali koje obrađuje PID, kao i upravljačka promenljiva koju on

izračunava mogu predstavljati različite fizičke signale koji se kreću u različitim opsezima. Budući da se ulazni (merni) signali dobijaju preko analognog ulaznog modula oni će, posle konverzije, biti predstavljeni kao celobrojne veličine u opsegu koji zavisi od tipa signala koji se dovodi na ulaz A/D konvertora.

PID modul modul realizuje algoritamski korak korišćenjem celobrojne aritmetike, odnosno aritmetike fiksnog zareza. To znači da su, sa aspekta programske realizacije PID modula, sve ulazne i izlazne promenljive celobrojne vrednosti. Imajući u vidu dužinu reči SLCa ove celobrojne vrednosti se kreću u opsegu od 0 do 16383.

Nesumnjivo je da je za korisnika izuzetno zametno da prati ponašanje PIDa očitavanjem ovih celobrojnih vrednosti koje, same po sebi, ništa ne govore o samom fizičkom procesu kojim se upravlja. Drugim rečima, korisniku je mnogo pogodnije da prati rad PIDa ukoliko su sve promenljive izražene u fizičkim (inžinjerskim) jedinicama. Ovu konverziju PID može sam da obavi ukoliko se, pri konfiguraciji modula, definišu minimalne i maksimalne vrednosti fizičkih signala.

Page 124: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

3/plc_pid

Konačno, sledeći uobičajenu inžinjersku praksu, vrednost upravljačkog signala PID modula se prikazuje u procentima od pune vrednosti, što znači da u ovom slučaju vrednosti od 100% odgovara celobrojna konstanta 16383. Drugim rečima, polazi se od predpostavke da svaki realni izvršni organ ima zasićenje, odnosno da postoji neka maksimalna aktivnost koju on može da obavi i koja predstavlja 100% njegove aktivnosti.

Potrebno je da se istakne da čak i ako se od PIDa zahteva konverzija signala u fizičke jedinice, samo izračunavanje se i dalje obavlja u celobrojnoj aritmetici. Konverzija se vrši samo u komunikaciji sa korisnikom (zadavanje reference i očitavanje upravljačkog signala).

U skladu sa svime što je rečeno, izvesno je da je potrebno da se vrednosti analognog ulaza, odnosno analognog izlaza skaliraju na puni opseg PID modula. Ovo je svakako neophodno ako je tip analognog signala takav da odgovarajuća A/D ili D/A konverzija koriste celobrojne vrednosti koje su izvan opsega PID modula. Međutim, čak i ako to nije slučaj, skaliranjem će se ispravna konverzija u fizičke jedinice. Naime, definisane minimalne i maksimalne vrednosti fizičkih signala PID modul uvek vezuje za granice svog opsega (0 i 16383), a ne za granice A/D, odnosno D/A konvertora.

□ Skaliranje ulaznog (mernog) signala - Izlaz procesa se meri preko nekog instrumenta i dovodi u PLC pomoću A/D modula. A/D konvertor će u toku ulaznog sken ciklusa obavljati konverziju mernog signala i generisati celobrojnu vrednost čiji opseg zavisi od tipa ulaznog signala. U principu, ako su vrednosti koju daje A/D konvertor unutar opsega PID modula, ove vrednosti se mogu direktno da koriste kao ulaz u PID modul. Međutim, ako su vrednosti koju daje A/D konvertor izvan opsega PID modula, ili ako se želi da PID obavlja konverziju u fizičke veličine, neophodne je da se ove vrednosti skaliraju na puni opseg PID modula. Samo skaliranje se može obaviti pomoću odgovarajućih SCP ili SCL programskih naredbi. ulaz naredbe: celobrojna vrednost koju

daje A/D konvertor (y) izlaz naredbe: celobrojna promenljiva s (PV)

SCP naredba

( ) minminminmax

minmax sy-yy-y

s-s s += SCL naredba

offsety10000Rate

s +=

Parametri konverzije za standardne tipove strujnih i naponskih ulaznih signala dati su u tabelama T. 1 i T. 2 Primer • merni signal temperatura u opsegu od tmin=-500C do tmax=10000C se meri pomoću

instrumenta koji daje strujni signal u opsegu od imin=4mA do imax=20mA • strujni signal će posle pijema u Analognom modulu i A/D konverzije biti predstavljen

celobrojnom vrednošću u opsegu ymin = (16383/20)×4=3277 do ymax = 16384

• analogni celobrojni signal treba da se skalira na puni opseg smin=0, smax=16383 ⇒ konverzija (posebna programska naredba)

( ) minminminmax

minmax sy-yy-y

s-s s +=

• celobrojna vrednost se može konvertovati u fizičku veličinu ako se u PID naredbi definišu minimalna i maksimalna vrednost fizičkih veličina tmin i tmax. U tom slučaju sam PID obavlja konverziju svih signala vezanih za merni signal prema relaciji

Page 125: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

4/plc_pid

( ) minminminmax

minmax ts-ss-s

t-t t +=

analogni ulaz analogni izlaz

4 – 20mA 0 – 5V 0 – 10V 4 – 20mA 0 – 5V 0 – 10V

ymin 3277 0 0 cmin 0 0 0

ymax 16384 16384 32767 cmax 16383 16383 16383

smin 0 0 0 umin 6242 0 0

smax 16383 16383 16383 umax 31208 16384 32764

□ Skaliranje upravljačkog signala - PID modul generiše upravljački signal kao celobrojnu promenljivu u opsegu (0, 16383). Ako je ova promenljiva u opsegu koji prima D/A konvertor, ona se može direktno da koristi kao ulaz za D/A konvertor. Međutim, ako je promenljiva van opsega, ili ako se želi konverzija u fizičke jedinice, promenljiva mora da se skalira na opseg D/A konvertora. Skaliranje se može obaviti pomoću odgovarajućih SCP ili SCL programskih naredbi. ulaz naredbe: izračunati upravljački

signal c (CV), (celobrojna vrednost koju daje PID modul) izlaz naredbe: celobrojna vrednost koja se void na D/A konvertor - u

SCP naredba

( ) minminminmax

minmax uc-cc-c

u-u u += SCL naredba

offsetc10000Rate

u +=

Parametri konverzije za standardne tipove strujnih i naponskih izlaznih signala dati su u tabelama T. 1 i T. 2.

analogni ulaz analogni izlaz

4 – 20mA 0 – 5V 0 – 10V 4 – 20mA 0 – 5V 0 – 10V

Rate/10 000 12499 10000 5000 Rate/10 000 15239 10000 19999

offset −4096 0 0 offset 6242 0 0

3. PID Naredba

⇒ Grafički simbol i položaj u rangu U principu ova naredba se stavlja bez ikakvog uslova, što znači da se izvršava

pri svakom programskom sken ciklusu. Važno je napomenuti da to ne znači da se i pri svakom sken ciklusu obavlja izračunavanje jednog algoritamskog koraka. Kao što je već rečeno izračunavanje koraka vrši se u skladu sa periodom odabiranja. Ukoliko se međutim, u rangu postavi uslov, onda sve dok je on neistinit izlaz PID bloka zadržava poslednju izračunatu vrednost. Pri prelazu sa istinitog na neistinit vrednost integralnog dejstva se resetuje na nulu.

T. 1 Parametri za skaliranje standardnih ulaznih i izlaznih signala pomoću SCP naredbe

T. 2 Parametri za skaliranje standardnih ulaznih i izlaznih signala pomoću SCL naredbe

Page 126: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

5/plc_pid

Sve promenljive koje učestvuju u realizaciji ove naredbe moraju biti celobrojne. Ukoliko se kao neki od parametara naredbe definiše

promenljiva sa pokretnim zarezom, doći će automatski do njenog pretvaranja u celobrojnu promenljivu.

□ Control block – je adresa upravljačke datoteke koja sadrži podatke neophodne za izvođenje naredbe. Datoteka treba da se definiše kao celobrojna (N) i ima dužinu od 23 reči. Tako, na primer, ako se kao adresa definiše N10:0, onda će upravljački blok zauzeti reči od N10:0 do N10:22.

□ Process variable – je adresa promenljive koja sadrži vrednost izmerenog izlaza procesa. Kao što je već rečeno, ova adresa može biti adresa reči u koju se smešta podatak sa analognog ulaza, odnosno rezultat A/D konverzije. Naravno, ukoliko se želi skaliranje izmerenog analognog signala u cilju njegovog prilagođavanja datom opsegu ili pretvranja u fitičke jedinice, onda je to adresa celobrojne promenljive u koju se smešta rezultat skaliranja signala, koji se može kretati u opsegu od 0 do 16383.

□ Control variable – je adresa promenljive u koju se smešta rezultat izračunavanja jednog koraka PID algoritma. Ova vrednost kreće se u opsegu od 0 do 16383, pri čemu vrednost od 16383 odgovara maksimalnoj vrednosti koju izvršni organ može da primi (100% aktivnosti izvršnog organa). Izračunata vrednost se, po pravilu, pri smeštanju u adresu reči iz koje se dobija podatak za ananalogni izlaz (D/A konvertor) skalira na puni opseg D/A konvertora

Sl. 2 Maska za definisanje upravljačkog bloka

Page 127: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

6/plc_pid

⇒ Struktura PID Control Block-a

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

reč 0 EN DN PV SP LL UL DB DA TF SC RG OL CM AM TM

reč 1 PID Sub Error Code (Msbyte)

reč 2 Setpoint SP celobrojna vrednost: SMIN do SMAX ili 0 do 16383 (ako SMIN i SMAX nisu definisani)

reč 3 Kp

reč 4 Ti (min/obrt)

interpretira se kao 0 −3276.7 (za RG=0) 0 −327.67 (za RG=1)

reč 5 Td (min)

celobrojna vrednost: 0 do 32767

interpertira se kao 0 −327.67 min (za Td)

reč 6 Offset celobrojna vrednost: –16383 do 16383

reč 7 Setpoint Max Scaled (SMAX)

reč 8 Setpoint Min Scaled (SMIN)

celobrojna vrednost: −32767 do 32767 (ako se ne definiše SC se postavlja na nulu), koristi se kad se izmerna vrednost pretvara u fizičke jedinice

reč 9 Deadband (mrtva zona)

celobrojna vrednost: 0 do SMAX ili 0 do 32767 definiše opseg oko SP (gde se smatra da je greška 0) kad greška uđe u taj opseg i prođe kroz 0, postavlja se DB na 1

reč 10 interna upotreba

reč 11 Output Max (CVH)

reč 12 Output Min (CVL)

celobrojna vrednost: 0 – 100% (od vrednosti izlaza CV) za OL=1 prekida integraciju kad dostigne limit, postavlja bit na 1, za OL=0 ne prekida integraciju, ali postavlja bit na 1

reč 13 Loop Update Period odabiranja

celobrojna vrednost: 0 do 1024 perioda odabiranja: T=(Loop Update)×0.01 sec

reč 14 Scaled Proces Variable (SPV)

celobrojna vrednost: 0 do 16383 ili SMIN do SMAX (ako je definisano skaliranje) –(skalirani) merni signal, očitava se u fizičkim jedinicama

reč 15 Scaled Error (SE) celobrojna vrednost: −32767 do 32767, ne može da se definiše, već se samo očitava SE = SP − PV ako je CM=0 ; SE = PV − SP ako je CM=0

reč 16 Output CVP (%)

celobrojna promenljiva (100% je 16383) pri automatskom upravljanju (AM=0) ne može se definisati, već samo očitavati pri ručnom upravljanju (AM=1) ažurira se automatski

reč 17 MSW Integral Sum

reč 18 LSW Integral Sum

celobrojna promenljiva (32 bita - dve reči): do ± 2 174 483 648, ukupna vrednost integralnog dejstva, ažurira se automatski pri ručnom upravljanju

reč 19 interna upotreba

reč 20 interna upotreba

reč 21 interna upotreba

reč 22 interna upotreba

T. 3 Izgled Control block-a

Kao što je već rečeno Control block zapravo definiše sve promenljive neophodne za realizaciju algoritma. On obuhvata 23 reči, od kojih svaka ima jasno definisano

Page 128: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

7/plc_pid

značenje. Neke od ovih reči moraju da se unapred definišu i to se postiže jednostavnim otvaranjem prozora u koji se upisuju podaci (Sl. 2). U istom prozoru mogu se i očitavati vrednosti pojednih reči ili bitova koje se postavljaju u toku izvršavanja programa. Ove vrednosti mogu se menjati i u toku izvođenja programa navođenjem odgovarajućih adresa promenljivih.

Strukutra bloka prikazana je u tabeli T. 3. Ako se definiše skaliranje (zadaju se SMAX i SMIN) onda se sve veličine vezane

za proces (Setpoint, Deadzone, SPV, SE) izražavaju u fizičkim jedinicama.

⇒ Definisanje načina rada – Control block Nn:0

• Način pozivanja (obrade signala) – Bit TM (Nn:0/0) TM = 1 ⇒ izračunavanje se vrši periodično sa vrednošću definisanom pomoću Loop Update TM= 0 ⇒ izračunavanje je kontrolisano pomoću prekida (STI potprogram mora imati

isti period ponavljanja kao i Loop Update koji se mora definisati) Ključna razlika je u tome što se u prvom slučaju u svakom programskom skenu obrađuje PID naredba (ako je uslov istinit) i tek se tada ustanovljava da li je vreme da se izvrši novi algoritamski korak. Međutim, kod korišćenja STI, PID naredba se uopšte ne obrađuje sve dok se ne aktivira STI servisni potprogram, odnosno sve dok nije vreme za izvršavanje sledećeg algoritamskog koraka.

• Ručno i automatsko upravljanje – Bit AM (Nn:0/1) AM = 0 ⇒ automatski način rada, upravljanje se određuje na osnovu algoritma. Čak

i ako bi se vrednost upravljačke promenljive programski promenila, algoritam će ignorisati ovu promenu.

AM = 1 ⇒ ručno upravljanje, upravljački signal je promenljiva čija vrednost se može programski menjati. (CV vrednost treba da se zadaje kao celobrojna promenljiva od 0 do 16383). Za vreme ručnog upravljanja, PID algoritam ažurira CVP (reč 16), određuje grešku i ažurira integralnu komponentu urpavljanja, da bi se sprečio udar pri promeni režima rada. Pored eventualnog dovođenja procesa u radnu tačku, ova opcija je korisna u procesu podešavanja parametara PIDa.

• Greška – Bit CM (Nn:0/2) CM = 0 ⇒ signal greške se izračunava kao razlika set-point i vrednosti izlaza procesa (e = SP − PV)

CM = 1 ⇒ signal greške se izračunava kao razlika vrednosti izlaza procesa i set-point (e = PV − SP)

• Struktura PIDa – Bit DA (Nn:0/7) DA = 0 ⇒ diferencijalno dejstvo po izlazu procesa (PV)

DA = 1 ⇒ diferencijalno dejstvo po signalu greške Postavljanjem diferencijalnog dejstva po izlazu izbegavaju se efekti nagle promene upravljačkog signala pri promeni zadane vrednosti

• Skaliranje vrednosti parametara Kp i Ti – Bit RG (Nn:0/4) RG = 0 ⇒ vrednosti parametara izračunavaju se deljenjem zadane celobrojne vrednosti sa 10

RG = 1 ⇒ vrednosti parametara izračunavaju se deljenjem zadane celobrojne vrednosti sa 100

Ukoliko vrednosti parametara nisu velike (manje od 327.67) korišćenjem ove opcije

Page 129: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

8/plc_pid

(RG=1) ostvaruje se veća preciznost u definisanju parametara (manja razlika između dve uzsatopne digitalne vrednosti parametara). Ova opcija nije predviđna za diferencijalno dejstvo zato što njegova vrednost nikada nije izuzetno velika.

• Kontrola navijanja integratora – Bit OL (Nn:0/3) OL = 0 ⇒ nema nikakvih ograničenja u pogledu rasta integralnog dejstva, a time i

cele upravljačke promenljive OL = 1 ⇒ kada upravljačka promenljiva dostigne vrednost zadanih granica, prekida

se izračunavanje integralnog dejstva i ono se zadžava na poslednjoj izračunatoj vrednosti. Integralno desjtvo se ponovo uključuje kada upravljački signal padne ispod zadanih granica. Sve dok je signal izvan zadanih granica upravljački signal ima vrednost CVL (donja granica) ili CVH (gornja granica).

U oba slučaja, ukoliko upravljački signal izađe izvan granica postaviće se indikatorski bit LL=1 (prekoraćenje donje granice), odnosno UL=1 (prekoraćenje gornje granice).

⇒ Informacije o radu PIDa

• Skaliranje Setpoint-a – Bit SC (Nn:0/5) SC = 0 ⇒ specificirano je skaliranje Setpoint-a (konverzija u fizičke jedinice),

odnosno definisani su SMAX i SMIN SC = 1 ⇒ nije definisano skaliranje Setpoint-a

• Greška unutar mrtve zone – Bit DB (Nn:0/8) DB = 0 ⇒ greška nije unutar mrtve zone

OL = 1 ⇒ signal greške je prošao kroz nulu i njegova vrednost je unutar opsega mrtve zone, što znači da algoritam usvaja da je vrednost greške nula. Otuda, se upravljački signal ne menja, te vrednost izlaza procesa ostaje u opsegu koji je određen definisanjem mrtve zone. Na ovaj način moguće je kontrolisati meru do koje se izlaz procesa želi približiti zadanoj vrednosti referentnog signala (setpoint-a).

• Upravljački signal veći od gornje granice – Bit UL (Nn:0/9) UL = 0 ⇒ upravljački signal je manji od gornje granice (CVH)

UL = 1 ⇒ upravljački signal je veći od gornje granice (CVH), resetovaće se kad bude pao ispod gornje granice

• Upravljački signal manji od donje granice – Bit LL (Nn:0/10) LL = 0 ⇒ upravljački signal je veći od donje granice (CVL)

LL = 1 ⇒ upravljački signal je manji od donje granice (CVL), resetovaće se kad bude postao veći od donje granice

• Setpoint izvan opsega – Bit SP (Nn:0/11) SP = 0 ⇒ setpoint je unutar opsega definsanog sa SMIN i SMAX

SP= 1 ⇒ setpoint je manji od SMIN ili veći od SMAX

• Izlaz procesa izvan opsega – Bit PV (Nn:0/12) PV = 0 ⇒ izlaz procesa je unutar opsega definisanog sa SMIN i SMAX

PV = 1 ⇒ izlaz procesa je manji od SMIN ili veći od SMAX. U tom slučaju vrednost izlaza se postavlja na SMIN ili na SMAX (što odgovara celobrojnim vrednostima 0 i 16383)

• Premala perioda odabiranja – Bit TF (Nn:0/6)

Page 130: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

9/plc_pid

TF = 0 ⇒ scen ciklus PLCa i zahtevani period PIDa su usklađeni TF= 1 ⇒ PID ne može da ostvari zahtevani period izračunavanja, zato što sken ciklus PLCa predugo traje

⇒ Informacije o izvršavanju PID naredbe

• Aktivnost PID naredbe – Bit EN (Nn:0/15) EN = 0 ⇒ uslov u rangu PID naredbe nije ispunjen

EN= 1 ⇒ uslov u rangu PID nardbe je ispunjen

• Završetak algoritamskog koraka – Bit DN (Nn:0/13) DN = 0 ⇒ PID nije završio algoritamski korak (ili ga nije ni započinjao)

DN = 1 ⇒ PID je u datom sken ciklusu bio aktiviran i završio je jedan algoritamski korak. Resetuje se automatski kad počne sledeći sken ciklus PLCa.

⇒ Kodovi za greške pri izvršavanju PID naredbe Ukoliko u toku izvođenja PID naredbe dođe do neke greške javlja se kod za

grešku 0036. Svakoj vrsti greške pridružen je jednoznačan kod dužine 1 bajta koji je smešten u drugoj reči Control block-a (Msbyte). Kodovi grešaka, kao i moguće reakcije u cilju njihovog uklanjanja prikazani su u tabeli T. 4. Kode grešeke

Uzrok greške Moguća reakcija da se greška ukloni

SLC 5/02 SLC5/03 i više SLC 5/02 SLC5/03 i više

1. T > 255 1. T > 1024 11H

2. T = 0 2. T = 0 postavi T

0 < T < 255 postavi T

0 < T < 1024

Kc > 255 12H

Kc = 0 Kc < 0

postavi Kc 0 < Kc ≤ 255

postavi Kc Kc ≥ 0

13H Ti > 255 Ti < 0 postavi Ti

0 < Ti ≤255 postavi Ti Ti ≥ 255

14H Td> 255

Td < 0

postavi Td 0 < Td ≤ 255

postavi Td Td ≥255

21H (SLC 5/02) Smax> 16383 ili Smax< -16383 postavi Smax

-16383 < Smin < Smax < 16383

22H (SLC 5/02) Smin> 16383 ili Smin< -16383

postavi Smin -16383 < Smin < Smax < 16383

22H Smin> Smax postavi Smin

-16383 < Smin < Smax < 16383 (-32768 do +32767 SLC 5/03 i više)

31H

Smin> SP> Smax ili SP> 16383 u prvom prolazu postavi Bit 11 ako se kasnije promeni SP onda javlja kod za grešku, ali koristi prethodnu SP

postavi Smin < SP< Smax ili (ako se nekoristi skaliranje)

0 < SP< 16383

Izabrano skaliranje

Nije izabrano skaliranje

Izabrano skaliranje Nije izabrano skaliranje

41H Deadband< 0 ili . Deadband> (Smax –Smin) ili Deadband> 16383 (5/02)

Deadband< 0 ili Deadband> 16383

postavi 0 < deadband<(Smax -

Smin)< 16383

postavi 0 < deadband< 16383

Page 131: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

10/plc_pid

Kode grešeke

Uzrok greške Moguća reakcija da se greška ukloni

51H CVH< 0 ili CVH> 100 postavi 0 < CVH< 100

52H CVL< 0 ili CVH> 100 postavi 0 < CVL <CVH< 100

53H CVL > CVH postavi 0 < CVL <CVH< 100

60H

SLC 5/02 – PID se prekida po drugi put (PID je bio prekinut nekim signalom U/I prekida, koji je onda prekinut pomoću STI prekida)

Postoje bar tri PIDa u programu (jedan u glavnom programu, jedan u U/I prekidu i jedan u STI prekidu). Program se mora promeniti da bi se izbegle ugneždene PID petlje.

4. Primeri korišćenja PIDa Primer 1. - Skaliranje

PID upravlja snagom grejača koji zagreva vazduh u nekoj komori. Temperatura u komori može da se menja u opsegu tmin = 5oC do tmax=80oC. Temperatura se meri termospregom koji daje strujni signali u opsegu 4 do 20mA koji se vodi na analogni ulazni modul u slotu 1.

Kolo za upravljanje grejačem prima strujni signali u opsegu 4 do 20mA, koji dolazi sa analogni izlazni u slotu 2.

PID radi sa periodom od 100ms i treba da održava temepraturu na 20 oC. Napisati STI servisni potprogram koji realizuje PID.

Rešenje (Sl. 3) Pretpostavlja se da su definisani svi potrebni parametri STI prekid

□ STI adresa servisnog potprograma S:31 = 3 □ STI Setpoint – period kao multipl od 10ns (S:30) = 10 □ STI Enabled bit (S:2/1) = 1

PID upravljački blok, adresa N10:0

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

reč 0 EN DN PV SP LL UL DB DA 1

TF SC 1

RG1

OL 1

CM 0

AM 0

TM 0

reč 1 PID Sub Error Code (Msbyte)

reč 2 Setpoint SP 20

reč 3 Kp 500 interpretira se kao 5

reč 4 Ti (min/obrt) 20 interpretira se kao 0.2

reč 5 Td (min) 2 interpertira se kao 2

reč 6 Offset 0

reč 7 Setpoint Max Scaled (SMAX) 5

T. 4 Kodovi grešaka koje mogu nastati pri korišćenju PID modula

Page 132: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

11/plc_pid

reč 8 Setpoint Min Scaled (SMIN) 80

reč 9 Deadband (mrtva zona) 0

reč 10 interna upotreba

reč 11 Output Max (CVH) 100

reč 12 Output Min (CVL) 0

reč 13 Loop Update 10

reč 14 Scaled Proces Variable

reč 15 Scaled Error (SE) SE = SP − PV

reč 16 Output CV (%)

reč 17 MSW Integral Sum

reč 18 LSW Integral Sum

reč 19 interna upotreba

reč 20 interna upotreba

reč 21 interna upotreba

reč 22 interna upotreba

Izgled maske pri definisanju Control blocka u PID naredbi

Page 133: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

12/plc_pid

Page 134: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

13/plc_pid

Primer 2 - Generisanja širinski modulisanog impulsa Formirana je PID naredba koja generiše upravljački signal za neki izvršni organ

koji prima širinski modulisane impulse. Izvršni organ je vezan za nulti pin digitalnog izlaznog modula koji se nalazi u slotu 1

Control block PIDa nalazi se na adresi N10:0. Skalirani merni signal smešten je na adresi N7:1, upravljačka promenljiva smeštena je na adresi N7:2.

Perioda odabiranja PIDa je T=10s. Formirati leder program koji će na osnovu upravljačkog signala koji daje PID

generisati širinski modulisane module.

Rešenje (Sl. 5) Generisani širinski modulisani impuls treba da ima izgled kao na Sl. 4 , gde u(%)

predstavlja vrednost upravljačke promenljive svedene na procenat od periode odabiranja T.

Sl. 3 Servisni potrpogram koji u kome se realizuje PID

Sl. 4 Širinski modulisan upravljački signal

Page 135: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

14/plc_pid

Budući da PID daje upravljački signal (c) kao celobrojnu promenljivu u opsegu od

Sl. 5 Realizacija širinski modulisanog impulsa na osnovu izlaza PIDa

Page 136: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

15/plc_pid

0 do 16383, to znači da veličini c=0 odgovara upravljanje u=0, a veličini c=16383, upravljanje u=T. Otuda se konverzija upravljačkog signala vrši prema relaciji

16383cT

u =

Izlazni signal generiše se pomoću samoresetujućeg časovnika koji meri vreme T (10s). Sve dok je izmereno vreme manje od u, na izlaz analognog modula se dovodi vrednost 1. Kada vreme postane veće od u, na izlaz časovnika se dovodi vrednost 0.

Budući da se PID naredba nalazi u samom leder programu on mora sam generisati periodu odabiranja (timed mode) što znači da se u upravljačkom bloku bit TM (N10:0/0) mora postaviti na 1.

Primer – Ručni režim rada Jedan PID modul definisan je preko upravljačkog bloka koji se nalazi na adresi N7:10. PID prima procesnu promenljivu (PV) sa adrese N7:0 i generiše upravljačku promenljivu na adresi N7:1 (CV). Izbor između ručnog i automatskog režima rada obavlja se pomoću dvopoložajnog prekidača. Položaj prekidača koji označava automatski režim rada vezan je preko prvog pina digitalnog ulaznog modula, koji se nalazi u slotu 2, dok je položaj koji označava ručni režim vezan za drugi pin istog modula.

Ručno upravljanje generiše se pomoću jednog trocifrenog BCD digitalnog davača koji je vezan je za prvih 12 pinova digitalnog ulaznog modula koji se nalazi u slotu 1. (Preostali pinovi tog modula se ne koriste). Ručno upravljanje se zadaje kao procenat od maksimalne aktivnosti izvršnog organa (u opsegu od 0 do 100). Izvršni organ je tako odabran da prima stvarni, apsolutni iznos upravljanja. Zahtev za očitavanje stanja na davaču vrši se pritiskom na taster koji je vezan za nulti pin digitalnog ulaza u slotu 2. Formirati deo leder programa koji realizuje ručno upravljanje.

Rešenje Svaki put kad se pritisne taster podatak sa BCD davača se konvertuje u celobrojnu promenljivu c i smešta na adresu N7:2. Ukoliko je zadana vrednost u dozvoljenom opsegu, na osnovu nje se izračunava stvarna apsolutna vrednost ulaza izvršnog organa u. Konverzija se vrši prema relaciji

100

c16383CV =

Dobijena vrednost se smešta kao CV na odgovarajuću adresu PID modula. Predpostavlja se, naime, da se u preostalom delu leder programa nalaze naredbe koje će, nezavisno od režima rada PIDa, ovu vrednost skalirati u skladu sa odabranim analognim izlaznim modulom i obezbediti smeštanje rezultata na izlaznu adresu koju određuje analogni izlazni modul. Ukoliko je vrednost izvan opsega postavlja se indikatorski bit. Potrebno je zapaziti da se, i pored toga što je PID u ručnom režimu rada, on aktivira u skladu sa periodom odabiranja. Tom prilikom on koristi vrednost upravljačke promenljive (CV) za ažuriranje procentualne vrednosti upravljačke promenljive (CVP -reč 16 upravljačkog bloka), određivanje signala greške i ažuriranje integralnog dejstva (reči 17 i 18 upravljačkog bloka).

Page 137: Programmable Logic Controllerautomatika.elfak.ni.ac.rs/files/Nastavni_materijal/... · promenljive. Rezultati obrade se smeštaju u posebno područje memorije – slika izlaza. Ovde

16/plc_pid