Documente Academic
Documente Profesional
Documente Cultură
1 / 31
Principalele aspecte care stau la baza acestui limbaj de programare sunt:
scrierea unui program în limbajul LD presupune desenarea unei diagrame
(Ladder Diagram) 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 limbajul LD
sunt:
o contactele;
o bobinele;
o temporizatoarele;
o numărătoarele;
o blocurile de funcţii.
Programele sunt organizate în reţele în cadrul cărora sunt poziționate
elementele de bază. Majoritatea elementelor sunt identificate printr-o adresă (ex:
I0.2 pentru intrări sau Q0.4 pentru ieşiri) sau prin etichete (ex: start, buton
pornire etc.), nefiind permisă o realizare de tip paralel legată de o altă reţea.
2 / 31
Atunci când se realizează un program în limbajul LD, trebuie să se ţină
seama de limitările pe care acest limbaj le poate avea:
limitări în privinţa formatului diagramei LD;
limitări impuse de modul de execuţie a programului.
Limitările de foarte multe ori se datorează soluţiilor tehnice adoptate de
companiile producătoare pentru implementarea diverselor elemente ale
limbajului, cum ar fi:
toate contactele trebuie să fie pe direcţie orizontală;
o bobină trebuie să fie alimentată întotdeauna prin intermediul unui
contact;
bobina trebuie să fie introdusă întotdeauna la capătul din dreapta al liniei;
numărul contactelor pe o linie de alimentare a unei bobine este limitat prin
program;
un grup de contacte poate alimenta o singură bobină;
sensul curentului prin circuit este de la stânga la drepta diagramei.
Este important să specificăm faptul că în scrierea unui program în
limbajul LD trebuie avut în vedere şi modul în care este interpretat programul
3 / 31
conceput. În privinţa asta există două moduri de interpretare a unui program
scris în limbajul LD:
citirea se face pe linie - se citesc contactele pe linie, de la stânga la dreapta,
linie cu linie, de la prima linie până la ultima.
citirea se face pe coloană - se citesc contactele pe coloană, câte unul. De
sus în jos, coloană cu coloană, începând cu prima coloană din stânga şi
terminând cu ultima din dreapta.
În ceea ce priveşte execuţia unui program scris în limbajul LD trebuie
menţionate următoarele aspecte:
liniile programului sunt evaluate de la stânga la dreapta şi de sus în jos;
ramificaţiile din cadrul liniilor sunt evaluate de la stânga sus la dreapta jos.
4 / 31
Standardul IEC 61131-3 furnizează un set de instrucţiuni de bază prin
care se pot realiza operaţiile de bază – 81 de insrucţiuni LD:
Operaţiile aritmetice – Add, Sub, Mul, Div, Mod, Move, Exp;
Operaţiile booleene: Bit Test, Bit Set, One Shot etc.;
Operaţiile logice: And, Or, Xor, Not;
Temporizatoare/Numărătoare: Ton, Tp, Tof, Ctu, Ctd, Ctud;
Diferite operaţii matematice: Abs, Sqrt, Ln, Log, Exp, Sin, Cos, Tan, Asin,
Acos, Atan etc.;
Comparaţie: GT, GE, EQ, LE, LT, NE;
5 / 31
Șiruri de caractere: Len, Left, Right, Mid, Concat, Insert, Delete, Replace,
Find;
Control: JMP, LBL, JSR, RET;
Deplasări de biţi: Shl, Shr, Ror, Rol;
Conversii ale tipurilor de date: Trunc, Int_to_Sint, Dint_to_Real etc.
Contacte
Contactele sunt elemente de programare care modelează contactele
aparatelor electrice de comutaţie. În cadrul unui program scris în limbajul LD,
contactele pot fi asociate intrărilor AP, ieşirilor AP sau unor variabile interne , iar
prin conectarea lor în serie (AND) sau paralel (OR) pot fi realizate operaţii
logice asupra stării semnalelor. Ca şi notaţie cea mai des utilizată este folosind
litera „I”.
Similar contactelor aparatelor electrice de comutaţie şi în cazul acestor
elemente se definesc 2 tipuri de contacte:
contact normal deschis (n.d.);
contact normal închis (n.i.).
6 / 31
contact normal deschis contact normal închis
Cele normal deschise sunt testate pentru valoarea 1 logic (ADEVĂRAT) a
semnalului reprezentat de contactul respectiv, în timp ce cele normal închise
sunt testate pentru valoarea 0 logic (FALS) a semnalului de intrare.
La intrările AP pot fi conectate dispozitive care pot avea două stări de
funcţionare, cum ar fi:
contactele auxiliare ale comutatoarelor şi releelor;
contactele n.d. sau n.i. ale limitatoarelor de cursă;
contactele n.d. sau n.i. ale elementelor de protecţie;
contactele n.d. sau n.i. ale butoanelor de comandă;
contactele n.d. sau n.i. ale detectoarelor de mărimi fizice;
ieşirile digitale ale unor aparate de măsură, protecţie sau de comandă.
Pe lângă contactele obişnuite, unii producători pun la dispoziţia
utilizatorilor şi alte elemente de programare corespunzătoare întrărilor
automatelor programabile, întâlnite îndeosebi în cazul circuitelor numerice:
7 / 31
întrări active pe frontul crescător;
întrări active pe frontul descrescător;
8 / 31
contact activ pe frontul descrescător – validează partea dreaptă a
liniei de program pentru un ciclu când partea stângă este nevalidată.
Exemplu 1:
Contactul de sesizare pe front crescător realizează o operaţie booleană
între starea elementului din stânga şi frontul crescător al variabilei booleene
asociate.
9 / 31
Exemplu 2:
Contactul de sesizare pe front descrescător realizează o operaţie
booleană între starea elementului din stânga şi frontul descrescător al
variabilei booleene asociate.
10 / 31
Bobinele în general sunt atribuite ieşirilor din automatul programabil, spre
proces. Ca şi notaţie cea mai des utilizată este litera „Q”.
De asemenea, pe lângă ieşiri ele mai pot fi asociate şi unor variabile
interne modelând astfel releele auxiliare din schemele electrice de comutaţie.
Similar bobinelor din schemele electrice, aceste elemente de programare
LD pot avea două stări:
alimentat;
nealimentat.
12 / 31
bobină SET (Latch) – pune bitul pe 1 logic când linia este evaluată la
1 logic şi nimic când linia este evaluată la 0 logic;
bobină RESET (Unlatch) – pune bitul pe 0 logic când linia este
evaluată la 1 logic şi nimic când linia este evaluată la 0 logic;
bobină activată pe frontul positiv – pune bitul pe 1 logic atunci când
linia din stânga trece din starea invalidă în starea validă;
bobină activată pe frontul negativ – pune bitul pe 0 logic atunci când
linia din stânga trece din starea validă în stare invalidă. Bitul va rămâne în
această stare.
Temporizatoare
15 / 31
Această metodă asociază o variabilă de tip boolean ieşirii Q, ce ulterior
poate fi utilizat în alte linii de program.
Funcţionarea celor 3 tipuri de temporizatoare se poate studia pe figurile de
mai jos:
16 / 31
unde:
IN - reprezintă linia de intrare în temporizator;
Q - ieşirea, care diferă în funcţie de tipul temporizatorului;
PT - valoarea prestabilită;
ET - timpul scurs de la activarea temporizatorului.
17 / 31
Numărătoare
18 / 31
Numărătoarele au cel puţin două intrări, una de numărare şi cealaltă de
iniţializare - la activarea căreia începe să numere impulsurile primite pe prima
intrare - şi o ieşire.
Există numărătoare care sunt prevăzute şi cu o intrare de validare şi o
ieşire care reprezintă negata primei ieşiri.
Conform standardului IEC 61131 există trei tipuri de numărătoare:
CTU – numărător în sens crescător;
CTD – numărător în sens descrescător;
CTUD – numărător bidirecţional.
Constructiv aceste elemente de programare arată în felul următor:
19 / 31
unde:
CU/CD – numărare crescător / descrescător;
Q/QU/QD – ieşirea comparatorului;
R – aducere la valoare 0;
LD – încărcare CV cu PV;
PV – valoarea prestabilită;
CV – valoarea numărată de la momentul activării.
20 / 31
Bloc-funcţiile
21 / 31
3.4.1. Studiu de caz
22 / 31
unde:
A, B – surse de alimentare cu energie electrică;
C – consumator;
IA, IB, I1, I2 – întreruptoare;
L1, L2 – liniile de alimentare;
1 – releu cu temporizare la revenire;
23 / 31
2 – releu minimal de tensiune;
3 – releu maximal de tensiune;
4 – releu cu temporizare la acţionare;
5 – releu intermediar;
BD – bobină de declanşare;
BA – bobină de anclanşare;
TT – transformator de tensiune.
Modalităţile de funcţionare sunt următoarele:
funcționare normală: stația C de unde pleacă consumatorii, este
alimentată prin linia L1, întreruptoarele IA, I1 fiind închise, releul 1 este
acționat prin contactele 23-24 ale lui I1. Releul minimal de tensiune 2 este
de asemenea acționat (sesizează tensiune corespunzătoare pe C), având
deci contactul deschis. Dacă există tensiune şi pe linia de rezervă L2
(întreruptorul IB închis), atunci şi releul maximal de tensiune 3 este
acționat, având deci contactul închis;
declanșează voit I1: contactele 23-24 se deschid, releului 1 i se întrerupe
alimentarea, dar prin contactul său inferior cu temporizare la revenire, prin
24 / 31
contactele 11-12 ale lui I1 (care s-au închis), şi prin contactele 11-12 ale lui
I2, se alimentează bobina de anclanșare BA a lui I2, astfel C se alimentează
prin L2;
declanșează IA, sau tensiunea pe C scade: releul minimal de tensiune 2
revine, îşi închide contactul şi dacă există tensiune pe L2, prin contactul
releului maximal de tensiune 3 se alimentează releul cu temporizare la
acționare 4 care, după timpul reglat (timp de așteptare AAR) acționează şi
alimentează releul intermediar 5. Acesta, la rândul său alimentează bobina
de declanșare BD a întreruptorului I1 (contactele 13-14 ale lui I1 fiind încă
închise). Acesta se declanșează şi apoi, în modul descris anterior, se
comandă anclanșarea întreruptorului I2, C fiind alimentat prin L2.
Program Studiu_de_caz
VAR
S0 AT%IX0.0:Bool; (*Deconectare I1*)
S1 AT%IX0.1:Bool; (*Conectare I1*)
S2 AT%IX0.2:Bool; (*Deconectare IA*)
S3 AT%IX0.3:Bool; (*Conectare IA*)
S4 AT%IX0.4:Bool; (*Deconectare IB*)
25 / 31
S5 AT%IX0.5:Bool; (*Conectare IB*)
S6 AT%IX0.6:Bool; (*Deconectare I2*)
BA AT%MX0.0:Bool;
BD AT%MX0.1:Bool;
R2 AT%MX0.2:Bool;
R3 AT%MX0.3:Bool;
R5 AT%MX0.4:Bool;
RI AT%MX0.5:Bool;
I1 AT%QX0.1:Bool; (*LED1*)
I2 AT%QX0.2:Bool; (*LED2*)
IA AT%QX0.3:Bool; (*LED3*)
IB AT%QX0.4:Bool; (*LED4*)
T1:TIME:=T#2s;
T2:TIME:=T#15s;
Durata:TIME:=T#10s;
R1:TOFF;
R4:TON;
REPUNE:RS;
END_VAR
26 / 31
27 / 31
28 / 31
Se observă faptul că întreruptoarele IA, I1 si IB se automenţin prin
schemă, iar I2, pentru a folosi şi aceasta posibilitate, prin instrucţiunea Set.
Transformatoarele de tensiune (TT) n-au mai fost introduse, s-a acceptat
că tensiunea controlată de ele este cea corespunzătoare prin faptul că,
întreruptoarele prin care se asigură aceasta tensiune, sunt închise (linia de cod
11).
29 / 31
Temporizarea la revenire T1 a lui R1 poate fi scurtă, este necesară doar
pentru a asigura acționarea sigură a lui I2. Temporizarea la acționare se rezolvă,
ca o posibilitate alternativă, prin instrucţiunea GE (mai mare sau egal) a
timpului trecut de la activarea bloc-funcţiei R4 de tip TON, accesibilă la ieșirea
operandului ET a acesteia, cu un timp prescris, variabila DURATA (deci
temporizarea lui va trebui să fie T2 >= DURATA) . În acest caz, deoarece bloc-
funcţia de tip TON nu se poate reseta, ieșirea ET păstrează timpul realizat, adică
un timp care satisface în continuare condiția mai mare sau egal cu DURATA. Ca
urmare, ieșirea acesteia nu poate fi direct comanda lui R5 cum cere schema căci,
în continuare după o anclanșare automată a rezervei, la orice încercare de
reconectare a lui I1, R5 prin BD, totdeauna l-ar şi deconecta (linia de cod 3). Se
va folosi variabila intermediară RI ca ieșire a blocului de comparare, dar aceasta
se va aplica intrării SET a unui bistabil cu reset dominant, REPUNE (de tip R-
S). Doar ieșirea acestui bloc va fi R5. Aplicând la intrarea RESET comanda S1
de conectare a lui I1, R5 se va reseta, indiferent cât este RI, adică indiferent cât a
rămas operandul ET din etapa anterioară şi deci BD rămâne neactivat, adică I1
rămâne conectat.
30 / 31
Dacă în timpul de așteptare DURATA, IA revine (L1 se reconectează),
atunci I1 nu se va mai deconecta şi I2 nu se va mai conecta.
Cu acest program se pot realiza următoarele manevre:
funcționare normală, C se alimentează prin L1: prin IA (S3) si prin I1
(S1) conectate; apoi se conectează L2 prin IB (S5). Ledurile 3 (IA), 1 (I1)
şi 4 (IB) se aprind;
declanșarea voita a lui I1 (se apasă S0): I1 se declanșează, I2 se
anclanșează, C este alimentat prin linia L2; ledul 1 (I1) se stinge, ledul 2
(I2) se aprinde;
repunerea lui L1: se declanșează I2 (S6 de la panoul automatului) şi se
anclanșează I1 (S1), C este alimentat prin linia L1; se stinge ledul 2 (I2) şi
se aprinde 1 (I1);
declanșează IA (S2): ledul 3 (IA) se stinge;
o dacă în intervalul de timp DURATA = 10s se reconectează IA (S3), ledul
3 (IA) se reaprinde, C este alimentat în continuare prin linia L1;
o dacă în intervalul de timp DURATA = 10s nu se reconectează IA (S3), I1
va declanşa, I2 va anclanșa, C va fi alimentat prin L2; ledul 1 (I1) se
stinge, ledul 2 (I2) se aprinde;
31 / 31