You are on page 1of 108

PREFA

Lucrarea Automate i Microprogramare reprezint un suport teoretic i practic de proiectare a soluiilor de conducere automat a proceselor industriale utiliznd echipamente de tip automat programabil. Lucrarea este dedicat n primul rnd studenilor facultii de Automatic i Calculatoare din Universitatea Politehnica Bucureti, care audiaz cursul i frecventeaz laboratorul de Automate i Microprogramare. De asemenea este util studenilor din facultile cu profil de automatic aparinnd universitilor tehnice din ar. Cartea este structurat n 4 capitole, n care sunt prezentate cele mai reprezentative tehnici de programare, suportate de majoritatea productorilor de automate programabile industriale: - limbajul grafic Grafcet - diagrame de tip Ladder - limbaje literare de tip Structured Text De asemenea sunt prezentate in detaliu mediile de programare logic avansat ISaGRAF i IndraLogic, fiind descrise pe larg att metodele de dezvoltare a unor proiecte ample ct i detalii despre implementarea interfeelor grafice necesare vizualizrii i supervizrii aplicaiei implementate. Prezentarea funcionrii dispozitivelor de tip automat programabil reprezint baza de cunotine necesare unui viitor inginer automatist n scopul dezvoltrii de sisteme automate performante. Metodele si soluiile originale prezentate n cadrul lucrrii, cum ar fi consideraiile asupra trecerii de la diagrame logice la programe de tip treapt, ajut viitorii specialiti n conceperea unor soluii software corecte indiferent de tipul automatului cu care se lucreaz. Prezentarea detaliat a lucrului cu cele mai noi medii de programare logic, descrierea n amnunt a soluiilor de automatizare pentru procese industriale complexe, cuprinznd programe ciclice, secveniale, ecrane de vizualizare, programe de comunicaie, prezint un grad evident de noutate n literatura tiinific i tehnic din ar. Multe din informaiile si soluiile prezentate n carte nglobeaz experiena i cunotinele colectivului centrului de cercetare de excelen CIMR din cadrul Facultii de Automatic i Calculatoare din Universitatea POLITEHNICA Bucureti. Autorul

CUPRINS
Capitolul 1: CARACTERISTICI I PERFORMANE ALE AUTOMATELOR PROGRAMABILE 1.1. Structura automatelor programabile 1.2. Module de intrare ieire 1.3. Funcionarea automatelor programabile 1.4. Diagrame logice 7 9 11 13

Capitolul 2: DESCRIEREA LIMBAJULUI LADDER DIAGRAM 2.1. Organizarea memoriei i moduri de adresare pentru automatul Allen Bradley 21 2.2. Structura intern a fiierelor de date implicite 23 2.3. Programarea automatului Allen Bradley prin metoda Ladder Diagram 26 2.4. Tipuri de instruciuni 2.5. Dezvoltarea unei diagrame Ladder pornind de la o diagram Grafcet Capitolul 3: MEDIUL DE PROGRAMARE LOGIC ISaGRAF 3.1. 3.2. Structura unui proiect ISaGRAF Descrierea limbajului Sequencial Function Chart 3.2.1. Componente de baz 3.2.2. Divergene i convergene 3.2.3. Pai macro 3.2.4. Operaii n cadrul etapelor 3.2.5. Condiii ataate tranziiilor 3.2.6. Regulile dinamicii limbajului SFC 3.2.7. Ierarhizarea programelor SFC Descrierea limbajului Structured Text 3.3.1. Elemente de sintax n Structured Text 3.3.2. Expresii i paranteze 3.3.3. Apelarea funciilor i procedurilor 3.3.4. Operatori booleeni specifici ST 3.3.5. Instruciuni fundamentale n ST 3.3.6. Extensii ale limbajului ST Operatori, proceduri i funcii standard 3.4.1. Operatori standard 3.4.2. Proceduri standard 3.4.3. Funcii standard Variabile i constante n ISaGRAF 3.5.1. Domeniile variabilelor 3.5.2. Principalele tipuri de variabile 3.5.3. Expresii constante 48 52

29 43

53 55 56 57 60 61 62 63 63 64 64 65 66 69 73 73 76 78 81 81 82 82

3.3.

3.4.

3.5.

Capitolul 4: DESCRIEREA MEDIULUI DE PROGRAMARE INDRALOGIC 4.1. Structura unui proiect IndraLogic 84 4.1.1. Conceptul POU 85 4.1.2. Conceptul Data types 85 4.1.3. Conceptul Vizualization 86 4.1.4. Resursele implicate 86 4.2. Tipuri de date n IndraLogic 87 4.2.1. Tipuri de date predefinite 87 4.2.2. Tipuri de date definite de utilizator 88 4.2.3. Variabile globale 88 4.3. Diferene importante IndraLogic ISaGRAF 89 4.4. Blocuri funcionale 90 4.5. Problematica timpului n IndraLogic 94 4.6. Taskuri i configurarea acestora 98 4.7. Conceptul de vizualizare 101 4.8. Configurarea unui proiect pentru simulare pe calculator 106 4.9. Configurarea comunicaiei cu automatul BOSCH-Rexroth IndraControl L40 110 BIBLIOGRAFIE 113

CAP 1. CARACTERISTICI I PERFORMANE ALE AUTOMATELOR PROGRAMABILE

Un AP (Automat Programabil) este un dispozitiv aprut pentru a nlocui releele i schemele secveniale necesare pentru controlul sistemelor automate [Borangiu, 1986]. Principiul de baz al unui AP este urmtorul: verific starea intrrilor i, n funcie de acestea, activeaz sau dezactiveaz ieirile. Utilizatorul introduce un program, care face ca automatul s dea rezultatele dorite.

1.1. Structura automatelor programabile


Un AP este compus n principal din: unitate central (UC), zon de memorie i circuite pentru recepionarea datelor de intrare/ieire (fig. 1.1). Putem considera AP-ul ca o cutie plin de relee individuale, numrtoare, ceasuri i locaii de memorare a datelor. n general componentele unui automat programabil sunt: Unitate central Module de intrare / ieire Regitri de intrare / ieire Memorie de date Regitri interni Circuite de temporizare Circuite de numrare

Fig. 1.1. Structura unui automat programabil

Funcionarea lor este urmtoarea: Unitatea central: conine un procesor, o unitate de calcul aritmetic i diferite tipuri de memorie. Gama de procesoare folosite de ctre productorii de automate programbile este foarte diversificat, cteva exemple ar putea fi procesoarele Motorola, Intel, Siemens. Procesoarele folosesc o memorie de lucru de tip RAM pentru execuia instruciunilor, programul de executat fiind de obicei memorat ntr-o memorie de tip Flash. Dimensiunile memoriilor difer de la un tip de automat la altul, influennd performanele i costul automatului programabil. Module de intrare: conin unul sau mai multe circuite de intrare. Acestea exist fizic, sunt conectate la lumea exterioar i recepioneaz semnale de la comutatoare, senzori etc. Semnalele citite pot fi de dou tipuri, digitale sau analogice. De regul circuitele de intrare sunt implementate cu relee sau tranzistori. Module de ieire: conin unul sau mai multe circuite de ieire. Acestea exist fizic, sunt conectate la lumea exterioar i transmit semnale digitale sau analogice ctre diferite elemente de execuie. Ca variant constructiv pot fi alei tranzistorii, releele sau triacele. Regitri de intrare: sunt regitri asociai intrrilor fizice. Valoarea semnalelor de intrare este convertit n form binar de ctre circuitele de intrare i memorat n aceti regitri. Pentru intrrile de tip digital,

un singur bit dintr-un registru poate memora starea activ/inactiv a intrrii, dar n cazul unei intrri analogice sunt necesari mai mult bii pentru memorarea valorii n format numeric. Regitri de ieire: sunt regitri asociai ieirilor fizice. Valoarea semnalelor de ieire este scris aici n form binar, coversia ntr-un semnal electric de o anumit valoare fiind facut de ctre circuitele de ieire (convertoare digital analogice). Pentru ieirile de tip digital, un singur bit dintr-un registru poate memora starea activ/inactiv a ieirii, dar n cazul unei ieiri analogice sunt necesari mai mult bii pentru scrierea valorii n format binar. Regitri interni : nu recepioneaz semnale din mediul extern, nici nu exist fizic. Conin relee simulate prin bii din regitri i au fost introduse pentru a elimina releele interne fizice. Exist i regitri speciali care sunt dedicai unui anumit scop. Unele relee sunt intotdeauna deschise, altele sunt ntotdeauna nchise. Unele sunt deschise numai o dat la pornire i sunt folosite pentru iniializarea datelor memorate. Numrtoare: Nici acestea nu exist fizic. Sunt numrtoare simulate i pot fi programate s contorizeze impulsuri. De obicei, aceste numrtoare pot numra cresctor, descresctor i n ambele sensuri. Anumii productori includ i numrtoare de mare vitez implementate hard, pe care am putea s le considerm ca existente fizic. i acestea pot numra cresctor, descresctor sau n ambele sensuri. Circuite de temporizare : Nici circuitele de temporizare nu exist fizic. Sunt simulate software i contorizeaz perioade de timp. Pot fi gsite n diverse variante n ceea ce privete parametrii. Pasul de incrementare variaz de la 1ms pn la 1s. Memoria de date: n mod normal este vorba de simpli regitri care memoreaz date. De obicei sunt folosii pentru aplicaii matematice sau pentru manipularea datelor. Pot fi folosii i pentru memorarea datelor ct timp AP-ului i se ntrerupe alimentarea. La pornire, vor avea acelai coninut ca nainte de oprire.

1.2. Module de intrare ieire


Exist o mare varietate de module de intrare ieire ce pot intra n componena unui AP. Exist dou categorii mari de module:

1. Module I/O analogice: semnalul pe care l transmit sau l recepioneaz are o valoare analogic 2. Module I/O digitale: semnalul este de tip digital, putnd avea doar dou valori. n funcie de mrimile fizice citite sau de semnalele transmise, iat cteva exemple de module ce pot fi ataate unui AP: intrri/ieiri de curent continuu intrri/ieiri de curent alternativ intrri/ieiri de tensiuni continue sau alternative module de citit temperaturi module de reglare PID module de control Fuzzy

Intrri de curent continuu

Sunt disponibile circuite care funcioneaz la 5, 12, 24 i 48 de voli. Modulele de intrare permit conectarea unor dispozitive de tip tranzistor PNP sau NPN. n cazul unui comutator nu se pune problema conectrii de tip NPN sau PNP. Fotocuploarele (optocuploarele) sunt folosite pentru a izola circuitele interne ale AP-ului de intrri. Acest lucru este necesar pentru a elimina zgomotele i se realizeaz prin conversia semnalului de intrare din form electric n form luminoas i apoi invers.

Intrri de curent alternativ

Modulele de intrare obinuite funcioneaz la 24, 48, 110, 220 voli. Dispozitivele legate la intrarea de curent alternativ sunt sesizate mai greu de ctre AP. De cele mai multe ori acest lucru nu are importan pentru cel care programeaz automatul programabil, dar este bine de tiut c se pierde timp din cauz c dispozitivele pe baz de curent alternativ sunt de obicei dispozitive mecanice, care sunt mai lente. n plus apare i o ntrziere de cel puin 25 ms datorit filtrrii care are loc la intrarea n AP. De reinut c APurile funcioneaz la cel mult 5 VCC.

Ieiri cu relee

Ieirile cele mai obinuite sunt cele de tip releu. Releele pot fi folosite att cu sarcin de curent alternativ, ct i continuu. Metoda standard

de conectare a sarcinilor la ieirile AP-ului presupune folosirea unei surse de curent alternativ, ns poate fi folosit i curentul continuu. Releele se afl n interiorul automatului programabil. Atunci cnd programul care ruleaz n automat indic ieirii s devin activ (adevarat), AP-ul va aplica o tensiune bobinei releului, care va nchide contactul corespunztor. La nchiderea contactului ncepe s circule curent prin circuitul extern. Atunci cnd programul indic dezactivarea ieirii, AP-ul va ntrerupe tensiunea aplicat bobinei releului, circuitul extern va fi deschis, deci inactiv.

1.3. Funcionarea automatelor programabile


Automatele programabile funcioneaz scannd (executnd) continuu un program. Putem spune c un ciclu de scanare are trei pai importani (fig. 1.2).

Fig. 1.2. Ciclul de funcionare al unui automat programabil

Pasul 1 - TESTAREA INTRRILOR - AP-ul cerceteaz starea intrrilor (activ/inactiv n cazul intrrilor numerice sau valoarea unei intrri analogice) i o copiaz, n form binar, n anumii regitri asociai intrrilor. Pasul 2 - EXECUTAREA PROGRAMULUI - AP-ul execut programul instruciune cu instruciune. n funcie de starea intrrilor si de logica programului, schimb configuraia registrilor de ieire, n form binar. Pasul 3 - ACTIVAREA IEIRILOR - n final AP-ul actualizeaz i starea ieirilor fizice pe baza strii ieirilor rezultate din pasul anterior.

Dup cel de-al treilea pas, AP-ul revine la pasul 1 i reia ciclul. Un ciclu de scanare este definit ca timpul n care se execut cei trei pai de mai sus. De fapt sunt mai mult de trei pai, mai au loc verificarea sistemului i actualizarea valorilor curente ale ceasului i numrtorului intern. Timpul de rspuns Timpul total de rspuns este un parametru important al unui automat programabil. Unui automat programabil i trebuie un anumit timp pentru a reaciona la schimbrile valorilor de intrare. n unele aplicaii viteza nu este important, n altele da.

AP-ul poate vedea dac o intrare este activ sau inactiv doar dac o citete. Cu alte cuvinte, el testeaz intrrile doar n poriunea corespunztoare a ciclului de scanare (fig. 1.3).

Fig. 1.3. Situaii posibile de variaie a intrrilor

n diagrama de mai sus, intrarea 1 nu este vzut nainte de ciclul 2. Acest lucru se ntmpl deoarece atunci cnd s-a activat intrarea 1, ciclul 1 terminase deja de testat intrrile. Intrarea 2 nu este vzut nainte de ciclul 3. Acest lucru are loc deoarece ciclul 2 deja terminase de testat intrrile.

Intrarea 3 nu este vzut niciodat, deoarece cnd ciclul 3 testa intrrile, semnalul 3 nu era inc activ, iar la nceputul ciclului 4 era deja inactiv. Pentru a evita acest lucru trebuie ca intrarea s fie activ pentru cel puin un timp de rspuns la intrare + un timp de scanare. Dac nu este posibil ca intrrile s fie active att de mult timp, AP-ul nu mai poate citi intrrile active nemaiputnd implementa corect o aplicaie de control. Exist o cale de a rezolva acest neajuns (mai precis dou): Funcia de extindere a impulsului. Aceast funcie extinde lungimea (durata) unui semnal de intrare pn la momentul la care AP-ul testeaz intrrile, n ciclul urmtor. Funcia de ntrerupere. Aceast funcie ntrerupe ciclul de scanare pentru a rula o rutin special scris de utilizator. Cnd se activeaz o intrare, indiferent de starea ciclului de scanare, AP-ul oprete execuia programului principal i execut rutina de ntrerupere (fig. 1.4). O rutin poate fi privit ca un mini-program n afara programului principal. Dup ce a terminat execuia rutinei de ntrerupere, se ntoarce n punctul n care se oprise i continu normal procesul de scanare.

Fig. 1.4. Extinderea impulsului prin ntrerupere

1.4. Diagrame logice


Datorit diversitii firmelor productoare i tipurilor de automate programabile, exist mai multe variante de programare a unui automat programabil, dintre care pot fi amintite: Programarea cu ajutorul limbajelor grafice, de tip Grafcet sau ISaGRAF

Programarea prin diagrama Ladder Programarea n limbaje de nivel nalt (C, Pascal)

Limbajul Grafcet Limbajul Grafcet reprezint o modalitate de descriere grafic a unui sistem logic secvenial, fiind util datorit generalitii i facilitilor de care dispune, spre exemplu posibilitatea descrierii secvenelor paralele [Arzen, 1994]. Elementele constitutive ale unei diagrame Grafcet sunt urmtoarele:

Etape: corespund unei stri stabile a sistemului automat i sunt identificate printr-un numr unic.

Fig. 1.5. Etape Grafcet

Etapele pot fi: iniiale: aceste etape sunt active iniial (etapa 1 din fig.1.5). normale: sunt celelalte etape care nu sunt active iniial (prima etap 3 din fig.1.5). Ele se pot activa la un moment dat (etapa 3 cu un punct ataat din fig.1.5).

Tranziii: o tranziie indic posibilitatea evoluiei dintr-o stare activ ntr-o nou stare. Fiecrei tranziii i este asociat o condiie logic, n funcie de valorile logice ale unor variabile de intrare sau de starea activ sau inactiv a altor etape. Condiia de tranziie nu este validat dect dac etapele imediat precedente sunt active.

Fig.1.6. Diferite reprezentri de tranziii

Aciuni asociate etapelor: deoarece o etap poate fi activ sau inactiv la un moment dat, exist aciuni asociate etapelor, care se execut numai la activarea acestora. Pot exista i aciuni condiionate, ce se execut dac, suplimentar, mai este adevarat nc o condiie logic. Aciunile pot fi diverse: deschiderea unei vane oprirea sau pornirea unui motor (fig.1.7) incrementarea unui contor pornirea unei temporizri

Fig.1.7. Comanda unui motor

Ramificaii (divergene): au loc ntre mai multe secvene posibile, atunci cnd condiiile de tranziie se exclud ntre ele. Convergena diferitelor ramuri are loc atunci cnd sunt ndeplinite condiiile de tranziie pe fiecare ramur. Se pot stabili prioriti dac nu se exclud condiiile de tranziie.

Fig.1.8. Ramificaie (divergen)

Secvene simultane (paralelism): mai multe secvene pot fi activate simultan, plecnd de la o condiie de tranziie. Evoluia, pe fiecare ramur, se efectueaz simultan. Jonciunea nu se poate efectua dect atunci cnd toate secvenele sunt terminate.

