limbajul de programare de tip “scheme cu contacte”...
TRANSCRIPT
Originile limbajului LD
Limbajul bazat pe scheme cu contacte - Ladder Diagram (LD) – provine de la reprezentarea grafică folosită pentru schemele electrice de comandă
– Comenzile erau realizate cu ajutorul releelor
Limbajul LD a fost dezvoltat pentru a uşura crearea programelor şi menţierea facilă a acestora
– reprezentări realizate cu calculatorul bazate pe reprezebtarea grafică a schemelor cu contacte care erau uşor de înţeles
– se reduc costurile de învăţare a limbajului şi de suport tehnic
Scrierea programului în LD
Scrierea unui program în limbajul LD presupune desenarea unei diagrame (diagramă LD) similare unei scheme electrice cu contacte. Elementele componente ale diagramei LD modelează funcţionarea elementelor unei scheme cu contacte. Interpretarea funcţionării diagramei LD este similară interpretării schemelor electrice cu contacte.Elementele de bază utilizate pentru scrierea unui program în limbaj LD sunt:
– contactele, – bobinele, – temporizatoarele, – numărătoarele şi – blocurile funcţionale (funcţiile).
Contactele
Contactele sunt elemente de programare care modelează contactele aparatelor electrice de comutaţie. Ca şi în cazul acestora din urmă, contactele pot fi de tip n.d. (a) şi n.i. (b).
a) b)
IN001 IN002 IN003
Contactele
În cadrul unui program LD, contactele pot fi asociate intrărilor AP, ieşirilor AP sau unor variabile interne. La intrări pot fi conectate dispozitive care au două stări de funcţionare cum ar fi:
– contactele auxiliare ale contactoarelor şi releelor, – contactele n.î. sau n.d. ale butoanelor de comandă, – contactele n.î. sau n.d. ale limitatoarelor de cursă, – contactele n.î. sau n.d. ale detectoarelor de mărimi fizice, – contactele n.î. sau n.d. ale elementelor de protecţie, – ieşirile digitale ale unor aparate de măsură, protecţie sau
comandă, – ieşirile digitale ale altor AP sau sisteme de comandă etc.
Contactele
Pe lângă contactele obişnuite, unii producători pun la dispoziţia programatorilor şi alte elemente de programare corespunzătoare intrărilor AP, întâlnite, îndeosebi, în cazul circuitele numerice, cum ar fi:intrări cu memorie (latch), intrări active pe frontul crescător intrări active pe frontul descrescător.
Bobinele
Bobinele sunt elemente de programare care modelează funcţionarea bobinele contactoarelor şi releelor electromagnetice. Ca şi în cazul bobinelor din schemele electrice, bobinele din programele LD pot avea două stări: alimentate sau nealimentate.
a) b)
OUT 001 OUT 002 OUT 003
Bobinele
Ele pot fi asociate ieşirilor automatului dar şi unor variabile interne modelând astfel releele auxiliare din cadrul schemelor electrice cu contacte. Bobinele sunt elemente de programare care modelează funcţionarea bobinele contactoarelor şi releelor electromagnetice. Ca şi în cazul bobinelor din schemele electrice, bobinele din programele LD pot avea două stări: alimentate sau nealimentate. Ele pot fi asociate ieşirilor automatului dar şi unor variabile interne modelând astfel releele auxiliare din cadrul schemelor electrice cu contacte.
Bobinele
Fiecare ieşire este de identificată în mod unic, modul de identificare diferind de la un producător la altul. Fiecărei ieşiri i se asociază o singură bobină şi unul sau mai multe contacte ce pot fi utilizate în schemă în mod asemănător contactelor auxiliare ale contactoarelor şi releelor.La aceste ieşiri pot fi conectate dispozitive care au două stăride funcţionare cum ar fi:
– bobinele contactoarelor sau releelor, – elemente de semnalizare acustică sau luminoasă, – sarcini de putere mică, – intrările digitale ale unor aparate de măsură, protecţie sau
comandă, – intrările digitale ale altor AP sau sisteme de comandă etc.
Temporizatoarele
Temporizatoarele sunt elemente de programare care modelează funcţionarea releelor de timp şi a contactelor temporizate. Sunt utilizate pentru a realiza acţiuni întârziate sau ce durează un anumit interval de timp.
Validare
Iniţializare
IeşireNr. temporizator
Baza de timp
Valoareaprestabilită
Temporizatoarele
Producătorii de AP furnizează atât funcţii elementare de temporizare cât şi funcţii mai complexe. Temporizatoarele utilizate în programele LD au o flexibilitate şi o funcţionalitate mult mai mare decât temporizatoarele utilizate în schemele electrice.Temporizatoarele simple permit realizarea unei acţiuni întârziate cu un anumit interval de timp ce poate fi programat. Temporizatoarele complexe au în vedere obţinerea unor temporizări variabile, funcţie de anumite condiţii care apar la un moment dat.
Temporizatoarele
Fiecare temporizator din schemă este identificat în mod unic, modul de identificare fiind diferit de la un producător la altul. În cazul în care baza de timp este aceeaşi pentru toate temporizatoarele, precizată în manualul de programare a AP, aceasta este omisă. Valoarea prestabilită poate fi exprimată în unităţi de timp (s).Temporizatoarele au cel puţin o intrare de iniţializare, la activarea căreia începe temporizarea şi o ieşire. În unele variante, temporizatoarele sunt prevăzute şi cu o intrare de validare şi încă o ieşire care reprezintă negata primei ieşiri.
Numărătoarele
Numărătoarele sunt elemente de programare care poate primi o serie de impulsuri care sunt analizate în cadrul programului LD pentru a detecta numărul de apariţii ale unor evenimente cum ar fi:
– numărul de paşi efectuaţi de un motor pas cu pas, – numărul de conectări-deconectări ale unui aparat.– numărul de sticle care au fost umplute într-o staţie de
îmbuteliere, etc.Numărare Ieşire
Ieşire negată
Nr. numărător
Valoareprestabilită
Iniţializare
Numărătoarele
Numărul de evenimente poate fi comparat cu anumite valori prestabilite şi în funcţie de rezultatul acestor comparaţii pot fi luate anumite decizii şi date comenzile corespunzătoare.Există mai multe tipuri de numărătoare, printre cele mai uzuale fiind:
– numărătoarele unidirecţionale crescătoare– numărătoarele unidirecţionale descrescătoare şi – numărătoarele bidirecţionale care pot număra atât descrescător
cât şi crescător. Fiecare numărător din schemă este identificat în mod unic, modul de identificare fiind diferit de la un producător la altul.
Numărătoarele
Pentru fiecare numărător se precizează valoarea prestabilită, aceasta reprezentând valoarea maximă pe care o va număra numărătorul după care va activa ieşirea. Numărătorul are cel puţin două intrări, una de numărare şi una de iniţializare (la activarea acesteia numărătorul începe să numere impulsurile sosite la intrarea de numărare) şi o ieşire. Alte variante de numărătoare sunt prevăzute şi cu o intrare de validare şi o ieşire care reprezintă negata primei ieşiri.
Blocurile funcţionale
Pentru materializarea unor funcţii mai complexe menite să uşureze scrierea programelor în limbaj LD sunt utilizate blocurile funcţionale (BF). BF modelează diverse categorii de funcţii cele mai utilizate fiind:
– funcţii de încărcare a unor constante numerice,– funcţii aritmetice,– funcţii logice pe 8 sau 16 biţi,– funcţii de conversie a informaţiei din diferite formate (binar,
BCD, Gray etc),– funcţii de tratare a întreruperilor,
Blocurile funcţionale
– funcţii pentru detectarea fronturilor crescătoare sau descrescătoare a semnalelor,
– funcţii pentru realizarea controlerelor şi secvenţiatoarelor,– funcţii pentru actualizarea rapidă a intrărilor şi ieşirilor,– funcţii pentru comanda numărătoarelor de mare viteză.
Formatul şi modul de funcţionare a blocurilor funcţionale diferă de la un automat la altul, fiind specific fiecărui producător în parte.
Restricţii în scrierea programelor orientate pe scheme de contacte
Atunci când se realizează scrierea unui program LD pentru un automat programabil concret, trebuie să se ţină seama de limitările pe care pachetul de programe le poate avea:– limitări privitoare la formatul diagramei LD– limitări legate de modul de execuţie a programului
Limitări privitoare la formatul diagramei LD
Limitările ţin de:– proprietăţile intrinseci ale limbajului;– implementările specifice ale diferitelor pachete de
programe comerciale Sunt datorate soluţiilor tehnice adoptate de firmele producătoare pentru implementarea diverselor elemente ale limbajului.
Limitări privitoare la formatul diagramei LD
O parte a acestor limitări sunt prezentate în continuare:
– o bobină trebuie să fie alimentată întotdeauna prin intermediul unui contact;
– bobina trebuie să fie introdusă întotdeauna la capătul din dreapta al liniei;
– toate contactele trebuie să fie pe direcţie orizontală;– numărul contactelor pe o linie de alimentare a unei bobine
este limitat prin program;
Limitări privitoare la formatul diagramei LD
– un grup de contacte poate alimenta o singură bobină;– realizarea buclelor poate fi realizată într-un singur mod sau
poate să nu fie permisă;– sensul curentului prin circuit este de la stânga la dreapta
diagramei.De obicei manualele de utilizare ale programelor conţin toate informaţiile necesare pentru ca utilizatorul să poată scrie programul în formatul acceptat de AP.
Limitări legate de modul de execuţie a programului
Funcţionarea AP se bazează pe execuţia repetată a programului pe care îl are înscris în memorie. Fiecare ciclu de execuţie a programului cuprinde 3 etape separate:
– citirea intrărilor– execuţia instrucţiunilor din program– actualizarea ieşirilor
Durata unui astfel de ciclu depinde atât de viteza procesorului cu care este dotat AP, cât şi de lungimea programului utilizatorului.
Limitări legate de modul de execuţie a programului
Etapa de citire a intrărilor, se citesc stările terminalelor de intrare în AP şi conform acestora se înscrie informaţia în tabelul intrărilor.Etapa de execuţie a instrucţiunilor din program, valorile intrărilor sunt folosite pentru execuţia instrucţiunilor, rezultatul acestora fiind înscrise în tabela ieşirilor.Etapa de actualizare a ieşirilor constă în transferarea informaţiei din tabela ieşirilor către terminalele de ieşire a automatului.Cele trei etape amintite mai sus se execută separat, modificarea semnalelor de la intrările AP în etapa a doua nu are efect asupra valorilor intrărilor folosite pentru execuţia instrucţiunilor. Ele vor fi folosite doar după ce vor fi citite în următoarea etapă de citire a intrărilor.
Limitări legate de modul de execuţie a programului
Dacă în etapa a doua, în urma execuţiei uneia sau mai multor instrucţiuni se modifică valoarea unei ieşiri în tabela de ieşiri, această modificare nu va apare efectiv la terminalul de ieşire corespunzător, decât în etapa a treia. Atunci se realizează actualizarea ieşirilor pe baza tabelei ieşirilor calculată în etapa de execuţie a instrucţiunilor care a precedat-o.În scrierea unui program în limbajul LD trebuie avute în vedere şi modul în care este interpretat programul scris.
Interpretarea programelor LD
Există două moduri de interpretare a unui program LD:– citirea se face pe linie - se citesc contactele pe
linie, de la stânga la dreapta, linie cu linie, începând cu prima linie şi terminând cu ultima;
– citirea se face pe coloană - se citesc contactele pe coloană, câte unul, de sus până jos, coloană cu coloană, începând cu prima coloană din stânga şi terminând cu ultima din dreapta.
Interpretarea programelor LD
În ambele situaţii trebuie să se aibă în vedere diferenţa faţă de schemele de comandă cu relee:
– Relee: O modificare în starea unui contact din circuitul de alimentare a bobinei unui contactor poate duce la modificarea imediată a stării acesteia indiferent dacă mai există sau nu alte elemente legate în serie sau paralel cu acel contact.
– Program LD: starea bobinei nu va fi modificată decât după ce se va citi starea tuturor elementelor prin care aceasta este alimentată.
Datorită vitezei mari de execuţie a procesorului, acest lucru nu pune în general nici o problemă. Ea trebuie considerată în cazurilor unor aplicaţii critice unde ar putea să apară o funcţinare diferită de cea dorită.
Limbajul LD în standardul IEC 61131-3
Prin introducerea acestui limbaj în standardul IEC 61131-3 s-a căutat uniformizarea unui întreg set de limbaje care se proclamau a fi de tip scheme cu contacte.
Execuţia programului
Liniile programlui sunt evaluate de la stânga la dreapta şi de sus în josRamificaţiile din cadrul unei linii sunt evaluate de la stânga sus la dreapta jos
Linie a programului
P S
R
A
B
D E
F G H
I J K
Fază
Ramificaţie
Nul
Bobine fără memorie
The referenced bit is reset when processor power is cycled– Bobină -( )-
Pune bitul în 1 când linia este evaluată la 1 logic şi pus în 0 când linia este evaluată la 0 logic
– Bobină negată -( / )-Pune bitul în 0 când linia este evaluată la 1 logic şi pus în 1 când linia este evaluată la 0 logicÎn general nu e folosită datorită confuziei pe care o poate introduce
Bobine fără memorie
– Bobină Set (Latch) -(S)-Pune bitul în 1 când linia este evaluată la 1 logic şi nimic când linia este evaluată la 0 logic
– Bobină Reset (Unlatch) -(R)-Pune bitul în 0 când linia este evaluată la 1 logic şi nimic când linia este evaluată la 0 logic
Contacte
Contact normal deschis -| |-– Validează linia de program la dreapta elementului
dacă linia este validată în stânga acestuia şi bitul corespunzător e în 1 logic.
Contact normal închis -|/|-– Validează linia de program la dreapta elementului
dacă linia este validată în stânga acestuia şi bitul corespunzător este în 0 logic
Contacte
Contact activ pe frontul crescător -|P|-– Validează partea dreaptă a liniei de program
pentru un ciclu când partea stângă este validatăContact activ pe frontul descrescător -|N|-– Validează partea dreaptă a liniei de program
pentru un ciclu când partea stângă este invalidată
Operaţii cu memorare sau fără memorare
Definiţie– Valorile cu memorare îşi menţin valoarea şi după
un ciclu deconectare-reconectare la sursa de alimentare
– Valorile fără memorare iau valoarea iniţială (de obicei 0) după un ciclu deconectare-reconectare la sursa de alimentare
IEC 61131-3 permite valorilor să fie definite ca fiind cu memorare– În majoritatea AP-urilor doar temporizatoarele şi
bobinele sunt elemente cu memorare.
Bobine cu memorare
Bitul din memorie corespunzător rămâne nemodificat după întreruperea şi reconectarea alimentării– Bobină cu memorie -(M)-
Pune bitul în 1 când linia este validă şi o pune în 0 când este invalidă.
– Bobină Set cu memorare (Latch) -(SM)-Pune bitul în 1 când linia este validă şi nu face nimic când este falsă
– Bobină Reset cu memorare (Unlatch) -(RM)-Pune bitul în 0 când linia este validă şi nu face nimic când este falsă
Bobine activate pe front
Bobină activată pe frontul positiv -(P)-– Pune bitul în 1 logic cînd linia din stânga trece din
starea invalidă în starea validă– Bitul rămâne în această stare
Bobină activată pe frontul negativ -(N)-– Pune bitul în 0 logic cînd linia din stânga trece din
starea validă în starea invalidă – Bitul rămâne în această stare
Temporizatoare in LD
Există 3 instrucţiuni ce realizează funcţiile de temporizare în cadrul standardului IEC 61131-3
– TP – Temporizator tip impuls– TON – Temporizator la conectare– TOF – Temporizator la deconectare
Valorile timpului– Baza de timp este de 1ms (1/1000 s)– Valorile sunt introduse folosind formatul literal
Timers in Ladder Diagram
Două variante de vizualizare în funcţie de folosirea ieşirilorEN/ENO
– prima metodă necesită elemente suplimentare de programare dacă este necesară utilizarea stării temporizatorului în alte linii de program
– a doua metodă asociază un bit lui Q ce poate fi apoi folosit de alte linii de program, ENO=EN
TONIN
T#200ms
Pump_Tmr
PT ET 178
Q
TON
T#200ms
Pump_Tmr
PT ET 178
Q
IN ENO
Pump_Tmr_DN
Funcţionarea temporizatoarelor
IN = condiţia de intrare a linieiQ = ieşirea comparatorului
– diferă în funţie de tipul de temporizator
PT = valoarea prestabilităET = timpul scurs de la activarea temporizatorului
INQ
ETPT|0
Temporizare tip impuls (TP)
INQ
ETPT|0
Temporizare la conectare (TON)
INQ
ETPT|0
Temporizare la deconectare (TOF)
Numărătoare în LD
Trei instrucţiuni cu funcţii de numărătorîn IEC 61131
– CTU – Numărător crescător– CTD – Numărător descrescător– CTUD – Numărător bidirecţional
Toate trei contorizează tranziţiile liniei
Numărătoare în LD
Două vizualizări posibile în funcţie de utilizarea ieşirilor EN/ENO
– prima metodă necesită elemente de programare suplimentare dacă starea temporizatorului este necesară în alte linii de program
– a doua metodă asociază ieşirii Q un bit care poate fi folosit în alte linii de program, ENO=EN
CTU
200
Load_Cnt
PV CV 178
Q
IN ENO
Load_Cnt_DNR
CTU
200
Load_Cnt
PV CV 178
QIN
R
Funcţionarea numărătoarelor
...INQ
CVPV|0
R
Numărător crescător (CTU) ...Parameteri
– CU/CD = Numărare crecătoare/descrescătoare
– Q/QU/QD = Ieşirea comparatorului
– R = Aducere în Zero– LD = Încărcarea CV cu PV– PV = Valoarea prestabilită– CV = Valoarea numărată de
la momentul activării
...INQ
CVPV|0
LD
...Numărător descrescător (CTD)
Funcţionarea numărătoarelor
Parameteri– CU/CD = Numărare
crecătoare/descrescătoare– Q/QU/QD = Ieşirea
comparatorului– R = Aducere în Zero– LD = Încărcarea CV cu PV– PV = Valoarea prestabilită– CV = Valoarea numărată de
la momentul activării
...
...
CVPV|0
CUQUCDQD
LDR
Numărător bidirecţional (CTUD)
Setul de instrucţiuni IEC1131-3
IEC 61131-3 furnizează un set de bază de instrucţiuni care să realizeze operaţiile de bază (81 instrucţiuni LD)
– Conversii ale tipurilor de date - Trunc, Int_to_Sint, Dint_to_Real, Bcd_To_Int …– Operaţii Booleene - Bit Test, Bit Set, One Shot, Semaphores …– Temporizatoare / Numărătoare - Ton, Tp, Ctu, Ctd, Ctud– Operaţii aritmetice simple - Add, Sub, Mul, Div, Mod, Move, Expt– Diferite operţii matematice - Abs, Sqrt, Ln, Log, Exp, Sin, Cos, Tan, Asin, Acos, Atan– Deplasări de biţi - Shl, Shr, Ror, Rol– Operaţii logice - And, Or, Xor, Not– Selecţie - Sel, Max, Min, Limit, Mux– Comparaţie - GT, GE, EQ, LE, LT, NE– Siruri de caractere - Len, Left, Right, Mid, Concat, Insert, Delete, Replace, Find– Control - JMP, LBL, JSR, RET
Extinderea setului de instrucţiuniIEC1131-3
Toate operaţiile complexe sunt lăsate pentru a fi definite de producător sau utilizator– Operaţiile cu fişiere, PID, diagnostic, bucle
For/Next, căutările, sortările nu sunt în IEC1131-3– Sunt permise extensii astfel încât producătorii să
vină în întâmpinarea cerinţelor clienţilor– Toţi producătorii au definite propriile lor extensii