Sunteți pe pagina 1din 47

Limbajul de programare de tip

“Scheme cu contacte” (LD)

în lucru
Originile limbajului LD

z 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
z 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
z Scrierea unui program în limbajul LD presupune desenarea unei
diagrame (diagramă LD) similare unei scheme electrice cu contacte.
z Elementele componente ale diagramei LD modelează funcţionarea
elementelor unei scheme cu contacte.
z Interpretarea funcţionării diagramei LD este similară interpretării
schemelor electrice cu contacte.
z 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

z Contactele sunt elemente de programare


care modelează contactele aparatelor
electrice de comutaţie.
z Ca şi în cazul acestora din urmă, contactele
pot fi de tip n.d. (a) şi n.i. (b).

IN001 IN002 IN003

a) b)
Contactele

z În cadrul unui program LD, contactele pot fi asociate


intrărilor AP, ieşirilor AP sau unor variabile interne.
z 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

z 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:
z intrări cu memorie (latch),
z intrări active pe frontul crescător
z intrări active pe frontul descrescător.
Bobinele

z Bobinele sunt elemente de programare care


modelează funcţionarea bobinele contactoarelor şi
releelor electromagnetice.
z Ca şi în cazul bobinelor din schemele electrice,
bobinele din programele LD pot avea două stări:
alimentate sau nealimentate.

OUT 001 OUT 002 OUT 003

a) b)
Bobinele

z 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.
z Ca şi în cazul bobinelor din schemele electrice, bobinele din
programele LD pot avea două stări: alimentate sau
nealimentate.
z Ele pot fi asociate ieşirilor automatului dar şi unor variabile
interne modelând astfel releele auxiliare din cadrul schemelor
electrice cu contacte.
Bobinele
z Fiecare ieşire este de identificată în mod unic, modul de
identificare diferind de la un producător la altul.
z 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.
z 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.
Temporizatoarele

z Temporizatoarele sunt elemente de programare


care modelează funcţionarea releelor de timp şi a
contactelor temporizate.
z Sunt utilizate pentru a realiza acţiuni întârziate sau
ce durează un anumit interval de timp.
Ieşire
Validare
Nr. temporizator

Baza de timp

Iniţializare Valoarea
prestabilită
Temporizatoarele

z Producătorii de AP furnizează atât funcţii elementare


de temporizare cât şi funcţii mai complexe.
z Temporizatoarele utilizate în programele LD au o
flexibilitate şi o funcţionalitate mult mai mare decât
temporizatoarele utilizate în schemele electrice.
z Temporizatoarele simple permit realizarea unei
acţiuni întârziate cu un anumit interval de timp ce
poate fi programat.
z Temporizatoarele complexe au în vedere obţinerea
unor temporizări variabile, funcţie de anumite condiţii
care apar la un moment dat.
Temporizatoarele

z Fiecare temporizator din schemă este identificat în mod unic,


modul de identificare fiind diferit de la un producător la altul.
z În cazul în care baza de timp este aceeaşi pentru toate
temporizatoarele, precizată în manualul de programare a AP,
aceasta este omisă.
z Valoarea prestabilită poate fi exprimată în unităţi de timp (s).
z Temporizatoarele au cel puţin o intrare de iniţializare, la
activarea căreia începe temporizarea şi o ieşire.
z Î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

z 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. Ieşire
Numărare
Nr. numărător

Ieşire negată

Iniţializare Valoare
prestabilită
Numărătoarele

z 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.
z 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.
z 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

z 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.
z 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.
z 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

z Pentru materializarea unor funcţii mai complexe menite


să uşureze scrierea programelor în limbaj LD sunt
utilizate blocurile funcţionale (BF).
z 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ă.
z 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

z 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

z Limitările ţin de:


– proprietăţile intrinseci ale limbajului;
– implementările specifice ale diferitelor pachete de
programe comerciale
z Sunt datorate soluţiilor tehnice adoptate de
firmele producătoare pentru implementarea
diverselor elemente ale limbajului.
Limitări privitoare la formatul
diagramei LD

z 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.
z 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

z 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
z 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

z 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.
z 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.
z Etapa de actualizare a ieşirilor constă în transferarea
informaţiei din tabela ieşirilor către terminalele de ieşire a
automatului.
z 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

z 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.
z În scrierea unui program în limbajul LD trebuie avute
în vedere şi modul în care este interpretat programul
scris.
Interpretarea programelor LD

z 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

z Î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ă.
z 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ă.
Interpretarea programului LD - Citirea
pe linie
Interpretarea programului LD - Citirea
pe coloană
Limbajul LD în standardul IEC 61131-3

z 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

z Liniile programlui sunt Linie a programului