Fig.1.9. Secvene simultane (paralelism)

Macro-etape: macro-etapa este o reprezentare unic a unui ansamblu de etape i de tranziii. Sunt caracterizate de o etap iniial i una final. Etapa iniial se supune regulilor cunoscute. Etapa final nu poate avea aciuni asociate. Ct timp macro-etapa este activ, evoluia Grafcet-ului respect regulile obinuite de evoluie. Macro-etapa devine activ cnd etapa anterioar etapei iniiale este activ i condiia de tranziie a sa devine adevarat. Ea este dezactivat cnd etapa final este activ i condiia de tranziie asociat este adevrat. Strile unei macro-etape pot fi: de repaus: nicio etap component nu este activ activ: cel puin o etap component este activ, n afar de etapa final de sfrit: etapa final este activ.

O macro-etap poate conine una sau mai multe etape iniiale. Aceste etape pot fi activate la punerea sub tensiune sau prin program. Dinamica unei diagrame Grafcet este urmtoarea: dac o etap este activ i una din condiiile de tranziie ataate este adevrat, etapa actual se dezactiveaz i se activeaz etapa urmtoare (sau etapele urmtoare, n cazul unui paralelism). Un exemplu de diagram Grafcet este prezentat n fig. 1.10.

Fig.1.10. Exemplu de diagram Grafcet

Ladder Diagram Cea mai raspndit modalitate de construire a unui program ce va fi executat de ctre un automat programabil este varianta construirii unei diagrame n trepte, numit Ladder diagram. O astfel de diagram este format din ramuri, pe fiecare ramur existnd instruciuni specifice automatului respectiv. ntruct instruciunile pot fi mprite n dou mari categorii, de intrare i de ieire, pe orice ramur trebuie s existe cel puin o instruciune de ieire. Fiecare instruciune are asociat un simbol grafic. Instruciunile folosite ntr-o diagram Ladder vor fi descrise n capitolul 2. Programarea n limbaje de nivel nalt n ultima vreme a existat o puternic preocupare pentru integrarea performanelor de conducere i control a automatelor programabile cu posibilitaile de calcul i de memorie ale calculatoarelor personale. De aceea majoritatea automatelor programabile posed un port de comunicaie cu un PC, de tip RS-232 sau RS-485, putndu-se stabili o legatur cu PC-ul chiar n timpul execuiei unui program de ctre AP. De asemenea, pentru a profita de larga rspndire a limbajelor de nivel nalt, cum ar fi C sau Pascal, unii productori au echipat AP-urile cu procesoare compatibile INTEL, acestea putnd executa setul de instruciuni

al procesoarelor Intel, extins cu instruciuni specifice automatelor programabile. n plus muli productori au dezvoltat compilatoare C pentru procesoarele pe care le folosesc n automatele programabile. Exist dou variante de construire a unui program n limbaj de nivel nalt. Prima variant const n crearea unui program n limbajul de programare C (Borland sau Microsoft), integrnd funciile specifice de automat programabil i funciile de comunicaie ntre calculator i automat. n acest caz programul ruleaz n calculator, acesta dnd permanent comenzi controllerului i primind rspunsuri n legatur cu executarea acestora. Avantajul unui astfel de program ar fi capacitatea mare de memorie i puterea de calcul a unui calculator personal i deci posibilitatea crerii unor module software complexe folosind numeroase variabile. Atunci cnd un numr mare de automate sunt legate mpreun la un singur calculator, timpul necesar computerului s primeasc i s proceseze toate informaiile de I/O poate produce scderea semnificativ a rspunsului sistemului, fcnd astfel dificil controlul procesului. Pentru a evita acest neajuns, programele trebuiesc implementate n fiecare automat i rulate independent de computer. Aceast capabilitate de partajare a aciunilor permite utilizatorului s determine ce decizii de control vor fi luate de computer i care de ctre automat. Aceast facilitate poate elibera calculatorul pentru a efectua operaii de supervizare cum ar fi mprosptarea ecranului, generarea de rapoarte sau monitorizarea performanelor sistemului. Din acest motiv reiese i utilitatea celei de-a doua variante, de altfel i cea mai des uzilizat, care const n crearea unor programe de control ce pot rula direct n memoria automatului. Programele se construiesc i se compileaz n C pe un calculator personal, apoi programul executabil este convertit n formatul de fisier Intel HEX cu ajutorul unui program utilitar, dup care este descrcat n memoria de tip FLASH EPROM a automatului, de unde poate rula de sine stttor. Un oarecare dezavantaj l constituie limitarea dimensiunii codului i a datelor programului. Se obisnuiete construcia a dou module software ce ruleaz simultan, unul n calculator i cellalt n controller. Schimbul de informaii ntre cele dou dispozitive se poate face prin intermediul unor structuri de date definite n ambele module, acestea putnd fi citite/scrise cu funcii specifice.

Setul de instructiuni C specifice automatului programabil de tip Microdac Pentru a putea nelege cum se poate construi un pachet software de control n limbajul C, va fi prezentat pe scurt o parte a coleciei de funcii specifice lucrului cu modulele de intrare/iesire pentru un automat programbil de tip Microdac, construit de firma Grayhill. Aceste funcii sunt implementate cu ntreruperi disponibile din Microdac [Grayhill, 1995].

Uint md_read_dio_status(Uchar group) citete starea de ON/OFF a unui grup de module digitale
char md_read_dio_point(Uchar point) citete starea de ON/OFF a unui singur modul digital void md_write_dout(Uint value0, Uint value1) nscrie toate ieirile digitale (max. 32) printr-un singur apel char md_activate_dout_point (Uchar point) activeaz o singur ieire digital char md_deactivate_dout_point (Ucaher point) dezactiveaz o ieire digital Uint md_read_ain(Uchar chanel) citete valoarea unei intrri analogice void md_write_aout(Uchar channel, Uint value) seteaz ieirea analogic channel cu valoarea value void _md_delay (Uint msec) oprete execuia programului pentru un numr dat de milisecunde Ulong md_get_counter (void) ntoarce valoarea timer-ului void md_set_counter (Ulong counter) seteaz timer-ul cu valoarea count Uchar md_get_ctr_res (void) ntoarce rezoluia curent a timer-ului care poate fi 1ms sau 500s

Aceste funcii sunt definite ntr-o bibliotec specific Mdac.lib i nu pot fi apelate dect din automat. Exist funcii analogice, definite n fiierul header "proware.h" ce pot fi apelate din programul calculatorului, dar viteza de execuie este evident mult mai sczut. Schimbul de date cu calculatorul este realizat prin apelarea unei funcii speciale
proware(&err, &addr, &cmd, posn, mod, pointer)

Capitolul 2. DESCRIEREA LIMBAJULUI LADDER DIAGRAM

n acest capitol sunt prezentate pricipalele caracteristici ale automatelelor programabile produse de firma Allen Bradley, ntruct aceste tipuri de automate sunt recunoscute pentru performanele i fiabilitatea lor, ocupnd un important segment de pia n domeniul sistemelor de control industrial. Structura i programarea acestor automate vor fi prezentate n mod particular pentru modelul SLC500, de uz didactic, principalele caracteristici fiind ns comune tuturor automatelor produse de firma Allen Bradley. Automatul SLC500 prezint o structur standard de automat programabil, cu meniunea c modulele de intrare ieire au n componen n general 16 circuite de intrare sau de ieire, mai multe module putnd fi montate pe rack-uri avnd un numr standard de sloturi: 4, 6 sau 10 module putnd fi ataate unitii centrale. Sloturile sunt numerotate, slotul 0 fiind ntotdeauna rezervat unitii centrale, celelalte fiind atribuite modulelor de intrare/ieire. Numrul slotului este important pentru adresarea corect a intrrilor i ieirilor. Automatul dispune de o interfa serial de tip RS-485 prin care pot fi legate mai multe automate ntr-o reea de automate sau, cu ajutorul unui adaptor RS-485 - RS-232, se poate conecta la un computer. Editarea programelor se face cu ajutorul calculatorului personal, prin intermediul unui mediu de programare integrat care permite i transferul programului n memoria automatului, de unde va putea rula. Programarea se face prin metoda Ladder Diagram, realizarea unui program necesitnd cunoaterea organizrii memoriei acestui tip de automat. Programul editat este transformat n instruciuni specifice procesorului din automat i descrcat n memoria automatului. Exist i varianta rulrii programului din memoria calculatorului, dar timpul pierdut cu transferul datelor ntre calculator i controller poate afecta performanele programului. Tipurile de instruciuni folosite ntr-o diagram Ladder sunt practic aceleai indiferent de productorul automatului programabil.

2.1. Organizarea memoriei i moduri de adresare pentru automatul Allen Bradley


La baza adresrii i organizrii memoriei st noiunea de fiier (file). Memoria este mprit n fiiere, care sunt de 2 tipuri: fiiere program fiiere de date Fiecare program creat pentru automatul Allen Bradley are asociate att fiiere program, ct i fiiere de date. Fiierele program sunt numerotate i pot fi maxim 256. Implicit sunt create doar 3 fiiere program i anume: fiierul 0 ce cuprinde informaii referitoare la configuraia hardware a automatului fiierul 1 este rezervat fiierul 2 conine diagrama Ladder realizat de ctre utilizator Celelate posibile fiiere program sunt create numai n situaia n care utilizatorul folosete subrutine. Fiierele de date conin informaii asociate cu intrrile i ieirile (externe) precum i cu toate celelalte instruciuni care compun diagrama Ladder. n plus, ele mai conin informaii cu privire la operaiile procesorului. Fiierele de date sunt numerotate i pot fi maxim 256. Implicit sunt create primele 10 fiiere. Fiecare fiier conine maxim 256 elemente formate din 1 sau 3 cuvinte. Structura acestor fiiere de date este prezentat mai jos: 0: Imagine ieiri: conine valorile intrrilor n format binar 1: Imagine intrri: conine valorile ieirilor n format binar 2: Stare: conine informaii de stare 3: Bit: utilizat de catre instructiunile pe bit 4: Timer: utilizat de ctre instruciunile de temporizare (timer) 5: Counter: utilizat de ctre instruciunile de numrare (counter) 6: Control: utilizat n instruciuni de stiv, shiftare, secveniere etc. 7: ntregi: folosit de catre instruciunile care au ca parametri operanzi de tip Integer 8: Rezervat 9: Folosit n reea 10 255: pot fi create de utilizator atunci cnd fiierele create implicit nu sunt suficiente i pot fi de tipul Bit, Timer, Counter, Control sau Integer.

n scopul adresrii, diferena ntre fiierele menionate mai sus se face folosind un indicator de fiier (o liter) i un numr al fiierului. Modul de alocare al identificatorului pentru fiecare tip de fiier este urmtorul:

Tabelul 2.1. Adresarea fiierelor de date

Fiierele de date conin elemente. Elementele pot fi de un cuvnt sau de trei cuvinte. Un cuvnt are 16 bii. n consecin este necesar adresarea la nivel de: I) element II) cuvnt III) bit n continuare se vor exemplifica fiecare din cele trei tipuri de adresare : Adresarea la nivel de element: N7:15 N este tipul fiierului 7 este numrul fiierului : este delimitatorul de element 15 este numrul elementului Adresarea la nivel de cuvnt: T4:7.ACC T7:4 au aceeai semnificaie ca n primul caz . este delimitatorul de cuvnt ACC este cuvntul adresat

Adresarea la nivel de bit: B3/15 / este delimitatorul de bit 15 este bitul adresat

2.2. Structura intern a fiierelor de date implicite


Fiierele de imagine ale intrrilor i ieirilor Biii din aceste fiiere corespund ieirilor i intrrilor fizice ale automatului. Formatul general de adresare pentru aceste fiiere este: O:s/b respectiv I:s/ unde, O ieire, I intrare, s numrul slotului pe care se gsete modulul de I/O / delimitatorul de bit b numrul intrrii adresate Exemplu: O:4/6 : ieirea 6 de pe slotul 4 I:1/7: intrarea 7 de pe slotul 1

Fiierele de tip Bit Formatul general de adresare pentru aceste fiiere este: Bf:e/b sau Bf/b unde, B identific tipul fiierului f numrul fiierului e cuvntul din cadrul fiierului b bitul adresat Exemplu: B3:1/5 bitul 5 din cuvntul 1 al fiierului de bit B3 B3/18 bitul 18 al fiierului B3 Aceste tipuri de fiiere sunt folosite n cadrul instruciunilor pe bit, prezentate n cap. 2.4.

Fiierele de tip Timer Aceste fiiere conin elemente a cte trei cuvinte, avnd maxim 256 de elemente. Un element tipic are structura din tabelul 2.2:

Tabelul 2.2. Element al fiierului de tip timer

Formatul de adresare este: Tf:e.s sau Tf:e/b unde, T identific tipul fiierului (Timer) f numrul fiierului e elementul din cadrul fiierului s cuvntul din cadrul elementului b bitul adresat Exemplu: T4:0.ACC cuvntul ACC din elementul 0 al fiierului de Timer 4 T4:1/DN bitul DN din elementul 1 al fiierului de Timer 4 Aceste tipuri de fiiere sunt folosite n cadrul instruciunilor timer, prezentate n cap.2.4. Fiierele de tip Counter Aceste fiiere conin elemente de trei cuvinte, avnd maxim 256 de elemente. Un element tipic are structura din tabelul 2.3:

Tabelul 2.3. Element al fiierului de tip Counter

cu semnificaia: CU = Count Up CD = Count Down DN = Done OV = Overflow UN = Underflow UA = Update Accumulated Value Formatul general de adesare este: Cf:e.s sau Cf:e/b, semnificaiile fiind cele de la fiierele de tip timer.

Observaie: Pentru fiierele care au o anumit notaie pentru bii sau cuvinte constituente, adresarea se poate face folosind notaia respectiv. Astfel, de exemplu, C5:0.PRE <=> C5:0.1. Aceste tipuri de fiiere sunt folosite n cadrul instruciunilor de tip counter, prezentate n capitolul 2.4. Fiierele de tip Control Aceste fiiere conin elemente de trei cuvinte, avnd maxim 256 de elemente. Un element tipic are structura din tabelul 2.4:

Tabelul 2.4. Element al fiierului de control

cu semnificaia: EN = Enable EU = Unload Enable DN = Done EM = Stack Empty ER = Error UL = Unload IN = Inhibit FD = Found Formatul general de adresare este Rf:e.s sau Rf:e/b cu semnificaiile deja cunoscute. Aceste tipuri de fiiere sunt folosite n cadrul instruciunilor de tip stiv, shiftare, secveniere, prezentate n capitolul 2.4. Fiierele de tip Integer Acest tip de fiier conine elemente de un cuvnt, maxim 255 de elemente. Formatul de adresare este Nf:e. unde e = 0..255 reprezint numrul elementului. Sunt folosite n instruciuni de comparaie, matematice,etc.

Semnificaia cuvintelor i biilor elementelor va fi prezentat n cadrul capitolul 2.4. unde sunt descrise instruciunile.

2.3. Programarea automatului Allen Bradley prin metoda Ladder Diagram


Programarea automatului Allen-Bradley SLC 500 se face folosind limbajul Ladder Diagram. Programul ncrcat n memoria automatului conine instruciuni; o parte din aceste instruciuni determin lucrul cu dispozitive de intrare/ieire externe. Un program n Ladder Diagram este o niruire de ramuri. ntruct instruciunile pot fi mprite n dou mari categorii, de intrare i de ieire, pe orice ramur trebuie s existe cel puin o instruciune de ieire. Fiecare instruciune are asociat un simbol grafic i o valoare logic TRUE sau FALSE.

Fig. 2.5. Structura unei ramuri Ladder Diagram

n partea stng se gsesc instruciuni de intrare (una sau mai multe) care formeaz ntotdeauna o expresie logic de intrare. Expresia logic de la intrare este alcatuit din operatori logici (I, SAU). n partea dreapt se gsesc instruciuni de ieire, una sau mai multe. Efectul instruciunii de ieire depinde de valoarea logic a expresiei de la intrare. Executarea ramurilor: se calculeaz expresia logic a instruciunii de intrare se execut instruciunea de ieire n funcie de valoarea logic a expresiei de la intrare. tot aa ramur cu ramur Programul este executat ciclic, deci se trece la scanarea primei ramuri dup scanarea ultimei ramuri. n cazul unui bloc AND se poate face reprezentarea grafic:

C = A AND B

Dac A i B sunt adevrate atunci C devine sau rmne adevrat.

OR (sau logic) poate fi format, de exemplu, prin ramificarea instruciunilor:

C = A OR B

Tabela de adevr pentru acest tip de bloc este prezentat n tabelul 2.6:

Tabelul 2.6. SAU logic ntre dou instruciuni de intrare

Pentru a mri flexibilitatea realizrii programelor, exist posibilitatea de a introduce expresii logice complexe pe o ramur, mrind astfel complexitatea blocului logic generat:

D = ( A AND NOT(B) ) OR C

n mod asemnator poate avea loc i o ramificare a instruciunilor de ieire.

D = (A AND NOT(B)) OR C E = (A AND NOT(B)) OR C F = (A AND NOT(B)) OR C

De asemenea se poate impune i o condiie suplimentar pentru emisia unei anumite ieiri.

F = ((A AND B) OR C) AND E D = (A AND B) OR C

n exemplul precedent, dac (A AND B) AND E sau C AND E sunt adevrate, atunci F este adevrat. Exemplu de diagram Ladder: Prima ramura Ladder prezentat n exemplul urmtor conine dou instruciuni de intrare i o instruciune de ieire. O instruciune de ieire este situat n dreapta ramurii, lng bara vertical dubl. Instruciunile de intrare sunt ntotdeauna situate la stnga instruciunilor de ieire.

Fig.2.7. Exemplu de diagram Ladder

Prima ramur din diagrama de mai sus nu este corect, ntruct conine dou instruciuni de intrare i nici una de ieire. Celelalte ramuri sunt corect editate, cu observaia c ultima ramur are doar o instruciune de ieire, situaie ntlnit doar atunci cnd acea instruciune trebuie executat la fiecare ciclu automat.

