Scrierea unui program în limbajul orientat pe scheme de contacte (Ladder Diagram – 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. De aceea 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 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. şi n.î. (Fig.1).
Î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ă, limitatoarelor de cursă, detectoarelor de mărimi fizice, 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.
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 sau active pe frontul descrescător.
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.
Fiecare ieşire este de asemenea 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ări de 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.
În Fig.2 sunt date simbolurile folosite pentru reprezentarea bobinelor. Având în vedere că bobinele sunt asociate ieşirilor şi că acestea pot fi negate, putem întâlni ca element de programare în limbajul LD, bobina negată (Fig.2b). Într-un automat, fiecare ieşire este identificată în mod unic, identificarea fiind diferită de la producător la producător. Fiecărei ieşiri i se asociază unul sau mai multe contacte având acelaşi identificator şi care pot fi folosite în diagrama LD.
Temporizatoarele sunt elemente
de programare care modelează funcţionarea releelor de timp şi a
contactelor temporizate. Ele sunt utilizate pentru a realiza acţiuni
întârziate sau ce durează un anumit interval de timp. Producătorii de
AP furnizează atât funcţii elementare de temporizare cât şi
funcţii mai complexe. În acest fel, 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. Funcţiile de temporizare mai complexe au în vedere obţinerea unor temporizări variabile, funcţie de anumite condiţii care apar la un moment dat.
În cadrul programelor LD, un temporizator are o structură de tipul celei din Fig.3. Fiecare temporizator din schemă este identificat în mod unic, modul de identificare fiind diferit de la un producător la altul.
Materializarea temporizatoarelor în AP se realizează utilizând circuite numărătoare. Ca urmare, indicarea temporizării se va face precizând numărul de incremente de timp pe care temporizato rul îl va număra (valoarea prestabilită) şi durata unui increment (baza de timp). În cazul în care implementarea limbajului permite utilizarea unor baze de timp diferite pentru temporizatoare diferite, trebuie precizat pentru fiecare temporizator această bază de timp. Valorile uzuale pe care le poate avea baza de timp sunt 0,01s; 0,1s sau 1s.
În cazul în care baza de timp este aceeaşi pentru toate temporizatoarele, precizată în manualul de programare a AP, aceasta este omisă. Ca urmare, 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, acestea sunt prevăzute şi cu o intrare de validare şi încă o ieşire care reprezintă negata primei ieşiri.
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 acestor
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 sau descrescătoare şi numărătoarele bidirecţionale care pot număra atât descrescător cât şi crescător.
În cadrul programelor LD, un numărător are o structură de tipul celei din Fig.4. Fiecare numărător din schemă este identificat în mod unic, modul de identificare fiind diferit de la un producător la altul. 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.
Pentru materializarea unor funcţii mai complexe menite să uşureze scrierea programelor în limbaj LD sunt utilizate blocuri funcţionale. Aceste blocuri modelează diverse categorii de funcţii dintre care cele mai utilizate sunt următoarele: 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, 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ă.
De obicei, 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. Prin intermediul standardului IEC 61131-3 şi a altor iniţiative recente se caută standardizarea unor astfel de blocuri astfel încât ele să aibă nu numai aceeaşi interfaţă dar şi acelaşi comportament, diferenţa fiind dată numai de modul în care acestea sunt materializate pentru fiecare automat în parte. Standardul are drept scop şi asigurarea că aceste blocuri funcţionale pot fi utilizate, folosind aceeaşi interfaţă în oricare alt limbaj din cele 4 adoptate.
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 importante pe care le pot avea pachetele de programe ce utilizează limbajul LD sunt cele legate de formatul diagramei care materializează schema cu contacte. O parte din aceste limitări ţin de proprietăţile intrinseci ale limbajului; altele sunt specifice diferitelor programe comerciale şi sunt datorate soluţiilor tehnice adoptate de firmele producătoare pentru implementarea diverselor elemente ale limbajului. O parte a acestor limitări sunt prezentate în continuare:
a) o
bobină trebuie să fie alimentată întotdeauna prin intermediul
unui contact;
b)
bobina trebuie să fie introdusă întotdeauna la capătul din
dreapta al liniei;
c)
toate contactele trebuie să fie pe direcţie orizontală;
d)
numărul contactelor pe o linie de alimentare a unei bobine este limitat prin
program;
e) un
grup de contacte poate alimenta o singură bobină;
f)
realizarea buclelor poate fi realizată într-un singur mod sau poate
să nu fie permisă;
g)
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.
Scrierea unui program în limbajul LD poate fi realizată într-un mod simplu pornind de la schema electrică cu contacte al unui circuit care ar îndeplini aceeaşi funcţie. Ceea ce trebuie să facă programatorul este să transpună schema respectivă folosind elementele de programare ale limbajului. Pentru acest lucru el va trebui să parcurgă următoarele etape:
· definirea listei dispozitivelor conectate la intrările şi ieşirile AP,
· atribuirea unor identificatori de intrare şi de ieşire acestor dispozitive,
· trasarea diagramei LD,
· indicarea conexiunilor la AP a elementelor de comandă.
Exemplul 1.
În Fig.5a se dă schema de comandă pentru pornirea unui motor din două puncte diferite şi oprirea dintr-un singur punct. Schema conţine contactul n.î. F4 al unui releu termic utilizat pentru protecţia la suprasarcină, butonul de oprire S1, butoanele de pornire S2 şi S3, contactoarele K1 şi K2 reprezentate prin bobinele contactoarelor şi contactele auxiliare K1 şi K2.
|
Fig.5
Comanda pornirii unui motor din două puncte diferite şi oprirea
dintr-un singur punct folosind AP.
Pentru scrierea programului LD vom parcurge
etapele amintite mai sus
1.
Lista elementelor legate la
intrările şi ieşirile AP sunt: butoanele S1-S3 şi
contactoarele K1 şi K2.
2.
Atribuim acestor elemente
următorii identificatori
Element de comandă |
Intrare |
Ieşire |
S1 |
X001 |
- |
S2 |
X002 |
- |
S3 |
X003 |
- |
K1 |
- |
Y001 |
K2 |
- |
Y002 |
3. Se trasează diagrama LD
4. Se indică legăturile elementelor de comandă.
Diagrama bazată pe schema cu contacte precum şi modul de realizare a legăturilor elementelor de comandă la intrările şi ieşirile automatului programabil sunt prezentate in Fig 5a şi b.
Exemplul
2.
În Fig.6a este dată schema de comandă pentru realizarea pornirii şi funcţionării unui motor asincron trifazat în ambele sensuri de rotaţie. Schema realizează funcţia de interblocare electrică prin utilizarea contactelor normal închise ale butoanelor de pornire. În plus, funcţionarea în cele două sensuri de rotaţie este semnalizată prin intermediul a două lămpi de semnalizare.
Etapele parcurse pentru realizarea diagramei LD sunt:
Element de comandă |
Intrare |
Ieşire |
S1 |
X001 |
- |
S2 |
X002 |
- |
S3 |
X003 |
- |
S4 |
X004 |
|
K1 |
- |
Y001 |
K2 |
- |
Y002 |
H1 |
- |
Y003 |
H2 |
|
Y004 |
|
Fig.6 Comanda
pornirii unui motor în ambele sensuri de rotaţie folosind AP.
Exemplul
3.
În Fig.7a este dată schema de comandă pentru realizarea pornirii cu rezistenţe de pornire şi funcţionării unui motor asincron trifazat cu rotor bobinat.
Etapele parcurse pentru realizarea diagramei LD sunt:
Element de comandă |
Intrare |
Ieşire |
Temporizator/Numărător |
S1 |
X001 |
- |
|
S2 |
X002 |
- |
|
K1T |
- |
- |
T1 |
K2T |
- |
- |
T2 |
K1 |
- |
Y001 |
|
K2 |
- |
Y002 |
|
K3 |
- |
Y003 |
|
3. Se trasează diagrama LD
|
Fig.7 Comanda pornirii cu
rezistenţe a unui motor asincron trifazat cu rotor bobinat.
Pornirea programului se realizează
făcând dublu clic pe icoana .
Se execută comanda File->New şi în fereastra PLC type settings cu ajutorul căreaia se alege tipul de AP şi se selectează tipul FX1S.
Pentru a introduce programul în limbajul schemă de contacte se execută comanda View-> Ladder View.
În Fig. 8 se indică principalele elemente ale ferestrei de scriere a programului de aplicaţie în limbaj LD. Pentru aceasta avem la dispoziţie comenzile din bara de meniuri (accesibile direct sau prin intermediul unor combinaţii ale tastelor funcţionale - scurtături) şi bare de butoane. Elementele programului de aplicaţii sunt introduse între cele două bare de alimentare.
Introducerea
contactelor
Contact normal deschis: se utilizează butonul corespunzător sau tasta funcţională F5
Contact normal închis: se utilizează butonul corespunzător din bara de butoane sau tasta funcţională F6.
În ambele cazuri apare fereastra de dialog Input device (Fig. 9) unde trebuie introdus indicatorul contactului respectiv. Acesta poate indica o intrare (X000, X001 ... X005), o ieşire (Y000...Y003), un element de temporizare (T000...T00n), element auxiliar (M000...M00n), elemente ale blocurilor funcţionale.
|
Fig. 8 Elementele feresterei de scriere a
programului de aplicaţie în limbaj LD pentru programul Mitsubishi
MELSEC-MEDOC FX/WIN
|
Fig.9 Fereastra Input device
Introducerea bobinelor
Pentru introducerea bobinelor se utilizează butonul corespunzător sau tasta funcţională F7. Ca şi în cazul contactelor va apare fereastra de dialog Input device în care trebuie precizat indicatorul bobinei (Y000...Y003).
Introducerea
temporizatoarelor
Pentru introducerea temporizatoarelor se utilizează acelaşi buton şi aceeaşi tastă funcţinală utilizată pentru bobine. În fereastra de dialog Input device, pe lângă indicatorul temporizatorului (T000...T00n) trebuie indicată şi valoarea temporizării sub forma Km, unde m este valoarea temporizării în milisecunde.
Introducerea numărătoarelor
Pentru introducerea numărătoarelor (contoarelor) se utilizează acelaşi buton şi aceeaşi tastă funcţinală utilizată pentru bobine. În fereastra de dialog Input device, pe lângă indicatorul numărătorului (C000...C00n) trebuie indicată şi valoarea numărătorului pentru care bobina este activată sub forma Km.
Introducerea
funcţiilor speciale
Pentru introducerea funcţiilor speciale se utilizează butonul corespunzător sau tasta funcţională F8. Ca urmare apare fereastra de dialog Input instruction (Fig. 10) unde trebuie introduse mnemonicul funcţiei precum şi parametrii acestora. Fiecare instrucţiune are lista ei proprie de parametri acestea fiind date în manualul de programare a familiei Mitsubishi FX de AP.
a) b) |
Fig.10 Fereastra Input
instruction. a) Instrucţiune de resetare a numărătorului C000; b)
instrucţiune de sumare a conţinutului registrului de date D0 cu cel
al lui D1 şi memorarea rezultatululi în registrul de date D2.
Conversia
şi verificarea programului
Pentru a putea fi transferat în memoria AP, programul de aplicaţie scris folosind limbajul LD trebuie convertit în formatul recunoscut de AP. Pentru aceasta se execută comanda Tools -> Convert.
Programul poate fi verificat dacă este corect executând comanda Option -> Program check.
Salvarea
programului
Programul de aplicaţie poate fi salvat folosind comanda File -> Save as. Numele fişierului trebuie sa respecte convenţia de nume pentru fişierele sistemului de operare MS-DOS.
1. Se vor scrie programele de aplicaţii scrise în LD pentru AP din exemplele 1-3.
2. Se va scrie programul de aplicaţie scris în LD pentru un AP pentru comanda a trei motoare conform următoarelor condiţii:
·
motorul al doilea porneşte
după 5 secunde după pornirea primului motor;
·
motorul al treilea
porneşte după 10 secunde după pornirea celui de al doilea motor
· lampa de semnalizare avertizează situaţia în care doar unul din cele trei motoare sunt în stare de funcţionare