Mediul de programare IndraLogic reprezint o soluie complet att
pentru programarea unui automat programabil ct i pentru a realiza o interfa grafic cu utilizatorul. Proiectul este mprit n patru zone de interes: POU: programele ce vor rula pe automat Data Types: structurile de date complexe declarate de programator Visualisation: vizualizrile Resources: resursele implicate. Conceptul Program Organization Unit (POU) 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, ST, SFC, FBD sau LD. O funcie este un POU a crui ieire este un singur element de date. 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. Conceptul Program Organization Unit (POU) 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.
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.
Conceptul Visualizations
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. Seciunea Resources Global Variables declararea variabilelor globale ce pot fi folosite n ntreg proiectul i pentru variabile de reea; Alarm Configuration configurarea evenimentelor care genereaz alarme 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 task-uri 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 Seciunea Resources Tipuri de date n IndraLogic 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). Tipuri de date n IndraLogic 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. 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. Variabile globale .
Particulariti Indralogic Toate programele au aceeai prioritate la execuie, depinznd numai de setrile impuse de utilizator prin configurarea task- urilor. 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.
Particulariti Indralogic Blocuri funionale 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.
Blocuri funionale 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).
Blocuri funionale 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). Blocuri funionale 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 anterior.
Blocul funional TON 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.
Blocul funional TON
Graficul ce explic funcionarea acestui bloc Blocul funional TOF 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. TOF
Graficul ce explic funcionarea acestui bloc 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. 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. Problematica Timpului n IndraLogic 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 stamp-ul 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 stamp-ul curent folosind funcia TIME(); condiia de ieire din etapa este: time-stamp curent time-stamp de intrare >= variabila de timp. Problematica Timpului n IndraLogic Aciune de tipul Entry Problematica Timpului n IndraLogic Aciune de tipul Action Alarme Alarma este privit ca o condiie special (valoarea unei expresii) Evenimentul care declaneaz alarma descrie momentul n care o condiie iese din starea ei normal. Confirmarea alarmelor: scopul unei alarme este de a atrage atenia supervizorului asupra unei stri anormale. Se decalneaz anumite aciuni cnd apare o alarm. Supervizorul trebuie s confirme recepia alarmei pentru ca ea s dispar din list Alarmele pot avea prioriti Starea unei alarme: NORM ( nu e activ) INTO (abia a aprut) ACK ( a fost confirmat de ctre user) OUTOF (alarma a disprut fr s fie confirmat) Sub-starea: o condiie de alarm poate avea limite: LO, HI LOLO, HIHI
Clase de Alarme Pofi declarate clase de alarme
Clase de Alarme Tipuri de confirmare: NO_ACK: Nu e necesar confirmarea ACK_INTO: Starea INTO a alarmei trebuie confirmat. ACK_OUTOF: Starea "OUTOF", alarm terminattrebuie confirmat. ACK_ALL: Ambele stri trebuie confirmate.
Aciuni asociate alarmelor: Save Print Message: apare un text n obicetul de vizualizare ataar alarmei E-mail Variable: o variabil din proiect va cpta starea alarmei Execute: un program va fi executat (ex. Notepad) Grupuri de alarme Tipuri de alarme DIG=0 Alarm digital, activ indat ce expresia devine FALSE. DIG=1 Alarm digital, activ indat ce expresia devine TRUE. LOLO Alarm analogic, activ ndat ce valoarea expresiei scade sub valoarea LOLO. Se poate defini o toleran (Deadband). Ct timp expresia este n interiorul toleranei nu va fi activat alarma. LO Corespunztor lui LOLO HI Alarm analogic, activ ndat ce valoarea expresiei crete peste valoarea HI. Se poate defini o toleran (Deadband). Ct timp expresia este n interiorul toleranei nu va fi activat alarma.. HIHI Corespunztor lui HI DEV- Deviaie de la valoarea int; Alarma se activeaz ndat ce valoarea expresiei scade sub valoarea definit pt. Alarma de tip DEV- plus procentul deviaiei. Procentul deviaiei = valoarea int * (deviaia in %) / 100. DEV+ Deviaie de la valoarea int; Alarma se activeaz ndat ce valoarea expresiei crete peste valoarea definit pt. Alarma de tip DEV+ plus procentul deviaiei. Procentul deviaiei = valoarea int * (deviaia in %) / 100 ROC Viteza de variaie pe unitatea de timp; Alarma se activeaz cnd expresia deviaz puternic fa de valoarea precedent. Taskuri Taskurile sunt colecii de programe executate de ctre automatul care ruleaza aplicaia Indralogic Un Task 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. Dac taskul este executat n ciclul prezent, atunci programele taskului vor fi procesate pe ntreaga lungime a unui ciclu. Ordinea n care se execut taskurile va fi determinat de combinaia, de prioritatea i condiiile de pornire. Proprietile unui Task Tipurile unui Task Cyclic: taskul va fi procesat ciclic conform cu perioada de timp declarat Freecycling: taskul va fi procesat in continuu, adic odat ncheiat va fi reluat imediat Triggered by event: taskul va fi pornit doar atunci cnd variabila declarat n cmpul Event trece din False in True Triggered by external event: taskul va fi pornit atunci cnd evenimentul extern, definit n cmpul Event, are loc. Evenimentul depinde de automatul int i apare sub form de list.
Watchdog: pentru fiecare task poate fi definit un control de timp (watchdog). Dac taskul depete timpul specificat el va fi oprit din execuie cu un cod de eroare, dar nu neaprat la prima ntrziere a taskului, ci in funcie de valoarea parametrului Sensitivity. Ecrane de vizualizare n cadrul unui proiect IndraLogic pot fi dezvoltate ecrane de vizualizare a valorilor unor variabile print-o reprezentare grafic precum i de introducere a unor 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. Pot fi fi inserate diferite forme geometrice, poze n format bitmap, fiiere metafile, butoane i chiar alte vizualizri existente. Ecrane de vizualizare
Editarea proprietilor unui obiect Editarea proprietilor unui obiect