2.4. Tipuri de instruciuni


Pentru procesoarele folosite de ctre automatul SLC500, instruciunile folosite n diagramele Ladder se mpart n : instruciuni pe bit instruciuni de tip timer/counter instruciuni de I/O i ntreruperi instruciuni de comparare instruciuni matematice instruciuni logice i de mutare instruciuni pentru lucrul cu fiiere instruciuni de shiftare instruciuni de secveniere instruciuni de control blocuri funcionale n continuare sunt prezentate cele mai utilizate tipuri de instruciuni ntr-o diagram Ladder: Instruciuni pe bit: Toate instruciunile pe bit necesit ca parametru adresa unui bit dintr-un fiier de date. --] [-- XIC (Examine if Close). Instruciune de intrare. Este TRUE cnd bitul testat este 1 (on). --]/[-- XIO (Examine if Open). Instruciune de intrare. Este TRUE cnd bitul testat este 0 (off). --( )-- OTE (Output Energize). Instruciune de ieire. Este TRUE (seteaz bitul de ieire) cnd toate condiiile precedente din ramur sunt TRUE. Reseteaz bitul altfel. --(L)-- OTL (Output Latch). Instruciune de ieire. Bitul adresat devine TRUE (1) cnd condiiile precedente de pe ramur sunt TRUE. Cnd condiiile devin FALSE, OTL rmne TRUE pn

cnd o ramur ce conine o instruciune OTU cu aceeai adres devine TRUE. --(U)-OTU (Output Unlatch). Instruciune de ieire. Bitul adresat devine FALSE (0) cnd condiiile precedente de pe ramur sunt TRUE. Cnd condiiile devin FALSE, OTU rmne FALSE pn cnd o ramur ce conine o instruciune OTL cu aceeai adres devine TRUE. --[OSR]-- OSR (One-Shot Rising). Instruciune de intrare. Trece ramura n TRUE pentru o scanare, la fiecare tranziie din FALSE TRUE a condiiilor precedente din ramur.

OSR este o instruciune de intrare util activrii unei instruciuni de ieire o singur dat i anume la prima scanare a programului de ctre automat. Este des folosit pentru activarea unei etape iniiale dintr-o diagram Grafcet sau pentru testarea tranziiei din starea inactiv in cea activ a unei intrri digitale. Necesit ca parametru adresa unui bit care va fi folosit intern de ctre instruciune, pnetru memorarea starii anterioare (de la ciclul automat anterior) a expresiei de dinaintea ei de pe ramur. Exemplu:

Cnd instruciunea de intrare trece din FALSE (ciclul automat anterior) n TRUE (ciclul automat curent), instruciunea OSR condiioneaz ramura astfel nct ieirea trece n TRUE pentru o scanare a programului (adic in cadrul ciclului automat actual). Apoi, la urmtoarele cicluri automat, ieirea devine sau rmne FALSE pentru urmtoarele scanri, pn cnd intrarea face o nou tranziie din FALSE n TRUE.

Instruciuni de tip Timer/Counter TON (Timer On-Delay). Instruciune de ieire.

Fig.2.8. Simbolul grafic al instruciunii TON

Parametrii instruciunii:

o Timer : adresa unei element din fiierul de tip timer T4 o Timer base: reprezint pasul de incrementare al acumulatorului pentru numrare. n cazul automatului nostru este fixat la 0.01 sec = 10 ms. o Preset: valoarea presetat se introduce atunci cnd se editeaz programul; se introduce o valoare numeric pe 16 bii < 216; Preset = timpul dorit de msurat/ baza de timp Ex : dac vrem s numrm 10 sec, preset = 10/0.01 = 1000 o Acc: valoare acumulat se introduce la editare de obicei este 0 ca valoare de start a acumulatorului, valoarea acestuia fiind incrementat n timpul execuiei programului, la fiecare ciclu automat, cu o valoare numeric egal cu valoarea timpului scurs de la ciclul anterior imparit la baza de timp. Cum funcioneaz? o Dac expresia de la intrare este adevarat atunci instruciunea TON incrementeaz accumulatorul la fiecare ciclu automat cu numrul de incremente de timp trecute de la ciclul anterior. o Dac valoarea accumulatorului depete valoarea presetat atunci bitul DN din primul cuvnt al elementului de timer folosit devine 1 (acest bit putnd fi testat intr- ramura urmtoare), asta nseamnnd c a trecut timpul dorit. o Dac expresia de la intrare este fals, contorizarea se oprete, accumulatorul i biii de stare (EN, TT, DN.....) sunt resetai. TOF (Timer Off-Delay). Instruciune de ieire. Analog cu TON, dar incrementarea valorii din acumulator are loc atta timp ct n ramur condiiile sunt FALSE. Cnd condiiile devin TRUE, ( ACC ) = 0. RTO (Retentive Timer). Instruciune de ieire. Analog cu TON, dar dac condiiile de pe ramur trec din TRUE n FALSE atunci (ACC) rmne la ultima valoare. CTU (Count Up). Instruciune de ieire.

Fig.2.9. Simbolul grafic al instruciunii CTU

Parametrii instruciunii: o Counter: adresa unei element din fiierul counter C5 o Preset: valoarea presetat se introduce atunci cnd se editeaz programul o Acc: reprezint valoarea acumulat dup fiecare incrementare a numrtorului Cum funcioneaz? o Instruciunea incrementeaz ACC la fiecare trecere din FALSE n TRUE a expresiei de la intrare (n cadrul a dou cicluri automate consecutive). Numrtoarea se oprete cnd condiiile devin FALSE. o Dac valoarea ACC depete PRE atunci bitul DN din primul cuvnt al bitului folosit devine 1 o Resetarea se face numai prin instruciunea Reset.

CTD (Count Down). Instruciune de ieire. Similar cu CTU, cu deosebirea c decrementez valoarea acumulat. Necesit ca parametri adresa unui element dintr-un fiier de tip Counter precum i o valoare presetat i una iniial pentru acumulator. RES (Reset). Instruciune de ieire. Dac expresia de la intrare este adevarata reseteaz accumulatorul i biii de stare ai elementului adresat.

Fig. 2.10.Simbolul grafic al instruciunii RES

Parametrul adresa poate fi adresa unui element de tip timer sau a unuia de tip counter. Timer: ACC 0, DN 0, TT 0, EN 0. Counter: ACC 0, CU 0, CD 0, OV 0, UN 0, DN 0. HSC (High Speed Counter). Numrtorul de mare vitez HSC este un numrtor hardware i opereaz asincron fa de scanarea programului ladder. Spre deosebire de celelalte numrtoare HSC nu contorizeaz tranziiile FALSE-TRUE ale ramurii ci tranziiile intrrii I:0/0. Frecvena maxim acceptat este de 8 kHz. Aceast instruciune este valabil numai pentru controlere I/O fixe cu 24 intrri VDC. O singur instruciune HSC este permis pe un singur controler.

Fig.2.11. Simbolul grafic al instruciunii HSC

Parametrii instruciunii: o Aceast instruciune are asociat un fiier de trei cuvinte (octei). Cuvntul 0 este cuvntul de control i conine biii de stare: o bitul 10 (UA) actulizeaz acumulatorul pentru a reflecta starea imediat a numrtorului cnd HSC devine activ; o bitul 12 (OV) indic o depire a numrtorului; o bitul 13 (DN) indic egalarea presetului de ctre acumulator; o bitul 15 (CU) arat starea de activ/inactiv a instruciunii HSC. o Cuvntul 1 conine valoarea de preset n gama 1 - 32.767, iar cuvntul 2 valoarea acumulat. Cum funcioneaz? o Fiecare tranziie a intrarii I:0/0 face ca acumulatorul s se incrementeze; cnd acumulatorul egaleaz valoarea presetului bitul Done (C5:0/DN) este setat i acumulatorul pus pe zero.

o Pentru a afla starea HSC-ului, programul ladder trebuie s interogheze bitul Done (C5:0/DN). Imediat cum acesta a fost detectat activ trebuie dezactivat (cu instruciunea OTU) nainte ca acumulatorul (C5:0.ACC) s egaleze valoarea presetului (C5:0.PRE) pentru ca altfel bitul Overflow (C5:0/OV) este setat. o Valoarea acumulatorului (C5:0.ACC) de obicei este actualizat de fiecare dat cnd ramura cu HSC este evaluat, actualizarea nsemnnd transferarea valorii acumulatorului hardware n acumulatorul HSC software. Dup actualizare instruciunea HSC reseteaz bitul C5:0/UA. o Dac se dorete testarea C5:0.ACC n programul ladder dup rangul care conine instruciunea HSC, trebuie mai inti s se seteze bitul C5:0/UA. Acest lucru este necesar ntruct intrarea I:0/0 poate s tranziteze de cteva ori de la ultima evaluare a lui HSC. Instruciuni de comparare Sunt instruciuni de intrare, au ca operanzi cuvinte ale fiierelor de date. EQU (Equal) Compar (A) cu (B), unde A i B sunt adrese de cuvinte Dac (A) = (B), atunci instruciunea devine TRUE. NEQ (Not Equal). Devine TRUE dac (A) diferit de (B). LES (Less Than). Devine TRUE dac (A) < (B). LEQ (Less Than or Equal) Devine TRUE dac (A) (B). GRT (Greater Than) Devine TRUE dac (A) > (B). GEQ (Greater Than or Equal) Devine TRUE daca (A) (B). MEQ (Masked Comparison for Equal) Permite testarea egalitii dup aplicarea unei mti (poate fi o valoare hexa). LIM (Limit Test) Permite testarea ncadrrii unei valori ntre dou limite. Low Limit = val./adr. limit inferioar. Test = val./adr.val. test. High Limit =

val./adr. limit superioar. Este TRUE cnd Low Lim Test High Lim. Parametrii necesari acestor instruciuni sunt: Source = adres valoare Compare = o constant ntreag sau adresa unei referine.

Instruciuni matematice O instruciune matematic accept doi operanzi, dintre care maxim unul poate fi o constant. Sunt instruciuni de ieire. ADD (Add) Dest = A + B SUB (Substract) Dest = A - B MUL (Multiply) Dest = A * B DIV (Divide) Dest = A / B NEG (Negate) Dest = (complement fa de 2) Sursa CLR (Clear) Dest 0 Sursa SQR (Square Root) SCL (Scale Data) Dest (Sursa):Rate. Instruciuni logice i de mutare Sunt instruciuni de ieire. Instruciunile logice se aplic bit cu bit datelor stocate la adresele surs. Cnd condiiile de pe ramur sunt TRUE, atunci : MOV (Move) (Dest) (Sursa). MVM (Masked Move) Analog cu MOV, dar dup ce sursa a fost trecut prin Mask; masca poate fi o valoare hexa (o constant). AND (And) (Dest) = A AND B OR (Or) (Dest) = A OR B XOR (Exclusive Or) (Dest) = A XOR B

Instruciuni de lucru cu stiva Instruciunile FFL (FIFO Load) i FFU (FIFO Unload) se folosesc mpreun. Instruciunea FFL ncarc octei ntr-un fiier creat de utilizator numit stiv FIFO. Instruciunea FFU descarc octei din stiva FIFO n aceeai ordine n care au fost introdui. Pentru folosirea acestor instruciuni sunt necesari urmtorii parametrii: Source reprezint o adres de cuvnt sau o constant (-32.768 pn la 32.767) n care se afl valoarea de introdus n stiva FIFO.

Destination reprezint o adres de cuvnt care memoreaz valoarea extras din stiva FIFO. FIFO reprezint adresa stivei. Trebuie s fie o adres indexat de cuvnt dintr-unul din fiierele de intrare, ieire, stare, bit, sau ntregi. Pentru ambele instruciuni FFL i FFU trebuie s avem aceeai stiv. Length reprezint numrul de elemente din stiv (maxim 128). Ambele instruciuni FFL i FFU trebuie s aib acelai numr de elemente. Position reprezint urmtoarea locaie disponibil din stiva unde se pot ncrca date. Aceast valoare se schimb dup fiecare operaie de ncrcare sau descrcare. Acelai numr este folosit pentru ambele instruciuni FFL i FFU. Control reprezint adresa fiierului de control, fiier n care sunt stocate date despre biii de stare, lungimea stivei i valoarea poziiei. Aceast adres nu trebuie folosit pentru nici o alt instruciune.

Fig.2.12. Instruciunea de extragere din stiv

Biii de stare din elementul de control sunt folosii astfel: Bitul Empty EM (bit12) este setat de instruciunea FFU indicnd c stiva e goal Bitul Done DN (bit 13) este setat de instruciunea FFL pentru a indica faptul c stiva e plin. Aceasta inhib ncrcarea stivei Bitul FFU Enable (bit 14) este setat la tranziia din fals n adevrat a rangului FFU i resetat la tranziia invers Bitul FFL Enable (bit 15) este setat la tranziia din FALSE n TRUE a ramurii FFL i resetat la tranziia invers.

Blocul funcional PID Un bloc funcional reprezint un set de instruciuni (invizibile utilizatorului) care, avnd cunoscut un anumit numr de parametri de

intrare, sunt capabile s obin o serie de valori de ieire, calculate dup un anumit algoritm, care nu este transparent utilizatorului. Utilizatorul poate doar s configureze blocul funcional introducnd valorile parametrilor de intrare. PID este un bloc funcional apelat ca o instruciune de ieire cu ajutorul creia se pot conduce procese dup temperatur, presiune, nivel sau debit folosind bucle de reglare. Instruciunile PID controleaz n mod normal o bucl nchis folosind intrrile de la un modul analogic i furniznd anumite ieiri pentru un modul analogic de ieire. Aceste instruciuni pot opera n modul eantionat sau n modul STI (Selectable Timed Interrupts - ntreruperi de Timp Reglabile). n modul eantionat, instruciunile actualizeaz periodic ieirile la o rat ce poate fi aleas. n modul STI, instruciunile trebuie s fie plasate n subrutine de ntrerupere STI; ieirile vor fi actualizate n momentele de scanare ale STI. Intervalul STI i rata de actualizare a buclei trebuie s fie la fel pentru a executa corect ecuaia. Blocul funcional PID folosete urmtoarea formul: Ieire = KC [ (E) + 1/TI (E) dt + TD D(PV)/dt ] + deviaie

Fig.2.13. Blocul funcional PID

Instruciunile PID se pun pe o ramur fr condiionri logice. Dac ramura nu este parcurs, ieirile rmn la valorile anterioare, iar termenul integral este resetat. n timpul programrii se introduc adresele Blocului de Control, a Variabilelor de Proces i a Variabilelor de Control dup ce instruciunile PID au fost puse pe ramur: Blocul de Control este un fiier care memoreaz datele necesare instruciunilor pentru operare. Mrimea fiierului este fixat la 23 de cuvinte i poate fi introdus ca o adres de fiier pentru ntregi. De exemplu: N10:0 va aloca elementele de la N10:0 pn la N10:22. Variabila de Proces PV este adresa unui element care stocheaz valoarea intrrii din proces. Aceast adres poate fi un cuvnt rezervat unei intrri analogice unde va fi stocat valoarea respectivei intrri. Aceast valoare poate fi un ntreg dac se alege scala 0 16383.

Variabila de Control CV este adresa unui element care stocheaz valoarea ieirii instruciunii PID. Domeniul de ieire este 0 - 16383 (16383 corespunde unui nivel de 100% din ieire)

Fig.2.14. Structura blocului de control

Dup ce au fost introduse adresele pentru CB, PV i CV, va apare urmtorul ecran cu ajutorul cruia se vor introduce datele necesare configurrii i acordrii modulului PID:

Fig.2.15. Ecranul de introducere al datelor pentru instruciunea PID

n partea stng sunt parametri instruciunii PID care trebuie introdui: [F1] Auto/Manual AM (word 0, bit 1) se face alegerea ntre Auto i Manual. Auto arat c PID controleaz ieirile automat. Manual arat c utilizatorul controleaz ieirile (seteaz); [F2] Mode TM (word 0, bit 0) se face alegerea ntre modurile eantionat i STI; [F3] Control CM (word 0, bit 2) se face alegerea ntre E = SP - PV i E = PV - SP. Varianta E = PV - SP presupune incrementarea ieirii CV cnd intrarea PV > SP, iar varianta E = SP - PV presupune incrementarea CV cnd intrarea PV < SP. Setpoint SP (word 2) este punctul de control dorit pentru proces. Se introduce valoarea dorit i se tasteaz ENTER. Valoarea se poate schimba n programul ladder prin instruciuni; Gain KC (word 3) este factorul de amplificare proporional, n gama 0.1 - 25.5. O regul este setarea lui la o valoare egal cu 1.5 din valoarea necesar pentru a determina la ieire oscilaii cnd reset = 0 i rate terms = 0; Reset Ti (word 4) este factorul de timp al integratorului, avnd valori n gama 0.1 - 25.5 min. O regul este setarea lui la perioada natural msurat naintea calibrrii; Rate Td (word 5) este termenul derivativ, putnd lua valori n gama 0.01 - 2.55 min. O regul este setarea lui la 1/8 din Ti; Maximum Scaled Smax (word 7) dac setpoint este citit n mrimi inginereti, acest parametru corespunde valorii setpoint cnd intrarea atinge 16383; Minimun Scaled Smin (word 8) dac setpoint este citit n mrimi inginereti, acest parametru corespunde valorii setpoint cnd intrarea atinge valoarea 0; Deadband DB (word 9) este o valoare pozitiv. DB este centrat n jurul valorii SP, avnd limea introdus de utilizator. DB este introdus cnd PV i SP trec prin zero. DB are efect numai dup ce PV intr n DB i trece de SP; Loop Update (word 13) este un intervalul de timp ntre calculele PID. O regul este setarea lui la o valoare de 5 - 10 ori mai mic dect perioada natural de ncrcare; Scaled Process PV (word 14) este pentru afiare; Scaled Error (word 15) este pentru afiare; Output CV % (word 16) afieaz ieirea CV n procente ( pentru intervalul 0 - 16383). Dac este n mod Auto, aceast setare este

numai pentru afiare. Dac este n mod Manual, valoarea CV se poate schimba, iar noua valoare ajunge la ieire; [F4] Output (CV) Limit OL (word 0, bit 3) se poate alege ntre YES (se limiteaz ieirea ntre valorile min i max) i NO (nu se limiteaz ieirea); n coloana din dreapta sunt indicatorii (flags) asociai instruciunii PID: Time Mode Bit TM (word 0, bit 0) specific modul PID; este setat de ctre modul TIMED i este resetat de ctre modul STI; poate fi setat/resetat prin instruciuni n programele ladder; Auto / Manual Bit AM (word 0, bit 01) arat c operaiile sunt automate cnd este resetat i manuale cnd este setat; poate fi setat/resetat prin instruciuni n programele ladder; Control Mode Bit CM (word 0, bit 02) este resetat dac controlul este E = PV - SP; poate fi setat/resetat prin instruciuni n programele ladder; Output Limiting Enabled Bit OL (word 0, bit 03) este setat cnd a fost selectat o limit pentru CV prin [F4]; poate fi setat/resetat prin instruciuni n programele ladder; Reset and Gain Range Enhancement Bit RG (word 0, bit 4) dac este setat face ca valoarea Reset Minute/Repeat i factorul de amplificare s fie multiplicat de 10 ori; Scale Setpoint Flag SC (word 0, bit 05) este resetat cnd se specific o scal pentru setpoint; Loop Update Time Too Fast TF (word 0, bit 06) este setat de ctre algoritmul PID dac timpul de actualizare al buclei, care a fost dat, nu poate fi atins de ctre program (din cauza limitrilor temporale de scanare). Dac acest bit este setat se poate ncerca corectarea problemei prin actualizarea buclei la o rat mai mic sau mutarea instruciunii ntr-o subrutin STI; Derivitive (Rate) Action Bit DA (word 0, bit 07) dac este setat face ca Derivitive Rate s fie evaluat dup eroare n loc de PV; dac este resetat, Derivitive Rate funcioneaz ca procesorul 5/02; DB, Set When Error is n DB (word 0, bit 08) este setat cnd PV este n intervalul DB i are valoarea 0; Output Alarm, Upper Limit UL (word 0, bit 09) este setat cnd ieirea CV depeste limita superioar;

Output Alarm, Lower Limit LL (word 0, bit 10) este setat cnd ieirea CV depeste limita inferioar; Setpoint Out of Range SP (word 0, bit 11) este setat cnd setpoint nu se ncadreaz n scala dat; Process Var Out of Range PV (word 0, bit 12) este setat cnd PV nu se ncadreaz n intervalul 0 - 16383; PID Done DN (word 0, bit 13) este setat cnd algoritmul PID a terminat calculele; PID Enable EN (word 0, bit 15) este setat cnd ramura instruciunii PID este adevarat;

Exemplu de diagram Ladder: Ramura Ladder prezentat n exemplul urmtor conine dou instruciuni de intrare i o instruciune de ieire. O instruciune de ieire este situat n dreapta ramurii, lng bara vertical dubl dreapta. Instruciunile de intrare sunt ntotdeauna situate la stnga instruciunilor de ieire.

Fig.2.16. Exemplu de diagram Ladder

XIC = Examine if Close examineaz bitul de la adresa B3/10 XIO = Examine if Open - examineaz bitul de la adresa B3/11 OTE = Output Energize activeaz/dezactiveaz bitul de la adresa B3/12 Fiecare instruciune din ramura precedent are adresa fiierului unde sunt stocate strile ON(1) / OFF(0) ale biilor. Adresele instruciunilor de mai sus indic fiierul Bit 3 (B3), biii 10, 11, 12. Parcurgerea unei astfel de diagrame se face de sus n jos (ramur cu ramur) i de la stnga la dreapta (n cadrul unei ramuri). Execuia instruciunilor se face prin testarea condiiilor logice ale ramurilor. Starea logic a unei instruciuni poate fi adevrat (TRUE T) sau fals (FALSE F). Ansamblul strilor logice ale instruciunilor de intrare determin continuitatea logic a ramurii. n funcie de strile logice ale datelor stocate n biii adresai, strile logice ale instruciunilor pot fi:

Tabelul 2.17. Starile logice ale instruciunilor din ramur

n exemplul dat, pentru ca instruciunea de ieire OTE s seteze bitul B3/12, trebuie s nu se ntrerup continuitatea logic pe ramur, adic trebuie ca starea XIC = TRUE ^ starea XIO = TRUE. Concret, conform tabelului precedent: Dac B3/10 = 1 i B3/11 = 0, deci dac este gasit o cale continu de instruciuni de intrare adevrate, atunci instruciunea de ieire devine sau rmne adevrat. n acest caz condiiile ramurii sunt adevrate. Cnd nu este gsit aceast continuitate logic a instruciunilor de intrare, atunci instruciunea de ieire OTE devine sau rmne fals. n acest caz condiiile ramurii sunt false. Modul de variaie al strii bitului B3/12 n funcie de strile biilor B3/10 si B3/11 este:

Tabelul 2.18. Variaia valorii bitului B3/12

O posibil variaie n timp a strilor logice ale instruciunilor XIC, XIO i OTE este:

Tabelul 2.19. Variaia strilor logice ale instruciunilor

Avnd n vedere cele prezentate se poate trage concluzia c o ramur din diagrama Ladder este echivalent cu o instruciune de tipul: If condiie then ieire. Cmpul condiie din model poate nsemna testarea unei intrri sau testarea unei anumite combinaii logice ntre variabilele de intrare. n exemplul dat s-a prezentat un bloc AND ( i logic), ntre valoarea bitului B3/10 i valoarea negat a bitului B3/11.

2.5 Dezvoltarea unei diagrame Ladder pornind de la o diagram Grafcet


Pentru ca un program de control conceput sub forma unei diagrame Ladder s funcioneze corect i s fie dezvoltat uor, o soluie foarte eficient este ridicarea iniial a unei diagrame de tip Grafcet pornind de la specificaiile procesului. Elementele principale ale unei diagrame Grafcet sunt etapele, tranziiile, aciunile asociate etapelor, divergenele, paralelismul etc. Etapele de creare ale unei diagrame Ladder pentru un automat Allen Bradley SLC 500 sunt urmtoarele: Se construiete diagrama Grafcet de control logic al procesului Se identific intrrile, ieirile necesare automatului, precum i numrul de temporizri, contorizri necesar Se asociaz intrrile i ieirile cu bii din fiierele de imagine ale intrrilor i ieirilor Se asociaz fiecare etap a diagramei Grafcet cu cte un bit dintr-un fiier de tip BIT al automatului Allen Bradley (spre exemplu din fiierul B3) Se aloc pentru fiecare temporizare sau contorizare cte un element dintr-un fiier de tip Timer sau Counter Pentru fiecare etap se scriu, n principiu dou ramuri de tipul:

Etapele iniiale sunt activate cu ajutorul instruciunii OSR. Mici modificri apar atunci cnd n diagrama Grafcet exist divergene i paralelisme. n cazul n care dintr-o etap se poate tranzita n diferite alte etape din cauza existenei mai multor condiii de tranziie, trebuie editat cte o ramur de tip 2 pentru fiecare condiie de tranziie. Starea de activare a unei etape se testeaz cu instruciunea XIC aplicat bitului asociat etapei.

Dac ulterior activrii unei tranziii urmeaz un paralelism n care mai multe secvene vor rula simultan, o dat cu dezactivarea etapei curente vor fi activate toate etapele iniiale ale tuturor secvenelor paralele. Ieirile digitale pot fi activate i dezactivate att cu instruciunea OTE ct i cu instruciunile pereche OTL i OTU. Instruciunea OTE se folosete atunci cnd o aciune este activ numai n etapa curent i va trebui dezactivat o dat cu dezactivarea etapei. Dac o ieire trebuie s i menin valoarea i n etapele urmtoare, ea trebuie activat obligatoriu cu instruciunea OTL. Exemplu: S considerm c avem de controlat un proces a crui diagram Grafcet este reprezenat n figura 2.20:

Fig.2.20. Diagrama Grafcet

Pentru a construi diagrama Ladder pornind de la diagrama Grafcet, n primul rnd trebuie stabilite poziiile intrrilor i ieirilor, precum i asocierea etapelor din diagrama Grafcet cu bii din fiierul de tip bit B3. Presupunnd c pe slotul 1 al automatului se gsete un modul de intrri digitale cu 16 intrri iar pe slotul 3 un modul de ieiri digitale cu 24 ieiri, putem conecta intrrile i ieirile ctre proces conform tabelului 2.21:

Tabelul 2.21. Adresele intrarilor i ieirilor

Asocierea etapelor Grafcet cu bii din fiierul de Bit B3 se poate face conform tabelului 2.22:

Tabelul 2.22. Asocierea etapelor cu bii din fiierul B3 Bitul B3/0 va fi rezervat instruciunii OSR ca parametru intern. Se poate trece acum la scrierea ramurilor diagramei Ladder, conform algoritmului descris anterior. Etapa 1 va fi activat iniial cu ajutorul instruciunii OSR astfel:

Deoarece n etapa 1 nu au loc aciuni, nu se mai scrie nici o ramur de tip 1 pentru etap. n schimb, deoarece are loc o divergen pornind din etapa 1, trebuie scrise dou ramuri de tip 2 pentru cele dou condiii de tranziie ce se exclud: Pentru tranziia cu condiia i1:

Pentru tranziia cu condiia i2:

Pentru etapa 2 trebuie scrise cele 2 ramuri tipice:

Etapa 3 nu are aciuni asociate, iar tranziia din aceast etap este condiionat de activarea etapei 103, astfel nct pentru etapa 3 se scrie o singur ramur de tip 2 i anume:

Aceast ramur este valabil ca ramur de tip 2 i pentru traziia din etapa 103, fiind suficient editarea ei o singur dat. Pentru etapa 101 se scriu cele dou ramuri tipice:

Analog pentru etapa 102:

Capitolul 3. MEDIUL DE PROGRAMARE LOGIC ISaGRAF


ISaGRAF este un mediu avansat CASE (Computer Aided Software Engineering) fiind proiectat s transforme orice computer industrial sau plac cu microcontroller ntr-o arhitectur open PLC de nalt performan i cu un pre sczut. ISaGRAF utilizeaz metode standard de programare a PLC-urilor industriale pentru dezvoltarea unor aplicaii puternice fr a avea nevoie de cunotine n programarea de nivel nalt sau experien hardware. ISaGRAF este un mediu de programare dezvoltat de CJ International destinat aplicaiilor pentru automate programabile. Acest mediu permite programarea, simularea, testarea aplicaiilor folosind limbajele standardului IEC 1131-3 [CJ International, 1998]. Mediul de programare ISaGRAF este compatibil Windows 2000. Aplicaiile ISaGRAF sunt complet portabile i pot rula pe orice target hardware fr nici o modificare. Targetul ISaGRAF poate fi orice computer industrial, microcontroller sau PLC echipat cu module de I/O analogice sau digitale rulnd orice sistem de operare multitasking. ISaGRAF poate fi implementat pe orice configuraie hardware care suport un compilator ANSI C. Caracteristici: Mediu de dezvoltare complet Independen fa de configuraia hardware a unui PLC Limbaje de programare specificate n standardul IEC 1131-3 Faciliti de simulare ON i OFF line debugger Dezvoltarea de biblioteci software

3.1. Structura unui proiect ISaGRAF


Un proiect ISaGRAF este compus din mai multe uniti numite programe. Un program este considerat a fi o unitate logic care descrie operaiile dintre variabilele procesului. Programele aplicaiei sunt conectate ntr-o structur arborescent i pot fi implementate folosind limbaje grafice sau literale, programatorul avnd la dispoziie urmtoarele opiuni: Flow Chart (FC) pentru programare la nivel nalt Ladder Diagram (LD) doar pentru operaii booleene Structured Text (ST) pentru orice operaii ciclice

Instruction List (IL) pentru operaii la nivel jos Function Block Diagram (FBD) pentru operaii ciclice complexe Sequential Function Chart (SFC) pentru programare la nivel nalt

Limbajul utilizat pentru scrierea unui program se alege la crearea acestuia i nu poate fi schimbat mai trziu. Nu este posibil ca acelai program s combine mai multe limbaje, excepie se poate face n cazul n care se combin FBD i LD.

Operaii ciclice i secveniale

Programele descriu fie operaii ciclice, fie secveniale. Programele ciclice sunt executate la fiecare ciclu al sistemului int. Execuia programelor secveniale respect regulile dinamice fie ale limbajului SFC, fie ale limbajului FC. Programele sunt legate ntre ele ntr-o structur arborescent. Programele aflate n vrful ierarhiei sunt activate de ctre sistem. Subprogramele (nivele mai jos n ierarhie) sunt activate de ctre programul printe. Structura ierarhic a unui program se descompune n patru seciuni sau grupuri:
Begin : programe executate la nceputul fiecrui ciclu al sistemului int Sequential : programe ce respect regulile dinamice SFC sau FC End : programe executate la sfritul fiecrui ciclu al sistemului int Functions : set de subprograme nededicate

Programele din seciunile Begin i End descriu operaii ciclice i nu sunt dependente de timp. Se scriu n limbajele LD sau ST. Programele principale sunt executate la nceputul respectiv sfritul fiecrui ciclu de execuie. Seciunea Begin se utilizeaza pentru adaptarea unor valori de intrare (ex: citirea unei valori de la un traductor).
Programele seciunii Sequential descriu operaii secveniale unde variabila timp sincronizeaz operaiile primare. Execuia programelor principale ale acestei seciuni se face conform regulilor SFC sau FC. Trebuie s existe cel puin un program secvenial Sequencial; restul doar dac este nevoie.

Programele seciunii Functions sunt subprograme ce pot fi apelate de orice alt program al aplicaiei. Un program al seciunii Function poate apela un alt program al acestei seciuni.

Programele principale i programele fiu ale seciunii Sequential trebuie s fie descrise n limbajele SFC sau FC. Programele seciunilor ciclice (Begin i End) nu pot fi descrise n SFC sau FC. Orice program al oricrei seciuni poate avea unul sau mai multe subprograme. Orice program al oricrei seciuni poate avea unul sau mai multe programe fiu, n conformitate cu limbajul fiecruia. Subprogramele nu pot fi descrise n SFC sau FC. Programele seciunii Begin sunt de obicei folosite pentru descrierea operaiilor preliminare n scopul citirii corecte a unor valori de la dispozitivele de intrare. Variabilele de intrare citite sunt utilizate frecvent de ctre programele seciunii Sequential pentru ca dup o eventual prelucrare valorile variabilelor de ieire s fie transmise dispozitivelor de ieire. Programele seciunii End sunt utilizate pentru a descrie operaii de protecie nainte de a trimite o variabil ctre un dispozitiv de ieire.

Programe SFC / FC child

Orice program SFC al seciunii secveniale poate controla alte programe SFC. Acest tip de programe, situate pe un nivel ierarhic inferior, se numesc program SFC fiu, ele fiind programe paralele ce pot fi pornite (started), oprite (killed), ngheate (frozen), repornite (restarted) de ctre programul printe. Important este ca ambele programe, printe i fiu, s fie scrise n SFC. Un pro0gram SFC fiu poate conine variabile locale i cuvinte cheie. Atunci cnd un program printe pornete un program SFC fiu transmite un jeton SFC fiecrui pas iniial al programului fiu. Aceast comand este descris de declaraia GSTART. n cazul opririi unui program fiu de ctre printele su, sunt eliminate toate jetoanele existente. Aceast comand este descris de declaraia GKILL. Dac este ngheat, un program fiu SFC i suspend execuia i i pstreaz jetoanele pentru o eventual repornire. Programul suspendat poate fi repornit folosind declaraia GRST.
i n cazul programelor FC ale seciunii secveniale pot exista subprograme FC fiu, dar un printe FC este blocat n timpul execuiei unui subprogram FC. Astfel nu sunt posibile operaii simultane n programul FC printe i subprogramul FC.

Funcii i subprograme

Execuia unui subprogram sau a unei funcii este condus de ctre programul printe. Execuia programului printe este suspendat pn la terminarea funciei sau a subprogramului. Un program al oricarei seciuni poate avea unul sau mai multe programe. Un subprogram poate fi controlat numai de ctre printele su. El

poate conine variabile locale. Pentru descrierea unui subprogram nu pot fi utilizate limbajele SFC i FC. Programele seciunii Functions sunt subprograme ce pot fi apelate de orice program al aplicaiei. Spre deosebire de alte subprograme, acestea nu sunt dedicate programului printe i pot apela programe ale aceleiai seciuni. Pentru o mai mare flexibilitate pot fi grupate n librrii de funcii.

Reguli de execuie

ISaGRAF este un sistem sincron. Toate operaiile sunt declanate de ctre ceas. Intervalul dedicat execuiei se numete durata ciclului:

Fig.3.1.Ciclul ISaGRAF Operaiile de baz ce se execut pe durata unui ciclu sunt:

Fig. 3.2. Operaiile de baz ale unui ciclu de execuie

Acest sistem face posibile:


garantarea unor valori constante pe durata unui ciclu pentru variabile stabilitatea ieirilor, acestea nefiind modificate dect o singur dat ntr-un ciclu de execuie accesul sigur la aceleai variabile globale al mai multor programe estimarea i controlul timpului de rspuns a ntregii aplicaii

3.2. Descrierea limbajul Sequential Function Chart (SFC)


Sequential Function Chart (SFC) este un limbaj grafic utilizat pentru a descrie operaii secveniale. Procesul este reprezentat printr-o succesiune de pai finii explicii legai prin tranziii. Fiecrei tranziii i este ataat o condiie de tip boolean. Aciunile ce au loc la fiecare pas sunt descrise folosind celelalte limbaje (ST, IL, LD sau FBD). Un program SFC se reprezint ca un graf orientat cu noduri de tip etape i tranziii. Legturile multiple sunt utilizate pentru a reprezenta convergene i divergene. Unele pri ale programului pot fi descrise separat i reprezentate n program printr-un simbol. Aceste pri sunt cunoscute sub denumirea de macro etape. Regulile grafice de baz ale SFC: Un nod de tip etap nu poate fi urmat de un nod de acelai tip Un nod de tip tranziie nu poate fi urmat de un nod de acelai tip Programarea SFC este de obicei separat n dou niveluri : - nivelul 1 arat organigrama programului, numerele pailor i tranziiilor i comentariile ataate acestora

- nivelul 2 reprezint programarea n limbaj ST sau IL a aciunilor din cadrul pailor sau condiiile ataate tranziiilor.

3.2.1. Componentele de baz (simbolurile grafice) ale limbajului SFC sunt:

Etapele i etapele iniiale (steps and initial steps):

O etap este reprezentat printr-un ptrat. Fiecare etap este referit de un numr nscris n interiorul ptratului. Descrierea etapei se face n interiorul dreptunghiului legat de ptrat. Aceasta este cunoscuta ca nivelul 1 al etapei. Nivelul 2 conine descrierea aciunilor ce au loc n etapa respectiv i este referit ntr-o fereastr separat. n momentul rulrii, un jeton arat c etapa este activ.

Fig. 3.3. a) Etap activ; b) Etap inactiv