evaluate de la stânga la
dreapta şi de sus în jos Fază A D E
Nul
z Ramificaţiile din cadrul B
Ramificaţie
unei linii sunt evaluate F G H
de la stânga sus la P S
dreapta jos I J K
R
Bobine fără memorie

z The referenced bit is reset when processor power


is cycled
– Bobină -( )-
z 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ă -( / )-
z Pune bitul în 0 când linia este evaluată la 1 logic şi pus în 1
când linia este evaluată la 0 logic
z În general nu e folosită datorită confuziei pe care o poate
introduce
Bobine fără memorie

– Bobină Set (Latch) -(S)-


z 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)-
z Pune bitul în 0 când linia este evaluată la 1 logic şi nimic
când linia este evaluată la 0 logic
Contacte

z 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.
z 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

z Contact activ pe frontul crescător -|P|-


– Validează partea dreaptă a liniei de program
pentru un ciclu când partea stângă este validată
z 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

z 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
z 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

z Bitul din memorie corespunzător rămâne nemodificat


după întreruperea şi reconectarea alimentării
– Bobină cu memorie -(M)-
z Pune bitul în 1 când linia este validă şi o pune în 0 când
este invalidă.
– Bobină Set cu memorare (Latch) -(SM)-
z Pune bitul în 1 când linia este validă şi nu face nimic când
este falsă
– Bobină Reset cu memorare (Unlatch) -(RM)-
z Pune bitul în 0 când linia este validă şi nu face nimic când
este falsă
Bobine activate pe front

z 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
z 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

z 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

z Valorile timpului
– Baza de timp este de 1ms (1/1000 s)
– Valorile sunt introduse folosind formatul literal
Timers in Ladder Diagram

Pump_Tmr
z Două variante de
vizualizare în funcţie de IN
TON
Q

folosirea ieşirilorEN/ENO T#200ms PT ET 178


– prima metodă necesită elemente
suplimentare de programare dacă
este necesară utilizarea stării
temporizatorului în alte linii de Pump_Tmr
program TON
– a doua metodă asociază un bit lui IN ENO
Q ce poate fi apoi folosit de alte Pump_Tmr_DN
linii de program, ENO=EN Q

T#200ms PT ET 178
Funcţionarea temporizatoarelor

z IN = condiţia de intrare a Temporizare tip impuls (TP)


liniei IN
Q
z Q = ieşirea comparatorului PT
ET |
– diferă în funţie de tipul de 0

temporizator Temporizare la conectare (TON)


z PT = valoarea prestabilită IN
Q
z ET = timpul scurs de la PT
ET
activarea temporizatorului |
0

Temporizare la deconectare (TOF)


IN
Q
PT
ET |
0
Numărătoare în LD

z 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

z Toate trei contorizează tranziţiile liniei


Numărătoare în LD

z Două vizualizări Load_Cnt

posibile în funcţie de IN
CTU
ENO
utilizarea ieşirilor
EN/ENO R Q
Load_Cnt_DN

– prima metodă necesită


200 PV CV 178
elemente de programare
suplimentare dacă starea
temporizatorului este necesară Load_Cnt
în alte linii de program
CTU
– a doua metodă asociază ieşirii Q
IN
Q un bit care poate fi folosit în
alte linii de program, ENO=EN
R

200 PV CV 178
Funcţionarea numărătoarelor

Numărător crescător (CTU)


z Parameteri IN
... ...
– CU/CD = Numărare Q
PV
crecătoare/descrescătoare CV |
0
– Q/QU/QD = Ieşirea R
comparatorului
– R = Aducere în Zero
– LD = Încărcarea CV cu PV
Numărător descrescător (CTD)
– PV = Valoarea prestabilită ... ...
IN
– CV = Valoarea numărată de Q
la momentul activării PV
CV |
0
LD
Funcţionarea numărătoarelor

z Parameteri
Numărător bidirecţional (CTUD)
– CU/CD = Numărare ...
crecătoare/descrescătoare CU
– Q/QU/QD = Ieşirea QU
CD
...
comparatorului
– R = Aducere în Zero QD
– LD = Încărcarea CV cu PV PV
CV|
– PV = Valoarea prestabilită 0
R
– CV = Valoarea numărată de
LD
la momentul activării
Setul de instrucţiuni IEC1131-3
z 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ţiuni
IEC1131-3

z 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
Bibliografie

z Ron Bliss, Introduction to IEC1131-3 Ladder


Diagram, Allen-Bradley
z SR EN 61131-3, Automate programabile.
Partea 3. Limbaje de programare
z C.G.Haba, Sisteme de comandă a maşinilor
electrice, Ed. Gh.Asachi, Iaşi