Academia.eduAcademia.edu

PLC Programmable Logic Controller

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