Starea iniial a unui program SFC se exprim cu ajutorul etapelor iniiale, reprezentate grafic printr-un ptrat cu margine dubl. Cnd programul este pornit automat se plaseaz cte un jeton n interiorul fiecrei etape iniiale.

Fig.3.4. Pas iniial Un program SFC trebuie s conin cel puin o etap iniial. Fiecare etap are dou atribute ce pot fi utilizate de celelalte limbaje: - GSnnn.x starea pasului: activ/inactiv (variabil boolean) - GSnnn.t ct timp este activ pasul (timp) ( nnn este numrul de referin al pasului )

Tranziii (transitions):

Tranziiile sunt reprezentate printr-o bar orizontal ce taie linia de legtur dintre doi pai. Similar etapelor, tranziiile sunt referite printr-un numr i au aceeai organizare pe nivele:

Fig.3.5. Tranziie

Legturi orientate (oriented links):

Liniile simple sunt utilizate pentru legturile dintre pai i tranziii. Atunci cnd nu este specificat explicit orientarea se consider a fi de sus n jos:

Fig.3.6. Legturi orientate

Salt ctre un pas (jump to a step):

Simbolul de salt poate fi utilizat pentru a indica o legtura dintre o tranziie i un pas, fr a fi nevoie s se deseneze linia de conexiune. Saltul trebuie referit cu numrul pasului destinaie. Saltul nu poate fi utilizat pentru a lega un pas i o tranziie.

