limbajul de programare de tip “scheme cu contacte”...

47
Limbajul de programare de tip “Scheme cu contacte” (LD) în lucru

Upload: others

Post on 05-Sep-2019

2 views

Category:

Documents


0 download

TRANSCRIPT

Limbajul de programare de tip “Scheme cu contacte” (LD)

în lucru

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

Interpretarea programului LD - Citirea pe linie

Interpretarea programului LD - Citirea pe coloană

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

Bibliografie

Ron Bliss, Introduction to IEC1131-3 Ladder Diagram, Allen-BradleySR EN 61131-3, Automate programabile. Partea 3. Limbaje de programareC.G.Haba, Sisteme de comandă a maşinilor electrice, Ed. Gh.Asachi, Iaşi