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
Uređaji na
pogonu
modula smeštaju se i program
i podaci i odatle se upravlja
radom celog sistema. Naziv
Specijalni U /I
izlazni i ulazni moduli se
moduli
PLC
odnosi na digitalne ulaze i
izlaze preko kojih se primaju
Izlazni
Izvršni
binarni signali sa senzora,
moduli
organi
Procesorski
odnosno zadaju binarni signali
Napajanje
modul
Ulazni
pojedinim aktuatorima, dok
Senzori
moduli
specijalni
U/I
moduli
obuhvataju analogne U/I kao i
module posebne namene kao
Komunikacioni
moduli
što su brzi brojač, pozicioni
servo sistem, PID regulator
itd. Komunikacioni moduli
Čvorovi u
obezbeđuju
spregu
sa
mreži
komunikacionom
opremom
preko koje se razmenjuju
Sl. 1 Funkcionalni blok dijagram PLC-a
podaci sa drugim računarskim
uređajima
u
mreži
i/ili
operatoriskim uredjajima preko kojih se PLC programira i nadzire njegov rad.
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
izlazni moduli
ulazni moduli
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
5.
1.
ponavljanje navedenih aktivnosti (Sken
održavanje
ulazni
ciklus) kao što je to ilustrovano na Sl. 3.
sken
Sken
ciklus
započinje
sa
ulaznim skenom u okviru koga PLC
4.
očitava sadržaj ulaznih linija (registara
komuni- Sken ciklus
ulaznih modula). Očitani podaci se
kacija
prenose u odredjeno područje memorije
– slika ulaza. Zatim se aktivira
i
k
programski sken u okviru koga
3.
2. ms
procesor izvršava programske naredbe
ra n
izlazni
og ke
kojima su definisane odgovarajuće
r
sken
p s
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
Sl. 3 Sken ciklus PLC-a
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
programskog skena, operativni sistem PLC-a aktivira izlazni sken u okviru koga se
podaci iz slike izlaza
2
programski sken
prenose na izlazne
linije (registre izlaznih
interne
modula). Četvrti deo
promenljive
sken
ciklusa
–
1
komunikacija
3
slika
slika
ulazni
izlazni
namenjen
je
realizaciji
ulaza
izlaza
sken
sken
razmene podataka sa
uređajima
koji
su
program
povezani sa PLC-om.
memorija
Nakon toga, operativni
sistem dovodi PLC u
fazu održavanja u
okviru koje se ažuriraju
4i5
interni
časovnici
i
komunikacija i održavanje
registri,
obavlja
upravljanje memorijom
Sl. 4 Razmena podataka za vreme sken ciklusa
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.
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
Memorija
Lokalni U/I
Udaljeni U/I
Trajno
pamćenje
Tipično vreme
programskog
skeniranja
Izvršavanje
bit naredbe
Broj mašinskih
naredbi
SLC 5/01
1K UI ili 4K DW
4K UI ili 16K DW
256 digitalnih
nema
EEPROM ili
UVPROM
SLC 5/02
4K UI ili 16K DW
SLC 5/03
12K UI i 4K DW
SLC 5/04
12K UI i 4K DW
28K UI i 4K DW
60K UI i 4K DW
960 digitalnih
veličine programske
480 digitalnih
960 digitalnih
Kapacitet zavisi od vrste napajanja i
memorije
- najviše može biti 4096 ulaza i 4096 izlaza EEPROM ili
Fleš EPROM
Fleš EPROM
UVPROM
8 ms/K
4.8 ms/K
1 ms/K
0.9 ms/K
4 µs
2.4 µs
.44 µs
.37 µs
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.
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.
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.
Tip
datoteke
Broj datoteke
X
f
:
redni broj
elementa
e
◊
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).
Tip
datoteke
Redni broj
elementa
Broj datoteke
X
f
Broj
datoteke
:
e
Redni broj
elementa
Tip
datoteke
X
Tip
datoteke
f
:
e
f
:
w
Redni broj
Refni broj bita (u
reči ili akronim
odnosu na
početak reči ) ili
akronim
.
w
/
Redni broj
elementa
Broj datoteke
X
.
e
◊
Redni broj
reči (ili
akronim )
/
b
b
Redni broj bita
(u odnosu na početak
elementa )
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).
◊
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.
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:
• 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
B, N, A
1 reč
F
2 reči
T, C, R
3 reči
St
42 reči
Adresira se
bit “b” - Xf:e/b ;
element “e“ – Xf:e
element “e“ – Xf:e
bit “b” u reči 0– Xf:e.0/b ; (indikatori stanja su bitovi reči 0)
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
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 16bitna 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.
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.
Adresa Adrese pojedinih
elementa bitova
B3:0/0 … B3:0/15
B3/0 … B3/15
B3:1/0 … B3:1/15
B3/16 … B3/31
B3:2/0 … B3:2/15
B3/32 … B3/47
B3:3/0 … B3:3/15
B3/48 … B3/63
.
B3:0
B3:1
B3:2
B3:3
.
.
.
Data file 3 – Bit file
bitovi
15 14 13 12 11 10 9 8 7 6 5
4
3
2
1
0
*
.
.
.
.
B3:255/0 ... B3:255/15
B3:255
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
znači, da se pažljivim izborom adresa elemenata može ostvariti ušteda u zauzetom
memorijskom prostoru.
adrese
RAM-a
24
adrese
RAM-a
24
adrese
RAM-a
24
adrese
RAM-a
24
25
25
25
25
N7
integer
N7
integer
28
28
29
29
B9
bit
N7
integer
N7
integer
28
reč 0
29
28
reč 0
reč 1
reč 1
reč 2
reč 2
reč 3
reč 3
29
reč 0
reč 1
reč 2
F8:1
reč 3
33
33
reč 4
33
reč 4
33
reč 4
34
34
reč 5
34
reč 5
34
reč 5
reč 6
36
reč 7
37
F8:3
reč 6
36
reč 7
37
reč 6
36
reč 7
37
reč 8
reč 9
B9
bit
RAM
B9
bit
reč 10
40
41
41
41
42
42
42
B9
bit
RAM
RAM
45
46
pre
kreiranja
naredbi
posle
obrade
prve
naredbe
F8:5
reč 11
posle
obrade
druge
naredbe
RAM
posle
obrade
treće
naredbe
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.
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)
O-output; I-input; B-bit
N-integer
F-floating point
St-string
T-timer; C-counter
(ACC i PRE)
R-control (LEN i POS)
Indeksna adresa
Ako se bazna promenljiva
nalazi u RAM-u na adresi 200, i
S:24=6
promenljiva je na
adresi
rečima
206
rečima
206
elementima (2 reči) 212 i 213
rečima
206
Pomeraj (S:24)
izražen u
#O:e ; #I:e ; #Bf:e
#Nf:e
#Ff:e
#Stf:e.w
#Tf:e.ACC ; #Tf:e.PRE
elemtima (3 reči)
219 ; 220 (2. i 3. reč elementa)
#Cf:e.ACC ; #Cf:e.PRE
#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
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.
N7:0
Potrebno je obratiti pažnju na
-3
N7:1
činjenicu da se za sve različite indeksne
-3
adrese koje se žele koristiti, pomeraj
N7:2
dozvoljeni pomeraj
mora nalaziti u istoj reči (S:24). Isto tako,
indeksna adresa #N7:3 N7:3
bez prekoračenja
neke naredbe prilikom izvođenja, koriste
granica
N7:4
tu reč i uništavaju njen prethodni sadržaj.
N7:5
Otuda je neobično važno da se pre
+4
+4
N7:6
korišćenja indeksne adrese obezbedi da
N7:7
se u lokaciji S:24 nađe odgovarajući,
F8:0.0
željeni pomeraj. Konačno, napomenimo
da se prilikom servisiranja prekida,
F8:0.1
pomeraj = +10
prekoračena
sadržaj lokacije S:24 čuva.
F8:1.0
granica
U skladu sa onim što je rečeno o
F8:1.1
načinu
kreiranja datoteka, treba uočiti da
F8:2.0
indeksno
adresiranje
može
da
F8:2.1
prouzrokuje izvesne probleme. Naime,
F8:3.0
veličina datoteke određena je najvećom
F8:3.1
adresom koja se neposredno navodi u
programu, i pri tome nema načina da se
u toku prevođenja programa ustanovi da
Sl. 6 Indeksno adresiranje
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.
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
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
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
-32768 do +32767
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
tačka odgovarjućeg kola za
spregu
sa kontrolerom. U
šasija
skladu sa time svaki pin se
s
napajanje
identifikuje svojim tipom
l
(ulaz ili izlaz) i brojem koji
o
odredjuje položaj U/I kola u
t
okviru modula, i koji zapravo
predstavlja adresu pina.
modul
U/I moduli
Opis pinova dat je na
unutrašnjoj strani vrata na
indika
opis
tori
pino
modulu. Pored U/I pinova,
va
na prednjoj ploči modula
nalaze se i pinovi koji su
interno
povezani
sa
U/I
napajanjem (DC ili AC), sa
pinovi
zajedničkom
(nultom)
tačkom i sa zemljom. Način
sprezanja pojedinog urđaja
sa modulom zavisi od
specifičnosti
samog
Sl. 7 Digitalni U/I modul
uredjaja, kao i karakteristika
modula (Dodatak UI). Detaljna šema sprege vezivanja data je uz svaki modul.
Za vreme rada U/I modula, stanje svakog pina se prikazuje na odogovarajućem
LED indikatoru. Indikator koji je povezan sa ulaznoim pinom svetli ako je ulazni signal u
stanju logičke jedinice. Indikator povezan sa izlaznim pinom svetli ako je, kao rezultat
obrade 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 specifikacija U/I modula data je
u Dodatku 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 slobodnih slotova (uz uslov da je šasija ima odgovarajući modul napajanja
– Dodatak 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.
Procesorski
modul
xn
n
xn n
xnn
xn n
xnn
xn n
xnn
xn
n
xnn
xn n
xnn
xn n
xnn
xn n
xnn
xn n
2. Sprezanje U/I modula sa kontrolerom
Vrednost binarnog signala koji dolazi na ulazni pin nekog U/I modula očitava se
za vreme ulaznog dela sken ciklusa. U zavisnosti od toga da li očitana vrednost
predstavlja logičku nulu ili jedinicu formira se odgovarajuća vrednost bita (0 ili 1) i
upisuje 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.
Redni broj slota
0-30 - (decimalno)
N
Tip pina
O - output (izlaz)
I - input (ulaz)
Redni broj reči [1]
(0 se može izostaviti)
:
e
.
w
/
b
Potrebno samo ako je broj
pinova na modulu veći od
16
Redni broj pina
(redni broj bita )
0 - 15 - (decimalno)
Sl. 8 Format adresa binarnih U/I signala
Svakom modulu koji nema
više od 16 pinova pridružuje se po
jedna 16-bitna reč u datoteci 0
odnosno 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
adresiranja prikazan je na slici Sl. 8.
Da bi se ilustrovao način povezivanja adresa modula sa odgovarajućim
datotekama posmatraće se kontroler koji se sastoji iz jedne šasije sa 7 slotova koja je
povezana 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.
0
1
2
3
4
5
Redni brojevi
slotova
6
I/O I/O I/O I/O I/O I/O
Napa
Process
CPU I 6 I 32
I 8
I 16
janje
O6
O 16 O 8 O 32
7
8
I/O I/O
Napa
I 16 I 8
janje
9
10
I/O
I/O
11 12 13 14 15
O 16 O 16
16
Moguće proširenje
Sl. 9 - Konfiguracija kontrolera
Slot U/I tip
(pinovi)
1 - out
(0-5)
3 - out
(0-15)
4 – out
(0-7)
5 – out
(0-15)
5 – out
(16-32)
9 – out
(0-15)
10 – out
(0-15)
Adresa Adrese
reči
bitova
O:1
O:3
O:4
O:5
O:5.1
O:9
O:10
O:1/0 …
O:1/5
O:3/0 …
O:3/15
O:4/0 …
O:4/7
O:5/0 …
O:5/15
O:5.1/0 ...
O:5.1/15
O:9/0 …
O:9/15
O:10/0 …
O:10/15
Data file 0 – Output image
bitovi
15 14 13 12 11 10 9 8 7 6 5
4
3
2
1
0
Ne koristi se
Ne koristi se
T. 7 – Organizacija datoteke 0
Potrebno je da se sitakne da su I i O datoteke jedine dve datoteke kod kojih
elementi nisu poređani u neprekidnom nizu i kod kojih su elementi promenljive dužine.
U ovom primeru tako posle elementa O:1, kao susedna reč u memoriji nalazi se
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.
Slot U/I tip
(pinovi)
1 - in
(0-5)
2 - in
(0-15)
2 – in
(16-32)
4 – in
(0-7)
6 – in
(0-15)
7 – in
(0-15)
8 – in
(0-7)
Adresa Adrese
bitova
reči
I:1
I:2
I:2.1
I:4
I:6
I:7
I:8
I:1/0 …
I:1/5
I:2/0 …
I:2/15
I:2.1/0 …
I:2.1/15
I:4/0 …
I:4/7
I:6/0 …
I:6/15
I:7/0 …
I:7/15
I:8/0 …
I:8/7
Data file 1 – Input image
bitovi
15 14 13 12 11 10 9 8 7 6 5 4
3
2
1
0
Ne koristi se
Ne koristi se
Ne koristi se
T. 8 - Organizacija datoteke 1
U posmatranom primeru, ako se kao indeksna adresa definiše #I:2, ako se
podatak čija je bazna adresa I:2 nalazi u memoriji na adresi 200, i ako je sadržaj indeks
registra 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. Digitalni senzori i digitalni izvršni organi
Kao što je već rečeno digitalni signal je
signal čija amplituda može imati jednu od
opruga
NO
konačnog broja različitih vrednosti. Posebna
kontakt
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
NC
značenje
uključen/isključen,
istinit/neistinit,
kontakt
Napajanje
prisutan/odsutan itd. Diskretni signali se koriste
za uključivanje i isključivanje prekidača,
navoj
pokretanje ili zaustavljanje motora, otvaranje ili
zatvaranje ventila i drugih aktuatora u zavisnosti
od radnih uslova ili u funkciji vremena. U isto
Sl. 10 NO i NC kontakt upravljani vreme, ovi signali se koriste i kao indikatori
pomoću relea
stanja ovih uređaja.
Bez želje da se upuštamo u detaljan pregled svih davača digitalnih signala i
digitalnih 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 aktuatora je kontakt. U principu, kontakt
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 fizičku veličinu)
• otvoren (open)
- ne provodi struju (odnosno ne propušta odgovarajuću fizičku
veličinu).
Kontakt može biti normalno
Simbol
otvoren (NO) ili normalno zatvoren
Opis
Normalno
Normalno
(NC), pri čemu se izraz “normalno”
otvoren
zatvoren
odnosi na stanje u kome se
Običan prekidač
kontakt nalazi pre nego što se
delovanjem
nekog
spoljnog
Granični prekidač
agensa promeni stanje kontakta.
Prekidač sa oprugom
Na slici (Sl. 10) prikazana su dva
tipična relejna kontakta, od kojih je
Taster
jedan normalno otvoren a drugi
normalno zatvoren. Naime, sve
Temperaturni prekidač
dok u kolu relea nema struje,
kotve koje su vezane za oprugu
Prekidač aktiviran protokom
imaju položaj kao na slici, tako da
je kontakt označen sa NC
Prekidač aktiviran nivoom
zatvoren, a kontakt označen sa
NO otvoren. Kada se zatvori
Prekidač aktiviran pritiskom
prekidač u kolu relea, u jezgru će
Prekidač aktiviran
se generisati elektromagnetna sila
rastojanjem
koja će privući kotve koje su
vezane za oprugu. Pri tome oba
Relejni kontakt
kontakta menjaju stanje i to tako
Osigurač
što se NC kontakt otvara, a NO
kontakt zatvara. Kada se prekidač
u kolu relea otvori, opruga vraća
Relejni namotaj
kontakte u početni položaj.
Senzori i kontakti koji se
Dvopoložajni prekidač
koriste kao ulazni procesni uređaji
(šalju signale prema kontroleru)
Sl. 11 Pregled grafičkih simbola različitih kontakta
mogu biti otvarani ili zatvarani kao
rezultat dejstva neke mehaničke
akcije (npr. granični prekidači), čoveka (npr. tasteri), 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.
Izlazni procesni uređaji koji primaju signale iz kontrolera se koriste za pokretanje i
zaustavljanje motora ili promenu smera obrtanja, za aktiviranje i dezaktiviranje
signalizacije alarma, za paljenje i gašenje kontrolnih sijalica, otvaranje i zatvaranje
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 se upravlja pomoću elektromagnetne sile proizvedene u namotaju. U principu,
rad solenoida zasniva se na struji koja
Opseg kretanja
- Smer kretanja +
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
aa+
ga odbija od centra. Postoje dva tipa
solenoidnih aktuatora:
opruga
A+
• Jednosmerni solenoid – koji ima
samo jedan izvod za napajanje, tako
da struja ima uvek isti smer, što znači
Izlaz
Ulaz
da se i jezgro pod dejstvom magnetne
kontrolera
kontrolera
sile može pomerati samo u jednom
Sl. 12 Jednosmerni solenoid
smeru.
U
odsustvu
napajanja
solenoida, mehanička opruga vraća jezgro u početni položaj (Sl. 12).
Potrebno je da se istakne da se uz solenoid po pravilu postavljaju i dva granična
prekidača koji omogućavaju da se detektuje kada jezgro dođe u krajnji desni ili krajnji
levi položaj.
• Dvosmerni solenoid – koji ima dva izvoda za napajanje, tako da smer struje,
odnosno odgovarajuće magnetne sile
Opseg kretanja
zavisi od toga na koji izvod je
- Smer kretanja +
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
aa+
jednom kraju nema napajanja, jezgro
će ostati u zatečenom položaju, uz
AA+
uslov da ne postoji neka mehanička
sila (npr. sila zemljine teže, ako je
Izlaz
solenoid u vertikalnom položaju) koja
Ulaz
kontrolera
bi izazvala njegovo kretanje. Drugim
kontrolera
rečima,
u
odsustvu
napajanja,
solenoid se nalazi u slobodnom stanju
Sl. 13 Dvosmerni solenoid
(Sl. 13).
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.
Digitalni ulazni
uređaj
(izvor)
+
DC
izvor
napajanja
izvor
signal
-
VDC
ulazni
pin
DC ulazno
kolo
(prijemnik)
DC
izvor
napajanja
+
-
Digitalni izlazni
uređaj
(izvor)
izvor
signal
DC izlazno
kolo
(prijemnik)
izlazni
pin
DC
COM
DC
COM
Sl. 14 Sprezanje digitalnih uređaja koji su projektovani kao izvori
Digitalni ulazni
uređaj
(prijemnik)
DC
izvor
napajanja
(opcioni)
+
com
signal
VDC
ulazni
pin
DC ulazno
kolo
(izvor)
DC
izvor
napajanja
(opcioni)
+
-
Digitalni izlazni
uređaj
(prijemnik)
com
сигнал
VDC
DC izlazno
kolo
(izvor)
izlazni
pin
DC
COM
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.
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
AU
ovi signali prikazani u PLC-u.
Analogni
Analogni
izlazni
moduli
instrument
AI
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
Analogni
organima.
itvršni organ
U principu jedan modul se
Sl. 16 Kombinovani Analogni U/I modul
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.
Svaki modul se smešta u jedan slot
Redni broj reči
Redni broj
na
šasiji
PLC-a (Sl. 16). Otuda se, sa
(analognog kanala
slota
gledišta adresiranja, on tretira isto kao i
0, 1, ...)
digitalni modul, s tim što je značenje pinova
P :
e . w
i broj bitova koji odgovaraju jednom pinu
drugačiji. Drugim rečima podaci koji se
preko modula unose u računar nalaziće se
Tip pina
O - izlaz (output)
u određenim lokacijama datoteke ulaza (I),
I - ulaz (input)
a podaci koji se iznose iz računara, nalaziće
se u datoteci izlaza (O). Broj reči koji
Sl. 17 Adresiranje analognih ulaza i izlaza
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.
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
A/D konvertori. Otuda se svakom ulaznom kanalu pridružuje po jedna memorijska reč.
To nadalje znači da se svaki ulazni kanal
Analogni
adresira pomoću adrese oblika I:e.w. U
ulazni
davač
modul
principu, moguće je pristupiti i pojedinom
+
IN0+
+
bitu unutar svake od ovih reči, no ti bitovi
izvor
IN0nemaju nikakvo pojedinačno značenje, pa
ANL COM
se ne vidi razlog zašto bi se to radilo.
Analogni davač se vezuje tako što
davač
se formira zatvoreno električno kolo. Pri
izvor
signal
GND
IN1+
+
tome, izvor napajanja tog kola može biti u
izvor
IN1samom modulu ili spolja. Za razliku od
ANL COM
digitalnih U/I, kod analognih modula izvor
napajanja je veoma često spoljni. Samo
davač
električno kolo se zatvara vezivanjem
izvor
signal
krajeva analognog davača sa pinovima na
IN2+
+
+
+
izvor
ploči analognog modula (Sl. 16). Svakom
IN2analognom ulaznom kanalu pridružena su
ANL COM
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
Sl. 18 Diferencijalna sprega analognog ulaza
korišćenja zavisi od vrste analognog
davača sa koga se signal vodi na kanal.
Analogni
Ako davač ima dva, tri ili četiri izlaza onda
ulazni
davač
modul
se
može izvesti diferencijalna sprega
signal
+
IN0+
+
davača i modula. Svakom davaču
izvor
IN0pridružuje
se zaseban izvor napajanja i
ANL COM
svi kanali su međusobno odvojeni (Sl.
davač
18). Za davače koji imaju samo dva ili tri
signal
+
IN1+
izlaza, može se izvesti veza sa jednim
IN1krajem, tako da se električno kolo zatvara
ANL COM
preko zajedničke tačke (mase) na samom
modulu. U tom slučaju, dovoljan je jedan
davač
izvor napajanja za više analognih kanala
izvor
signal
GND
IN2+
(Sl. 19).
IN2Potrebno je da se istakne da
ANL COM
diferencijalna
sprega
ima
bolje
karakteristike posebno kad se radi o
Sl. 19 Sprega analognog ulaza sa jednim krajem potiskivanju smetnji koje potiču od
napajanja.
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 16bitne 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) =
10
× celobrojna decimalna vrednost
32768
ulazna struja (mA) =
20
× celobrojna decimalna vrednost
16384
Opseg napona/struje
-10V dc do +10V dc
0 do 10V dc
0 do 5V dc
1 do 5V dc
-20mA do +20mA
0 do 20mA
4 do 20mA
Celobrojna decimalna
reprezentacija
(datoteka ulaza)
-32768 do +32767
0 do 32767
0 do 16384
3277 do 16384
-16384 do +16384
0 do 16384
3277 do 16384
Rezolucija
305.176µV
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 PLCa. 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 =
celobrojna decimalna vrednost =
32768
× izlazni napon (V)
10
32768
× izlazna struja (mA)
21
Pri tome je potrebno zapaziti da će se isti rezultat dobiti i ako se u gornjim
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)
-32768 do +32764
0 do 32764
0 do 16384
3277 do 16384
0 do 32764
0 do 31208
6242 do 31208
Opseg
napona/struje
-10V dc do +10V dc
0 do 10V dc
0 do 5V dc
1 do 5V dc
0 do 21mA
0 do 20mA
4 do 20mA
Rezolucija
1.2207mV
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
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.
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
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,
Sl. 1 Leder rang
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
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.
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.
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
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
Sl. 2 Postavljanje izlaza u zavisnosti od liniji, vrednosti bita u input image file-u koji je
vrednosti ulaza
pridružen toj liniji, vrednosti bita u output image fileu 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).
Sl. 3 Vremenski dijagram promene U/I linija i odgovarajućeg ranga
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
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
Sl. 4 Električno kolo
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
Sl. 5 Sprezanje senzora i izvršnog organa sa PLCom
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
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)
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
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
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).
12/plc_leder
Sl. 12 Realizacija sekvence pomeranja klipova
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.
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
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.
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
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.
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.
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.
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
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.
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.
Ekscentrična
Zatvarači se proiuvode tako
čaura
što se komad metala stavi na
postolje ispod bata prese koji
Glavna
se pomera u vertikalnoj ravni
osovina
(dole – gore). Bat udara u
motora
Osovina
metal kada dođe u krajnji
motora
donji položaj i deformiše ga,
Frikciona
Poluga bata
spojnica
odnosno oblikuje na ženjeni
način.
Za
bat
prese
pričvršćena je poluga čiji je
kraj
vezan
Bat prese
Hod bata gornji
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
Sl. 7 Šematski prikaz ekscentar prese
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
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
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
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
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
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.
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
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.
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
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.
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.
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
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
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
Kod
naredbe
EQU
NEQ
LES
LEQ
GRT
GEQ
Ime naredbe
Equal (jednako)
Not equal (nejednako)
Less than (manje)
Less than or equal (manje ili jednako)
Greater than (veće)
Greater than or equal (veće ili jednako)
relacija
istinita ako neistinita ako
je
je
A=B
A≠B
A=B
A≠B
A<B
A>B
A≤B
A≥B
A>B
A<B
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
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.
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
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
6/plc_math
Kod
Ime naredbe
Operacija
ADD
SUB
MUL
Add (sabiranje)
Subtract (oduzimanje)
Multiply (množenje)
d=a+b
d=a–b
d = ab
DIV
Divide (deljenje)
d = a/b
XPY
X to the power of Y
AND
And (logičko “i”)
OR
Or (logičko “ili”)
XOR
Exclusive OR
(ekskluzivno “ili”)
d=x
d = a∧b
bit po bit
d = a∨b
bit po bit
d = a∨b
bit po bit
y
Postavlja indikatorske bitove
V – bit (ako je S:2/14=0)
Z – bit
1 za d izvan opsega
1 za d=0
1 za d izvan opsega
1 za d=0
1 za d izvan opsega
1 za d=0
1 za d izvan opsega, i
1 za d=0
uvek 0
deljenje sa 0
uvek 0 1 za d izvan opsega
1 za d=0
C – bit
uvek 0
uvek 0
uvek 0
S – bit
1 za d<0
1 za d<0
1 za d<0
1 za d<0
1 za d<0
uvek 0
uvek 0
1 za d=0
1 za d<0
uvek 0
uvek 0
1 za d=0
1 za d<0
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(ylog2x). 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.
Sl. 7 Algoritam sabiranja
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
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)
8/plc_math
8. bitni
negativan
broj
1
1
1
1
4. bitni
8. bitni
1
0
0
1
-7
(9)
ADD
C=1
rezultat
rezultat
0
0
0
1
1
1
1
1
15
31
0
0
0
1
1
0
0
0
8
24
ADD
1
0
1
0
SUB
1
0
1
0
0
0
16
1
0
0
0
40
16
1
0
0
0
24
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
Kod
Ime naredbe
Operacija
NEG
Negate (negacija)
d = -a
NOT
Not (komplement)
d=a
⎯
bit po bit
DDV
Double divide
(deljenje 32-bitnog
celog broja iz mat.
reg. sa 16-bitnim
d = reg/a
(rezultat
zaokružen)
Postavlja indikatorske bitove
V – bit (ako je
C – bit
Z – bit
S – bit
S:2/14=0)
0
za 1 za d izvan opsega
1 za d=0 1 za d<0
d=0 ili (samo ako je a=32768)
V=1
uvek 0 uvek 0
1 za d=0
1 za d<0
uvek 0 1 za d izvan opsega
1 za d=0
1 za d<0
9/plc_math
SQR
ABS
SIN
COS
TAN
ASN
ACS
ATN
LN
LOG
operandom)
Square Root
(kvadratni koren)
Absolute (apsolutna
vrednost)
Sine
Cosine
Tangent
Arc Sine
Arc Cosine
Arc Tangent
Natural log
(prirodni logaritam)
Log to the base 10
(dekadni logaritam)
d=
a
uvek 0 1 za d izvan opsega
1 za d=0
1 za d<0
d =|a|
uvek 0 1 samo za =-32768
1 za d=0
uvek 0
d = sin(a)
d = cos(a)
d = tg(a)
d = arcsin(a)
d = arccos(a)
d = artg(a)
uvek 0
uvek 0
uvek 0
uvek 0
uvek 0
uvek 0
1 za d izvan opsega
1 za d izvan opsega
1 za d izvan opsega
1 za d izvan opsega
1 za d izvan opsega
1 za d izvan opsega
1 za d=0
1 za d=0
1 za d=0
1 za d=0
1 za d=0
1 za d=0
1 za d<0
1 za d<0
1 za d<0
1 za d<0
1 za d<0
1 za d<0
d = ln(a)
uvek 0 1 za d izvan opsega
1 za d=0
1 za d<0
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)
CPT
uslov
COMPUTE
Dest
fn:w
expression
Dest - rezultat
expression - aritmetički izraz koji ima najviše 255
zbnakova raspoređenih u linijama. Svaka linija može
da ima najviđe 28 znbkova
fn:w - adresa promenljive ili simboličko ime
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)
10/plc_math
Ovom naredbom se ostvaruje linearno preslikavanje ulazne promenljive,
prema relaciji
scaled_out put =
scaled_max . - scaled_min .
× (input - input_min. ) + scaled_min .
input_max. - input_min.
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
Sl. 11 Grafička ilustracija skaliranja (SCP) 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.
y - y1
(x - x 1 ) + y 1
y= 2
x 2 - x1
•
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:
a
y=
x+b
10000
Sl. 12 Grafička ilustracija skaliranja (SCL)
rezultata negativan.
Dest =
Rate
× Source + Offset
10000
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
11/plc_math
•
RMP – Ramp instruction (generisanje signala)
RMP
uslov
RMP
Control
fn:w
Dest
fn:w
Control - početna adresa upravljačkog bloka sa
podacima koji određuju signal
Dest - rezultat
fn:w - adresa promenljive ili simboličko ime
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
t
y = (y b − y a ) ×
+ ya
Pri tome se vreme izražava kao multipl
ts
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.
•
⎛ t −t⎞
⎟ + ya
y = ( y b − y a ) × ⎜⎜1 − s
t s ⎟⎠
⎝
⎛ t ⎞
y = ( y b − y a ) × ⎜⎜ ⎟⎟ + y a
⎝ ts ⎠
2
2
y
«S»
yb
ya
ts
t(sec)
2
⎧
⎛ t ⎞
⎪
( y b − y a ) × 2 × ⎜⎜ ⎟⎟ + y a
⎪⎪
⎝ ts ⎠
y=⎨
2⎤
⎡
⎪( y − y ) × ⎢1 − 2 × ⎛⎜ t s − t ⎞⎟ ⎥ + y
a
a
⎜ t ⎟ ⎥
⎪ b
⎢
⎝ s ⎠ ⎦
⎪⎩
⎣
0 ≤ t ≤ ts / 2
ts / 2 > t > ts
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
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)
13/plc_math
•
MVM – Masked move (postavljanje vrednosti pojedinih bitova)
MVM
uslov
MASKED MOVE
Source
fn:w
Mask
fn:w
Dest
fn:w
Source - prvi operand (adresa promenljive)
Mask - maska (promenljive ili konstanta)
Dest - rezultat (promenljive)
fn:w - adresa promenljive ili simboličko ime
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).
Sl. 15 Generisanje testerastog signala
Pri formiranju programa bilo je neophodno i da se definišu vrednosti pojedinih
14/plc_math
reči u upravljačkom bloku koji je smešten od
početne adrese N7:0. Odabrano je da se
yb=100
generiše nagibni signal (kod 00, bitovi 0 i 1 u reči
N7:0) sa vremenskom bazom od 1 sekunde (kod
ya=0
1, bit 4 u reči N7:0). Otuda reč nula u
t(sec) upravljačkom bloku ima decimalnu vrednost 16.
ts
Trajanje signala je postavljeno na 100 sekundi
=100
(N7:1). Početno vreme je nula (N7:3), dok je
Sl. 16 Generisani testerasti signal
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
y
Naredbe za konverziju
Sl. 17 Opšti oblik naredbi za konverziju
Kod
DEG
RAD
TOD
FRD
DCD
ENC
Ime naredbe
Operacija
C – bit
Postavlja indikatorske bitove
V – bit
Z – bit S – bit
d = (180/π) a
1 za prekoračenje 1 za
Radians to degrees
(pretvara radiane u
uvek 0
1 za d<0
opsega
d=0
(radiani u stepene)
stepene)
d = (π/180) a
Degrees to radians
1 za prekoračenje 1 za
1 za d<0
(pretvara stepene u
uvek 0
(stepenei u radiane)
opsega
d=0
radiane)
To BCD
pretvara 16-bitni ceo broj u
1 za
uvek 0 1 za d > 9999
1 za d<0
(u BCD kod)
4-oro cifreni BCD broj
d=0
From BCD
pretvara 4-oro cifreni BCD
1 ako a nije BCD 1 za
uvek 0
uvek 0
ili je d > 32767
d=0
(iz BCD koda)
broj u 16-bitni ceo broj
dekodira prva 4 bita
Decode 4 to 1 of 16
operanda u ceo broj čiji
ne menja bitove
(dekodiranje 4 – 16)
samo 1 bit ima vrednost 1
kodira operand (ceo broj)
1 ako operand
1
za
Encode 1 of 16 to 4 čiji samo 1 bit ima vrednost
nije ispravan
uvek 0
uvek 0
(kodiranje 16 – 4) 1 u poslednja 4 bita
d=0
(ne postavlja
rezultata
S:5/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
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
Sl. 18 Ilustracija BCD koda
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
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
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
Sl. 22 Ilustracija SWAP naredbe na dužini od jedne reči
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:
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
ρ = x 2 + y2
( ρ = x 2 + y 2 ), kao i ugao koji radijus zaklapa
sa apscisnom osom ( α = arctg( y / x ) (Sl. 23).
Dobijeni podaci se smeštaju u memoriju
Sl. 23 Grafička ilustracija potrebnih
PLC-a na adrese F8:2 i F8:3, čija su simbolička
izračunavanja
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.
⎛ y⎞
α = arctg⎜ ⎟
⎝x⎠
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.
19/plc_math
Sl. 24 Leder program za izračunavanje rastojanja i ugla koji koristi elementarne naredbe
20/plc_math
Sl. 25 Leder program za izračunavanje rastojanja i ugla
⇒ 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.
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.
Sl. 26 Transformacije analognih ulaznih signala
• 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
− e min
e
e = max
( v − v min ) + e min
v max − v min
• 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
− c min
c
c = max
(e − u min ) + c min ,
u max − umin
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 = f ( v ) ⇒ v = f −1(e) , pri čemu se
veličina e dobija inverznom transformacijom iz celobrojne veličine c
22/plc_math
− u min
u
e = max
(c − c min ) + u min
c max − c min
Ukoliko je funkcija f linearna tada se fizička veličina određuje prema relaciji
− v min
v
v = max
(e − e min ) + v min
e max − e min
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
− v min
v
v = max
(c − c min ) + v min
c max − c min
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
1700 − 250
(c x − 3277 ) + 250 = 0,11c x − 112,53
16384 − 3277
.
1700 − 250
(c y − 3277 ) + 250 = 0,11c y − 112,53
y=
16384 − 3277
x=
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.
23/plc_math
Sl. 27 Leder program kojim se transformišu analogni signali u fizičke veličine
⇒ Transformacija izlaznih analognih signala
Zadatak
Podaci o rastojanju i nagibnom uglu nekog objekta nalaze se u memoriji PLCa 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
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).
Sl. 28 Transformacije analognih izlaznih signala
• 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
− e min
e
e = max
( v − v min ) + e min
v max − v min
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
e=
e max − e min
( v(%) − v min (%)) + e min
100 − v min (%)
• 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
− c min
c
c = max
(e − u min ) + c min
u max − umin
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
25/plc_math
− c min
c
c = max
( v − v min ) + c min ,
v max − v min
odnosno
c=
c max − c min
( v(%) − v min (%)) + c min
100 − v min (%)
• 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
ρ = x2 + y2
;
⎛y⎞
α = arctg⎜ ⎟
⎝x⎠
vidi se da su minimalna i maksimalna vrednost rastojanja i ugla
2
2
,
ρmin (m) = x min
+ y min
⎛x
α min (rad) = arctg⎜⎜ min
⎝ y max
⎞
⎟⎟ ,
⎠
2
2
ρ max (m) = x max
+ y max
⎛x
α max (rad) = arctg⎜⎜ max
⎝ y min
⎞
⎟⎟
⎠
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
eρ =
8−2
(ρ − ρ min ) + 2
ρ max − ρ min
S obzirom na prirodu izvršnog organa, veličinu
ugla α(rad) treba prvo pretvoriti u procenat od
maksimalne vrednosti ugla
α p (%) =
α
α max
100
Električni signal koji odgovara vrednosti ugla dobija se
prema relaciji
Sl. 29 Adrese i simbolička imena
8−2
(α p (%) − α p min (%)) + 2
eα =
internih promenljivih
100 − α p min (%)
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
26/plc_math
cρ =
32764 − 0
(e ρ − 0) + 0
10 − 0
;
cα =
32764 − 0
(e α − 0) + 0
10 − 0
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).
27/plc_math
Sl. 30 Leder program za formiranje analognih izlaznih signala
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.
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.
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
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:
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.
EN – Enable bit
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
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.
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
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
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.
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
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
11/plc_block_data
tako što on dobija vrednost pointera pre otpočinjanja izvršavanja naredbe.
⇒ Pražnjenje steka
Stek
pre
posle
prve LFU
naredbe
205
dest
204
e
203
d
d
202
c
c
c
201
b
b
b
bazna adresa
200
steka
a
a
a
pointer=5
pointer=4
pointer=3
pointer=4
pointer=3
pointer=2
prva LFU
naredba
druga LFU
naredba
trećaLFU
naredba
pre
izvođenja
UNLOAD LIFO
naredbe
u toku i posle
Sl. 7 - Ilustracija izvršavanja naredbe za pražnjenja LIFO steka
Sl. 8 - Ilustracija izvršavanja naredbe za pražnjenja FIFO steka
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
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.
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
uslov i
se pojedini rangovi posebno označe. Međutim, ukoliko se
akcija
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
Sl. 1 Simbol i položaj labele u
naredbe ostvaruje se pomoću simboličkog imena – labele
rangu
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.
lbl
•
JMP – Jump (skok)
jmp
uslov
lbl
Sl. 2 Simbol i položaj naredbe
za 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
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)
JSR
uslov
JUMP TO SUBROUTINE
SBR file number
Sl. 3 Simbol i položaj naredbe za poziv potprograma
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
SUBROUTINE
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
Sl. 4 Simbol i položaj naredbe za
kategoriji naredbi uslova, što znači da se postavlja
identifikaciju potprograna
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.
SBR
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
RET
potrpogram ima više različitih završetaka u
uslov
RETURN
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
Sl. 5 Simbol i položaj naredbe za izlazak iz
neposredno iza JSR naredbe. Jedina razlika
potprograma
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. 6 Učaureni potprogrami
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
Sl. 7 Simbol i položaj naredbe za
prekid programskog sken ciklusa
•
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
Sl. 8 Simbol položaj naredbe za suspenziju
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
MCR
uslov
naredbe u MCR zoni
END
MCR
Sl. 9 Simbol i položaj MCR
naredbe
programa na više putanja.
nekim procesom koji radi
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
Tako, na primer, ukoliko se realizuje program koji upravlja
sa različitim recepturama, svaka od receptura se može
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
Sl. 10 Simbol i položaj naredbe za trenutno ažuriranje ulaznih ili izlaznih linija
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
Sl. 11 Simbol i položaj
naredbe za ažuriranje svih
podataka
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
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.
3
vreme
glavni
program
Skok na servisni
potprogram
Servisni
potprogram
dogadjaj
4
n
naredbe
7
oprema
Povratak na
sledeću naredbu
glavnog
programa
operater
5
1
CPU
pamti
2
Memorija
(stek)
Programski brojač (PC)
registri
6
vraća
Sl. 12 Realizacija sistema prekida
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;
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
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.
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
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
11/plc_tok
Sl. 16 Servisni potprogram koji obrađuje grešku čiji je kod 0034h
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.
12/plc_tok
Sl. 17 Glavni program koji generiše greške
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
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).
Sl. 18 Šematski prikaz izvršavanja DII prekida
⇒ 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.
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.
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.
Sl. 19 Šema vezivanja senzora i izvršnog organa
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).
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).
Sl. 20 Servisni potprogram koji obrađuje reakciju na događaj
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
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 .
Sl. 21 Šematski prikaz izvršavanja STI prekida
⇒ 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
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
STS
naredba
će prouzrokovati resetovanje
Selectable Timed Start
uslov
internog
časovnika
i
upisivanje
File
nn
podataka
o
adresi
servisnog
Time
tt
potrpograma i perioda prekida u reči
S:31 i S:30 (čime se briše prethodni
File – broj servisnog potprograma
sadržaj tih reči). Posle izvršavanja ove
Time – period prekida
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
STE
istinit, ova naredba postavlja STI enable
Selectable Timed
bit
S:2/21,
čime
se
omogućava
uslov
Enable
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
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.
Sl. 22 Određivanje proteklog vremena
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.
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).
Sl. 23 Glavni program za primer korišćenja STI prekida
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
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
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
Specijalni
moduli
Prog. File n
(servisni
potprogram)
Prog. File 2
Prekid
Pamti
S:0 mat. indikatori
S:13,14 mat. reg.
S:24 indeks reg.
S:25 S:26
ažurira
interni
časovnik
S:44
t (m 10 s)
Pending bits
S:11
S:12
slot enable
S:27
S:28
interrupt enable
S:32 I/O executing slot
Sl. 25 Šematski prikaz izvršavanja I/O prekida
⇒ 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
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.
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.
1/plc_pid
Naredba za realizaciju proporcionolno-integralnodiferencijalnog 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)
t
⎤
⎡
1
u( t ) = K p ⎢1 + ∫ e( τ)dτ + Td f ( y )⎥ + of
⎥⎦
⎢⎣ Ti 0
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
s
;
G d ( s) =
1 + sTd / N
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
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.
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
s
-s
s = max min (y - y min ) + smin SCL naredba
y max - y min
Rate
s=
y + offset
10000
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)
s
-s
s = max min (y - y min ) + smin
y max - y min
• 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
4/plc_pid
t
-t
t = max min (s - s min ) + t min
s max - s min
analogni ulaz
4 – 20mA
analogni izlaz
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
T. 1 Parametri za skaliranje standardnih ulaznih i izlaznih signala pomoću SCP naredbe
□ 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
u
-u
u = max min (c - c min ) + u min SCL naredba
c max - c min
Rate
c + offset
10000
Parametri konverzije za standardne tipove strujnih i naponskih izlaznih signala dati su u
tabelama T. 1 i T. 2.
u=
analogni ulaz
4 – 20mA
analogni izlaz
0 – 5V
0 – 10V
Rate/10 000
12499
10000
offset
−4096
0
4 – 20mA
5000 Rate/10 000
0 offset
0 – 5V
0 – 10V
15239
10000
19999
6242
0
0
T. 2 Parametri za skaliranje standardnih ulaznih i izlaznih signala pomoću SCL naredbe
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.
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
6/plc_pid
⇒ Struktura PID Control Block-a
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
DN
PV
SP
LL
UL
DB
DA
TF
SC
RG
OL
CM
AM
TM
reč 0
EN
reč 1
PID Sub Error Code (Msbyte)
reč 2
Setpoint SP
reč 3
Kp
reč 4
Ti (min/obrt)
reč 5
Td (min)
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)
reč 10
interna upotreba
reč 11
Output Max (CVH)
reč 12
Output Min (CVL)
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
reč 19
interna upotreba
reč 20
interna upotreba
reč 21
interna upotreba
reč 22
interna upotreba
celobrojna vrednost: SMIN do SMAX ili 0 do 16383
(ako SMIN i SMAX nisu definisani)
interpretira se kao
0 −3276.7 (za RG=0) 0 −327.67 (za RG=1)
celobrojna
vrednost:
0 do 32767
interpertira se kao 0 −327.67 min (za Td)
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
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
celobrojna promenljiva (32 bita - dve reči):
do ± 2 174 483 648, ukupna vrednost integralnog dejstva,
ažurira se automatski pri ručnom upravljanju
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
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 setpoint (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
•
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)
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
SLC 5/02
11H
12H
13H
14H
SLC5/03 i više
1. T > 255
1. T > 1024
2. T = 0
2. T = 0
Kc > 255
Kc = 0
Kc < 0
Ti > 255
Ti < 0
Td> 255
Td < 0
Moguća reakcija da se greška ukloni
SLC 5/02
postavi T
0 < T < 255
SLC5/03 i više
postavi T
0 < T < 1024
postavi Kc
0 < Kc ≤ 255
postavi Kc
Kc ≥ 0
postavi Ti
0 < Ti ≤255
postavi Ti
Ti ≥ 255
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
postavi Smin
-16383 < Smin < Smax < 16383
(-32768 do +32767 SLC 5/03 i više)
22H
Smin> Smax
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
41H
Izabrano
skaliranje
Nije izabrano
skaliranje
Deadband< 0 ili
. Deadband>
(Smax –Smin) ili
Deadband>
16383
(5/02)
Deadband< 0 ili
Deadband>
16383
postavi
Smin < SP< Smax ili (ako se nekoristi skaliranje)
0 < SP< 16383
Izabrano skaliranje
Nije izabrano skaliranje
postavi
0 < deadband<(Smax Smin)< 16383
postavi
0 < deadband< 16383
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.
T. 4 Kodovi grešaka koje mogu nastati pri korišćenju PID modula
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
DN
PV
SP
LL
UL
DB
DA
1
TF
SC
1
RG
1
OL
1
CM
0
AM
0
TM
0
reč 0
EN
reč 1
PID Sub Error Code (Msbyte)
reč 2
Setpoint SP
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
20
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)
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
SE = SP − PV
Izgled maske pri definisanju Control blocka u PID naredbi
12/plc_pid
13/plc_pid
Sl. 3 Servisni potrpogram koji u kome se realizuje 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. 4 Širinski modulisan upravljački signal
14/plc_pid
Sl. 5 Realizacija širinski modulisanog impulsa na osnovu izlaza PIDa
Budući da PID daje upravljački signal (c) kao celobrojnu promenljivu u opsegu od
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
cT
u=
16383
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
16383c
CV =
100
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).
16/plc_pid