Fig. 3.7. Salt ctre o etap


3.2.2. Divergene i convergene (divergences and convergences): Divergenele i convergenele sunt utilizate pentru a reprezenta legturi multiple ntre pai i tranziii.

Divergenele sunt conexiuni multiple de la un simbol SFC (pas sau tranziie) ctre mai multe simboluri SFC. Convergenele sunt conexiuni multiple de la mai multe simboluri SFC ctre un singur simbol. Structurile de acest tip pot fi simple sau duble dup cum urmeaz: Divergene simple: Legturi multiple de la un pas la mai multe tranziii. Aceasta permite trecerea jetonului activ ctre mai multe ramuri. Divergenele simple reprezint posibilitatea rulrii uneia dintre prile unui proces (funcia OR): Convergene simple: Legturi multiple de la mai multe tranziii ctre acelai pas. Sunt folosite n general pentru a grupa ramuri ce s-au desprit de la aceeai traziie.

Fig. 3.8. a) divergen simpl; b) convergen simpl

Divergene duble: Legturi multiple de la o tranziie ctre mai muli pai. Au corespondene n execuia n paralel a operaiunilor ntr-un proces. Divergenele duble reprezint procese care ruleaz n paralel (funcia AND). Convergene duble: Legturi multiple de la mai muli pai ctre aceeai tranziie. Folosite n general pentru a grupa ramuri ce s-au desprit prin aceeai dubl divergen.

Fig. 3.9. a) divergen dubl; b) convergen dubl

3.2.3. Pai Macro (Macro steps) Macrourile sunt un mod unic de reprezentare a unei succesiuni unice de pai i tranziii. Corpul unui macro este descris separat n programul SFC, el aprnd ca un singur simbol n reprezentarea SFC principal. Numrul de referin ce apare n simbolul macro-ului este referina pentru primul pas din corpul unui macro. Acest prim pas trebuie s fie de tipul pas de nceput (beginning step). Corespondentul su la terminarea reprezentrii este pasul de sfrit (ending step).

Fig. 3.10. Exemplu de pas macro

Reprezentarea unui macro trebuie s fie independent, neexistnd legturi n nicio direcie. Simbolul unui macro poate fi inclus n reprezentarea altui macro. Deoarece un macro este reprezentat printr-un set unic de pai i tranziii, nu poate fi folosit mai mult dect o dat n programul SFC. 3.2.4. Operaii n cadrul etapelor

Nivelul 2 al unei etape SFC conine descrierea detaliat a operaiilor ce se execut n timpul activrii. Aceast descriere se face utiliznd facilitile literale ale SFC i alte limbaje cum ar fi ST. Tipurile de operaii ce sunt accesibile la acest nivel sunt: - operaii asupra variabilelor booleene - operaii de tipul impuls n ST - operaii de tipul nonimpuls n ST - operaii n SFC

Operaii asupra variabilelor booleene:

Atribuirea de valori unor variabile booleene n timpul activrii unui pas. Aceste variabile pot fi de ieire sau interne. Valorile se stabilesc la activarea sau dezactivarea pasului : <var_bool>(s): variabila primete valoarea TRUE cnd pasul devine activ Sintaxa acestor operaii: <var_bool>(N); asociaz starea pasului activ/inactiv cu TRUE/FALSE (1/0 logice) valoarea variabilei <var_bool>; acelai efect atributul n fiind optional /<var_bool>; asociaz negatul strii pasului cu valoarea variabilei Sunt disponibile i alte caracteristici care permit setarea sau resetarea unei variabile booleene, atunci cnd pasul este activ. Sintaxa acestor operaii: <var_bool>(S); variabila primete valoarea TRUE cnd pasul devine activ <var_bool>(R); variabila primete valoarea FALSE cnd pasul devine activ

Operaii de tipul impuls (pulse actions):

Succesiune de instruciuni ST sau IL care se execut numai o singur dat ntr-un singur ciclu automat, de obicei primul n care etapa este activ. Sintaxa operaiilor:
ACTION(P): (*instruciuni Structured Text*) END_ACTION;

Operaii de tipul nonpuls (non-stored actions):

Succesiune de instruciuni ST sau IL care se execut la fiecare ciclu automat n care etapa este activ. Sintaxa operaiilor:
ACTION(N): (*instructiuni Structured Text*) END_ACTION;

Fig. 3.11. a) operaii de tip P; b)operaii de tip N

Operaii SFC

O operaie SFC este o secven SFC fiu, pornit sau oprit dup cum se schimb starea pasului. Poate avea unul din atributele: N (non stored), S (set), R (reset). Sintaxa operaiilor: <prog_fiu>(N); prog_fiu este pornit cnd pasul devine activ i oprit cnd pasul devine inactiv <prog_fiu>; acelai efect, atributul N fiind opional <prog_fiu>(S); prog_fiu este pornit cnd pasul devine activ i i pstreaz starea cnd pasul devine inactiv <prog_fiu>(R); prog_fiu este oprit cnd pasul devine activ i i pstreaz starea cnd pasul devine inactiv Secvena SFC fiu prog_fiu trebuie s fie un program SFC fiu al programului curent. Folosirea atributelor S(Set) sau R(Reset) pentru o aciune SFC are exact aceleai efecte cu folosirea lui GSTART i GKILL ntr-o operaie de tipul impuls din ST.

Apelul funciilor i al funciilor bloc n cadrul unei operaii:

Subprograme, funcii sau funcii bloc (scrise n ST, IL, LD sau FBD) sau funcii C i funcii bloc C pot fi direct apelate din interiorul unei operaii dup cum urmeaz: Pentru subprograme i funcii C:
ACTION(P): result:=sub_prog(); END_ACTION;

sau
ACTION(N): result:=sub_prog(); END_ACTION;

Pentru funcii bloc C sau n ST, IL, LD, FBD:


ACTION(P): Fb(in1,in2); result1:=Fb.out1; result2:=Fb.out2; END_ACTION;

sau
ACTION(N): Fb(in1,in2); result1:=Fb.out1; result2:=Fb.out2; END_ACTION;

Convenia IL:

Codul IL poate fi introdus direct ntr-un bloc SFC, dup cum urmeaz:
ACTION(P): (* sau N*) #info=IL <instruciune> <instruciune> #endinfo END_ACTION;

3.2.5. Condiii ataate tranziiilor Fiecrei tranziii i este ataat o expresie boolean care condiioneaz trecerea la pasul urmtor. Aceast condiie este de obicei implementat n limbajele ST sau LD la nivelul 2 al tranziiei. Pot fi utilizate i alte modaliti de implementare: - convenia limbajului ST - convenia limbajului LD - convenia limbajului IL - apelul funciilor dintr-o tranziie Convenia ST Limbajul ST poate descrie condiia ataat tranziiei. Expresia final a acesteia trebuie s fie de tip boolean i s se termine cu punct i virgul. Expresia poate conine constante TRUE sau FALSE, o

singur variabil de intrare sau o variabil intern boolean sau o combinaie de variabile ce conduce la o valoare boolean.

Convenia LD Limbajul LD poate descrie condiia ataat tranziiei. Un exemplu de programare n LD pentru tranziii este redat mai jos:

Convenia IL Condiia este descris conform urmtoarei sintaxe:


#info=IL <instruciune> <instruciune> #endinfo

valoarea coninut n registrul IL (current result) la sfritul secvenei condiionnd tranziia: current result=0 condiia este FALSE current result<>0 condiia este TRUE

Apelul funciilor dintr-o tranziie Orice subprogram sau funcie (scris n FBD, LD, ST sau IL) sau funcie C poate fi apelat pentru a evalua condiia ataat tranziiei conform sintaxei:
<sub_program>();

Valoarea returnat de un subprogram trebuie s fie de tip boolean i s returneze un rezultat ce va fi evaluat astfel: val_ret=0 condiia este FALSE val_ret<>0 condiia este TRUE Dac nu este ataat nicio expresie tranziiei, atunci se consider implicit valoarea TRUE.

3.2.6. Regulile dinamicii limbajului SFC Cele cinci reguli ale dinamicii limbajului SFC sunt: Starea iniial: caracterizat prin pai iniiali care sunt prin definiie n stare activ la nceputul operaiilor. Fiecare program SFC trebuie s conin cel puin un pas iniial. Depirea unei tranziii: tranziia poate fi validat cnd toi paii care o preced direct sunt activi, n caz contrar fiind invalidat. Tranziia nu poate fi depait dect dac este validat i condiia asociat este TRUE. Schimbarea strii pailor: depirea unei tranziii conduce simultan la activarea pailor care o succed i la dezactivarea imediat a pailor precedeni. Depirea simultan a tranziiilor: tranziiile care trebuiesc depite simultan pot fi indicate prin dou linii. Dac aceste tranziii sunt descrise separat, indicatorul de stare al pailor precedeni (GSnnn.x) poate fi utilizat pentru descrierea condiiilor de trecere. Activarea i dezactivarea simultan a unui pas: dac n timpul operaiilor, un pas este simultan activat i dezactivat, se d prioritate activrii.

3.2.7. Ierarhizarea programelor SFC

Sistemul ISaGRAF permite descrierea pe vertical a structurii programelor SFC. Acestea sunt organizate ntr-o ierarhie arborescent. Fiecare program SFC poate controla (porni, opri) alte programe SFC. Acestea din urm se numesc fii ai programului SFC care le controleaz. Regulile pe care le implic structura ierarhizat: Programele SFC care nu au un printe se numesc programe SFC principale. Programele SFC principale sunt activate de sistem la nceputul aplicaiei. Un program poate avea mai multe programe fiu. Un program fiu nu poate avea mai mult dect un printe. Un program fiu nu poate fi controlat dect de printele su. Un program nu poate controla fiii unui program fiu al su. Operaiile pe care le poate efectua un printe pentru controlul fiilor si sunt:

Start (GSTART) Pornete programul fiu: activeaz fiecare pas iniial al su. Fii progamului fiu nu sunt pornii automat. Kill (GKILL) Oprete programul fiu dezactivnd fiecare pas activ. Toi fiii programului fiu sunt de asemenea oprii. Freeze (GFREEZE) Suspend execuia programului (dezactivnd fiecare pas activ i suspendnd verificarea condiiilor de depire a tranziiilor) i salveaz starea pailor programului astfel nct programul s poat fi repornit. Toi fiii programului fiu sunt suspendai din execuie. Restart (GRST) Repornete un progam SFC suspendat reactivndu-i toi paii dezactivai la suspendarea din execuie. Programele fiu nu sunt automat repornite. Get status (GSTATUS) Obine starea curent (activ, inactiv, suspendat) a unui program fiu.

3.3. Descrierea limbajului Structured Text (ST)


Structured Text (ST) este un limbaj structurat de nivel nalt proiectat pentru procesele de automatizare. Acest limbaj este utilizat n special pentru a implementa proceduri complexe ce nu pot fi uor exprimate ntr-un limbaj grafic. ST este limbajul implicit pentru descrierea operaiilor din interiorul pailor i a condiiilor ataate tranziiilor din limbajul SFC. Este folosit la scrierea programelor din seciunile Begin i End, descrierea aciunilor din etape i scrierea condiiilor de tranziie. 3.3.1. Elemente de sintax n Structured Text

Un program ST este o list de declaraii ST. Fiecare declaraie se termin cu separatorul punct i virgul. Cuvintele utilizate n codul surs (identificatori de variabile, constante, cuvinte cheie) sunt desprite de separatori inactivi (space, end of line, tabs) sau de separatori activi, care au o semnificaie bine definit (de exemplu, > semnific mai mare, operaie de comparaie). Comentariile pot fi incluse oriunde n text dar trebuiesc ncadrate ntre (* i *). Pentru o mai bun lizibilitate a codului se recomand cteva reguli: s nu se scrie mai mult de o declaraie pe un rnd, s se foloseasc alinierea declaraiilor complexe, inserarea de comentarii. Tipurile de baz ale instruciunilor ST: Atribuire de valori (variabila:=expresie) Apelare de subprograme sau funcii Apelare de funcii bloc Instruciuni de selecie (IF,THEN, ELSE, CASE) Instruciuni de iteraie (FOR, WHILE, REPEAT) Instuciuni de control (RETURN, EXIT) Instruciuni dedicate legturilor cu alte limbaje 3.3.2. Expresii i paranteze Expresiile ST combin operatori ST cu operanzi (variabile sau constante). Pentru fiecare expresie tipul operanzilor trebuie s fie acelai. De exemplu: (boo_var1 AND boo_var2) are tipul BOO not (boo_var1) are tipul BOO (sin (3.14) + 0.5) are tipul ANALOG REAL (t#1s23 + 1.78 ) este o expresie invalid Parantezele sunt folosite pentru a separa pri ale expresiei i pentru a stabili explicit prioritile operaiilor. Cnd o expresie complex nu are paranteze, succesiunea operaiilor este dat de prioritile implicite ntre operatorii ST. O expresie poate conine maxim opt nivele de paranteze. 3.3.3. Apelarea funciilor i procedurilor Apelarea funciilor ST standard poate fi folosit pentru oricare dintre urmtoarele obiecte: subprograme, funcii de librrii i proceduri scrise n limbajul IEC, funcii i proceduri C, funcii de conversie de tip.

Apelul subprogramelor i al funciilor


numele subprogramului sau al funciei de bibliotec scris n limbajul IEC sau n C apeleaz un subprogram sau funcie n ST, IL, LD sau FBD sau o funcie C i primete valoarea returnat
<variabila>:=<subprog>(<par1>, ... <parN>);

Nume : Semnificaia: Sintaxa: Operanzi: Valoarea returnat:

tipul valorii returnate i apelarea parametrilor trebuie s urmreasc interfaa definit pentru subprograme valoarea returnat de subprogram

Exemple de apelare a unei funcii:


val_2 := min (16, max (0, val_1)); msg := right (mesaj, mlen (mesaj)-1) + left (mesaj,1);

Apelul procedurilor
numele procedurii apeleaz o procedur din biblioteca ISaGRAF sau din biblioteca utilizatorului i acceseaz parametrii returnai (*apelarea unei proceduri*)
<nume_bloc>(<p1>, <p2> ...);

Nume: Semnificaia:

Sintaxa:

(* obinerea valorii returnate*)


<rezultat>:= <nume_bloc>, <ret_param1>; ... <rezultat>:= <nume_bloc>, <ret_paramN>;

Operanzi: Valoarea returnat:

parametrii sunt expresii care potrivesc tipul parametrilor specificai pentru acea procedur vezi sintaxa pentru a obine parametrii returnai

Exemple de apelare a unei proceduri: (*program ST care apeleaz o procedur*) (*declararea procedurii n dicionar*) (*trigb1: bloc R_TRIG rising edge detection*) (*apelarea procedurii din limbajul ST*)
trigb1 (b1);

(*returneaz parametrii de acces*)


IF (trigb1.Q) THEN nb_edge := nb_edge + 1; END_IF;

3.3.4. Operatori booleeni specifici ST Urmtorii operatori booleeni sunt specifici limbajului ST: - REDGE: rising edge detection - FEDGE: falling edge detection Ali operatori booleeni standard care pot fi folosii sunt: - NOT: negarea boolean - AND (&): I logic - OR: SAU logic - XOR: SAU logic exclusiv

Operatorul REDGE
REDGE evalueaz frontul cresctor al unei expresii boolene complete
<edge>:=REDGE(<expr_logica>,

Nume: Semnificaia: Sintaxa:


<var_booleana>);

Operanzi:

Valoarea returnat:

primul operand este orice variabil boolean sau expresie complex, al doilea operand este o variabil boolean intern folosit pentru a reine ultima stare a expresiei TRUE atunci cnd expresia logic de la intrare trece din FALSE n TRUE n cadrul a dou cicluri automate, FALSE altfel

Frontul cresctor al unei expresii nu poate fi detectat mai mult dect o dat n acelai ciclu de execuie, folosind operatorul REDGE. Acest operator poate fi folosit pentru a descrie condiia ataat unei tranziii SFC.

Operatorul FEDGE
FEDGE evalueaz frontul descresctor al unei expresii boolene
<edge>:=FEDGE(<expr_logica>,<var_booleana>);

Nume: Semnificaia: Sintaxa: Operanzi:

primul operand este orice variabil boolean sau expresie complex, al doilea operand este o variabil boolean intern folosit pentru a reine ultima stare a expresiei

Valoarea returnat:

TRUE atunci cnd expresia logic de la intrare trece din TRUE n FALSE n cadrul a dou cicluri automate, FALSE altfel. Frontul descresctor al unei expresii nu poate fi detectat mai mult dect o dat n acelai ciclu de execuie, folosind operatorul FEDGE. Acest operator poate fi folosit pentru a descrie condiia ataat unei tranziii SFC. 3.3.5. Instruciuni fundamentale n ST Instruciunile fundamentale ale limbajului ST sunt: - atribuirea - instruciunea RETURN - instruciunea IF-THEN-ELSEIF-ELSE - instruciunea CASE - instruciunea iterativ WHILE - instruciunea iterativ REPEAT - instruciunea iterativ FOR - instruciunea EXIT

Atribuirea
:= atribuie o variabil unei expresii
<var>:=<expr>;

Nume: Semnificaia: Sintaxa: Operanzi:

variabila trebuie s fie intern sau de ieire variabila i expresia trebuie s aib acelai tip Expresia poate fi apelat de un subprogram sau o funcie din biblioteca ISaGRAF.

Instruciunea RETURN

Nume: RETURN Semnificaia: termin execuia programului curent Sintaxa: RETURN; Operanzi: nici unul ntr-un bloc SFC, instruciunea RETURN indic sfritul execuiei unui singur bloc.

Instruciunea IF-THEN-ELSIF-ELSE

Nume: Semnificaia:

IF...THEN...ELSIF...THEN...ELSE...END_IF execut una din dou liste de declaraii ST selecia este fcut n concordan cu valoarea expresiei booleene
IF <expr_bool> THEN <instruciune>; <instruciune>; ... ELSIF <expr_bool> THEN <instruciune>; <instruciune>; ... ELSE <instruciune>; <instruciune>; ... END_IF;

Sintaxa:

Instruciunile ELSE i ELSIF sunt opionale. Dac instruciunea ELSE nu este scris, nu este executat nicio instruciune cnd condiia este FALSE.

Instruciunea CASE
CASE...OF...ELSE... END_CASE execut una din cteva liste de declaraii ST selecia este fcut n concordan cu o expresie ntreag
CASE <expr_int> OF <valoare>: <instruciuni> <valoare>, <valoare>: <instruciuni>; ... ELSE <instruciuni>; END_CASE;

Nume: Semnificaia:

Sintaxa:

Valorile CASE trebuie s fie expresii constante ntregi. Cteva valori, separate prin virgule, pot duce la aceeai list de instruciuni. Instruciunea ELSE este opional.

Instruciunea WHILE
WHILE ... DO ... END_WHILE structur iterativ pentru un grup de instruciuni ST condiia continue este evaluat naintea oricrei
WHILE <expr_bool> DO <instruciune>;

Nume: Semnificaia: iteraii Sintaxa:

<instruciune>; .... END_WHILE;

Instruciunea REPEAT
REPEAT ... UNTIL ... END_REPEAT structur iterativ pentru un grup de instruciuni ST condiia continue este evaluat dup orice iteraie
REPEAT <instruciune>; <instruciune>; .... UNTIL <expr_bool> END_REPEAT;

Nume: Semnificaia: Sintaxa:

Instruciunea FOR
FOR ... TO ... BY ... DO ... END_FOR execut un numr limitat de iteraii folosind o variabil index analog ntreag
FOR <index> := <mini> TO <maxi> BY <step> <instruciune>; <instruciune>; END_FOR;

Nume: Semnificaia: Sintaxa:


DO

Operanzi:

index: variabil analog intern care crete la fiecare bucl mini: valoare iniial pentru index (naintea primei bucle) maxi: valoarea maxim permis pentru index step: indexul de cretere la fiecare bucl Instruciunea [BY step] este opional. Dac nu este specificat, pasul de incrementare este 1.

Instruciunea EXIT
EXIT ieirea dintr-o instruciune iterativ FOR, WHILE sau
EXIT;

Nume: Semnificaia: REPEAT Sintaxa: Operanzi:

nici unul

3.3.6. Extensii ale limbajului ST Urmtoarele funcii sunt extensii ale limbajului ST: TSTART TSTOP: controlul printr-o variabil de tip timer Instruciunile i funciile urmtoare sunt disponibile s controleze execuia programelor fiu SFC. Pot fi folosite n interiorul blocurilor ACTION() ... END_ACTION; n etape SFC. - GSTART: ncepe un program SFC - GKILL: oprete un program SFC - GFREEZE: suspend un program SFC - GRST: repornete un program SFC suspendat - GSTATUS: obine starea curent a programului SFC Cmpurile urmtoare pot fi folosite pentru a accesa starea unui pas SFC: GSnnn.x valoare boolean care reprezint starea pasului GSnnn.t timpul trecut de la ultima activarea a pasului nnn este numrul de referin al pasului Exemplu: Se consider un program prog i alt program care are nevoie de activarea etapei programului prog.

Instruciunea TSTART
TSTART pornete incrementarea unei variabile de tip timer, fr a-i reseta valoarea
TSTART (<var_timp>);

Nume: Semnificaia: Sintaxa: Operanzi: Valoarea returnat:

orice variabil timer inactiv nici una

Exemplu: Program SFC care folosete instruciunile TSTART si TSTOP

n cazul n care b100 este adevarat, diagrama de timp va fi ntotdeauna fals.

Timerul menine aceeai valoare n timpul unui ciclu automat.

Instruciunea TSTOP
TSTOP oprete incrementarea unei variabile de tip timer, fr a-i modifica valoarea
TSTOP (<var_timp>);

Nume: Semnificaia: Sintaxa: Operanzi: Valoarea returnat:

orice variabil timer activ nici una

Instruciunea GSTART
GSTART pornete un program fiu SFC punnd un jeton n fiecare etap iniial
GSTART (<progr_fiu>);

Nume: Semnificaia: Sintaxa:

Operanzi: Valoarea returnat:

programul SFC specificat trebuie s fie un fiu al celui n care este scris instruciunea nici una

Exemplu: Folosirea lui GSTART i GKILL

Instruciunea GKILL
GKILL oprete un program fiu SFC prin ndeprtarea jetoanelor existente n etapele sale
GKILL (<prog_fiu>);

Nume: Semnificaia: Sintaxa: Operanzi: Valoarea returnat:

programul SFC specificat trebuie s fie un fiu al celui n care este scris instruciunea nici una

Instruciunea GFREEZE
GFREEZE suspend execuia unui program SFC fiu programele suspendate pot fi repornite prin instruciunea GRST
GFREEZE (<prog_fiu>);

Nume: Semnificaia:

Sintaxa: Operanzi:

programul SFC specificat trebuie s fie un fiu al celui n care este scris instruciunea

Valoarea returnat:

nici una

Instruciunea GRST
GRST repornete un program fiu SFC suspendat prin instruciunea GFREEZE
GRST (<prog_fiu>);

Nume: Semnificaia: Sintaxa: Operanzi: Valoarea returnat:

programul SFC specificat trebuie s fie un fiu al celui n care este scris instruciunea nici una

Instruciunea GSTATUS
GSTATUS returneaz starea curent a unui program SFC
<ana_var> := GSTATUS (<prog_fiu>);

Nume: Semnificaia: Sintaxa: Operanzi: Valoarea returnat:

programul SFC specificat trebuie s fie un fiu al celui n care este scris instruciunea 0 = programul este inactiv (oprit) 1 = programul este activ (pornit) 2 = programul este ngheat

3.4. Operatori , proceduri i funcii standard


3.4.1. Operatori standard. Exemplele date sunt editate n Structured Text.

Transferul datelor: atribuirea: alocarea unei variabile n alt variabil


<var_0> :=<var_l>

negaia analogic : alocarea negrii unei variabile


<var_0> :=-<var_l>

Operaii booleene: boolean AND: I boolean ntre dou sau mai multe valori
<var_0> :=<var_1> AND <var_2>

boolean valori

OR:

SAU boolean ntre dou sau mai multe

<var_0> :=<var_l> OR <var_2>

boolean Exclusive XOR : SAU exclusiv boolean ntre dou valori de intrare
<var_0> :=<var_1> XOR <var_2>

Operaii aritmetice: adunarea a dou sau mai multe variabile analogice


<var_0> :=<var_l> + <var_2>

scderea a dou variabile analogice


<var_0> :=<var_l> - <var_2>

nmulirea a dou sau mai multe variabile analogice


<var_0> :=<var_l> * <var_2>

mprirea a dou variabile analogice


<var_0> :=<var_l> / <var_2>

Operaii logice: AND_MASK: I bit cu bit


<rezultat> := AND_MASK <(16#abc,16#f0f)> (*rezultatul este 16#a0c*)

OR_MASK:

SAU bit cu bit


<rezultat> := OR_MASK <(16#abc,16#f0f)> (*rezultatul este 16#fbf*)

XOR_MASK:

SAU EXCLUSIV bit cu bit


<rezultat> := XOR_MASK <(16#012,16#011)> (*rezultatul este 16#003*)

NOT_MASK:

NEGAIE bit cu bit


<rezultat> := NOT_MASK <(16#1234)> (*rezultatul este 16#FFFF_EDCB*)

Comparaii: mai mic: se testeaz dac o valoare este mai mic dect alta (analog, de tip timer sau mesaj)
<rezultat> := <(z < B)> (*rezultatul este fals*)

mai mic sau egal: se testeaz dac o valoare este mai mic sau egal dect alta (analog sau mesaj)
<rezultat> := <(10 <= 25)> (*rezultatul este adevrat*)

mai mare: se testeaz dac o valoare este mai mare dect alta (analog, de tip timer sau mesaj)
<rezultat> := <(ab > a)> (*rezultatul este adevrat*)

mai mare sau egal: se testeaz dac o valoare este mai mare sau egal dect alta (analog sau mesaj)
<rezultat> := <(10 >= 25)> (*rezultatul este fals*)

egal: testeaza dac o valoare este egal cu alta (analog sau mesaj)
<rezultat> := <(10 = 25)> (*rezultatul este fals*)

diferit : testeaz dac o valoare este diferit de alta (analog sau mesaj)
<rezultat> := <(ab <> ab)> (*rezultatul este fals*)

Conversia datelor: BOO: convertete orice variabil n valoare de tip boolean


<rezultat1> := BOO <(10)> ; (*rezultatul1 este adevrat*) <rezultat2> := BOO <(t#0s)> ; (*rezultatul2 este fals*)

ANA:

convertete orice variabil n valoare de tip ntreg


<rezultat1> := ANA <(true)> ; (*rezultatul1 este 1*) <rezultat2> := ANA <(t#1s46ms)> ; (*rezultatul2 este 1046*)

REAL:

convertete orice variabil n valoare de tip real


<rezultat1> := REAL <(true)> ; (*rezultatul1 este 1.00*) <rezultat2> := REAL <(198)> ; (*rezultatul2 este 198.0*)

TMR:

convertete orice variabil analogic ntr-o valoare de tip timer


<rezultat> := TIMER <(1234)> ; (*rezultatul este t#1s234ms*) MSG:

convertete orice variabil ntr-o valoare de tip mesaj


<rezultat> := MSG <(true)> ; (*rezultatul este TRUE*)

Altele:

CAT:

concatenarea mai multor mesaje ntr-unul singur


<numelemeu> := <(Dl + )+Sorin> ; (* numelemeu := Dl Sorin *)

SYSTEM:

accesul la parametrii sistemului OPERATE: accesul la canalele I/O

3.4.2. Proceduri standard Procedurile standard suportate de sistemul ISaGRAF sunt predefinite i nu trebuiesc declarate ntr-o bibliotec.

Proceduri pentru variabile booleene: SR: Set dominant bistable


setare bistabil

RS:

Reset dominant bistable

resetare bistabil R_Trig: Rising edge detection


detectare front cresctor a unei variabile booleene F_Trig: Falling edge detection detectare front descresctor a unei variabile booleene SEMA: Semaphore semafor

Proceduri de numratoare:

CTU: Up counter numr cresctor de la 0 la o valoare dat, 1 cte 1 CTD: Down counter numr descresctor de la o valoare dat la 0, 1 cte 1 CTUD: Up-down counter numra reversibil, de la 0 la o valoare dat sau de la o valoare dat la 0

Proceduri de contorizare:

TON: On-delay timing incrementeaz un timer intern pn la o anumit valoare, de la detectarea frontului cresctor al semnalului declanator pn la detectarea frontului descresctor TOF: Off-delay timing incrementeaz un timer intern pn la o anumit valoare, de la detectarea frontului descresctor al semnalului declanator pn la detectarea frontului cresctor TP: Pulse timing incrementeaz un timer intern pn la o anumit valoare de la detectarea frontului cresctor al semnalului declanator un interval de timp determinat

Proceduri pentru valori ntregi:

CMP: Full comparison function block compar dou valori i transmite dac sunt egale, sau dac prima este mai mic sau mai mare dect a doua StackInt: Stack of integer analogs gestioneaz o stiv de ntregi

Proceduri pentru valori reale:

AVERAGE: Running average over N samples memoreaz o valoare la fiecare ciclu automat i calculeaz valoarea medie a tuturor valorilor memorate; doar ultimele N valori sunt memorate HYSTER: Boolean hysteresis on defference of reals histerizisul unei valori reale oferindu-se ca intrare limita superioar LIM_ALRM: High/low limit alarm with hysteresis histerezisul unei valori reale oferindu-se ca intrare att limita superioar ct i cea inferioar INTEGRAL: Integration over time integrarea unei variabile reale n timp DERIVATE: Differentiation according to time derivarea unei variabile reale n timp

Proceduri pentru generarea semnalelor :


BLINK: Blinking boolean signal generarea unui semnal boolean n pulsuri SIG_GEN: Signal generator

generarea unei varietai de semnale: boolean pulsatoriu, incremental, sinusoidal

3.4.3. Funcii standard Funciile standard suportate de sistemul ISaGRAF sunt predefinite i nu trebuiesc declarate ntr-o bibliotec.

Funcii matematice:

ABS: Absolute value returneaz valoarea absolut (pozitiv) a valorii reale EXPT: Exponent returneaz rezultatul real al operaiei (bazaexponent) baza fiind primul argument i exponent al doilea LOG: Logarithm calculeaz logaritmul (baza 10) a unei valori reale POW: Power calculation returneaza rezultatul real al operatiei (bazaexponent) baza fiind primul argument si exponent al doilea; exponentul este o valoare real SQRT: Square root calculeaz rdcina ptrat a unei valori reale TRUNC: Truncate decimal part truncheaz o valoare real pentru a avea doar partea ntreag

Funcii trigonometrice:

ACOS: Arc cosine Calculeaz arccosinusul unei valori reale ASIN: Arc sine Calculeaz arcsinusul unei valori reale ATAN: Arc tangent Calculeaz arctangenta unei valori reale COS: Cosine Calculeaz cosinusul unei valori reale SIN: Sine Calculeaz sinusul unei valori reale TAN: Tangent Calculeaz tangenta unei valori reale

Funcii de control a irurilor de bii:

ROL: Rotate Left Rotirea la stnga a biilor unui ntreg; rotirea se face pe 32 de bii ROR: Rotate Right Rotirea la dreapta a biilor unui ntreg; rotirea se face pe 32 de bii SHL: Shift Left

Deplasarea la stnga a biilor unui ntreg; deplasarea este fcut pe 32 de biti SHR: Shift Right Deplasarea la dreapta a biilor unui ntreg; deplasarea este fcut pe 32 de bii

Funcii de control a datelor:


MIN: Minimum Calculeaz minimul dintre dou valori ntregi MAX: Maximum Calculeaz maximul dintre dou valori ntregi LIMIT: Limit Limiteaz valoarea unei variabile ntr-un interval precizat MOD: Modulo Calculeaz modulul unei valori ntregi MUX4, MUX8: Multiplexer (4 or 8 entries) Multiplexor cu 4 sau 8 intrri; selecteaz o valoare ntre 4 sau 8 valori ntregi ODD: Odd parity Testeaz paritatea unui ntreg: rezultatul este par sau impar RAND: Random value Genereaz o valoare ntreag aleatoare ntr-un interval dat SEL: Binary selector Selecteaz o valoare dintre dou valori ntregi

Funcii de conversie a datelor:


ASCII: Character ASCII code Genereaz codul ASCII al unui caracter CHAR: ASCII code Character Genereaz un caracter pornind de la codul ASCII dat ca

parametru

Funcii pentru iruri de caractere:


DELETE: Delete sub-string terge subir de caractere FIND: Find sub-string Gsete un subir ntr-un ir; ofer poziia n ir a subirului INSERT: Insert string Introduce un subir ntr-un ir ncepnd cu o anumit poziie dat LEFT: Extract left of a string Extrage un numr specificat de caractere din partea stng a unui ir de caractere MID: Extract middle of a string

Extrage un numr specificat de caractere dintr-un ir pornind de la o poziie specificat MLEN: Get string length Calculeaz lungimea unui ir de caractere REPLACE: Replace sub-string nlocuiete o parte a unui ir de caractere cu un nou set de caractere RIGHT: Extract right of a string Extrage un numr specificat de caractere din partea dreapt a unui ir de caractere DAY_TIME: Time of day ntoarce data/ timpul ca un ir de caractere

Funcii pentru vectori:


ARCREATE: Create array of integer values Creeaz un vector de valori ntregi ARREAD: Read array element Citete un element dintr-un vector de valori ntregi ARWRITE: Write array element Scrie o valoare ntr-un vector de valori ntregi

Funcii pentru gestionarea fiierelor binare:

F_ROPEN: Open a binary file in Read mode Deschide un fiier binar n modul citire; se va folosi FX_READ i F_CLOSE; aceast funcie nu este inclus n simulatorul ISaGRAF F_WOPEN: Open a binary file in Write mode Deschide un fiier binar n modul scriere; se va folosi FX_WRITE i F_CLOSE ; aceast funcie nu este inclus n simulatorul ISaGRAF F_CLOSE: Close a binary file nchide un fiier binar deschis cu funciile F_ROPEN sau F_WOPEN; aceast funcie nu este inclus n simulatorul ISaGRAF F_EOF: Test the end of a binary file Testeaz dac s-a ajuns la sfritul fiierului FA_READ: Read an analog value in a binary file Citete variabile analogice dintr-un fiier binar; folosit cu F_ROPEN i F_CLOSE FA_WRITE: Write an analog value to a binary file Scrie variabile analogice ntr-un fiier binar; folosit cu F_WOPEN i F_CLOSE FM_READ: Read a message string in a binary file Citete variabile mesaj dintr-un fiier binar FM_WRITE: Write a message string to a binary Scrie variabile mesaj ntr-un fiier binar

3.5. Variabile i constante n ISaGRAF


3.5.1. Domeniile variabilelor Variabilele pot fi de tip LOCAL sau GLOBAL. Variabilele locale pot fi folosite doar de un program. Variabilele globale pot fi folosite de orice program al aplicaiei curente. Numele variabilelor trebuie s respecte urmtoarele reguli: - numele nu trebuie s depseasc 16 caractere - primul caracter trebuie s fie o liter - urmtoarele caractere pot fi litere, numere sau caracterul underscore

O variabil este identificat prin nume, comentariu, atribut, adres i alte cmpuri specifice.

Tipurile de atribute ale variabilelor

Boolean nseamn logic. Astfel de variabile pot lua una dintre cele dou valori booleene: TRUE sau FALSE. Variabilele booleene se folosesc de obicei n expresii booleene. Variabilele booleene pot avea unul dintre urmtoarele atribute: INTERNAL: variabil din memoria intern modificat de program CONSTANT: variabil din memorie cu atributul read only i cu o valoare iniial INPUT: variabil conectat la un dispozitiv de intrare OUTPUT: variabil conectat la un dispozitiv de ieire

Variabilele de tip timer sunt ntotdeauna variabile interne. Variabilele Input i Output fac parte din domeniul Global. Pentru I/O digitale se asociaza o variabil boolean iar pentru I/O analogice se asociaz ntotdeauna o variabil analogic integer. Variabilele care nu reprezint semnale I/O trebuie declarate cu tipul intern. 3.5.2. Principalele tipuri de variabile Orice constant, expresie sau variabil folosit ntr-un program (scris n orice limbaj) trebuie s fie caracterizat de un anumit tip. Coerena trebuie s fie apoi urmat n operaiile grafice i n instruciunile literale. Principalele tipuri de variabile disponibile pentru programe sunt : BOOLEAN: valori binare de tipul true/ false ANALOG: valori ntregi (integer) sau reale (real) TIMER: valori de tip timer MESSAGE: iruri de caractere 3.5.3. Expresii constante

Expresiile constante sunt raportate de tipul de variabil. Aceeai notaie nu poate fi folosit pentru a reprezenta expresiile constante ale diferitelor tipuri.

Constante de tip boolean:


TRUE: este echivalentul numrului ntreg 1 FALSE: este echivalentul numrului ntreg 0

Constante de tip integer:

Constantele de tip ntreg sunt reprezentate pe 32 de bii, avnd valorile cuprinse ntre -232 i 232. Pot fi exprimate i n alte baze de numeraie i trebuie s nceap cu un prefix care s identifice baza folosit. Baza zecimal hexazecimal octal binar

Prefix niciunul 16# 8# 2#

Exemplu -120 16#A3F5D 8#17401 2#1000_1101_010

Constante analogice de tip real:

Constantele analogice reale pot fi scrise fie printr-o reprezentare zecimal, fie printr-o reprezentare tiinific. Punctul zecimal este folosit pentru a diferenia o constant real de una de tip ntreg. Reprezentarea tiinific folosete literele E i F pentru a separa mantisa de exponent. Partea exponenial a unei expresii tiinifice reale trebuie s fie o valoare ntreag cu semn ntre -37 i +37. Mai jos sunt prezentate cateva exemple de constante reale: 3.14159 +1.0 -1.0E+12 Numarul 123 nu reprezint o constant real, reprezentarea lui corect este 123.0

Constante de tip timer:

Constantele de tip timer sunt valori cuprinse ntre 0 i 23h59m59s999ms. Cea mai mic unitate permis este milisecunda. Unitile de timp standard folosite n expresii de tip timer sunt: HOUR: litera h trebuie s fie urmat de or MINUTE: litera m trebuie s fie urmat de numrul de minute SECOND: litera s trebuie s fie urmat de numrul de secunde MILLISECOND: literele ms trebuie s fie urmate de numrul de milisecunde O constant de tip timer trebuie s nceap cu prefixul T# sau time#. Unele uniti pot s nu apar. Exemple: T#1H450MS 1 or, 450 milisecunde time#1H3M 1 or, 3 minute

Capitolul 4. DESCRIEREA MEDIULUI DE PROGRAMARE INDRALOGIC

Mediul de programare IndraLogic reprezint o soluie complet att pentru programarea unui automat programabil ct i pentru a realiza interfaa grafic cu utilizatorul pentru automatele de tip Bosch-Rexroth seria IndraControl. El se bazeaz pe mediul numit CoDeSys, versiunea 2.3, service pack 2, creat de firma Smart Software Solutions (3S), dar are n plus cteva funcii specifice pentru acest tip de automate.

4.1. Structura unui proiect IndraLogic


Un proiect IndraLogic este un fiier al crui nume corespunde cu cel al proiectului i n care se regsesc att configuraiile stabilite de programator ct i programele ce vor fi executate n automat. Proiectul este mprit n patru zone de interes, dup cum se poate vedea i n fig. 4.1: - programele ce vor rula pe automat - structurile de date complexe declarate de programator - vizualizrile - resursele implicate.

Fig.4.1. Zonele de interes pentru un proiect IndraLogic

4.1.1. Conceptul POU POU sau Program Organization Unit se regsete n prima zon de interes a unui proiect IndraLogic i reprezint o funcie, un bloc funcional sau un program. Fiecare POU este constituit dintr-o zon de declaraii i un corp. Acest corp poate fi scris ntr-unul din limbajele de programare conform IEC care include IL (Instruction List), ST (Structure Text), SFC (Sequential Flow Chart), FBD (Function Block Diagram) sau LD (Ladder Diagram). O funcie este un POU a crui ieire este un singur element de date (care poate fi format din mai multe elemente sau structuri). Funciile nu au elemente de stare intern, astfel c fiecare apel al unei funcii cu un anumit argument va avea acelai rezultat. La declararea unei funcii trebuie s se hotrasc tipul de date returnat. Un bloc funcional este un POU a crui rezultat poate fi diferit chiar dac argumentul de intrare este acelai dar, spre deosebire de o funcie, blocul nu returneaz o valoare. El poate avea mai multe instane (copii) ce au comportament particular n funcie de starea lor intern. Fiecare dintre instane are identificatorul propriu (numele instanei), i o structur de date ce conine intrrile, ieirile, i variabilele interne. Instanele se declar local sau global ca variabile unde numele blocului este identificatorul. Un program este un POU ce poate returna mai multe valori n timpul rulrii. Programele sunt recunoscute global n proiect. Toate valorile se rein de la ultima rulare pn la urmtoarea rulare. Programele nu pot fi apelate de ctre o funcie, i nu pot exista mai multe instane ale aceluiai program. Dac un POU a apelat un program, valorile interne ale acestuia modificndu-se, acele valori sunt reinute i folosite la urmtoarea rulare chiar dac programul este apelat i de un alt POU. Important n aceast categorie este programul denumit PLC_PRG. El este un program special predefinit, fiind apelat exact o singur dat pe ciclu de automat. Prima dat cnd se iniiaz un nou proiect, se va deschide o fereastr de configurare a acestui program. 4.1.2. Conceptul Data types Data types este cea de-a doua zon de interes ntr-un proiect IndraLogic, i reprezint pe lng tipurile de date standard predefinite i pe cele definite specific de programator. Se pot crea aici structuri, enumeraii i referine.

4.1.3. Conceptul Visualization IndraLogic ofer posibilitatea de a face i o interfaa om-main. Aici se pot trasa obiecte geometrice, tabele de variabile i alte elemente de desenare n mod offline. Online, elementele desenate i modific proprietile astfel nct s corespund strilor din automatul programabil. 4.1.4. Resursele Implicate Aceast zon permite programatorului s configureze i s organizeze proiectul pentru a urmri valorile anumitor variabile n modul online: Global Variables declararea variabilelor globale ce pot fi folosite n ntreg proiectul i pentru variabile de reea; Library manager permite adugarea sau excluderea unor librrii de funcii, structuri de date, etc.; Log este un sistem de arhivare a aciunilor pe parcursul unei sesiuni online; PLC Configuration este un instrument pentru configurarea elementelor hardware ale automatului (carduri de intrare, ieire, comunicaie etc.); Task Configuration permite organizarea programelor n taskuri ce se vor executa pe automat; Watch and Recipe Manager utilizat la vizualizarea anumitor variabile i setarea valorilor implicite ale unor variabile; Target system settings se folosete pentru a selecta i configura automatul i proprietile acestuia pe care va rula proiectul, iar n funcie de aceast alegere mai pot aprea i resurse suplimentare cum ar fi: Sampling Trace pentru realizarea statisticilor valorilor variabilelor n timp; Parameter Manager este folosit la schimbul de date cu alte controllere n reele; PLC Browser este un monitor al controllerului;

Tools a crui apariie depinde de automatul ales, dnd posibilitatea de a chema instrumente externe mediului IndraLogic.

4.2. Tipuri de date n IndraLogic


4.2.1. Tipuri de date predefinite Variabile de tip Bool tipul de variabil boolean poate lua doar dou valori TRUE sau FALSE. Variabile de tip Integer. Acest tip de variabil se folosete pentru a memora numere ntregi cu semn sau fr semn. Ele sunt mprite n urmtoarele categorii: BYTE numr ntreg fr semn codificat pe opt bii de date; WORD numr ntreg fr semn codificat pe aisprezece bii de date; DWORD numr ntreg fr semn codificat pe treizeci i doi de bii de date; SINT numr ntreg codificat pe opt bii de date cu semn cu valori ntre (-128, 127); USINT numr ntreg codificat pe opt bii de date fr semn cu valori ntre (0, 255); INT numr ntreg codificat pe aisprezece bii de date cu semn cu valori ntre (-32768, 32767); UINT numr ntreg codificat pe aisprezece bii de date fr semn cu valori ntre (0 , 65535); DINT numr ntreg codificat pe treizeci i doi de bii de date cu semn cu valori ntre (-2147483648, 2147483647); UDINT numr ntreg codificat pe treizeci i doi de bii de date fr semn cu valori ntre (0, 4294967295). Variabile de tip Real. Acest tip de variabil se folosete pentru reprezentarea numerelor n formatul virgul mobil (numere reale) i sunt de dou tipuri: REAL numere reale codificate pe treizeci i doi de bii de date; LREAL numere reale codificate pe aizeci i patru de bii de date. Variabile de tip String. Sunt tipul de variabile n care se poate memora un ir de caractere. Numrul de caractere, cunoscut

drept lungimea acestora se poate seta la declarare, iar dac acesta nu este definit, implicit se acord 80 de caractere lungime. Variabile de tip Time. Acest tip de variabile este folosit pentru reinerea momentelor de timp. Are rezoluie de milisecund iar intervalul de valori este (0, 49d17h2m47s295ms). Tipurile de tip Time sunt: TIME TIME_OF_DAY(TOD) DATE DATE_AND_TIME Ultimele dou tipuri de date sunt tratate intern ca DWORD, timpul fiind redat n secunde, i nu n milisecunde. 4.2.2. Tipuri de date definite de utilizator Variabile de tip Array. Aceste variabile sunt folosite pentru declararea vectorilor i a matricilor. Se pot defini cmpuri de date cu pn la trei dimensiuni de orice tip de date, predefinite sau definite de utilizator. Variabile de tip Struct. Acest tip de date reprezint structuri pe care programatorul le poate implementa, structuri ce pot conine toate tipurile de date i la rndul lor pot fi grupate n array-uri. Variabile de tip Pointer. Sunt variabile ce pot indica un pointer ctre orice tip de date sau bloc funcional chiar i pe cele definite de utilizator. Acest tip de date se folosete n conjuncie cu funcia ADR pentru a asigna valoarea dorit. Variabile de tip Enumeration. Cu ajutorul lor se d posibilitatea utilizatorului s creeze un numr de string-uri constante ce vor fi considerate valori ale enumerrii. Important este faptul c acelai string constant nu poate fi folosit n dou enumerri. 4.2.3. Variabile globale Variabilele globale sunt variabilele ce pot fi accesate din orice program i chiar pot fi modificate de ctre utilizatori din reeaua unde se afl automatul. La ele au acces toate resursele de pe automat, spre deosebire de variabilele locale ale blocurilor funcionale sau programelor, la care nu au acces dect cei care le-au creat. n aceste variabile globale pot fi definite orice tip de date predefinit sau definit de utilizator, care se pot iniializa cu o

valoare tipic, vezi fig. 4.2. Dac nu este iniializat, atunci variabila este implicit 0 pentru date numerice sau caracterul vid n cazul irurilor de caractere.

Fig.4.2. Declararea variabilelor globale

4.3. Diferene importante IndraLogic - ISaGRAF


ntre cele dou medii de programare sunt foarte multe asemnri dar i unele diferene majore care trebuie analizate. Prima dintre diferene i cea mai important este structura unui proiect IndraLogic. Dac n structura proiectului ISaGRAF exist 4 seciuni n care pot rula programele, aici nu mai este valabil aceast mprire. Toate programele au aceeai prioritate la execuie, depinznd numai de setrile impuse de utilizator prin configurarea task-urilor. O alt diferen important este structura unei etape IndraLogic. Aceasta are anumite proprieti foarte bine definite i, spre deosebire de ISaGRAF, utilizatorului nu i este dat accesul la timpul n care o etap este activ sau nu. n schimb, prin meniul de proprieti se pot seta parametrii de timp ai unei etape (timpul minim sau maxim ct automatul rmne n etapa respectiv), opiuni de inserare a unei etape+tranziie, paralelism sau divergen, proprieti vizuale ale etapei (nlime, lime, comentarii) i cele legate de aciunile asociate etapei. Spre deosebire de proprietile aciunilor din ISaGRAF, aciunile din IndraLogic sunt de trei tipuri: - Entry Action se execut o singur dat la intrare ntr-o etap; - Action se execut pe tot parcursul etapei la fiecare ciclu;

- Exit Action se execut o singura dat la ieirea din etap. Fiecare din aceste tipuri de aciuni are propriul ei ecran de editare, pentru prima i ultima fiind activate dac se apas dublu-click pe colurile de jos ale etapei iar tipul Action prin dublu-click n interiorul chenarului etapei, aa cum se poate vedea n fig. 4.3.

Fig.4.3. Proprietile unei etape IndraLogic

4.4. Blocuri funcionale


R_TRIG. Acest bloc funcional face detecia trecerii unei variabile booleene de la un nivel low la un nivel high sau de la false la true. Aceast variabil poate fi o intrare digital sau orice alt variabil boolean existent. Ieirea acestui bloc va rmne false att timp ct intrarea n acest bloc este false. Imediat ce intrarea acestui bloc devine true, i ieirea lui va avea aceeai valoare pentru un ciclu automat, dup care devine false, pn cnd la intrare se va detecta nc o trecere din false n true. Exemplu de utilizare n limbajul Ladder se poate observa n fig. 4.4.

Fig.4.4. Blocul funcional R_TRIG

Iar n limbaj ST:


Rise(CLK:=VARIAB_INPUT); IOUTPUT:=Rise.Q;

F_TRIG. Acest bloc funcional este analogul lui R_TRIG doar c n loc s detecteze tranziia de la false la true el detecteaz trecerea de la true la false. Exemplul de utilizare n limbajul ladder este prezentat n fig.4.5.

Fig.4.5. Blocul funcional F_TRIG

CTU. Acest bloc funcional numr impulsurile de la intrare, incrementnd o valoare de la care se pornete aceast numrare. Blocul funcional are drept intrri booleene: CU (variabila pe al crui front cresctor se dorete numrarea, incrementarea valorii counterului fcndu-se cu o singur unitate la un puls), RESET (variabil care reiniializeaz counterul cu valoarea 0), intrare de tip integer PV (reprezint valoarea cu care se compar numrul de pulsuri incrementate), i dou ieiri: Q (variabila de ieire boolean care devine true cnd valoarea din counter este egal sau depete valoarea PV) i CV (valoarea actual a counterului). Exemplul de utilizare n limbaj Ladder este cel din fig. 4.6.

Fig.4.6. Blocul funcional CTU

CTD. Acest bloc funcional decrementeaz o valoare cu o unitate la fiecare puls, tranziie de la false la true a variabilei de la intrarea sa. El are

drept intrri booleene: CD (variabil pe al crui front descresctor se decrementeaz valoarea din counter), LOAD (pe frontul cresctor al acestei variabile se va face ncrcarea counterului cu o valoare prestabilit), intrare de tip integer PV (valoarea cu care se dorete iniializarea counterului), ieirea booleana Q (va fi adevarat att timp ct valoarea counterului este 0) i ieirea de tip integer CV (valoarea actual a counterului). Exemplul de utilizare n limbaj Ladder este cel din figura 4.7.

Fig.4.7. Blocul funcional CTD

CTDU. Acest bloc funcional este o combinaie ntre cele dou, adic prezint ambele funcii de numrare incremental i decremental, precum i cele de reset i load. Ieirile lui digitale sunt aceleai ca la cele dou blocuri prezentate mai sus i de aceea nu se va arta dect un exemplu de utilizare n limbajul Ladder Diagram, n fig. 4.8.

Fig.4.8. Blocul funcional CTUD

TON. Timer On Delay are drept scop ntrzierea cu un anumit timp a unui semnal digital boolean. El are drept intrri: IN aici se conecteaz variabila a crei schimbare din false n true se dorete a fi ntrziat, PT o variabil de tip TIME sau o constant n formatul TIME care spune ct timp se dorete a fi ntrziat semnalul, iar ca ieiri are Q variabila care va deveni true dup trecerea timpului PT, precum i ET cea care d valoarea timpului actual al timerului. Modul de funcionare presupune c att timp ct intrarea IN este false, ieirea Q s rmn false. Imediat ce IN devine true, atunci timpul din timer, ET va ncepe s creasc de ordinul milisecundelor, pn cnd valoarea sa atinge ceea ce utilizatorul a specificat n PT, dup care va rmne constant. Dac intrarea IN devine false, timerul se reiniializeaz.

Ieirea Q devine true numai dac IN este true i ET este egal cu PT, altfel este false. Exemplul de utilizare este cel din fig. 4.9.

Fig.4.9. Blocul funcional TON

Graficul ce explic funcionarea acestui bloc este cel din fig. 4.10.

Fig.4.10. Graficul funcionrii n timp a blocului TON

TOF. Timer Off Delay are o funcionalitate asemntoare. Are aceleai intrari i ieiri dar face o ntrziere a frontului descresctor al variabilei de la intrare. Modul de funcionare presupune c att timp ct intrarea este true ieirea Q s rmn true. Imediat ce IN devine false, timpul din timer ET va ncepe s creasc de ordinul milisecundelor pn cnd valoarea sa atinge ceea ce utilizatorul a specificat n PT, dup care va rmne constant. Dac intrarea IN devine true, timerul se reiniializeaz. Ieirea Q devine false numai dac IN este false i ET este egal cu PT, altfel este true. Exemplul de utilizare este prezentat n fig. 4.11.

Fig.4.11. Blocul funcional TON

Graficul ce explic funcionarea acestui bloc este cel din fig. 4.12.

Fig.4.12. Graficul funcionrii n timp a blocului TOF

4.5. Problematica Timpului n IndraLogic


Msurarea timpului n mediul de programare IndraLogic necesit o abordare diferit de cea din ISaGRAF. Dac se dorete ca automatul s atepte un timp ntr-o etapa nainte de a efectua tranziia la etapa urmtoare, utilizatorul nu are acces la variabila de timp local, care msoar durata ct automatul se afl n acea stare, i de aceea trebuie gsite alte soluii. Prima soluie provine chiar din proprietile unei etape. Printre aceste proprieti utilizatorul poate stabili timpul minim ct automatul trebuie s stea n etapa respectiv. Pentru aceasta se urmeaz paii de mai jos: - se creeaz etapa dorit, dac aceasta nu exist deja; - condiia de ieire din etapa respectiv trebuie s fie adevrat; - se selecteaz etapa respectiv i se apsa butonul din dreapta al mouse-ului; - se selecteaz de aici Step Attributes; - se completeaz cu valoarea de timp dorit n formatul Time i se apas OK. Acest procedeu a fost ilustrat n fig. 4.13 i 4.14.

Fig.4.13. Alegerea proprietii Step Attributes

Fig.4.14. Completarea cmpului Minimum Time

Dac se dorete ca automatul s stea ntr-o etap un interval de timp variabil, atunci se folosete o alt metod care se bazeaz pe proprietile aciunilor din IndraLogic. Dup cum a fost menionat mai sus,

sunt trei tipuri de aciuni: cele care se execut la intrarea ntr-o etap, cele care se execut la fiecare ciclu att timp ct automatul se afl n acea etap i cele care se execut la ieirea dintr-o etap. n plus trebuie s se foloseasc o funcie predefinit a mediului de programare i anume funcia TIME(). Aceast funcie returneaz n milisecunde timpul care a trecut de cnd automatul a fost pornit sub forma unei variabile de tip TIME. Modul de folosire este urmtorul: variabila1:=TIME(). Metoda propus presupune memorarea momentului de timp n care se intr n etapa respectiv (n engleza time stamp) i apoi citirea periodic a funciei TIME(), pn cnd diferena ntre cele dou momente de timp este egal sau mai mare cu intervalul de timp. Paii care trebuiesc urmai sunt: se creaz etapa dorit dac aceasta nu exist deja; se selecteaz etapa respectiv i se apas butonul din dreapta al mouse-ului; se alege de acolo Add Entry Action n limbajul ST; se declar o variabil de timp n care se va memora time stampul de intrare folosind funcia TIME(); se apas dublu click pe etapa respectiv pentru a se putea introduce aciunile dorite a se efectua la fiecare ciclu; se declar o variabil de timp n care se va memora time stampul curent folosind funcia TIME(); condiia de ieire din etapa este: time-stamp curent timestamp de intrare >= variabila de timp. Exemplul simplificat de configurare se poate observa n fig. 4.15 i 4.16.

Fig.4.15. Introducerea unei aciuni de tipul Entry - Action

Fig.4.16. Introducerea unei aciuni de tipul Action

4.6. Taskuri i configurarea acestora


Task-ul este definit de un nume, o prioritate i de un tip ce determin satisfacerea crei condiii va porni acel task. Aceste condiii pot fi definite de un moment de timp (ciclic, freewheeling), sau un eveniment intern sau extern, de exemplu frontul cresctor al unei variabile globale sau o ntrerupere n automatul programabil. Pentru fiecare task se poate specifica o serie de programe ce vor fi pornite de task. Dac taskul este executat n ciclul prezent, atunci aceste programe vor fi procesate pe ntreaga lungime a unui ciclu. Ordinea n care se executa taskurile va fi determinat de combinaia, de prioritatea i condiiile de ncepere. Editorul pentru configurarea taskurilor se poate gsi n categoria Resources, Task Configuration. Odat deschis editorul, se pot defini taskurile i proprietile acestora. Programele construite nu vor fi executate n run-time pn cnd nu au fost apelate ntr-un task. Pentru a putea nelege mai uor paii de configurare a unui program, s-a ales urmtorul exemplu. Se definete un program numit Test i apoi se va configura un task pentru acesta. La crearea unui noi proiect, primul pas este cel de a crea programul. n acest caz s-a optat pentru limbajul SFC, vezi fig. 4.17.

Fig.4.17. Crearea unui program numit Test

Apoi se merge la editorul de taskuri aa cum s-a precizat mai sus.

Fig.4.18. Crearea unui nou task

Dup care se trece la adugarea unui nou task prin apsarea butonului din dreapta al mouse-ului cnd pointerul acestuia se afl deasupra pictogramei Task configuration i alegndu-se opiunea Append task (vezi fig. 4.18.). Acestui task creat i se poate modifica numele iar n dreapta ferestrei de editare se pot gsi opiunile pe care programatorul le are pentru acel task. n mod implicit acesta este un task ciclic fr o durat predefinit, cu prioritate 1 (a doua prioritate) vezi fig. 4.19.

Fig.4.19. Taskul n IndraLogic

Dup ce acest task a fost creat, i se poate aduga o apelare a unui program prin apsarea butonului din dreapta a mouse-ului, cnd pointer-ul acestuia se afla n dreptul pictogramei cu numele task-ului definit, prin

alegerea opiunii Append Program Call sau Insert Program Call dac mouse-ul s-a aflat n dreptul pictogramei cu programul ales (vezi fig. 4.20).

Fig.4.20. Opiunile taskurilor n IndraLogic

Odat definit, unui program call trebuie s i se configureze care din programele existente n proiect va fi apelat de acesta. Pentru aceasta se folosete butonul special ... care va deschide fereastra denumit Input Assistant, ce permite alegerea din lista de programe a celui care se dorete a fi chemat, aa cum rezult din fig. 4.21.

Fig.4.21. Apelul unui program n IndraLogic

Odat apelat, programul este executat conform proprietilor definite pentru task. Un task poate apela mai multe programe prin repetarea pailor de mai sus, iar ele vor fi executate n ordinea apelrii lor de acest task ca n fig. 4.22.

Fig.4.22. Apelarea a dou programe succesive

4.7. Conceptul de vizualizare Vizualizarea IndraLogic este o reprezentare grafic a variabilelor proiectului care ofer posibilitatea introducerii de date n automatul programabil n timp real cu ajutorul mouse-ului sau a tastaturii. Editorul de vizualizri, care este o parte integrant a mediului de programare, permite utilizarea unor elemente grafice care pot fi configurate astfel nct s fie conectate la variabilele proiectului prin intermediul unui dialog corespunztor unui singur element al unei vizualizri. Parametrii de baz pot fi setai prin activarea unor opiuni, iar prin introducerea variabilelor procesului se poate obine parametrizarea dinamic. Elementele posibile ale unei vizualizri se regsesc n bara din meniul mediului de programare, putnd fi inserate diferite forme geometrice, poze n format bitmap, fiiere metafile, butoane i chiar alte vizualizri existente. Formele geometrice ce pot fi introduse sunt: dreptunghiuri, dreptunghiuri cu colturi rotunjite, elipse/cercuri i poligoane. Un exemplu de vizualizare este cel din fig. 4.23.

Fig.4.23. Exemplu de vizualizare n IndraLogic

n exemplul de mai sus s-au folosit majoritatea elementelor grafice disponibile n editorul specializat, s-au introdus i cele cinci poze n format bitmap ale roboilor, diferitele stri de funcionare fiind accentuate i prin parametrizarea dinamic a coordonatelor (pentru a sugera micarea) i a culorilor (pentru a evidenia stare normal sau anormal de funcionare). Pentru o uoar nelegere se va da un exemplu simplu de configurare a unui buton i a unui indicator tip led. n prealabil au fost declarate aceste variabile ca fiind globale, i n plus s-a creat un program de control n limbajul Ladder care este definit: att timp ct butonul este true variabila led este true. Primul pas pentru a putea realiza o vizualizare este crearea unui asemenea obiect prin apsarea butonului din dreapta al mouse-ului cnd cursorul acestuia se afla n dreptul pictogramei Visualization i alegerea opiunii Add Object, rezultatul putnd fi vzut n fig. 4.24.

Fig.4.24. Editorul de vizualizri IndraLogic

Odat cu denumirea acestui obiect, pe ecran apare i editorul de ecrane. n bara de sus a acestuia exist posibilitatea de a alege elementele pe care programatorul dorete s le insereze n ecran. n exemplul dat se aleg dou obiecte: unul de tip button i unul de tip circle (vezi fig. 4.25).

Fig.4.25. Introducerea elementelor n vizualizare

La apsarea dublu click deasupra unui obiect, se deschide automat meniul de configurare al acestui tip de element (ca n fig. 4.26).

Fig.4.26. Opiunile obiectelor din vizualizare n IndraLogic

Dac se alege opiunea Text se poate introduce textul ce se dorete a fi afiat pe ecran, iar prin alegerea opiunii Input se poate configura tipul butonului (cu automeninere sau fr), precum i variabila ce se dorete a fi manipulat de acest buton. Dac n cmpul acesta se ncepe cu . atunci apare lista variabilelor globale din care se poate alege denumirea celei dorite, iar la apsarea butonului OK se nchide fereastra, butonul fiind configurat. Pentru configurarea obiectului de tip LED se deschide ca i anterior meniul de configurare iar prin alegerea opiunii Text se poate introduce textul ce se dorete a fi afiat pe ecran. Se trece apoi la configurarea culorilor pe care acest led trebuie sa le ia n funcie de valoarea variabilei booleene, ca n fig. 4.27.

Fig.4.27. Configurarea proprietii color

Opiunile de aici sunt Inside color i anume culoarea pe care o ia n mod implicit obiectul (dac variabila de care este legat este false) i Alarm color unde se va configura cea de-a doua culoare (cea pe care obiectul o s o aib dac variabila de care este legat devine true). Legarea de variabila dorit se face prin alegerea meniului denumit Variables iar la opiunea Change color se va scrie variabila de care se dorete a se lega obiectul (vezi fig. 4.28).

Fig.4.28. Configurarea variabilei de culoare pentru obiectul de tip cerc

Rezultatul se poate observa n fig. 4.29.

Fig.4.29. Exemplul de stri ale vizualizrii create

4.8. Configurarea unui proiect pentru simulare pe calculator


IndraLogic permite utilizatorilor s i simuleze programele i modul de execuie al acestora pe un sistem automatizat. Se vor lua etapele de configurare i creare ale unui proiect care s nglobeze i interfaa dat ca exemplu mai sus. Mai nti se creeaz un nou proiect din meniul File, apelnd opiunea New. Se deschide automat meniul de configurare al automatului pe care se va dori rularea programului. Dac se alege opiunea None atunci mediul de programare intr automat n modul de simulare (vezi fig. 4.30).

Fig.4.30. Setarea implicit a modului de simulare

Dup alegerea opiunii None, se trece la configurarea primului program ce va rula pe automat. Aici sunt mai multe opiuni iar automatul va denumi n mod implicit primul program PLC_PRG dar numele acestuia poate fi modificat, cu observaia c el nu va fi introdus automat n niciun task, aceasta operaie rmnnd la latitudinea programatorului. Tipul limbajului folosit se alege din acest meniu, apsnd cu mouse-ul n dreptul opiunii dorite, n cazul acestui exemplu LD pentru limbajul Ladder Diagram ca n fig. 4.31.

Fig.4.31.Configurarea unui program n IndraLogic

Automat se va deschide editorul pentru tipul de program dorit, n bara de sus putndu-se introduce elementele dorite.

Fig.4.32. Configurarea elementelor unei diagrame Ladder

Configurarea elementelor din diagram se face prin completarea cmpurilor ??? cu numele variabilelor dorite ca n fig. 4.33. Dac acestea au fost declarate anterior, (prin scrierea acestora n corpul de declaraii ale programului) se pot alege din lista care apare la scrierea caracterului .. Dac nu au fost declarate anterior, se va deschide automat interfaa de declarare numita Declare Variable (vezi fig. 4.33), unde utilizatorul poate alege: - clasa variabilei: local (VAR), argument de intrare (VAR_INPUT), argument de ieire (VAR_OUTPUT), argument intrare-ieire (VAR_IN_OUT) sau global (VAR_GLOBAL); - numele variabilei; - tipul variabilei; prin apsarea butonului ... se poate alege unul din tipurile definite sau predefinite de variabile; - valoarea iniial; - adresa: n memoria intern, ieire a automatului, intrare a automatului;

comentariile fcute de utilizator; tipul de utilizare (constant, retain, persistent).

Fig.4.33. Configurarea variabilelor

Dup configurarea variabilelor i terminarea programului se trece la compilare sau execuie (se va face automat i compilarea). Compilarea se poate alege din meniul Project, opiunea Build doar pentru programul a crui editare se face la momentul respectiv, sau opiunea Rebuild All care face compilarea tuturor programelor editate n proiect. Pentru simulare se alege din meniul Online opiunea Login i apoi Run. n modul online ramura ladder are culoarea albastr cnd condiia este ndeplinit iar valoarea ei este true (vezi fig. 4.34).

Fig.4.34. Programul simulat in modul online

4.9. Setri pentru comunicarea cu automatul BOSCHRexroth IndraControl L40


Primul pas pentru a se putea lucra cu automatul este cel de a stabili legtura prin interfaa Ethernet. Acest lucru se face prin fixarea manual a IP-ului pe unitatea central folosind tastele de navigare.

Fig.4.35. Configurarea variabilelor

Folosind tasta ENTER de pe automat (vezi fig. 4.35.) se poate intra n meniul de configurare. Prima opiune din acest meniu este cel pentru configurarea interfeei Ethernet. Apsnd nc o dat tasta ENTER se intr n submeniul ce permite fixarea adresei IP, Subnet Mask i Gateway.

Navigarea ntre aceste opiuni enumerate se poate face cu ajutorul tastelor i . Dac se dorete revenirea la meniul anterior aceasta se poate face prin apsarea tastei ESC. Odat ce s-a ales opiunea dorit pentru configurare prin apsarea tastei ENTER se intr n meniul ce permite configurarea adreselor dorite n grupe de cte trei cifre. O adres are forma AAA.BBB.CCC.DDD i prin apsarea tastei ENTER se poate naviga ntre cele patru grupe de cifre, numrul respectiv se poate modifica, tasta decrementnd valoarea iar incrementnd acea valoare. Dup configurarea celor patru grupe automatul cere confirmarea adresei prin afiarea textului OK ?. Dac se apas ENTER modificrile efectuate sunt memorate, daca se apas ESC atunci toate modificrile sunt ignorate. Al doilea pas este configurarea mediului de programare IndraLogic. Acest lucru se face din meniul Online opiunea Communication Parameters. nti se configureaz gateway-ul apsnd butonul cu acelai nume, utilizatorul putnd alege de aici tipul conexiunii (local sau TCP/IP) ca n fig. 4.36.

Fig. 4.36. Configurare Gateway

Dup ce s-a configurat Gateway-ul, trebuie realizat o nou conexiune. Aceasta se realizeaz prin apsarea butonului New. Aici se selecteaz opiunea TCP/IP (level 2 route) se confirm cu OK i apoi se modific cmpul Address cu adresa IP a automatului ca n fig. 4.37.

Fig. 4.37.Configurarea unei conexiuni de comunicaie

You might also like