Sunteți pe pagina 1din 125

AUTOMATE PROGRAMABILE vol.

1
AUTOMATE PROGRAMABILE vol. I

CUPRINS VOL. I
INTRODUCERE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
CAP.1. STRUCTURA ȘI MODUL DE FUNCȚIONARE A UNUI AP . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . 8
I.1. PARTICULARITĂȚI ALE STRUCTURII ȘI MODULUI DE FUNCȚIONARE A UNUI AP . . . . . . . . . . . . . . . 8
I.2. MODULE DE INTRĂRI BINARE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
I.3. MODULE DE IEȘIRI BINARE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
I.4. MODULE DE INTRĂRI ANALOGICE. . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
I.5. MODULE DE IEȘIRI ANALOGICE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
I.6. MODULE DE INTRĂRI/IEȘIRI ÎN IMPULSURI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
I.7. ALTE TIPURI DE MODULE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
I.8. AUTOMATE MICROPROGRAMATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
I.8.1. INTRODUCERE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
I.8.2. STRUCTURA UNUI MICROSECVENȚIATOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
I.8.3. STRUCTURA AUTOMATULUI MICROPROGRAMAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
I.8.4. CONȚINUT POSIBIL AL MEMORIEI ROM-CMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
I.8.5. SIMULATORUL DE AUTOMAT MICROPROGRAMAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
I.8.6. EXEMPLE DE PROGRAME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
I.8.7. STUDIU DE CAZ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
CAP. II. LIMBAJE DE PROGRAMARE PENTRU AP. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
II.1. INTRODUCERE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
II.2. LIMBALUL IL SAU STL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .45
II.2.1. INTRODUCERE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
II.2.2. STUDIU DE CAZ . . . . . . . . . . . . . . . . . . . . - - - - - - - - - - - - . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
II.3. LIMBAJUL ST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
II.3.1. INTRODUCERE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . 50
II.3.2. INSTRUCȚIUNEA DE ATRIBUIRE . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
II.3.3. INSTRUCȚIUNI REPETITIVE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
II.3.4. STUDIU DE CAZ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
II.4. LIMBAJUL LAD (LADDER DIAGRAM) . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
II.4.1. INTRODUCERE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
II.4.2. OBIECTELE LIMBAJULUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
II.4.3. UTILIZAREA RELEELOR INTERNE . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
II.4.4. NUMĂRĂTOARE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .63
II.4.5. TEMPORIZATOARE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
II.4.6. BLOCURI FUNCȚIONALE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
II.4.7. LIMITĂRI (RESTRICȚII) ÎN PROGRAMELE LAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
II.4.8. STUDII DE CAZ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
II.5. LIMBAJUL FBD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
II.5.1. INTRODUCERE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
II.5.2. BLOCURILE LIMBAJULUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
II.5.3. STUDII DE CAZ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . 77
2
AUTOMATE PROGRAMABILE vol. I

II.6. LIMBAJUL SFC . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83


II.6.1. INTRODUCERE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
II.6.2. COMPONENTELE DE BAZĂ ALE LIMBAJULUI . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . 83
II.6.3. EVOLUȚIA UNUI GRAF . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
II.6.4. TIPURI DE ACȚIUNI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
II.6.5. TEMPORIZĂRI ASOCIATE UNEI ETAPE . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . 91
II.6.6. MACRO-ETAPE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .92
II.6.7. INSTRUCȚIUNI PERMANENTE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
II.6.8. REGULI FORMALE DE DESCRIERE A UNUI GRAF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
II.6.9. ANALIZA CORECTITUDINII UNUI GRAF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .94
II.6.10. TESTAREA PROGRAMELOR SCRISE ÎN SFC . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . .95
II.6.11. STUDII DE CAZ . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
II.7. LIMBAJE BAZATE PE GRFURI DE STARE. . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . 120

BIBLIOGRAFIE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
DESPRE AUTOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . 124

3
AUTOMATE PROGRAMABILE vol. I

INTRODUCERE
Automatele programabile sunt unele din cele mai răspândite dispozitive folosite în automatizările
secvențiale, care se folosesc în România. Acestea acoperă domeniul de aplicații la complexitate mică,
medie și mare. Aplicațiile de complexitate mică, realizate de obicei cu mini-automate, acoperă, ceea ce
în trecutul apropiat, se făcea utilizând contacte și relee, iar aplicațiile de complexitate mare, realizate cu
automate având controlere (procesoare) puternice. Acestea se suprapun de multe ori domeniului în
care se utilizează calculatoarele de proces. Pe acestea din urmă se pot realiza chiar și programe
multitasking deosebit de performante.
Dacă este să analizăm aplicațiile cu AP din punct de vedere al numărului de echipamente identice
atunci trebuie să spunem că de obicei acestea sunt unicate, rare ori sunt elaborate aplicații, care să fie
utilizate în mai multe locuri, având în vedere faptul că aplicațiile diferă mult, în funcție de elementele
de execuție specifice fiecărui loc. Desigur că, firmele mari au elaborat aplicații mai generale, folosind
sisteme expert, dar și acestea trebuie adaptate cazurilor concrete în care se utilizează. Un exemplu în
această privință este sistemul expert CEMAT, utilizat cu mici adaptări la fabricile de ciment. Pentru
automatizări cu număr mare de echipamente identice se folosesc sisteme dedicate, de obicei automate
microprogramate sau sisteme înglobate. În finalul cap I mă voi referi la automatele microprogramate
cu scopul de a lămuri modul de funcționare al acestora, de a simula și construi sisteme înglobate și, de
ce nu, a lămuri modul de funcționare al unităților centrale ale microprocesoarelor.
Un realizator de automatizări industriale poate alege unul din mai multe automate produse de
numeroase firme: Siemens, Allen-Bradley, ABB, Schneider Electric, Omron, Mitsubishi, Fuji etc.
Siemens este, probabil, cel mai mare producător de automate programabile. Cele mai importante sunt:
Logo, S7-1200 (înlocuitoarele seriei S7-200), S7-1500, S7-300 și S7-400. Automatele Siemens au mai
multe facilități de comunicare, utilizând PROFINET (Conexiune Ethernet TC/IP), PROFIBUS, AS-i
sau MPI. Mediile de programare se numesc Logo Soft Confort, Step 7 MicroWin, Step 7 Manager sau
TIA Portal (Totally Integrated Automation). Acestea permit abordarea programării în diferite limbaje
de programare bazate pe mediile de programare avansate (cum ar fi limbajul Visual C++) și pe medii
grafice care implementează limbaje grafice recomandate de IEC (International Electric Committee).
Un alt mare producător este Rockwell Automation, care produce automatele Allen-Bradley: Micro-
logic, SLC 500 și PAC (Programmable Automation Controller). Primele două sunt folosite pentru
aplicații medii și mici, în timp ce PAC este folosit pentru aplicații mari. Mediile de programare pentru
aceste automate sunt RS Logicx 500 și Studio 500.
Firma ABB este și ea unul din cei mai mari producători de automate programabile. Aceasta produce
mai multe serii de unități centrale: seria 40, seria 50, seria 70 și seria 90. Primele două sunt destinate
aplicațiilor de medie ți mică complexitate cu până la 110 intrări/ieșiri. Seria 90 este destinată
aplicațiilor de mare complexitate cu peste 1000 de intrări/ieșiri. Între mediile de programare cel mai des
utilizate sunt AC1131 și Automation Builder (destinat automatelor AC500eCo și AC500).
Producătorul Schneider Electric, produce automatele M221, iar SoMachine este mediul de programare
care facilitează configurarea, programarea și punerea în funcțiune programelor.
Firma Moeller (după 2011 Contron ) produce automatele Eassy și XC101, XC 121 ș XC11201. Mediile
de programare sunt easySoft Pro (pentru automatele Eassy 400, 500, 600, 700 și 800), si easySoft
CoDeSys.

4
AUTOMATE PROGRAMABILE vol. I

Nu trebuie uitat și firmele de hardware și software: Mitsubishi, Omron, Hitachi (din Japonia), Wecon
(China) etc.
Pentru a fi cât mai ușor adaptate la nevoile unei aplicații, automatele programabile, sunt, de obicei cu
structură modulară. Se utilizează, în acest caz o unitate centrală și mai multe module cuplate pe o
magistrală internă. Numărul de module care pot fi adăugate depinde de capacitatea magistralei interne.
De obicei acest număr este opt, dar există posibilitatea de mări acest număr prin utilizarea unor module
de extensie a magistralei, care comunică pe o rețea cu unitatea centrală. Uneori aceste module sunt
astfel concepute încât adresele modulelor adăugate apar ca fiind în componența modulelor de pe
magistrala internă.
Așa cum vom vedea automatele nu au, decât rare ori (de obicei la mini-automate), dispozitive de
intrare/ieșire clasice. Introducerea/extragerea de date se poate face direct legând la ieșirile și intrările
automatelor traductoare sau elemente de execuție. Pentru interfațarea cu utilizatorul numită de obicei
HMI (Human Machine Interface) se folosesc în mod uzual dispozitive speciale numite panouri
operator. Acestea comunică cu automatul programabil pe o rețea, care poate fi de tip RS-232, RS-485,
PROFIBUS, Ethernet etc. Operațiunea de legare de aplicație se face printr-o operație numită
configurare. Programele de configurare oferă posibilitatea realizării unei interfețe cu operatorul uman,
făcând legătura prin intermediul unor variabile numite taguri cu variabilele din automat, atât pentru
operații de intrare (introducere de date în automat) cât și pentru ieșire (afișare de stări ale unor variabile
din automat). În programele de configurare există obiecte, care se pot lega de variabile de stare și pot fi
prezentate stările diferitelor elemente de intrare (traductoare) sau elemente de execuție. Editorul
programului de configurare simplifică definirea parametrilor aplicației și oferă capabilități adăugate
pentru a face monitorizarea sistemului intuitiv, stochează întreaga aplicație, inclusiv imagini, astfel
încât editarea nu necesită fișiere sursă originale.
Gama de dimensiuni ale ecranului, tipul ecranului (tactil sau nu) și culorile se potrivesc nevoilor de
spațiu și de aplicații disponibile. Unele panouri operator sunt dotate cu sisteme de operare evoluate
(Windows CE). Exemple de programe de configurare sunt WinCC Flexible, pentru automatele
SIEMENS, Magelis, pentru automatele Schneider, Levi Studio pentru automate Wecon etc.
Acest mod de realizare a interfeței cu operatorul uman nu este singurul mod de realizare a acesteia. Se
pot folosi module speciale de interfațare în care sunt realizate servere de date, care pot comunica cu
programe care rulează pe un calculator, care au acces în acest fel la datele din automat. Astfel de
programe necesită pe lângă configurarea serverului de date și realizarea unei interfețe grafice cu
utilizatorul. Exemple de astfel de programe WinCC, InTouch etc.
Dispozitivele HMI oferă facilități de memorare în baze de date a datelor de la un moment dat, de
reprezentare grafică a istoricului unei variabile de proces și de setare de alarme la anumite valori ale
variabilelor.
În fig. 1 sunt reprezentate posibilitățile de realizare și monitorizare a unui sistem cu AP. Evident se va
opta doar pentru una din soluțiile de realizare a interfeței HMI. Dacă se folosește calculatorul pentru
realizarea HMI atunci configurarea se realizează chiar pe calculatorul pe care se realizează interfața.

5
AUTOMATE PROGRAMABILE vol. I

Proces
Panou Operator
OP

Automat Port
Programabil comunicaţie
Reţea
RS-232/Profibus/Ethernet
Port programare Port configurare

` `

Calculator de programare Calculator de intefață


și configurare cu operatorul uman
Fig.1. Sistem de control și monitorizare cu AP
În ultimii 20 ani am proiectat şi implementat numeroase automatizări industriale, consultându-mă cu
multe persoane, vorbind şi învăţând de la mulţi ingineri, care au dezvoltat la rândul lor automatizări de
toate tipurile. Această carte este un compendium de informaţii câştigate din această experienţă. Intenţia
mea este aceea de a pune la dispoziţie un cadru practic pentru inginerii, care vor să proiecteze şi să
implementeze sisteme de automatizare industrială utilizând AP.
Cartea este structurată pe două volume. Volumul I cuprinde primele două capitole, care constituie
prezentarea principalelor particularități hardware ale automatelor programabile, prin comparație cu
calculatoarele informatice, prezentarea automatelor microprogramate și limbajele de programare.
Volumul II cuprinde celelalte capitole, cuprinsul acestora va prezentat mai jos.
În cap. I sunt tratate principiile de funcționare a automatelor programabile vectoriale, asemănările și
deosebirile dintre acestea și calculatoarele informatice și de proces în ceea ce privește structura
hardware, structura memoriei, modul de execuție a unui program, rolul sistemului de operare și
structura unor module pentru cuplarea la proces. Un paragraf special este dedicat, așa cum am arătat
mai sus, automatelor microprogramate.
În cap. II sunt prezentate limbajele de programare ale automatelor vectoriale conform recomandărilor
cuprinse în standardul IEC 1131-3 şi IEC 61131-3: STL, ST, LAD, FBD, şi SFC. Sunt prezentate unul
sau mai multe studii de caz care să lămurească modul de utilizare a limbajelor, adică o probleme reale
rezolvate complet cu obiecte ale limbajului respectiv. Este prezentat, pe scurt, și un limbaj de
programare grafic, care nu se încadrează în recomandările standardelor internaționale bazat pe grafuri
de stare (de exemplul limbajul HiGraph din Step 7 Manager). Nu sunt prezentate şi noţiuni privind
transferul programelor din mediile de programare în automat, controlul la distanţă a pornirii şi opririi
unui program precum şi noţiuni generale de monitorizare şi forţare a variabilelor. Aceste lucruri sunt
cuprinse în mediile de programare și simulare, care sunt specifice firmei care produce automatul.

6
AUTOMATE PROGRAMABILE vol. I

În cap. III sunt cuprinse metodele de programare structurată pentru automatele vectoriale: metoda
activării şi dezactivării sincrone, metoda utilizării bistabilelor R-S, metoda programării directe a
acţiunilor, metoda utilizării variabilelor de tip releu secvenţial și metode de programare structurată a
aplicațiilor mai. Acestea din urmă pot fi realizate și ca aplicații multitasking. Sunt analizate metode de
excludere mutulă pentru obiectele folosite în mai multe taskuri pentru eliminarea unor opriri de
elemente utilizate în mai multe taskuri. Scopul acestui capitol este acela de a pune la dispoziţie
programatorilor metode de programare structurată, uşurând activitatea de elaborare, depanare şi
documentare. Toate exemplele de programare sunt prezentate în limbaje apropiate de recomandările
IEC61131, fără referire la implementările din diversele medii de programare. Am considerat că
adaptarea lor la specificul unui mediu de programare este ușoară pornind de la aceste exemple.
Cap. IV este dedicat prezentării interfeţelor cu operatorul uman şi a programelor de configurare a
dispozitivelor de realizarea a acestor interfeţe. Prin intermediul acestora se poate realiza controlul unei
aplicaţii şi se pot monitoriza stările programului. Se tratează de asemenea posibilităţile utilizării
tehnologiei OLE for Process Control (OPC) pentru monitorizarea şi controlul aplicaţiilor cu automate
programabile.
Cap. V prezintă reţelele de automate. Acest capitol este necesar, într-o prezentare a problematicii
automatelor programabile, deoarece progresele realizate în domeniul automatizării întreprinderilor au
impus necesitatea interconectării acestora în reţele deterministe. Sunt tratate, în cadrul lucrării două
nivele ale reţelelor dezvoltate în întreprinderile automatizate: reţelele AS-i şi reţelele PROFIBUS.
Reţelele AS-i (Actuator-Sensor interface) sunt optimizate pentru interfaţarea cu senzori şi elemente de
execuţie binare şi prezintă avantajul combinării într-un singur cablu a alimentării şi comunicaţiei de
date, ceea ce reduce consumul de material şi creşte eficienţa conducerii proceselor. Reţelele
PROFIBUS sunt reţele de mare viteză şi siguranţă pentru automate şi alte echipamente. În cadrul
acestui capitol sunt tratate problemele legate în special de exploatarea datelor vehiculate pe aceste
reţele din perspectiva programelor care rulează pe automate. Sunt prezentate mai ales elemente de
configurare a reţelelor şi de utilizare a datelor vehiculate pe acestea în cadrul programelor de
automatizare şi mai puţin cele legate de protocolul de comunicaţie. Sunt tratate, în mod simplificat și
alte tipuri de rețele de automate. De asemenea sunt prezentate, succint și alte tipuri de rețele de
automate cu ar fi rețelele CAN, PROFINET etc.
În cap. VI este analizat modul de alcătuire al unor proceduri pentru comanda cu AP a unor elemente de
execuție mai des întâlnite în automatizările industriale: motoare asincrone, vane hidraulice și
pneumatice, elevatoare și benzi transportoare, sisteme de cântărire, sisteme de dozare, sisteme de
descărcare din vagoane și camioane a pulberilor etc.
Este ceea ce mi-am propus să abordez în cadrul celor două volume, însoţind consideraţiile teoretice de
cât mai multe exemple de programe, conținute în studii de caz, realizate pentru probleme concrete.
Exemplele cuprinse în fiecare capitol oferă cititorului cadrul necesar pentru înţelegerea conceptelor
prezentate, precum şi un ghid pentru dezvoltarea de programe proprii. Am căutat să rezolv studiile de
caz astfel încât să fie cât mai independente de tipul automatului folosit, fără a mă referi la mediile de
programare oferite de diferite firme. Cunoașterea limbajelor și meniurile de ajutor sunt, cred eu,
suficiente pentru a realiza încărcarea, depanarea și vizualizarea on-line a variabilelor programului
Am depus eforturi majore pentru a alege problemele cele mai instructive astfel încât rezolvarea lor să
ofere atât informaţii cât şi cunoştinţe practice. În cadrul exemplelor şi a problemelor rezolvate nu s-a
abordat comanda manuală şi nu s-a prevăzut reflectarea stării circuitelor de siguranţă cu scopul de a nu
complica prea mult prezentarea. Cititorul trebuie să ştie că o soluţie destinată implementării efective
7
AUTOMATE PROGRAMABILE vol. I

trebuie să conţină şi aceste structuri. Am ales, cred, cele mai reprezentative exemple pentru înţelegerea
chestiunilor teoretice prezentate. Nu mi-am propus enunţarea şi rezolvarea unor probleme de cercetare.
Trebuie menţionată, în final, contribuţia la realizarea a aplicațiilor concrete a problemelor rezolvate la
firma IMSAT Cuadripol Brașov. Aduc mulțumirile mele regretatului inginer Dan Pălășan, care a fost
un consultant de nădejde în toate problemele practice pe care le-am rezolvat la firmă.
La realizarea acestei cărți, un rol important l-au avut generaţiile de studenţi care, prin modul în care s-
au apropiat de problematica tratată şi prin entuziasmul cu care s-au grăbit să o aplice în cadrul firmelor
în care lucrează, au întărit convingerea mea în utilitatea cărții şi au stimulat perfecţionarea ei continuă.
Tuturor celor care m-au învăţat să preţuiesc efortul intelectual le dedic această carte. Autorul a depus
toate eforturile pentru redactarea acestui material. Nu fac nici o declaraţie şi nu ofer garanţii de orice fel
cu privire la caracterul complet sau precizia conţinutului prezentat şi nu îmi asum răspunderea de orice
natură. Autorul nu va fi răspunzător pentru orice pierderi sau daune de orice fel cauzate, direct sau
indirect, de conţinutul materialului. Autorul ţine să mulţumească prietenilor, colegilor şi altor
specialişti pentru sugestiile lor şi pentru revizia unor părţi din manuscris, pentru corecturile şi
completările semnalate. Orice erori care au mai rămas sunt din vina autorului.
Ioan MĂRGINEANU
BRAȘOV 10 mai 2019

8
AUTOMATE PROGRAMABILE vol. I

Cap. I. STRUCTURA ȘI MODUL DE FUNCȚIONATRE A UNUI AP


I.1. PARTICULARITĂȚI ALE STRUCTURII ȘI MODULUI DE FUNCȚIONARE ALE AP.
Automatele programabile vectoriale (AP) sunt, din punct de vedere hardware, asemănătoare
calculatoarelor informatice, adică au unitate centrală (cu procesor sau controler), unitate de memorie și
module de intrare/ieșire cuplate pe o magistrală internă. Ele sunt dedicate sarcinilor de automatizare în
medii industriale. Iniţial ele au fost folosite doar pentru a înlocui automatizările secvenţiale realizate cu
contacte şi relee. Într-o formă generală AP, poate fi considerat ca un echipament, care permite legături
logice între un număr mare de intrări şi ieşiri, fără circuite de interfaţă suplimentare. Acest echipament
poate simula software structuri de porţi integrate, substituind configuraţia cablată printr-o structură
programabilă. Aceste sisteme ofereau mai puţine facilităţi decât calculatoarele de proces sau
informatice, dar pot fi utilizate de un personal mai puţin calificat datorită limbajelor orientate pe
aplicaţii. Derularea unui program pe un astfel de sistem este, în general, sincronă, ceea ce elimină
multiplele complicaţii care apar în cazul programelor realizate cu mai multe fire. AP sunt construite
special pentru a funcţiona în medii industriale, având protecţiile necesare împotriva mediului poluat din
industrie şi având interfeţe adaptate pentru traductoarele şi elementele de acţionare cele mai utilizate în
industrie. AP mai simple sunt construite, în general, pentru a înlocui circuitele cu contacte şi relee. Ele
lucrează doar cu variabile booleene, având deci o unitate centrală simplă. Pentru aplicaţiile mai
evoluate, există în prezent AP de mare performanţă care se apropie de complexitatea calculatoarelor.
Aceste AP lucrează cu cuvinte de 8, 16 şi 32 biţi şi pot efectua operaţii aritmetice în virgulă mobilă.
Tipurile de AP disponibile pe piaţă sunt foarte variate, iar caracteristicile lor variază de la un
constructor la altul. În cadrul acestui capitol vom prezenta doar caracteristicile generale, comune
tuturor AP.
AP sunt adesea clasificate, în funcţie de numărul de intrări şi ieşiri cu care sunt prevăzute, în trei
categorii: AP de clasă redusă (pot trata până la 128 intrări/ieșiri), de clasă medie (pot trata până la 500
intrări/ieșiri) și de clasă ridicată (pot trata mii de intrări/ieșiri).
O altă clasificare a AP, în funcție de construcție, este: AP monolitice (cu număr fix de intrări și ieșiri) și
AP modulare (cu număr variabil de intrări/ieșiri).
Un automat modular (Fig. I.1) are următoarele componente importante: rack (o structură pe care se
montează și se conectează celelalte componente), sursă (care asigură o alimentare izolată galvanic de
rețea cu tensiune alternativă de 220 V sau cu tensiune continuă de 24 V ), CPU (care conține un
procesor/controler și memorie) și module de intrare/ieșire (acestea pot fi intrări/ieșiri digitale,
intrări/ieșiri analogice și module speciale specifice unui producător sau uni anumit tip de traductor). O
structură modulară poate cuprinde un număr limitat de module, în funcție de producător, de obicei opt,
dar se pot folosi module de extensie pentru a putea conecta mai multe traductoare și elemente de
execuție, de obicei conectate prin intermediul unei rețele. Fiecare modul de extensie are o adresă
proprie, setabilă de către proiectantul rețelei. Unele module de extensie au un software, care permite ca
modulele să fie privite ca făcând parte din același rack ca și unitatea centrală. De exemplu modulele
IM-153-1 de la firma Siemens.
Vom analiza, în continuare, principalele deosebiri între AP și calculatoarele informatice/proces. O
primă deosebire se referă la memorie. În timp ce la calculatoarele informatice şi de proces nu există
nici o deosebire între memoria utilizată de sistem pentru programe şi pentru date, la AP memoria
utilizată pentru date şi cea utilizată pentru program este organizată la adrese diferite. Această soluţie
este impusă de faptul că de cele mai multe ori programele, o dată elaborate şi testate, sunt încărcate în
9
AUTOMATE PROGRAMABILE vol. I

automat şi nu sunt modificate şi deci pot fi memorate în memorii de tip ROM, fiind în acest fel şi mai
bine protejate de eventualele întreruperi accidentale ale alimentării cu energie electrică.
Dispozitiv de
programare
Relee Elemente de Relee Elemente de
Bobine execuţie Bobine execuţie
`
Port de
progranare

Modul de intrări

Modul de intrări
Modul de intrări

Modul de intrări

analogice (AO)
Modul de ieşiri
Modul de ieşiri
analogice (AO)
Modul de ieşiri
Modul de ieşiri

analogice (AI)
analogice (AI)

digitale (DO)
digitale (DO)

digitale (DI)
interfață cu
digitale (DI)
Rack

Modul de

rețeaua
Sursă CPU

Port de Port de
comunicaţie comunicaţie
Butoane Butoane
Traductoare Traductoare
Contacte Contacte
Reţea

Fig. I.1. Structura unui automat modular și extensii ale acestuia prin intermediul rețelei
Memoria pentru date, care este de tip RAM, este organizată conceptual cu acces la nivel de bit, la nivel
de octet, la nivel de cuvânt sau la nivel de dublu cuvânt şi este împărţită în trei zone distincte (fig. I.2):
o zona rezervată pentru păstrarea imaginii intrărilor, o zona rezervată pentru păstrarea imaginii ieşirilor
și o zona rezervată variabilelor de program şi de sistem.
Module de
intrări

Module de ieșiri

Proces
Variabile de interne
Module de
ieșiri

Variabile de ieșire

Fig.I.2. Memoria internă a AP


Fiecare bit al zonelor variabilelor de intrare/ieșire, care memorează imaginea intrărilor şi ieşirilor
binare, este asociat de către automat cu o intrare sau o ieşire binară şi este gestionat de sistemul de
operare al automatului, în sensul că acesta preia valorile intrărilor şi le încarcă în memorie şi preia din
memorie valorile variabilelor de ieşire şi le transmite modulelor de ieşiri. Acelaşi lucru se întâmplă şi
cu valorile reprezentate pe octet sau cuvânt ale mărimilor analogice provenite/furnizate modulelor de
intrări/ieşiri analogice. Din această cauză programatorul nu trebuie să se preocupe de realizarea de
operaţii de intrare/ieşire, acesta lucrând doar cu trei tipuri diferite de variabile din memoria internă:
variabile de intrare, variabile de ieşire şi variabile interne. De cele mai multe ori aceste variabile sunt
10
AUTOMATE PROGRAMABILE vol. I

reperate prin simboluri, care încep cu litere prefixate diferit, de exemplu la automatele din seria
SIMATIC: I, pentru intrări binare, PIW, pentru variabile de intrare pe cuvânt, Q, pentru ieşiri, M,
pentru variabilele interne.
O altă deosebire constă în modul de execuţie a unui program. În timp ce la calculatoarele de proces sau
informatice, un program (proces, task, aplicaţie) este activat de către sistemul de operare şi se execută
în regim monotasking sau multitasking, începând de la prima instrucţiune până la terminare sau până la
intrarea în funcție a comutatorului dintre taskuri, la AP se execută în regim monotasking un ciclu
infinit, care are trei faze (fig. I.3): faza de citire a intrărilor, numită în literatură PIIT (Process Image
Input Table) în care sunt scanate intrările automatului şi are loc încărcarea acestora în zona de memorie
rezervată variabilelor de intrare, faza de tratare, numită PP (Processing the Program) în care se execută
instrucţiunile încărcate într-o zonă de memorie rezervată programelor. Dacă în această zonă utilizatorul
nu a încărcat nici un program, atunci se va executa o singură instrucţiune NOP și faza de actualizare a
ieşirilor, numită PIOT (Process Image Output Table) în care se transferă spre ieşirile automatului o
zonă de memorie care conţine imaginile acestora în memoria automatului.

PIIT PP PIOT

TC

Fig. I.3. Ciclul de funcționare al unui AP


Operaţiile din fazele de Citire intrări şi Actualizare ieşiri se fac sub controlul sistemului de operare cu
care este dotat AP, sarcinile acestuia fiind, pe lângă cea amintită mai sus, gestionarea memoriei,
gestionarea pornirilor la rece (cold restart) şi la cald (warm restart) şi realizarea comunicaţiei cu alte
sisteme. Deci instrucţiunile prin care se realizează programarea unui automat nu cuprind instrucţiuni de
intrare/ieşire. Din acest motiv AP pot, în general, să funcţioneze fără unităţi periferice de tip informatic
(tastatură, display), aceste elemente fiind utilizate mai mult în procesul de elaborare şi punere la punct a
programelor. Așa cum am văzut, pentru realizarea interfeţelor om-maşină (HMI) la aplicaţiile cu AP se
folosesc structuri separate, cu inteligenţă proprie, numite panouri operator, despre acestea vom vorbi în
vol. II.
Pentru elaborarea corectă a unui program, un utilizator trebuie să ştie că la sfârşitul fazei de citire, zona
de memorie de date, care conţine imaginea variabilelor de intrare, conţine starea intrărilor automatului,
iar la sfârşitul fazei de tratare, utilizatorul trebuie să fi realizat setarea imaginilor din memorie a
ieşirilor, pentru ca acestea să poată fi transferate de sistemul de operare în faza de actualizare la ieşirile
automatului.
Se face distincţie între trei moduri de pornire a unui automat: pornirea la rece (cold restart), pornirea
la cald (warm restart) şi pornirea fierbinte sau imediată (hot restart). La pornirea la rece, procesarea
unui program începe cu prima instrucţiune a sa, cu valorile variabilelor, imaginile I/O, temporizările şi
contoarele iniţializate într-o stare prederminată. O pornire la rece poate fi automată sau manuală. La
pornirea la cald, procesarea unui program începe cu faza PIIT şi cu toate valorile de memorie, timerele
şi contoarele având valori predeterminate şi programate de utilizator. La pornirea fierbinte sau
imediată, programul este reluat de unde a fost întrerupt, realizându-se o salvare a întregului context al
programului. Toate automatele pot realiza porniri la rece şi la cald, în timp ce pornirea fierbinte este
implementată doar la automatele de clasă mare.
11
AUTOMATE PROGRAMABILE vol. I

Pentru ca AP să răspundă cât mai rapid la modificările din proces trebuie ca ciclul să fie cât mai scurt
posibil. Lungimea ciclului depinde de numărul de intrări şi ieşiri şi de numărul de instrucţiuni din
programul scris de utilizator. Trebuie ca ciclul unui AP să nu depăşească o valoare critică pentru
procesul controlat.
Pentru automatele mai complexe, la începutul unui ciclu s-a introdus o fază de procesare internă,
numită IP (Internal Processing), prezentată în fig. I.4, în care se realizează operaţii specifice, cum ar fi:
gestionarea cuvintelor de sistem, actualizarea valorii timpului, actualizarea stării lămpilor de pe panoul
automatului, citirea stării butoanelor de pe panoul automatului etc.

IP PIIT PP PIOT

TC

Fig. I.4. Ciclu de funcționare cu fază de procesare internă


Unele firme realizează automate programabile, care au posibilitatea de a realiza ciclul într-un timp dat.
Dacă ciclul se termină mai repede decât timpul setat pentru ciclu, atunci se introduce o fază de
aşteptare.
Pentru a îmbunătăţi sincronizarea dintre automat şi procesul condus, unele automate lucrează cu cicluri
în care operaţiile de intrare sau de ieşire sunt imbricate cu faza de tratare propriu-zisă.
Cu această organizare a ciclului, programarea AP este foarte mult simplificată, deoarece toate
operaţiile de intrare/ieşire sunt implicite. În plus, în timpul fazei de tratare, legătura cu exteriorul nu
este afectată.
Prin durată a ciclului TC, se înţelege timpul scurs între două lansări ale aceleiaşi părţi din programul de
aplicaţie.
Cunoaşterea duratei ciclului pentru un anumit program de automatizare este foarte importantă pentru a
putea preciza modul de răspuns al unui automat la informaţiile din proces. Programarea structurată a
unor astfel de dispozitive este greoaie şi s-au adus o serie de îmbunătăţiri.
Dacă se atribuie sistemului de operare şi sarcina apelării programelor utilizator se poate împărţi
programul scris de utilizator în mai multe module, ceea ce permite înţelegerea mai uşoară a
programelor mari, modificarea mai uşoară, realizându-se premisele pentru structurarea programelor.
Firma SIEMENS a realizat o asemenea încercare, pentru automatele de clasă mijlocie şi mare,
împărţind programele în mai multe blocuri (OB), care determină structura unui program şi sunt apelate
de sistemul de operare, aceste blocuri constituind interfaţa între sistemul de operare şi programul
utilizator. Fiecare bloc este apelat ciclic sau pe întreruperi generate de ceasul sistemului sau de
hardware. Execuţia unui bloc poate fi întreruptă de execuţia altui bloc, în funcţie de prioritatea blocului.
S-au adus şi modificări mecanismului de apelare a procedurilor, în sensul că s-au introdus apeluri de
rutine cu blocuri de date proprii.
Acest mod de funcționare al AP are unele dezavantaje, care trebuie cunoscute pentru a putea elabora
programe performante. În primul rând orice variabilă care se schimbă după trecerea fazei de procesare
a intrărilor nu poate avea efecte asupra programului, care se execută in faza de procesare (fig. I.5). Deși
12
AUTOMATE PROGRAMABILE vol. I

variabila I1 se schimbă din zero în unu la momentul t1 ea va fi considerată în cursul primului ciclu tot
de valoare zero, urmând să fie considerată cu valoarea unu doar în faza de prelucrare din ciclul al
doilea (după timpul t2).

I1

t1 t2 t

PIIT PP PIOT PIIT PP PIOT

TC TC
I II

Fig. I.5. Preluarea variabilei I1 se face doar în ciclul II.


Ca o consecință trebuie avută în vedere și observația că nu trebuie făcute bucle în programele pentru
automate pe valori ale variabilelor de intrare, pentru că se poate întâmpla ca bucla să devină infinită.
Astfel dacă ieșirea din buclă se face atunci când variabila I1 este unu, atunci în primul ciclu se va
executa un ciclu infinit, deoarece nu se va mai ajunge în următorul ciclu la faza de preluare a
variabilelor de intrare care să preia noua valoare. Din această cauză are loc o blocare a AP. Se poate
elimina, în parte, acest neajuns prin realizarea unei faze de preluare a intrărilor în faza de prelucrare
program.
În automatizările industriale există semnale care au o durată foarte scurtă. Un astfel de exemplu îl
reprezintă semnalele de la traductoarele incrementale. Dacă o variabilă se schimbă un timp scurt, și ea
nu ajunge cu valoarea schimbată în faza de preluare a intrărilor, aceasta nu are nici o influență asupra
programului, așa cum se vede din fig. I.6.

I1

PIIT PP PIOT

TC

Fig.I.6. Variabilă cu variație rapidă care nu are efect asupra programului din AP.
Soluția care trebuie avută în vedere în aceste cazuri este, fie să se prelungească un timp valoarea
schimbată a variabilei (ceea ce nu este aplicabil impulsurilor de la traductoarele incrementale), fie să se
realizeze preluarea variabilei prin utilizarea preluării pe întreruperi sau ocolind mecanismul impus de
sistemul de operare prin legarea directă a impulsurilor la contoare de mare viteză realizate hardware.
Pentru un anumit automat numai anumite intrări pot fi legate la contoarele de mare viteză realizate
13
AUTOMATE PROGRAMABILE vol. I

hardware. Uneori, depinzând de producător, aceste intrări trebuie configurate. Alte ori intrările
contoarelor de mare viteză sunt legate la anumite intrări.
Mărimile de intrare într-un automat programabil sunt de două tipuri: booleene (care pot fi și sub formă
de impulsuri) și analogice (care pot fi în tensiune sau în curent). Pentru alte tipuri de mărimi de intrare
se folosesc structuri speciale de condiționare de semnal pentru a le transforma în curent sau tensiune.
Pentru mărimile booleene (contactele) trebuie avut în vedere ce contact se preia în automat și ce
semnificație are acesta în cadrul procesului. De obicei traductoarele pun la dispoziție cel puțin două
contacte: unul normal deschis (care se închide în anumite condiții) și unul normal închis (care se
deschide în anumite condiții). Folosirea unui contact depinde de modul în care se interpretează cele
două poziții ale acestuia. De exemplu ciuperca de avarie are legat contactul normal închis la automat.
Apăsarea ciupercii deschide acest contact, ceea ce trebuie interpretat ca o avarie. Pentru orice contact
care semnifică buna funcționare, dacă este închis, se va folosi în program valoarea negată a intrării
respective ca să se considere avarie. Pentru orice contact care semnifică buna funcționare, dacă este
deschis, se va folosi în program valoarea nenegată a intrării respective ca să se considere avarie. Pentru
a stabili starea unui motor, de exemplu, se folosește contactul normal deschis al contactorului, care
alimentează motorul. Închiderea acestuia semnifică faptul că motorul este pornit, mai precis că o
comandă spre motor a fost dată.
În programele de automatizare preluarea mărimilor analogice se face cu convertoare analog-numerice,
care pot prelua doar mărimi sub formă de tensiuni.
Valorii de 0 V îi corespunde LO_LIM în convertor și valorii de 10 V îi corespunde valoarea HI_LIM
unități convertor. Dacă mărimea este un curent (0 – 20 mA sau 4 – 20mA) automatul are un sistem de
condiționare se face posibilă preluarea în mod asemănător cu cea de tensiune. Există o legătură, de
obicei liniară, între mărimea din convertor și mărimea fizică, exprimată în unități ale sistemului
internațional. Această legătură este exprimată de caracteristica traductorului care este pusă la dispoziție
de producător, care este de obicei este liniară sau liniarizată (fig. I.7). Valorile HI_LIM și LO_LIM
sunt, de multe ori, setabile în faza de punere în funcțiune a traductorului.

SI

HI_LIM

LO_LIM
4 mA 20 mA
0V 10 V

Fig. I.7. Caracteristică traductor


Mai există posibilitatea preluării unei rezistențe cu patru sau două fire, și a unor termistoare. Toate
acestea se pot face cu o structură de condiționare internă a modulului. Pentru a activa unul sau altul din
sistemele de condiționare se face atât o configurare software cât și o configurare hardware, care
presupune poziționarea unui comutator pe modulul de intrări analogice.

14
AUTOMATE PROGRAMABILE vol. I

Aşa cum s-a arătat mai sus, legătura cu procesul este realizată la AP prin intermediul unor module sau
porturi de I/O, care sunt specifice tipului de mărimi de intrare/ieşire necesare pentru conducerea
procesului. Vom analiza, în cele ce urmează modulele cele mai des întâlnite în cazul controlului
proceselor: module de intrări/ieşiri binare şi modulele de intrări/ieşiri analogice. O altă categorie de
structuri de legare la proces, cele de intrări sau ieşiri în impulsuri sunt realizate chiar pe unitatea
centrală sub forma unor contoare programabile.
Toate modulele AP sunt compuse din două părţi distincte: o structură de conectare la magistrală și o
structură de conectare la proces, conectate printr-o magistrală internă a modulului.
Structura de conectare la magistrală, semănă cu structura de conectare la magistrală a porturilor
calculatoarelor, conținând logica de decodificare a adresei modulului, registre de date, logica de
generare a semnalelor încărcare de pe o magistrală internă, de selectare a acestor registre, logica de
generare a semnalelor de hand-shaking cu unitatea centrală pentru transfer în/de la memorie și,
eventual, a unor semnale de întrerupere etc. Deoarece această structură este studiată la disciplina de
calculatoare nu vom insista asupra ei.
Structura de conectare la proces este foarte variată, în funcție de tipul de mărime care trebuie preluată.
Rolul acesteia de a aduce pe magistrala internă și în cele din urmă, în registrele de date ale modulului, a
unui vector, izolat galvanic, reprezentând starea pentru una sau mai multe intrări ale automatului.

15
AUTOMATE PROGRAMABILE vol. I

I.2. MODULE DE INTRĂRI BINARE


În fig. I.8 este prezentată o structură posibilă de conectare la proces pentru un bit al unui modul de
intrări binare. Fiecare bit al magistralei interne se realizează o adaptare a nivelului de tensiune şi o
separare galvanică pentru semnalul de intrare.

Magistrala internă
C
R5
R4
R3
OC
LED

DZ
R1 R2

I GND +Ua

Fig. I.8. Structura de conectare la proces pentru un bit al unui modul de intrări binare
Starea unui contact este transformată într-o tensiune prin intermediul unei surse exterioare de tensiune
U, care este diferită de Ua, care alimentează modulul. Rezistenţele R1 şi R2 sunt rezistenţe de adaptare a
nivelului (divizor de tensiune). Tensiunea redresată alimentează o diodă dintr-un optocuplor OC. Dacă
dioda din optocuplor este parcursă de curent, ceea ce înseamnă că traductorul binar (contactul) legat la
intrarea AP este închis, tranzistorul din OC este deschis, ceea ce înseamnă că pe linia magistralei
interne se află un zero logic, deoarece condensatorul C se descarcă pe rezistenţa directă a tranzistorului.
În cazul în care traductorul binar de intrare nu este închis, prin diodă nu va trece curent şi deci
tranzistorul este închis, ceea ce înseamnă că la intrarea portului se află un unu logic, condensatorul C
fiind încărcat. Este după cum se vede o logică negativă de preluare a semnalului, care poate fi
transformată în interiorul modulului (ceea ce se întâmplă).
Rezistenţa R3 are rolul de a limita curenţii absorbiţi din sursă. Rolul diodei DZ este acela de a fixa un
prag de la care să fie sensibilă intrarea, iar LED este un indicator luminos al stării intrării.

16
AUTOMATE PROGRAMABILE vol. I

I.3. MODULE DE IEȘIRI BINARE


În fig. I.9 este prezentată structura de conectare la proces a unui modul de ieşiri binare ale unui AP.
Starea unui bit al magistralei interne determină sau nu deschiderea tranzistorului din optocuplor, care,
la rândul său, va comanda un preamplificator PA. Dacă preamplificatorul comandă amplificatorul
Darlington DA, atunci sursa exterioară va alimenta bobina releului B de pe ieşirea automatului.

Magistrala internă

OC

PA

LED

D1
AD

B D2

Q +Ua

Fig. I.9. Structura de conectare la proces pentru un bit al unui modul de ieșiri binare.
Acesta va comanda printr-un contact C procesul condus de automat. Trebuie astfel proiectat PA încât,
la un unu pe ieşirea respectivă, să realizeze alimentarea releului. LED este un indicator luminos al stării
unu a ieşirii, iar dioda D1 este montată cu scopul împiedicării conectării inverse la sursă a modulului.
Dioda D2 are rolul de a realiza preluarea supratensiunilor de comutaţie care apar pe înfăşurarea releului.
Există și automate care au ieșire de tip tranzistor. În aceste cazuri ieșirea amplificatorului Darlington
polarizează tranzistorul de ieșire.

17
AUTOMATE PROGRAMABILE vol. I

I.4. MODULE DE INTRĂRI ANALOGICE


Cu un modul de intrări analogice se pot realiza operaţii de achiziţie a unor mărimi analogice provenite
din proces.
Noţiunea de canal are mai multe semnificaţii în achiziţia mărimilor de proces: canal fizic şi canal
virtual.
Canalul fizic este un terminal (pin) prin intermediul căruia se poate măsura sau genera un semnal
analogic sau digital. Canalul fizic poate avea mai mulţi pini, cum este cazul unei achiziţii analogice
diferenţiale, care are doi pini, sau cazul unui port digital, care poate avea 8 pini.
Canalul virtual este o colecţie de proprietăţi, care pot fi setate, ca de exemplu numele canalului, tipul de
măsurătoare efectuată, informaţii de scalare etc. Noţiunea de canal virtual este utilizată în achiziţia de
mărimi cu calculatoare de proces, când se folosesc drivere complexe şi medii de programare obiectuale.
În cazul automatelor programabile vom folosi noţiunea de canal fizic.
Rata de eşantionare (Sampling rate sau Scan Rate) este unul din cei mai importanţi parametri ai unui
modul de intrări sau ieşiri analogice. Aceasta reprezintă viteza cu care modulul achiziţionează sau
generează date de la/la diferite canale.
În cazul modulelor de achiziţie de date analogice o rată de eşantionare mare realizează achiziţia mai
multor puncte în acelaşi timp, în timp ce o rată de eşantionare mică poate conduce la o reprezentare
greşită a mărimii de intrare. Rata de eşantionare se referă la timerul numit Ceas de eşantionare (Sample
clock).
Unele dispozitive de intrări analogice au câte un convertor pentru fiecare canal fizic. Aceste module
sunt din clasa S (Simultaneous) şi permit achiziţia simultană a mai multor canale. Există un singur
timer: ceasul de eşantionare, care determină achiziţia tuturor canalelor fizice componente ale canalului
virtual. Alte dispozitive utilizează achiziţia multiplexată. Ele conţin un singur convertor, care utilizează
două ceasuri pentru realizarea achiziţiei: Ceasul de eşantionare, amintit mai sus, care iniţiază achiziţia
şi Ceasul de conversie (Convert Clock), care determină conversia pentru fiecare canal fizic.
Dispozitivele se numesc de clasă M (Multiplexed). Spre deosebire de dispozitivele din clasa S achiziţia
mărimii de pe fiecare canal fizic nu mai are loc la acelaşi moment de timp. Distanţa în timp dintre două
eşantioane pe canale diferite fiind dată de ceasul de conversie.
Rezoluţia este cea mai mică diferenţă de semnal de intrare pe care convertorul o poate detecta. achiziţie
puţin precisă. Dacă numărul de biţi este 16 convertorul va distinge 65.536 nivele, şi achiziţia este mult
mai precisă.
Modulele de intrări analogice utilizate în automatele programabile sunt de clasă M cu registre de ieşire
de 8, 12 sau 16 biţi. Structura părţii de conectare la proces a unui modul de intrări analogice de clasă
M este prezentată în fig. I.10.
O intrare analogică, pentru a ajunge la intrarea convertorului CAN, parcurge un traseu care este alcătuit
din următoarele blocuri:
- Sistemul de Condiţionare a Semnalelor (SCS). Principalul rol al acestui bloc este de a realiza o
adaptare electrică a semnalelor provenite din proces. Prin adaptare electrică se înţelege transformarea
semnalelor provenite de la traductoare în semnale de tensiune de amplitudine compatibilă cu parametrii
convertorului analog-numeric. Exemple de astfel de funcţii sunt: transformarea rezistenţă-tensiune,
dacă traductorul este de tip termocuplu sau marcă tensometrică, transformarea curent-tensiune, dacă
18
AUTOMATE PROGRAMABILE vol. I

traductorul folosit dă semnal în curent etc. O mare parte din furnizorii de echipament oferă module
configurabile software şi hardware pentru cea mai mare parte din funcţiile amintite mai sus.
Configurarea hardware se realizează direct pe modul prin intermediul unor jumperi, care trebuie
poziţionate corespunzător înaintea introducerii modulului în rack. Configurarea software se realizează
din mediul de programare al automatului. Această configurare este transmisă unităţii centrale care
programează corespunzător unitatea de control locală (LCU) a modulului. La automatele simple pentru
conversia mărimilor analogice este folosit convertorul din controler, iar sistemul de condiţionare
realizează selectarea căii de legătură dintre o intrare şi convertor realizată prin aşa numita configurare
software a intrării.

Magistrală internă

Canal 1
Canal 2 MUX
SCS AICV E/M CAN
A

Canal n
H SC EOC
Tip
Canal Câstig
achiziție

LCU

Fig. I.10. Structura de conectare la proces a unui modul de intrări analogice


- Sistemul de multiplexoare analogice (MUX A) realizează conectarea diferitelor canale de intrare la
convertorul unic. Comanda selectării canalului este realizată de către unitatea de control local sub
controlul unui timer.
- Amplificatorul instrumental cu câştig variabil (AICV) realizează în mod obişnuit o amplificare a
semnalului astfel încât achiziţia să se realizeze cu convertorul plin. Unii producători realizează prin
intermediul acestui amplificator o corespondenţă prestabilită între mărimea de intrare şi numărul
reprezentat în registrul de ieşire al convertorului (unităţi convertor analog-numeric). Această
corespondenţă este dată în manualul modulului şi este folosită, împreună cu caracteristica traductorului,
pentru reprezentarea mărimii achiziţionate în unităţi ale sistemului internaţional pe interfeţe HMI.
- Blocul de eşantionare-memorare (E/M) este folosit pentru a îmbunătăţi dinamica convertorului.
Înainte de începerea conversiei, unitatea de control locală emite un semnal de memorare (H) care are ca
efect memorarea mărimii de intrare şi menţinerea ei constantă la intrarea convertorului pe timpul
conversiei.
- Convertorul analog-numeric (CAN) este elementul central al modulului şi în acelaşi timp cel mai
scump. De obicei sunt folosite convertoare cu aproximaţii succesive, care ating viteze de conversie şi
precizii satisfăcătoare pentru aplicaţiile cu automate programabile.

19
AUTOMATE PROGRAMABILE vol. I

O structură posibilă a unui sistem de condiţionare care să realizeze adaptarea modulului pentru
conectarea intrărilor atât la traductoare cu mărimi de ieşire în tensiune cât şi la traductoare cu mărimi
de ieşire în curent este prezentată în fig. I.11.
Volt
20 mA
3 21 Amplificator
Instrumental
VIN R2 + Canal 1
IIN R1
com -

Fig. I.11. Structură posibilă de condiționare pentru un modul de intrări analogice.


Structura se poate adapta la achiziţia de tensiuni prin legarea ieşirilor traductorului la bornele V IN şi
com sau la achiziţia de curenţi prin legarea ieşirilor traductorului la bornele IIN şi com. La configurarea
hardware a modulului se leagă 2 cu 1 în primul caz şi 3 cu 1 în al doilea caz. Această configurare se
realizează prin intermediul unui jumper.
Operaţiile de achiziţie a mărimilor analogice ale canalelor unui modul se desfăşoară fără ca să fie
necesară intervenţia programatorului. Aceste operaţii se desfăşoară automat sub controlul unităţii de
control locale, care este programată pentru un anumit mod de achiziţie în faza de configurare software.
Stocarea valorilor achiziţionate în memoria internă a automatului este realizată de către sistemul de
operare, care adresează modulele aflate în componenţa sistemului.
Programatorul lucrează, în program, cu valorile pe octet sau cuvânt a zonelor de memorie internă, fără
să aibă vreun rol, aşa cum am afirmat mai sus, în coordonarea operaţiilor de achiziţie. Cel mult un
programator poate stabili anumite zone de memorie, unde sistemul de operare să înscrie valorile
achiziţionate.
De obicei preluarea mărimilor analogice se face cu scopul de regla mărimea preluată și atunci se poate
lucra în mărimi convertor sau cu scopul de a afișa pe HMI mărimea în unități ale sistemului
internațional. În acest caz se realizează o transformarea, care se numește scalare, scopul acesteia fiind
să transforme valoarea din unități convertor în unități ale sistemului internațional.
Unele firme aleg să lucreze cu intervale standard de reprezentare internă (întregi numiți: unități
convertor), indiferent de sistemul de condiționare (configurat să preia tensiuni, curenți, rezistențe etc.).
Acest mod de reprezentare conduce la complicații hardware ale structurii modulului și nu poate fi
schimbat, indiferent de configurare. Furnizorul pune la dispoziție perechi de valori (LO_LIM, K 1) și
(HI_LIM, K2) care urmează să fie folosite în procesul de scalare, după algoritmul de mai jos și în
conformitate cu fig. I.12.
Cunoscând valorile K1 și K2 (din caracteristica convertorului) și HI_LIM și LO_LIM (din caracteristica
traductorului) se poate scrie ecuația dreptei care trece prin două puncte:
K 2  K1
IN  K1  (OUT  LO _ LIM ) ,
HI _ LIM  LO _ LIM

de unde rezultă:
20
AUTOMATE PROGRAMABILE vol. I

HI _ LIM  LO _ LIM
OUT  ( IN  K1 )  LO _ LIM .
K 2  K1

U X

(UC)

UR
K2 2N 1

SCALARE
ux
IN

K1

LO_LIM OUT HI_LIM Y
(HMI) REAL
(SI)

Fig. I.12. Operația de scalare


Firma SIEMENS, care a adoptat acest mod de reprezentare pentru mărimile analogice are o funcție de
bibliotecă numită SCALE.
Un exemplu de utilizare a funcției SCALE este atunci când se preia mărimea de ieșire de la un
traductor radar de distanță. Acesta este folosit pentru a vizualiza pe HMI (Human Machine Interface –
Interfața cu operatorul/utilizatorul uman) gradul de umplere a unui rezervor, buncăr sau siloz. Mai întâi
se setează traductorul astfel încât să dea un semnal proporțional cu înălțimea materialului și depinde de
locul în care este montat. Apoi se leagă intrarea IN de mărimea preluată de la traductor. Apoi pe
HI_LIM se introduce înălțimea rezervorului și pe LO_LIM se introduce 0. Pe ieșirea OUT se obține
realul care dă înălțimea instantanee din rezervor.
Sunt firme care lucrează cu convertoare cu număr fix de biți (N) și cu tensiuni de referință date (U R).
În acest caz operația de scalare este mai ușoară. Numărul K2 este 2N-1, iar K1 este zero. Având
caracteristica traductorului (fig. I.13)

21
AUTOMATE PROGRAMABILE vol. I

Fig. I.13. Operația de scalare pentru convertor clasic de N biți.


Rezultă din această figură:
X  tg  Y .

Tangenta unghiului φ se obține folosind punctul de coordonate ( 2 N  1 , HI_LIM).


Înlocuind în relația de mai sus valorile din fig.I.14, rezultă:
2 N 1
IN  OUT ,
HI _ LIM

de unde:
HI _ LIM
OUT  IN .
2 N 1

22
AUTOMATE PROGRAMABILE vol. I

I.5. MODULE DE IEȘIRI ANALOGICE


În programele de automatizare generarea mărimilor analogice se face cu module de ieșiri analogice,
care pot genera atât tensiuni cât și curenți.
Modulele de ieşiri analogice se realizează de obicei de clasă S, pe de o parte datorită costului mai
scăzut al convertoarelor şi pe de altă parte datorită dificultăţilor de realizare a memoriilor analogice,
care ar fi necesare în cazul în care s-ar utiliza module din clasa M. Necesitatea menţinerii, la ieşire a
mărimii constante rezultă din modul de folosire al ieşirilor analogice care, de obicei, sunt utilizate
pentru generarea mărimilor de referinţă pentru diferite regulatoare analogice sau comanda unor
electrovalve proporţionale. Aceste mărimi trebuie menţinute constante atât timp cât legea de reglare nu
impune schimbarea lor. Structura unui canal analogic de ieșire este prezentată în fig. I.14. Mărimea de
ieșire digitală se încarcă într-un registru de date (DRi), care reprezintă intrarea de date pentru
convertorul CNA al canalului. Încărcarea este realizată, în funcție de canalul de ieșire selectat, de către
o unitate de control locală (LCU). Comanda de încărcare depinde de comanda primită, peste magistrala
de date de la automat. Până la o nouă reîncărcare a registrului de date mărimea de ieșire a convertorului
rămâne constantă. Sistemul de condiționare a semnalului de la ieșire este acela poate converti tensiunea
de ieșire a convertorului în curent, dacă este necesar. La acest nivel, unele module de ieșire analogică,
au realizată și o separare galvanică. Dacă acesta nu există, atunci se vor lua folosi dispozitive separate
de separare galvanică, pentru protejarea automatului.

Magistrală internă

LD DR
LCU
CNA

SCS

Ieșire AO

Fig. I.14. Structura unui canal AO


De obicei generarea mărimilor analogice se face cu scopul de a servi la comanda vanelor proporționale,
pentru comanda convertoarelor statice de frecvență sau pentru generarea mărimilor de referință pentru
regulatoare.
Transformarea unei mărimi din sistemul internațional pentru a încărca convertorul se numește de-
scalare. Operația depinde de caracteristica elementului de execuție.
Cunoscând valorile K1 și K2 (din caracteristica convertorului) și HI_LIM și LO_LIM (din caracteristica
elementului de execuție) rezultă (fig. I.16):

23
AUTOMATE PROGRAMABILE vol. I

K 2  K1
OUT  ( IN  LO _ LIM )  K1
HI _ LIM  LO _ LIM

Valoarea OUT este aceea care trebuie încărcată în convertorul CNA, pentru a atinge valoarea dorită IN.
La automatele SIEMENS acest lucru se face cu o rutină specială numită UNSCALE care să transforme
valoarea din unități ale sistemului internațional în unități convertor.
Considerații aproape similare ca la modulele de intrări analogice, se fac pentru cazul în care se folosesc
convertoare CNA cu număr fix N de biți și tensiuni de referință cunoscute (Săgeata de descalare este cu
sens schimbat față de fig. I.13).
X

(UC)

K2

OUT
Descalare

K1

LO_LIM IN HI_LIM Y
REAL
(SI)

Fig. I. 15. Operația de descalare.

24
AUTOMATE PROGRAMABILE vol. I

I.6. MODULE DE INTRĂRI/IEȘIRI ÎN IMPULSURI


Pentru preluarea intrărilor în impulsuri se folosesc contoare realizate hardware sau software. Frecvența
semnalelor care pot fi controlate software este câteva zeci de Hz (depinzând de ciclul automatului).
Dacă frecvența semnalelor este mai mare decât aceasta este necesar să se folosească contoare de mare
viteză (HSC - High Speed Counters), în caz contrar se pierd impulsuri. Există două tipuri de contoare
de mare viteză, implementate în automatele programabile: contoare rapide implementate hardware
(HHSC), care folosesc circuite speciale și contoare rapide implementate software la care schimbarea
semnalului de numărat determină o întrerupere care să permită incrementarea/decrementarea
contoarelor software.
Diferiții producători implementează opt tipuri de contoare hardware, care numără înainte/înapoi pe
front crescător al impulsurilor de intrare (U sau D) fără o altă condiție (fig. I.16a și b), care numără pe
ambele fronturi ale impulsurilor de intrare (U sau D) fără o altă condiție (fig. I.16c și d), care numără
înainte/înapoi pe front crescător al semnalului de intrare (P) dacă un alt semnal suplimentar (R) este
zero, respectiv unu, care numără înainte/înapoi pe ambele fronturi al semnalului de intrare (P) dacă un
alt semnal suplimentar (R) este zero, respectiv unu (fig. I.16e, f, g și h). Există și contoare care primesc
semnale A și B de la traductoare incrementale și își cresc/descresc conținutul pe frontul pozitiv al
semnalului A, respectiv pe frontul negativ dacă semnalul A vine înainte de B, sau își cresc/descresc
conținutul pe ambele fronturi ale semnalului A, dacă semnalul A este înainte de B. Alte contoare își
cresc conținutul pe ambele fronturi ale semnalului A dacă semnalul A este înainte de B etc.
În fig. I.17 este prezentată arhitectura a unui contor de mare viteză. Unele din elemente sunt
încorporate (Registrul CV, Registrul PV, Comparatorul, Circuitele SI, SAU). Pentru altele trebuie
folosite unelte software pentru configurarea contorului de mare viteză.
Realizarea HSC se face prin extinderea unităţii centrale. Cele mai frecvente funcţii HSIO sunt:
Contoare de mare viteză, Întreruperi de mare viteză pentru tratarea evenimentelor critice, Preluarea
unor impulsuri de intrare cu lăţime mai mică de 100 s.
Pentru realizarea acestor facilităţi AP sunt dotate cu un hardware special, care nu este propriu-zis un
modul ci este o componentă a unităţii centrale a automatului.
Impulsurile de numărare, atât pentru contoarele software cât şi pentru contoarele hardware, sunt
preluate pe la intrările automatelor programabile. În cazul contoarelor software starea intrărilor este
copiată în memoria internă, în sub-ciclul PIIT, de unde pot fi preluate de intrările contoarelor. În cazul
contoarelor de mare viteză intrările sunt dirijate direct la intrările contoarelor. Majoritatea
producătorilor prevăd această facilitate pentru 1-5 intrări. Această schimbare a modului de preluare în
automat a anumitor intrări se face printr-o configurare prealabilă a acestora.
Fără a intra în amănunte, care sunt specifice unui producător, configurarea constă în general în
încărcarea unor registre speciale de memorie (registre HSIO) a unor vectori care are ca efect dirijarea
anumitor intrări/ieşiri direct la intrările contoarelor de mare viteză sau ieşirile automatului, în cazul în
care se configurează generarea de impulsuri (fig. I.18). Dacă se realizează configurarea HSIO atunci
circuitele HSIO vor funcţiona independent de CPU, iar funcționarea lor poate fi urmărită prin
intermediul registrelor de memorie. Aceste pot genera de asemenea întreruperi pentru a semnala, de
exemplu, atingerea unei valori din registrul HSC.

25
AUTOMATE PROGRAMABILE vol. I

U D

a b

U D

c d

P P

R R

e f

P P

R R

g h

Fig. I.16. Diagrame de semnale la HSC

26
AUTOMATE PROGRAMABILE vol. I

CPU CPU
CV
CV PV
PV Internal Memory
Internal Memory

U,
U, P,
P, AA

Comparator
Comparator
Register

Register
LOGIC

Register

Register
CV

PV
CONTR

CV

PV
D,
D, R,
R, BB
OL

Software
Software
direction
direction M
M CC

Mask
Mask
Control
Control PV=CV
PV=CV
Clear
Clear
Control
Control

EN
EN

Software
Software Software
Software
Mask
Mask Clear
Clear

Fig. I.17. Structura de principiu a unu HSC

27
AUTOMATE PROGRAMABILE vol. I

Circiute(module) de ieșire

REGISTRE
REGISTRE HSIO
HSIO

CIRCUITE HSIO CPU

Circiute(module) de intrare

Fig. I.18. Circuite HSIO din componența unității centrale


Unele automate au legate la intrări anumite intrări mai multe contoare de mare viteză. În program
contorul nu se leagă la intrarea respectivă ci doar se inițializează și se testează valoarea finală.

28
AUTOMATE PROGRAMABILE vol. I

I.7. ALTE TIPURI DE MODULE


Există o mare varietate de module pentru automatele programabile, care nu se încadrează în categoria
celor analizate mai sus. Aceste module sunt cunoscute sub denumirea de module speciale. Se
construiesc de către diferite firme module destinate controlului unor axe cu motoare electrice de diferite
tipuri, module de interfațare cu senzori speciali, module ce conectare la diferite rețele industriale:
Ethernet, Modbus, Profibus, ASi, CAN Bus sau alte tipuri de rețele proprietar. Unele module sunt
construite în componența unității centrale. Un exemplu fiind modulele de conectare la Profibus. Alte
module sunt construite separat și se conectează cu automatul pe magistrala internă. Un exemplu fiind
modulul CP 343-1 este utilizat pentru a conecta automatele SIMATIC S7-300 la Industrial Ethernet.
Modulul CP 343-1 poate comunica în mod eficient cu S7, serverele OPC sau dispozitivul de
programare. Marea varietate a cestor module ne-a determinat să nu le tratăm aici, ele fiind obiectul
unor capitole speciale orientate pe automatizări și robotică, care depășesc obiectivele acestei cărți.

29
AUTOMATE PROGRAMABILE vol. I

I.8. AUTOMATE MICROPROGRAMATE


II.8.1. INTRODUCERE
Prezentarea hardware a automatelor se va încheia cu automatele microprogramate. Există două metode
de proiectare şi implementare a automatelor: cablate şi microprogramate[16].
Unitatea de control cablată este un automat secvenţial proiectat şi construit pentru generarea unui set
specific şi într-o secventa fixă de semnale de control. Odată ce UC a fost construită, algoritmul de
control nu mai poate fi modificat decât prin reproiectarea întregii structuri. La controlul cablat,
scopurile principale urmărite la proiectarea automatului se referă la minimizarea numărului de
componente utilizate şi maximizarea vitezei de operare.

Unitatea de control microprogramată are semnalele de control incluse în cuvinte binare succesive
(microinstrucţiuni) stocate într-o memorie de mare viteză, inclusă în UC, numită memorie de control.
Implementarea algoritmului de control se face prin programarea conţinutului memoriei de control.
Fiecărei instrucţiuni recunoscute de automat îi corespunde o secvență de microoperaţii generate prin
citirea unei secvenţe de microinstrucţiuni din memoria de control (secventa de microinstrucţiuni numită
microprogram). Microprogramele conţinute în memoria de control formează un interpretor al setului de
instrucţiuni recunoscut de procesor.

Automatele microprogramate sau algoritmice au o structură asemănătoare unităţilor de control ale


microprocesoarelor. Funcţionarea lor se bazează pe citirea secvenţială din memorie a unor cuvinte şi
transmiterea unei părţi din biţii citiţi la ieşiri. Adresa din memorie de la care se citeşte este stabilită în
funcţie de intrările automatului şi de condiţii interne.
Conceptul de microprogramare, ca metode de proiectare a structurilor numerice a fost enunţat pentru
prima dată de către M. Wilkes de la Universitatea din Cambridge în 1951. Modelul propus de Wilkes
folosea două matrice de memorie (fig. 10.1): una pentru specificarea microoperaţiilor executate (A), iar
cealaltă pentru determinarea adresei microinstrucţiunii următoare (B).

Memorie de
Secvenţiator
microprograme
Intrări
Informaţie de B A

secvenţiere
Ieşiri

Fig. I.19. Modelul lui Wilkes


In esenţă, microprogramarea înseamnă controlul unei structuri numerice prin intermediul unor cuvinte
citite secvenţial din memorie. Un automat microprogramat are două funcţii principale:
Funcţia de control propriu-zis, care înseamnă controlul structurii exterioare.
 Funcţia de secvenţiere, care înseamnă controlul adresei memoriei de microprograme. Ca urmare,
cuvântul înscris in memorie va avea două câmpuri principale:
30
AUTOMATE PROGRAMABILE vol. I

 Un câmp pentru definirea şi controlul tuturor acţiunilor, care trebuie realizate de automat,
corespunzător matricei A din modelul lui Wilkes.
 Un câmp folosit pentru determinarea adresei microinstrucţiunii următoare, corespunzător matricei
B din modelul lui Wilkes. Acest câmp constituie o intrare a unui automat finit, numit microsec-
venţiator, care determină pe baza acestei intrări şi a intrărilor automatului adresa pentru
următoarea microinstrucţiune care va fi executată.
Se observă paralelismul dintre structura unui sistem numeric şi structura automatului microprogramat,
ceea ce justifică termenul de microprogram, iar pentru cuvântul înscris în memorie, termenul de
microinstrucţiune.
I.8.2. STRUCTURI DE MICROSECVENȚIATOARE
Modul de realizare a microsecvenţiatorelor a evoluat ajungându-se la structuri complexe. Pentru
înţelegerea complexităţii unui microsecvenţiator menţionăm că acesta trebuie să permită execuţia
secvenţială a macroinstrucţiunilor, să permită execuţia salturilor condiţionate şi necondiţionate, să
permită posibilitatea apelurilor şi revenirilor din subrutine şi efectuarea de cicluri, adică să ofere
posibilitatea realizării de microprograme cu structuri asemănătoare cu programele scrise in limbaje de
programare de nivel înalt.
In fig. I.20 este prezentată structura unui microsecvenţiator, care are facilităţile enumerate mai sus.

LD FE
NB mSP
EN PUSH
TC
STIVA

D
3 2 1 0
S0 CLK
MUX mPC
S1
RESET
AND INCREMENTOR

Fig. I.20. Structură posibilă pentru un microsecvențiator


Microsecvenţiatorul generează adresa următoare (Y) selectând prin intermediul unui multiplexor
(MUX) intrările directe D, ieşirile unui numărător de bucle (NB), ieşirea (F) a unei stive LIFO sau
numărătorul de microprogram (PC). Acest multiplexor de selecţie este controlat de semnalele S1 şi S0
ca în fig.. I.20 .

31
AUTOMATE PROGRAMABILE vol. I

Numărătorul de bucle NB este un numărător sincron de tip count-down care numără controlat de
semnalul de ceas (CLK) dacă este validat de semnalul EN, care este activ jos și poate fi încărcat cu o
adresă de pe intrările directe (D) pe frontul pozitiv al semnalului de ceas (CLK) această operaţie fiind
validată de semnalul LD, care este activ jos. Această facilitate este folosită, aşa cum vom vedea mai
jos, pentru executarea ciclurilor în programe. Pentru realizarea ciclurilor se poate testa semnalul TC=0,
emis de NB atunci când conţinutul său este 0.
Numărătorul de microprogram PC este alcătuit dintr-un registru şi un circuit de incrementare. Acest
circuit poate să transfere la intrarea PC valoarea Y+1. În acest fel se pot genera adrese consecutive.
Stiva F este folosită, în principal, pentru memorarea adresei de revenire în cazul lucrului cu proceduri.
Stiva are ataşat un pointer (SP) care indică ultima locaţie scrisă.
Pointerul de stivă funcţionează ca un numărător sincron bidirecţional cu intrări separate pentru
controlul operaţiilor PUSH şi al validării stivei FE (PUSH=1 și FE=0 se introduce în stivă; PUSH=0 și
FE=0 se extrage din stivă). După introducerea în stivă se crește cu o unitate SP, pentru a pregăti stiva
să primească o nouă adresă, iar înainte de extragerea din stivă se scade valoarea SP cu o unitate.
Ieşirea Y a microsecvenţiatorului reprezintă adresa pentru memoria de microprograme. De obicei
ieşirile Y ale microsecvenţiatorului sunt de tip trei stări, acest lucru este util dacă se doreşte controlul
extern al memoriei de microprograme.
I.8.3. STRUCTURA AUTOMATULUI MICROPROGRAMAT
Pentru realizarea unui automat microprogramat, microsecvenţiatorului descris mai sus i se adaugă
următoarele elemente hardware:
 Un registru pipe-line (RPL), pentru memorarea microinstrucţiunii, care are două ieşiri: o ieşire
normală şi o ieşire TSL, care este legată la magistrala internă de adrese. Structura câmpurilor
registrului este prezentată în fig. I.21. Partea AS este de lăţimea adresei memoriei de
microprograme şi se leagă la magistrala internă de adrese a automatului. Partea Sel Next ADD
conţine adresa pentru o memorie PROM şi pentru un lanţ de două multiplexoare MUX IN şi
MUX N (P=0 selectează ieşirea lui MUX N, iar P=1 selectează ieşirea negată). Partea OUT a
registrului reprezintă chiar ieşirile automatului. Încărcarea registrului se face pe frontul crescător
al semnalului CLK, iar validarea ieşirilor sale spre magistrala internă de adrese se face cu
semnalul OE, care este activ jos.
AS Sel Next ADD OUT
A_CMS A_MUX

A3 A2 A1 X P I2 I1 I0

Fig. I.21. Câmpurile din registrul pipe-line


 O memorie ROM-CMS, care decodifică o parte din câmpul Sel. Next ADD, care reprezintă de
fapt unitatea de comandă proprie, ea generând la ieşiri semnalele de comandă pentru automatul
microprogramat. In afara adresei A0 celelalte adrese ale acesteia provin dintr-un câmp al
registrului pipe-line. Adresa A0 provine de la un lanţ de multiplexoare MUX IN şi MUX N, şi
poate fi o intrare sau o intrare negată a automatului. Selectarea intrării, care va reprezenta adresa
A0 depinde tot de ceea ce este scris în registrul pipe-line. Astfel, la fiecare tact se poate selecta

32
AUTOMATE PROGRAMABILE vol. I

din ROM CMS unul din două cuvinte (la adresa pară sau impară), deci două comenzi diferite
spre restul structurii după cum intrarea în automat selectată este 0 sau 1.
Alegând corespunzător conţinutul memoriei ROM-CMS se poate realiza un automat microprogramat
de performanţă mare, care permite implementarea unui set complet de instrucţiuni de adresare. Setul
poate cuprinde instrucţiuni de salt condiţionat si necondiţionat, instrucţiuni cu bucle şi subrutine,
oferind o mare flexibilitate în realizarea automatizărilor secvenţiale. Automatul este prezentat în figura
I.22.
Structura este o structură sincronă de tip pipe-line. O asemenea structură suprapune execuţia
microinstrucţiunii curente cu extragerea din memoria de microprograme a instrucţiunii următoare.
Elementul cheie al acestei structuri este registrul pipe-line (RPL) plasat la ieşirea memoriei de micro-
programe.

BUS INTERN DE ADRESE

S0
TC 0 TC D
0
S1
1 1 MICROSECVENȚIATOR

2 LD
2
INTRĂRI

3 EN Y
MUX-I

3
ROM-CMS
4 CLK
PUSH
4
5
MEMORIE
FE DE
6 5
MICROPROGRAME
7 6 OE
I0I1I2 A0 A3-A1

RPL

P MUX-N

IEȘIRI

Fig. I.22. O structură posibilă de automat microprogramat


S-a folosit, pentru intrări un multiplexor cu 8 canale. Unul este folosit pentru semnalul TC, deci
automatul are 7 intrări (I1-I7). În ceea ce priveşte numărul ieşirilor el depinde de memoria utilizată.
Vom presupune, în continuare că automatul are 8 ieşiri binare (Q0-Q7).
Structura funcţionează în felul următor:
 La frontul pozitiv al semnalului de CLK, microinstrucţiunea adresată de microsecvenţiator este
citită din memoria de microprograme şi încărcată în registrul RPL.

33
AUTOMATE PROGRAMABILE vol. I

 Conţinutul microinstrucţiunii este decodificat şi utilizat ca informaţie de control.


 Informaţia de control stimulează resursele hardware corespunzătoare efectuând operaţiile
primitive în automat.
 Microsecvenţiatorul utilizează informaţia din câmpul de control al adresei pentru a genera adresa
microinstrucţiunii următoare.
Prin repetarea acestui proces se va executa secvenţă de microinstrucţiuni, deci microprogramul, care
asigură automatizarea propusă.
Pentru ca o astfel de structură să poată să fie activă este necesar ca producătorul să încarce conţinutul
memoriei ROM-CMS, iar apoi să pună la dispoziţia utilizatorilor lista de instrucţiuni recunoscute de
automat.
I.8.4. CONȚINUT POSIBIL AL MEMORIEI ROM_CMS
Instrucţiunile automatului se împart, din punct de vedere al memoriei ROM-CMS, în două mari
categorii: instrucţiuni necondiţionate şi instrucţiuni condiţionate. Fiecare instrucţiune este generată
înscriindu-se la două adrese consecutive din memorie (pară şi impară) un cuvânt. Dacă instrucţiunea
este necondiţionată, atunci se înscrie la ambele adrese acelaşi cuvânt, astfel că, indiferent ce semnal
vine pe lanţul de multiplexoare, să se genereze, la ieşire acelaşi cuvânt de comandă pentru
microsecvenţiator. Dacă instrucţiunea este condiţionată, atunci se înscriu cuvinte diferite la cele două
adrese: la adresă pară (bitul A0 este 0) se înscrie comanda care trebuie generată dacă condiţia nu este
îndeplinită, iar la adresa impară (bitul A0 este 1) se înscrie comanda,care trebuie generată dacă condiţia
este îndeplinită.
Vom comenta modul de înscriere în memorie a unor date, astfel încât să se execute instrucţiuni
necondiţionate şi condiţionate. Ordinea de înscriere în memorie a cuvintelor de comandă pentru diferite
instrucţiuni este indiferentă, dar odată stabilită de fabricant ea este impusă utilizatorului. Ultima ieșire a
memoriei ROM-CMS nu este utilizată.
Instrucţiunea 1, CONT (CONTinue). Permite execuţia secvenţială a programului. Poate fi
considerată ca o instrucţiune neoperantă. Conţinutul celor două adrese consecutive este prezentat în fig.
I.23.

ADRESĂ 3 F
ROM-CMS S0 S1 LD EN PUSH FE OE
1110 0 0 1 1 X 1 1 1
1111 0 0 1 1 X 1 1 1
3 F

Fig. I.23. Conținutul memoriei ROM-CMS pentru executarea instrucțiunii CONT


Instrucţiunea 2, JP (JumP). Este o instrucţiune de salt necondiţionat în care sursa adresei următoare
este registrul RPL. Deoarece este o instrucţiune de salt necondiţionat ea trebuie să genereze aceleaşi
comenzi de secvenţiere atât la adresă pară cât şi la adresă impară: selectarea intrărilor directe pentru a
genera adresa următoare deoarece adresa de salt se găseşte în RPL, validarea ieşirii pe magistrala de
date a registrului RPL, invalidarea stivei şi invalidarea numărătorului de bucle. Ţinând seama de cele
de mai sus conţinutul celor două adrese consecutive este prezentat în fig. I.24.
34
AUTOMATE PROGRAMABILE vol. I

ADRESĂ F D
ROM-CMS S0 S1 LD EN PUSH FE OE
1110 1 1 1 1 X 1 0 1
1111 1 1 1 1 X 1 0 1
F D

Fig. I.24. Conținutul memoriei ROM-CMS pentru executarea instrucțiunii JP


Instrucţiunea 3, CALL (CALL Subroutine). Este o instrucţiune de apel necondiționat a unei subrutine
a cărei adresă se găseşte în registrul RPL. Deoarece este o instrucţiune de salt necondiţionat ea trebuie
să genereze aceleaşi comenzi de secvenţiere atât la adresă pară cât şi la adresă impară: selectarea
intrărilor directe pentru a genera adresa următoare deoarece adresa de salt se găseşte în RPL, validarea
ieşirii pe magistrala de date a registrului RPL, se salvează PC în stivă pentru pregătirea revenirii din
subrutină și invalidarea numărătorului de bucle.
Conţinutul celor două adrese este prezentat în fig. I.25.

ADRESĂ F 9
ROM-CMS S0 S1 LD EN PUSH FE OE
1110 1 1 1 1 1 0 0 1
1111 1 1 1 1 1 0 0 1
F 9

Fig. I.25. Conținutul memoriei ROM-CMS pentru executarea instrucțiunii CALL


Instrucţiunea 4, RET (RETurn). Este o instrucţiune de revenire din subrutine. Reluarea programului
se face de la instrucţiunea următoare apelului. Sursa adresei de revenire este stiva.
Conţinutul celor două adrese este prezentat în fig. I.26

ADRESĂ B 3
ROM-CMS S0 S1 LD EN PUSH FE OE
1110 1 0 1 1 0 0 1 1
1111 0 0 1 1 0 0 1 1
B 3
.
Fig. I.26. Conținutul memoriei ROM-CMS pentru executarea instrucțiunii RET
Instrucţiunea 5, CJP (Conditional Jump). Este o instrucţiune de salt condiţionat a cărei adresă se
găseşte în registrul RPL, dacă condiţia testată este îndeplinită, iar în caz contrar sursa adresei următoare
este dată de PC. De asemenea, trebuie să se realizeze saltul la adresa din registrul RPL, deci se va
emite semnalul de validare al ieşirii registrului pe magistrala de adrese şi se vor selecta, pentru
generarea adresei următoare, intrările directe. La adresa pară se va selecta, ca sursă a adresei următoare,
PC. Conţinutul celor două adrese este prezentat în fig. I.27.

35
AUTOMATE PROGRAMABILE vol. I

ADRESĂ 3 F
ROM-CMS S0 S1 LD EN PUSH FE OE
1110 0 0 1 1 X 1 1 1
1111 1 1 1 1 X 1 0 1
F D
Fig. I.27. Conținutul memoriei ROM-CMS pentru executarea instrucțiunii CJS
Instrucţiunea 6, LDNB (LoaD NB and Continue). Este o instrucţiune de încărcare necondiţionată a
NB cu o adresă din registrul pipe-line. Conţinutul celor două adrese este prezentat în fig. I.28.
Instrucțiunea trebuie plasată înaintea unei bucle FOR, care va fi executată de n+1 ori, daca se încarcă n
în NB.

ADRESĂ 1 D
ROM-CMS S0 S1 LD EN PUSH FE OE
1110 0 0 0 1 X 1 0 1
1111 0 0 1 1 X 1 0 1
1 D
. .
Fig. I.28. Conținutul memoriei ROM-CMS pentru executarea instrucțiunii LDNB
Instrucţiunea 7, FOR ( Început de bucla FOR). Are ca efect introducerea în stivă a adresei următoare,
care se găseşte în PC. Este o instrucţiune necondiţionată, prima dintr-o buclă de program. Adresa
încărcată în stivă este chiar adresa primei instrucţiuni a ciclului. Dacă se înscrie în NB un număr n şi la
sfârşitul ciclului se execută un salt condiţionat, condiţia de test fiind semnalul TC emis de NB, la
conţinut 0, atunci ciclul se va executa de n+1 ori.
Ultima instrucţiune a ciclului, cea care realizează testarea trebuie să realizeze şi scăderea cu o unitate a
conţinutului NB (vezi instrucţiunea LOOP şi NEXT). Conţinutul celor două adrese este prezentat în fig.
I.29.

ADRESĂ 3 B
ROM-CMS S0 S1 LD EN PUSH FE OE
1110 0 0 1 1 1 0 1 1
1111 0 0 1 1 1 0 1 1
3 B
Fig. I.29. Conținutul memoriei ROM-CMS pentru executarea instrucțiunii FOR

Instrucţiunea 8, NEXT (Sfârşit de buclă cu adresa de salt din stivă). Este o instrucţiune de salt
condiţionat a cărui mecanism este următorul: cât timp NB nu emite semnalul TC=1 (conţinut 0), adresa
următoare va fi luată din stivă, iar în caz contrar, din PC. Condiţia testată este deci semnalul emis de
numărătorul de bucle, iar la test nereuşit trebuie decrementat conţinutul NB. Operaţia de citire din stivă
nu este însoţită de decrementarea pointerului de stivă, ceea ce permite reluarea buclei de la aceeaşi
36
AUTOMATE PROGRAMABILE vol. I

adresă. Pentru ca aceasta să fie corect executată trebuie ca, în prealabil, registrul NB şi stiva să fie
încărcate cu numărul de buclări, respectiv, adresa de început a buclei. Conţinutul celor două adrese este
prezentat în fig. I.30.

ADRESĂ 6 F
ROM-CMS S0 S1 LD EN PUSH FE OE
1110 0 1 1 0 1 1 1 1
1111 0 0 1 1 0 0 1 1
3 F

Fig. I.30. Conținutul memoriei ROM-CMS pentru executarea instrucțiunii NEXT


Un rezumat al instrucțiunilor acceptate de automatul microprogramat este prezentat în fig.I.31.
Nr. Mnemonic A3-A1 Funcție Sursa salt
Continuă cu instrucțiunea
1 CONT 0 µPC
urmatoare
2 JP 1 Salt necondiționat RPL

3 CALL 2 Apel necondiționat de rutină RPL

4 RET 3 Revenire necondiționată din rutină Stiva

5 CJP 4 Salt conditionat RPL (DA) sau µPC (NU)

6 LDNB 5 Încarcă numărătorul de bucle µPC

7 FOR 6 Început de buclă FOR µPC

8 NEXT 7 Sfârșit de buclă FOR Stiva (NB≠0) sau µPC (NB=0)

Fig. I.31. Instrucțiuni recunoscute de automatul microprogramat


În fig. I.32 este prezentată diagrama de semnale pentru cazul în care automatul microprogramat execută
trei instrucţiuni CONT. Prezentarea unei astfel de diagrame este utilă pentru urmărirea întârzierilor,
care apar de la frontul pozitiv al impulsului de ceas, până la apariţia noii microinstrucţiuni la ieşirea
memoriei de microprograme. Se poate deduce, pentru valori date ale timpilor de propagare, care este
durata minimă a perioadei TCLK.

TCLK
I(k) I(k+1)

t1
Y
k k+1 k+2

MR
taMR
I(k) I(k+1) I(k+2)

Fig. I.32. Diagramă de semnale la execuţia a trei instrucţiuni CONT

37
AUTOMATE PROGRAMABILE vol. I

Diagrama începe în momentul în care registrul RPL este încărcat cu microinstrucţiunea de la adresa k.
Această încărcare se realizează, în diagramă, pe frontul crescător al impulsului de ceas. După un timp
t1, necesar propagării prin memoria ROM-CMS şi multiplexorul din microsecvenţiator, se va selecta
adresa următoare k+1, pentru memoria de microprograme, deoarece instrucţiunea este o instrucţiune
CONT.
t1  t aROM CMS  t MUX
După timpul de acces la memoria de microprogramare (taMP), la ieşirile acesteia va apare noua
microinstrucţiune, care este I(k+1). Stabilizarea ieşirilor memoriei de microprograme trebuie să aibă
loc înainte de apariţia frontului pozitiv al impulsului de ceas. Încărcarea PC se face pe frontul
crescător al impulsului de ceas. Rezultă că perioada minimă a impulsului de
ceas trebuie să fie:
TCLK  t1  t aMP
Ea este dependentă de calitatea componentelor utilizate şi arată cât se poate urca frecvenţa ceasului
pentru ca structura să funcţioneze determinist.
I.8.5. SIMULATORUL DE AUTOMAT MICROPROGRAMAT
Pentru înţelegerea modului de funcţionare al automatelor microprogramate, precum şi pentru
vizualizarea semnalelor, atunci când acesta rulează, s-a realizat un program de simulare numit
AUTOMAT. Acesta are o interfață asemănătoare cu cea din fig. I.22.
Programul este un proces, care permite editarea interactivă a programelor precum şi vizualizarea, în
interiorul unor controale, a semnalelor din interiorul automatului microprogramat, de la intrările şi
ieşirile sale precum şi a evoluţiei acestor semnale atunci când automatul execută un program. Acesta
poate fi rulat în regim pas cu pas sau în regim continuu. În ultimul caz, o instrucţiune se execută la
fiecare tic al timerului.
Conţinutul memoriilor este afişat în controale de tip LIST BOX (Fig. I.33 ). În acestea sunt vizibile:
 Conţinutul memoriei de microprograme, care este afişat într-un LIST BOX intitulat MEMORIE
AUTOMAT, o linie corespunzând codurilor numerice în format HEX ale unei instrucţiuni.
Numărul total de locaţii pentru memoria de microprograme este de 64H. In timpul rulării unui
program instrucţiunea curentă este indicată printr-un dreptunghi. Introducerea unei instrucţiuni se
face prin selectarea unei linii şi apăsarea butonului MODIFICA MMP. Aceasta este încărcată
într-un control separat, unde se pot efectua modificările dorite în câmpurile instrucţiunii conform
celor descrise mai sus. Apoi se va apăsa butonul OK şi instrucţiunea este încărcată în memorie în
locaţia aleasă. Totodată este lansat şi un dezasamblor, care va ataşa rezultatul dezasamblării sub
forma unor mnemonice sugestive, în continuarea instrucţiunii. Trebuie atenție în modul de
completare al casetei, respectându-se câmpurile respective. Altfel pot avea loc erori.

38
AUTOMATE PROGRAMABILE vol. I

Fig. I.33. Fereastra de simulare a automatului


 Conţinutul memoriei ROM-CMS, care este afişat într-un LIST BOX numit ROM-CMS. O linie în
format HEX este o comandă pentru restul structurii. În această fereastră nu se pot efectua
modificări ale conţinutului memoriei, considerându-se că automatul a fost înzestrat cu un set de
instrucţiuni nemodificabil.
 Conţinutul stivei microsecvenţiatorului, în format HEX este afişat într-un LIST BOX numit
STIVA. Stiva are patru locaţii. Se pot realiza deci, patru apeluri imbricate de proceduri.
Introducerea unei valori în stivă este realizată în mod automat la apelul unei proceduri, la locaţia
indicată de SP, după care acesta este incrementat, pentru a pregăti o nouă înscriere. Scoaterea
din stivă este făcută în mod automat la executarea unei instrucţiuni de revenire din procedură
după care SP este decrementat. Atunci când este adresată stiva locaţia adresată şi valoarea sunt
puse în evidenţă printr-un dreptunghi. Nu se pot înscrie valori în stivă de către utilizatorul
programului şi nici nu se pot aduce modificări la SP.
Fereastra de simulare a automatului are posibilitatea de a selecta funcţii ale simulatorului cu ajutorul
unor butoane COMENZI. Acestea sunt următoarele:
 SALVARE PROGRAM, care permite salvarea unui program scris de utilizator sub forma unui
fişier cu extensia map, numele acestuia putând fi ales de utilizator. Locul și denumirea
programului se stabilesc într-o fereastra pop-up, care se deschide la apăsarea butonului.

39
AUTOMATE PROGRAMABILE vol. I

 ÎNCĂRCARE PROGRAM, care permite încărcarea unui program, salvat anterior, începând de la
adresa 0 a memoriei de microprograme. Alegerea programului se face dintr-o fereastră pop-up
care se deschide la apăsarea butonului.
 START PROGRAM, care permite rularea programului de la adresa Y. Rularea programului se
face fie instrucțiune cu instrucțiune, fie continuu, în funcție de poziția unui comutator care poate
fi poziționat pe funcționare continuă sau pe funcționare pas cu pas. La execuția pas cu pas, după
terminarea execuţiei unei instrucțiuni se trece într-o stare de aşteptare în care se pot analiza
semnalele din automat, care sunt afișate în casete numerice poziționate în locurile
corespunzătoare. Reluarea funcționării, în acest caz se face la o nouă apăsare a butonului. La
execuția continuă intervalul între două microinstrucţiuni este stabilit prin programarea unui
timer. În cazul programului timerul este setat la 1 s.
 STOP PROGRAM, care permite oprirea programului.
Mai există și un buton numit RESET, care iniţializează adresa Y și SP permiţând rularea programului
de la adresa 0.
Cei interesați să lucreze cu simulatorul de automat microprogramat pot să mă contacteze prin e-mail la
adresa ioan.margineanu@yagoo.com pentru a primi programul de simulare.
Se poate imagina o extindere a programului. Această extindere ar putea pune în legătură automatul cu
un program de simulare a unui proces cu intrări și ieșiri booleene. În fereastra de simulare a
automatului se va prevedea un buton cu două poziţii, care permite funcţionarea programului
independent sau în legătură cu programul numit PROCES. Rularea independentă este recomandată
atunci când se urmăreşte înţelegerea modului de funcţionare a automatului, iar rularea în legătură cu
procesul este utilă pentru înţelegerea modului de cuplare la proces şi a interacţiunii dintre cele două
sisteme.
Cele două programe comunică între ele printr-o legătură de tip client-server, cu protocol TCP/IP. ele se
pot găsi pe acelaşi calculator sau pe calculatoare diferite legate într-o reţea Ethernet. Serverul este
programul care simulează automatul, iar clientul este programul care simulează procesul.
Pentru a realiza legătura între ele trebuie mai întâi trecut butonul din fereastra principală pe poziţia
Legat la proces. Apoi se va înregistra serverul prin apăsarea unui buton. La apăsarea acestuia se va
deschide o fereastră în care utilizatorul trebuie să precizeze numărul portului pe care se vor conecta
cele două programe. Din acest moment orice modificare a ieşirilor automatului va fi transmisă de către
server sub forma unui octet. În programul PROCES va exista un buton de conectare la server și se vor
preciza, la apăsarea acestuia, numele calculatorului pe care rulează serverul și numărul portului de
legătură. Acesta va deveni verde numai după ce clientul, care este programul Proces, se va conecta la
server.
I.8.6. EXEMPLE DE PROGRAME
Exemplul 1. Scrierea unei bucle
Să se scrie un program care să repete comenzile de la adresele 2, 3, 4 şi 5 de 4 ori, apoi să execute o
comandă nouă şi apoi să revină la repetarea comenzilor de la adresele 1, 2 şi 3.
Soluţie: Mediul de programare al automatului are un interpretor aşa că programul va fi dat atât în
hexazecimal cât şi cu mnemonice. Lungimea celor trei zone ale registrului RPL este de 1 octet.

40
AUTOMATE PROGRAMABILE vol. I

0000: 03 A0 00 LDNB
0001: 00 40 00 FOR
0002: 00 00 01 CONT
0003: 00 00 02 CONT
0004: 00 00 04 CONT
0005: 00 E0 08 NEXT
0006: 00 00 10 CONT
0007: 00 20 20 JP 00

Exemplul 2. Scrierea unui program cu apel imbricat de proceduri


Să se scrie un program care să apeleze, la adresa 1, o rutina de la adresa 5, care la rândul ei să apeleze o
rutină de la adresa 8. Ieșirile vor fi astfel alese încât să se aprindă pe rând intrările de la 0 la 7.
Soluţie: Se va utiliza instrucţiunile CALL și RET.
0000: 00 00 01 CONT
0001: 05 40 02 CALL 05
0002: 00 00 08 CONT
0003: 00 20 00 JP 00
0004: 00 00 00 CONT
0005: 00 00 04 CONT
0006: 08 40 08 CALL 08
0007: 00 60 40 RET
0008: 00 00 10 CONT
0009: 00 60 20 RET
Exemplul 3. Scrierea unui program cu folosirea instrucțiunilor de salt condiționat, CJP și necondiționat,
JP.
Se va vedea efectul pe care-l are schimbarea în timpul rulării programului a intrării I1.
0000: 00 00 01 CONT
0001: 05 00 02 CONT
0002: 00 00 04 CONT
0003: 05 89 08 CJP NOT I1 05
0004: 06 20 10 JP 06
0005: 00 00 20 CONT
0006: 00 00 40 CONT
0007: 00 20 80 JP 00
I.8.7. STUDIU DE CAZ
Procesul tehnologic într-o linie de acoperire galvanică (fig. I.34) cuprinde cinci posturi, trei (2, 3, 4)
pentru operaţiile de tratare propriu-zisă şi două pentru încărcarea (1), respectiv pentru descărcarea
pieselor (5). Manipularea este realizată printr-un conveier, care asigură următoarele mişcări:
 Deplasarea în două sensuri pe calea de rulare: mişcările O+ şi O-.
 Ridicarea, respectiv coborârea braţului de prindere: mişcările V+şi V-.
Sistemul de transport este astfel conceput încât prin coborârea stativului cu piese într-un post se
eliberează stativul din braţ. Aceasta impune deplasarea conveierului cu braţul ridicat, când transportă

41
AUTOMATE PROGRAMABILE vol. I

piese şi cu braţul coborât atunci când este descărcat. Poziţiile conveierului pe calea de rulare sunt
delimitate pe calea de rulare prin limitatoarele de poziţie C1, C2, C3, C4, C5, iar poziţiile braţ ridicat şi
braţ coborât sunt delimitate prin limitatoarele de cap de cursă S, pentru cap ridicat şi J, pentru cap
coborât.
Ciclul de funcţionare trebuie să asigure deplasarea succesivă a pieselor în dreptul fiecărui post de
tratare, lăsarea acestora acolo un timp care va fi reglat prin reglarea vitezei de deplasare a conveierului.
Iniţial, în posturile de lucru se găsesc stative goale, iar în postul I un stativ care va fi încărcat. Poziţia
iniţială a conveierului va fi în postul I cu braţul jos (numerotat cu 1). Acesta se va deplasa spre dreapta
cu braţul coborât până în poziţia C4 (numerotată cu 2), unde, prin ridicarea braţului se va prelua
stativul aflat aici şi îl va deplasa în postul C5 (pozițiile 3, 4 și apoi 5), unde îl va depune în scopul
descărcării. Din această poziţie, cu braţul coborât se va deplasa în poziţia C3 (numerotată cu 6), va
prelua stativul şi îl va transporta în postul eliberat anterior de la C4. (pozițiile 7, 8 și apoi 9),
În fazele următoare se va asigura transferul stativelor între posturile C2 şi C3, C1 şi C2. In ultima parte a
ciclului, conveierul se va deplasa la poziţia C5, de unde va aduce stativul descărcat acolo în poziţia C1,
pentru reîncărcare, revenind în poziţia iniţială.
Să se scrie programul pentru automatul microprogramat, care realizează această automatizare.
C1 C2 C3 C4 C5

O- O+

V+

S
V-
I II III IV V
20 19
15 11 12 7 8 3
16 4

10 13 6 9
14 5
J
1 17 2 18

Fig. I.34. Instalaţia de manipulare şi ciclul de funcţionare al procesului de acoperire


Soluţie:
Din analiza sistemului de automatizat rezultă că acesta este definit de 7 variabile de intrare şi patru
variabile de ieşire, prezentate în fig. I.35. Presupunând legarea variabilelor de intrare şi ieşire ca în fig.
I.36, o variantă de program, care să realizeze automatizarea cerută este dată mai jos. Vom folosi o
instrucțiune CJP care atât timp cât condiția nu este îndeplinită va executa un salt pe ea însăși.

42
AUTOMATE PROGRAMABILE vol. I

C1 C 2 C3 C4 C 5 S J

0 1 2 3 4 5 6 7 L+

0 1 2 3 4 5 6 7 M

O+ O- V+ V-

Fig. I.35. Legarea elementelor de execuţie şi traductoarelor la automat

0000: 00 8C 01 CJP NOT C4 00 // Deplasare spre dreapta până la poz. 2


0001: 01 8E 10 CJP NOT S 01 // Ridicare până sus până la poz. 3
0002: 02 8D 01 CJP NOT C5 02 // Deplasare spre dreapta până la poz. 4
0003: 03 8F 40 CJP NOT J 03 // Coborâre până la poz. 5
0004: 04 8B 04 CJP NOT C3 04 // Deplasare spre stânga până la poz. 6
0005: 05 8E 10 CJP NOT S 05 // Ridicare până sus până la poz. 7
0006: 06 8C 01 CJP NOT C4 06 // Deplasare spre dreapta până la poz. 8
0007: 07 8F 40 CJP NOT J 07 // Coborâre până la poz. 9
0008: 08 8A 04 CJP NOT C2 08 // Deplasare spre stânga până la poz. 10
0009: 09 8E 10 CJP NOT S 09 // Ridicare până sus până la poz. 11
000A: 0A 8B 01 CJP NOT C3 0A // Deplasare spre dreapta până la poz. 12
000B: 0B 8F 40 CJP NOT J 0B // Coborâre până la poz. 13
000C: 0C 89 04 CJP NOT C1 0C // Deplasare spre stânga până la poz. 14
000D: 0D 8E 10 CJP NOT S 0D // Ridicare până sus până la poz. 15
000E: 0E 8A 01 CJP NOT C2 0E // Deplasare spre dreapta până la poz. 16
000F: 0F 8F 40 CJP NOT J 0F // Coborâre până la poz. 17
0010: 10 8D 01 CJP NOT C5 10 // Deplasare spre dreapta până la poz. 18
0011: 11 8E 10 CJP NOT S 11 // Ridicare până sus până la poz. 19
0012: 12 89 04 CJP NOT C1 12 // Deplasare spre stânga până la poz. 20
0013: 13 8F 40 CJP NOT J 13 // Coborâre până la poz. 1
0014: 00 00 00 JP 00 // Reluarea procesului

Fig. I.36. Programul automatizării

43
AUTOMATE PROGRAMABILE vol. I

Cap. II. LIMBAJE DE PROGRAMARE PENTRU AP


II.1. INTRODUCERE
Înainte de a standardiza programarea PLC, adică pe la sfârșitul anilor 70, producătorii s-au concentrat
în principal pe programarea aplicațiilor cu automate programabile. Pentru programare s-a încercat să se
folosească experiența anterioară a inginerilor care lucrau cu scheme cu contacte și relee sau cu circuite
logice. Aceste programe au fost, de obicei, orientate spre starea de atunci a tehnologiei, luând în
considerare sistemele necuplate la rețele a automatelor, cu care se realizează în principal operații logice
pe semnale binare. Au existat extinderi ale sistemului de programare create în anii 1980, de exemplu,
interconectarea modulelor inteligente, procesarea semnalelor analogice, automate programabile în
rețea, etc.
Din 1992, există un standard internațional pentru limbajele de programare a automatelor. Inițial la
standardul (DIN 19239) numărul de blocuri era alcătuit din: OB (Organization Block), SB (Sequence
Block), PB (Program Block), FB (Function Block) și DB (Data Block).
Noul standard IEC 61131 numește blocurile din care este alcătui un program POU (Program
Organization Block) și reduce tipurile de blocuri la trei tipuri de blocuri unificate: PROGRAM
(Programul principal incluzând atribuirea de I/O și căile de acces), FUNCTION BLOCK (care au
propriile date şi deci pot memora informaţii de stare sau cum mai sunt numite de instanțiere). Funcţiile
bloc au câteva restricţii, care le fac reutilizabile într-un program: nu este permisă declararea variabilelor
cu adrese legate de hardware şi variabilele externe pot fi transmise numai prin intermediul interfeţei;
acesta este cel mai utilizat tip de POU) și FUNCTION (Funcţii, care realizează calcule programate în
oricare din limbajele de programare şi care acceptă mai multe intrări şi au o singură ieşire). POU
corespund OB, PB, SB și FB din standardul anterior.
Standard internaţional IEC 61131-3 a fost lansat în 1993 şi, de la adoptarea acesteia, a devenit larg
acceptat de către utilizatori şi de către comunitate internaţională a producătorilor. Astăzi, el este, ca
atare, standard recunoscut la nivel mondial pentru programarea şi configurarea dispozitivelor de control
industrial. Există, totuşi, mai multe motive ca standardul să fie revizuit: În primul rând, din anul 1993 o
mare parte din experienţa practică a fost dobândită și au fost detectate un număr de incoerenţe şi con-
tradicţii. Pentru a remedia această situaţie, mulţi utilizatori au propus îmbunătăţiri. Acestea pot fi găsite
în anexe ca făcând parte din standard.
În plus, cerinţele privind sistemele de control industriale şi mediile de programare ale acestora s-au
modificat considerabil de-a lungul anilor, elementul cel mai important este de migraţia de la mari
sisteme de control centralizat spre de sistemele distribuite.
Acesta este motivul pentru care standardul IEC 61131-3 este și acum în curs de revizuire. Revizuirea
constă în corectarea erorilor, structurarea coerentă a standardului şi armonizarea acestuia cu standardul
IEC 61499, care se referă la sistemele distribuite.
În cursul acestei operaţii, obiectivul major este acela de a menţine compatibilitatea în sus pentru toate
amendamentele. Aceasta înseamnă, un program de control, care este conform cu standardul anterior,
este de aşteptat să fie conform cu noul standard fără conflicte.
IEC 61131-3 specifică sintaxa și semantica unui sistem unificat de limbaje de programare pentru
controlere programabile (PC). Această suită este formată din două limbi textuale, lista de instrucțiuni
(IL sau STL), care are o structură asemănătoare cu limbajele de asamblare ale microprocesoarelor și
Text structurat (ST), care folosește instrucțiuni de atribuire, de selecție și de control având o structură
44
AUTOMATE PROGRAMABILE vol. I

apropiată de limbajul de nivel înalt PASCAL și două limbi grafice, Ladder Diagram (LD), care permite
programarea aplicațiilor într-o manieră asemănătore cu proiectarea unui circuit cu contacte și relee,
operând numai cu variabile booleene și Function Block Diagram (FBD), care este o extensie a
limbajului LD, conținând blocuri complexe și putând opera și cu alte tipuri de variabile decât cele
booleene. Ediție a treia, publicată în 2013, anulează și înlocuiește ediția a doua, publicată în 2003 și
constituie o revizie tehnică. Acesta include următoarele modificări tehnice semnificative: Este o
extensie compatibilă celei de a doua ediție, iar principalele extensii sunt noi tipuri de date și funcții de
conversie, referințe, spații de nume și caracteristicile orientate pe obiecte ale claselor și blocuri de
funcții.
Cele mai multe medii de programare permit vizualizarea programelor scrise în LAD sau FBD și în STL
prin selectarea limbajului din opțiunile care apar în mediu la View (uneori mediul introduce câteva
instrucțiuni NOP). Se spune că limbajele sunt reversibile. Invers, adică din STL la LAD sau FBD nu
este permisă dacă se apelează blocuri de tip TIMER sau CONTOR.
Normele IEC 61131-1 definesc SFC (Sequential Function Chart) ca fiind un mijloc destinat pentru
structurarea şi organizarea unui program. Unele medii de programare oferă compilatoare grafice pentru
realizarea programelor pentru AP pe baza SFC. Acesta are la bază reprezentarea sub formă de reţea
GRAFCET a acţiunilor secvenţiale. Chiar dacă nu este disponibil un compilator de SFC este
recomandat să se realizeze diagrama pentru orice program, care cuprinde acţiuni secvenţiale pornind de
la regulile GRAFCET. Această reprezentare poartă numele de graf de specificare. Utilizarea grafului de
specificare este utilă pentru prezentarea structurată a acțiunilor secvențiale cu atât mai mult cu cât se
cunosc metode de transformare a unui graf de specificare, așa cum vom arăta mai jos, în orice limbaj.
Orice POU este alcătuit din două părţi: partea de declaraţii şi partea de cod.
În partea de declaraţii a variabilelor se definesc toate variabilele utilizate într-un POU. Trebuie făcută
distincţia între variabilele vizibile pentru exteriorul POU (variabile de interfaţă) şi variabilele locale
(VAR). Variabilele de interfaţă pot fi variabile de intrare (VAR_INPUT) sau variabile de ieşire (VAR_OUTPUT).
Mai există şi alte variabile VAR_GLOBAL, care sunt comune tuturor POU, la SIEMENS aceste variabile
fac parte dintr-o structură numita Symbol Table sau VAR_EXTERNAL, care sunt din alte POU. Partea de
declaraţii poate avea diferite forme. De obicei ea este realizată în mod text sau tabelar.
Partea de cod conţine instrucţiuni destinate automatului în oricare dintre limbajele de mai sus.
Tipurile de date elementare definite de normele IEC 61131-3 sunt: Booleene, reprezentate pe un bit şi
notate cu BOOL, octeţi (8 biţi), cuvinte (16 biţi) şi cuvinte duble (32 biţi), notate cu BYTE, WORD şi
respectiv DWORD, Întregi, notate cu INT, Reale (32 biţi), notate REAL, Şiruri de caractere, notate cu STRING
și Variabile de tip timp şi dată, notate TIME şi respectiv DATE.
Este permisă utilizarea unor date de tip tablou (ARRAY) şi structură (STRUCT), precum şi date derivate din
acestea.
Identificarea datelor se face utilizând atât adrese absolute cât şi simbolice.
Adresarea absolută utilizează denumirea zonei de memorie pentru identificarea adresei. Denumirile
zonelor de memorie pot cuprinde două prefixe. Primul prefix poate fi: %I, pentru intrări, %Q, pentru
ieşiri și %M, pentru variabile interne. Există și alte variante prefixată specifice pentru diferiți
producători.

45
AUTOMATE PROGRAMABILE vol. I

Al doilea prefix poate fi: x.y, pentru variabile de tip boolean. Valoarea x reprezintă octetul, iar
valoarea y reprezintă bitul, B, pentru octet (Byte), W, pentru cuvânt (Word) și D, pentru dublu cuvânt
(Double word).
Exemple: %Ix.y, %IBx, %IWx, %IDx, reprezintă o variabilă de intrare booleană reprezentând bitul y
din octetul x, respectiv octetul x, cuvântul x sau dublul cuvânt x.
Adresarea indirectă sau simbolică utilizează identificatorii, care sunt şiruri de caractere alfanumerice,
începând cu o literă, pentru identificarea adresei. În aceste cazuri este nevoie de editarea zone de
declaraţii pentru variabile, care poate fi şi o tabelă de simboluri, pentru a face legătura dintre adresa
absolută şi cea indirectă.
II.2. LIMBAJUL IL (Instruction List) SAU STL (StaTement List)
II.2.1. INTRODUCERE
Instruction List (IL) sau StaTement List (STL) este un limbaj de nivel jos, definit ca parte a normei IEC
61131. El este utilizat pentru realizarea aplicaţiilor mici, pentru optimizarea codului anumitor părţi ale
unor aplicaţii și uneori pentru ascunderea unor algoritmi importanți dintr-un program. De aceea nu vom
insista asupra lui. Este destinat, în special programatorilor care au experiență în utilizarea limbajelor de
asamblare. IL se bazează pe AWL (AnWeisungsListe) elaborat de firma SIEMENS, care utilizează
modelul cu un singur acumulator. Limbajul este nivelul de bază al limbajelor de programare pentru AP
- toate celelalte limbaje de programare putând fi convertite la programe IL. Conversia inversă, adică
din alte limbaje de programare pentru AP în IL, nu este întotdeauna posibilă. Un program scris în
limbaj de IL este o secvenţă de mnemonice (nume simbolice) care va fi convertită în cod executabil
prin operaţii de asamblare şi editare de legături.
Programele în limbajul IL utilizează stiva pentru întârzierea operaţiilor indicate de paranteze. Vom
prezenta în continuare caracteristicile generale ale limbajului, urmând ca scrierea unui program, pentru
un anumit tip de automat, să se facă respectând aceste reguli, împreună cu altele, prezentate de
producător în manualele de utilizare a mediilor de programare sau în meniurile de ajutor ale mediilor și
manualele de utilizare, deoarece versiunile diferiţilor producători sunt similare, dar nu identice cu
versiunea IEC 61131 a limbajului IL.
În general, un program IL sau STL este o listă de instrucţiuni de diferite tipuri, care calculează, de
obicei, termeni ai unor expresii logice. Rezultatul unei astfel de instrucţiuni este o valoare logică
(TRUE sau FALSE). Fiecare instrucţiune trebuie să înceapă pe o linie nouă şi trebuie să conţină un
operator, completat, eventual, cu un modificator şi, dacă este nevoie, pentru anumite instrucţiuni, de
unul sau mai mulţi operanzi, separaţi prin virgulă (fig. II.1). Anumite instrucţiuni au mai mulţi
operanzi.
ETICHETĂ : OPERATOR OPERAND(ZI) (* COMENTARIU*)

Fig. II.1. Sintaxa


generală a unei
OPERATOR MODIFICATOR instrucţiuni în IL
Operanzii instrucţiunilor IL sunt variabile, care sunt referinţe la o memorie fizică şi pot fi variabile
interne, intrări sau ieşiri ale automatului. La instrucţiunile cu un singur operand, celălalt operand este
implicit şi reprezintă conţinutul unui registru al procesorului numit, de obicei, acumulator sau în stivă.

46
AUTOMATE PROGRAMABILE vol. I

Operaţia, care este descrisă de operator, se execută între operand şi conţinutul acumulatorului sau
stivei, iar rezultatul este memorat tot în acumulator.
Documentarea programelor se face utilizând comentarii. Comentariile pot apărea pe aceeaşi linie cu
instrucţiunea sau pe o linie separată. Identificarea comentariilor se face prin caractere: fie sunt
precedate de (* şi succedate de *), fie se utilizează caracterele //, la început de comentariu.
Operatorii IL sunt împărții în mi multe grupe: operatori de transfer pentru variabile booleene (LD, ST,
=), care transferă datele de la memorie la acumulator (LD) și invers (ST, =), operatori de
setare/resetare (S-Set, R-Reset), care setează respectiv resetează operanzi, operatori logici (AND, OR,
XOR), care realizează operații logice între conținutul acumulatorului și operand, operatori pentru date
pe octet, cuvânt sau dublu cuvânt (MOV), care transferă date de la o sursă la destinație. Operatorul are
o literă suplimentară pentru specifica felul datei: B, pentru octet, W pentru cuvânt sau DW, pentru
dublu cuvânt. Instrucțiunea are doi operanzi: sursa și destinația, operatori aritmetici (ADD, SUB,
MUL, DIV), care realizează operații aritmetice între doi operanzi, operatori relaționali (GT, GE, EQ,
NE, LE, LT), care compară doi operanzi și setează acumulatorul în funcție de rezultatul comparației și
operatori de salt (JMP, CALL, RET), care provoacă salturi la etichete, proceduri sau revenirea din
proceduri.
Modificatorii sunt caractere folosite pentru negarea booleană a operatorului (N), întârzierea unei
operații (“(„), până la întâlnirea perechii sale („)”) sau realizarea unei operații de salt condiționat (C).
Etichetele sunt folosite pentru specificarea punctelor ţintă ale instrucţiunilor de salt. O instrucţiune
poate avea o etichetă, care este un identificator, urmat sau nu de caracterul :. O etichetă poate fi scrisă
şi pe o linie separată. În cazul unor variante ale limbajului IL eticheta este scrisă pe o linie separată sub
forma unui cuvânt cheie. Acest cuvânt este urmat de un număr, care este al unei instrucţiuni din
program. De exemplu la limbajul STL, pentru automatele SIEMENS, cuvântul cheie este LBL. Pentru
anumite medii de programare etichetele instrucţiunilor sunt generate automat.
Aşa cum am menţionat mai sus, diferiţii producători au adoptat variante ale limbajului IL, care nu
respectă în întregime standardul IEC. Sunt implementate instrucţiuni de cilare de tip FOR, de shiftare,
de manipulare a stringurilor, de lucru cu tabele, de lucru cu contoare şi timere etc. Utilizarea limbajului
în aceste cazuri este documentată în meniurile de ajutor și manualele de utilizare.
Modul de execuţie al programelor bazate pe text este similar cu cel al limbajelor de asamblare. CPU
execută fiecare instrucţiune în ordinea dictată de program de sus în jos. Se utilizează de asemenea stiva
pentru asigurarea controlului. În STL trebuie utilizate instrucţiuni speciale pentru controlul stivei.
Aceste instrucţiuni sunt OLD şi ALD, care execută operaţii de OR şi AND între componentele din capul
stivei. Pentru a ilustra modul cum se lucrează cu stiva vom prezenta un program STL pentru un
automat SIEMENS S7-214 şi vom prezenta şi conţinutul stivei în diferitele momente ale execuţiei
programului (Fig. II.2).

LD %I0.0
LD %I0.1
LD %I0.2
A %I0.3
OLD

47
AUTOMATE PROGRAMABILE vol. I

ALD
=%Q0.0

LD
LD %I0.0
%I0.0 LD %I0.0 LD %I0.1 LD %I0.2 AND %I0.3 OLD ALD
%I0.0
%I0.0 %I0.0 %I0.1 %I0.2 E E1 E2
%I0.0
%I0.0 %I0.0 %I0.1 %I0.1 %I0.0
%I0.0 %I0.0

E= I0.3 AND %I0.2 E2= E1 AND %I0.0


E1= E AND %I0.1
Fig.
II.2. Lucrul cu stiva
La execuţia primei instrucţiuni, se încarcă în capul stivei valoarea intrării I0.0. La a doua încărcare se
realizează din nou o încărcare în capul stivei. De câte ori apare o operaţie cu operand ea se între acesta
şi capul stivei. Dacă instrucţiunea nu are operand (OLD sau ALD) operaţia se execută între două
elemente din capul stivei.
Se pot folosi TIMERE, CONTOARE și alte blocuri scrise în limbajul LD, sau FBD. Nu vom insista
asupra acestora deoarece utilizarea lor este mai greoaie și e bine să fie folosit limbajul LAD pentru
aceasta. În STUIU DECAZ aveți in Network 2 un exemplu de utilizare a unu TIMER.
II.2.2. STUDIU DE CAZ
Să se dezvolte un program care să controleze un motor de curent alternativ trifazat, care este acţionat
într-un singur sens prin intermediul unui contactor a cărei bobină este alimentată la 24 V CC.
Programul trebuie să realizeze pornirea/oprirea locală de la un set de butoane L1, pentru pornire şi LS
pentru oprire. De asemenea programul trebuie să permită pornirea controlată prin program prin setarea
timp de 2 secunde a unor variabile interne RUN_P, pentru pornire şi STOP_P pentru oprire. Motorul se
consideră indisponibil, dacă schema nu are asigurată alimentarea în curent continuu. Se va seta o
variabilă de avarie a motorului, dacă s-a dat o comandă de pornire prin program a motorului şi
contactorul nu şi-a închis contactele în 2 secunde. Ieşirea din starea de avarie se va face numai prin
apăsarea unui buton de resetare a avariei.
Soluție:
În mod practic firmele folosesc standarde pentru comanda motoarelor de curent alternativ. O variantă a
unei astfel de schemă fixă controlată complet de automatul programabil numite MCC (Motor Control
Centre) și este prezentată în fig. II.4.
Pentru pornirea/oprirea unui motor de curent alternativ, într-un singur sens, schema conţine o cutie de
comandă locală, care permite pornirea şi oprirea motorului, dacă o variabilă booleană a programului de
conducere A/M are valoarea 1. Dacă această variabilă este 0 atunci pornirea şi oprirea motorului se
realizează numai prin intermediul unor variabile generate de automatul programabil.
Pornirea în ambele cazuri este permisă numai dacă schema este alimentată în curent continuu, adică
dacă variabila de intrare AV, numită disponibilitate este 1. La pornirea automată comanda de pornire
trebuie retrasă, dacă nu apare în decursul câtorva secunde o reacţie de la contactorul, care comandă
pornirea motorului, caz în care se generează o variabilă de avarie. Variabila de reacţie este B1 şi este un
contact normal deschis al contactorului de pornire KM1.

48
AUTOMATE PROGRAMABILE vol. I

Automatul programabil comandă prin ieşirea C1, bobina releului intermediar KA1. Acesta, dacă există
alimentată schema de curent continuu, comandă printr-un contact al său şi nu direct bobina principală
KM1 pentru a nu solicita ieşirile automatului.
Dacă programul se realizează sub forma unei proceduri aceasta trebuie să poată fi instanţiată pentru
mai multe motoare, care au aceeaşi schemă de comandă.
Programul, în limbaj STL, va fi întocmit pentru un automat S7-300 este prezentat în fig. II.3.
Network 2 Testul inchiderii contactului in 2 s
A "C1" // Q0.0 Bobina de pornire
AN "B1" // I0.2 Contact al contactorului de pornire ND
L S5T#2S
SD T 1 // Pornirea timerului
NOP 0
NOP 0
NOP 0
A T 1
= "T_AVARIE" // Avarie de TIMER
Network 3 Generarea de avarie la apasarea ciupercii
AN "CIUP" // I0.4 Ciuperca de avarie NI
= "C_AVARIE" // M0.7 Avarie prin apasarea ciupercii
Network 4 Generarea semnalului de avarie si resetarea avariei
A(
O "T_AVARIE"
O "C_AVARIE"
)
AN "RESET_A" // M0.5 resetarea avariei
= "AVARIE"
Fig. II.3. Programul pentru comanda motorului de curent alternativ și MCC
După cum rezultă din comentarii unele variabile sunt legate la automat (variabilele care sunt de intrare
și ieșire), iar altele provin, fie de la secvență de comandă care nu este prezentată (RUN_P și STOP_O),
fie de la interfața cu utilizatorul (LP ).

49
L1 400 V F1 L1 N L+ L-
L2 1
L3 50Hz 1 2
3 4 2
3
VLC Q01
4
43 13
KM1 KA1
44 14
2 4
1 3 5 13
Q01 F2
A1 A1
PKNM0-2,5 14 H01 KB KM1 1 3
A2 A2

5
I> I> I>
13 com
2 4 6 KB
14 6 AV
13

50
KM1 C1
7 B1
1 3 5 22 14
DILM25-01
8
KM1
H1 LS
2 4 6
A1
KA1
L1
Automat Programabil

A2
AUTOMATE PROGRAMABILE vol. I

23
HS
01 1 3 5
VCS
1 7 2 LS 3 L1
2 4 6
5
6
Fig. II.4. Motor Control Center pentru acționarea unui
motor cu un singur sens. Cutie locala
M
AUTOMATE PROGRAMABILE vol. I

. LIMBAJUL ST (Structured Text)


II.3.1. INTRODUCERE
Limbajul ST (Structured Text), care mai poartă şi numele SCL (Structured Control Language), este un
limbaj de nivel înalt, cu o sintaxă asemănătoare limbajului Pascal, destinat automatizării proceselor şi
este utilizat pentru implementarea unor programe sau proceduri complexe, care nu pot fi programate
uşor în limbajele de nivel jos sau grafice de către programatori, care au experiență în utilizarea
limbajelor de programare de nivel înalt Având în vedere aceasta vom face o prezentare scurtă a
limbajului, urmând ca programatorii interesaţi să aprofundeze acest limbaj în legătură cu variantele
puse la dispoziţie de producător.
Un program în limbajul ST este o listă de instrucţiuni ST. Fiecare instrucţiune este terminată prin
caracterul punct şi virgulă. Elaborarea unui program în ST se face în cadrul unei funcții, iar această
funcție trebuie apelată în alt program. La apel i se asociază un bloc de date.
Cuvintele folosite în codul sursă (identificatori de variabile, constante, cuvinte cheie etc.) sunt separate
prin separatori inactivi (caracterul spaţiu, caracterul TAB sau CR) sau prin separatori activi, care au o
semnificaţie bine definită (de exemplu separatorul > înseamnă mai mare). Separatorii inactivi pot fi
introduşi în mod liber între separatori activi. Spre deosebire de limbajul IL, sfârşitul unei linii poate fi
introdus oriunde într-un program.
Identificatorul este un nume asociat unui obiect al limbajului ST (unei constante, variabile sau unui
bloc). Un identificator este un sir de caractere, în general limitat, care începe cu o literă sau caracterul
subliniere (underscore). Numărul de caractere poate fi mare și este recomandabilă folosirea notației
maghiare care este o modalitate de atribuire a prefixelor specifice numelor tipurilor de date, constante-
lor si variabilelor. La compilatoarele firmei SIEMENS, de exemplu, numărul de caractere este limitat
la 24.
Limbajul ST nu este case sensitive. Literele mari şi mici pot fi folosite în egală măsură dacă este
necesar pentru o exprimare mai clară, în special pentru identificatori. De exemplu ALFA2 şi alfa2 sunt
identificatori identici.
Există identificatori standard, care nu pot fi utilizaţi pentru variabile. Aceştia sunt folosiţi pentru
blocuri (de exemplu DBx, FBx, FCx, unde x este un număr), pentru adrese (de exemplu Qx.y, Mx.y,
unde x şi y sunt numere), timere (de exemplu Tx, unde x este un număr), contoare (de exemplu Cx,
unde x este un număr) şi pentru cuvinte cheie (BEGIN, DO, WHILE etc.). Nici nume pentru date
standard (BOOL, BYTE, INT, REAL), pentru funcţii predefinite (ABS, SIN etc.) sau pentru constantele
standard (TRUE, FALSE), nu pot fi folosite ca identificatori. Folosirea literelor mici pentru cuvintele
cheie conduce, la unele medii de programare la transcrierea lor cu litere mari. Un identificator a cărei
valoare se poate modifica în timpul execuţiei unui program se numeşte variabilă. Fiecare variabilă
trebuie declarată individual înainte de a fi utilizată. Declaraţia unei variabile trebuie să conţină
identificatorul şi să definească tipul variabilei prin asignarea la un tip de dată.
Variabilele pot fi locale, globale (shared) sau predefinite (valori de memorie CPU predefinite).
Variabilele locale sunt declarate în interiorul unui bloc şi au domeniul de valabilitate (scope) interiorul
blocului.
O variabilă locală poate fi de tip: static (variabile care sunt reţinute în atât în timpul execuţiei unui bloc
cât şi după execuţia blocului şi care sunt folosite la funcţii bloc pentru a putea fi utiliza mai multe
instanţe), temporare (valoarea lor este reţinută doar cât timp blocul este în execuţie şi nu ocupă o
51
AUTOMATE PROGRAMABILE vol. I

memorie statică) şi parametrii ai blocului (valori de variabile locale care sunt folosite pentru transferul
parametrilor actuali atunci când blocul este apelat).
Variabilele globale sunt acele variabile, care pot fi accesate în orice punct al unui program. Unele
compilatoare permit utilizarea variabilelor globale doar prin crearea unor blocuri speciale numite Data
Block.
Un program în limbajul ST poate fi compus din mai multe blocuri, care sunt subunităţi ale unui
program care se disting prin funcţia pe care o îndeplinesc, structura lor şi prin scopul pentru care sunt
create. Există blocuri de tip program principal ciclic (main), funcţii, funcţii bloc şi blocuri de date. Ca
regulă generală, un bloc apelat trebuie situat înaintea unui bloc apelant.
Structura generală a unui bloc în limbajul ST are patru părți.
Începutul blocului, care este un cuvânt cheie (de exemplu FUNCTION_BLOCK nume pentru o funcţie bloc
din limbajul SCL pentru automatele SIEMENS, PROGRAM nume pentru compilatoarele CoDeSys).
Secţiunea de declaraţii, care depinde de tipul blocului. În această secţiune se declară variabilele locale,
parametrii, constantele şi etichetele, pentru compilatoarele care le acceptă pe acestea din urmă. Unele
medii de programare au secţiunea de cod şi secţiunea de declaraţii sunt în ferestre separate. Se pot
declara:
Variabile statice sub forma:
VAR
<lista de variabile>
END_VAR
Variabile temporare sub forma:
VAR_TEMP
<lista de variabile>
END_VAR
Variabile de intrare sub forma:
VAR_INPUT
<lista de variabile>
END_VAR
Variabile de ieșire sub forma:
VAR_OUTPUT
<lista de variabile>
END_VAR
Variabile de intrare/ieșire sub forma:
VAR_IN_OUT
<lista de variabile>
END_VAR
Secţiunea de cod, care conţine instrucţiuni, care sunt executate atunci când blocul logic este apelat.
Secţiunea de cod a blocurilor de date conţine instrucţiuni pentru iniţializarea variabilelor. Regulile care
trebuie respectate pentru această secţiune au fost enunţate mai sus. În completare, vom semnala că,
unele medii de programare acceptă etichete, care trebuie declarate şi că la compilatoarele care nu au

52
AUTOMATE PROGRAMABILE vol. I

separată fereastra de instrucţiuni ce cea de declaraţii începutul secţiunii de cod se face cu un cuvânt
cheie BEGIN.
Sfârşitul de bloc, este indicat prin cuvintele cheie: END_ORGANIZATION_BLOCK, END_FUNCTION,
END_FUNCTION_BLOCK. Această secţiune este necesară atunci când ferestrele de editare şi de declaraţii
nu sunt separate.
Expresiile ST constau într-o combinaţie între operatori şi operanzi, ultimii pot fi variabile sau
constante. Operatorii au priorităţi (precedenţă). Parantezele sunt folosite pentru modificarea priorităţii
operatorilor. Pentru o expresie care constă din doi operanzi şi un operator, cei doi operanzi trebuie să
fie de acelaşi tip. La rândul ei, o expresie poate deveni operand, într-o expresie compusă.
Precedența operatorilor, în ordine descrescătoare, este: interiorul parantezelor ( … ), funcția, ridicarea
la putere **, negația, înmulțirea sau împărțirea sau modulo, adunarea sau scăderea, operatorii
relaționali (<, >, <=, >=, =, <>), AND, XOR, iar cea mai mică OR.
Expresiile sunt de mai multe feluri:
Expresii aritmetice, care sunt construite utilizând operatori aritmetici şi procesează date numerice. Este
recomandată folosirea parantezelor pentru numerele negative pentru creşterea clarităţii. Atragem
atenţia asupra faptului că utilizarea operatorului / sau DIV cu două numere întregi produce un rezultat
întreg, iar împărţirea cu un operand egal cu zero este o eroare.
Expresii de relaţionale, care compară două valori memorate la două adrese şi au ca rezultat o valoare
booleană (TRUE sau FALSE), în funcţie de îndeplinirea sau nu a condiţiei indicată de operator.
Expresii logice, care sunt construite utilizând operatori logici şi au ca rezultat o valoare booleană (TRUE
sau FALSE), în funcţie de tabelul de adevăr al operatorului logic.
O expresie este evaluată într-o anumită ordine: ţinând seama de precedenţa operatorilor, de la stânga la
dreapta şi ţinând seama de paranteze, care pot modifica precedenţa operatorilor. Rezultatul unei
expresii poate fi: atribuit unei variabile, utilizat pentru a realiza o condiţie în instrucţiunile de control
sau utilizat ca parametru actual la un apel de funcţie.
Există mai multe tipuri de instrucţiuni ST:
Instrucţiuni de atribuire.
Instrucţiuni de selecţie (IF, THEN, ELSE).
Instrucţiuni de iteraţii (FOR, WHILE…).
De control (apeluri de proceduri, reveniri).
II.3.2. INSTRUCȚIUNEA DE ATRIBUIRE
Instrucţiunea de atribuire are forma generală:
<variabilă>:=<expresie>
Prelucrarea descrisă de această instrucţiune se realizează în două etape: mai întâi se face calculul
valorii expresiei din membrul drept, iar apoi se asociază valoarea astfel obţinută variabilei din membrul
stâng.
Evident, se pune problema ca variabila şi expresia să fie de acelaşi tip sau de tipuri compatibile. Dacă
tipurile de date nu sunt compatibile sunt necesare operaţii de conversie a tipurilor de date. O astfel de
53
AUTOMATE PROGRAMABILE vol. I

incompatibilitate se referă la numărul de biţi/octeţi folosiţi pentru memorare. Există în diferitele


bibliotecile care însoţesc diferitele medii de programare multe funcţii care realizează conversii, de
exemplu BYTE_TO_INT, din Step 7 Manager, care realizează convenţia unei variabile/constante
memorate pe un octet într-o variabilă/constantă memorată pe doi octeţi sau INT_TO_BOOL, din
CoDeSys. Trebuie privită cu toată atenţia această problemă deoarece poate conduce la erori greu de
controlat. Pentru fiecare mediu de programare trebuie analizate atât funcţiile de conversie cât și cele de
trunchiere disponibile pentru a le folosi atunci când aceasta se impune.
II.3.3. INSTRUCŢIUNI REPETITIVE
Dacă o anumită secvenţă de instrucţiuni trebuie executată în mod repetat (eventual asupra unor valori
diferite) se spune că se execută o prelucrare ciclică. Limbajul ST conţine mai multe instrucţiuni care
permit descrierea unor prelucrări ciclice.
II.3.3.1. INSTRUCŢIUNEA FOR
Instrucţiunea FOR este utilizată pentru repetarea unei secvenţe de instrucţiuni atât timp cât variabila de
control (contor) se găseşte în anumite limite. Variabila de control este un identificator pentru o
variabilă locală de tip INT sau DINT. Linia de definiţie a unei instrucţiuni FOR mai conţine specificarea
valorii iniţiale şi a valorii finale a variabilei de control. Opţional linia de definiţie mai poate conţine şi
pasul precedat de cuvântul cheie BY. Numărul de execuţii a instrucţiunilor din corpul ciclului este
cunoscut.
Forma generală a instrucţiunii FOR este:
FOR <contor> := <valoare_initiala> TO <valoare_finala>
{BY <Pas>}
DO
<Instructiuni>
END_FOR;
Executarea instrucţiunii se face conform cu următoarele reguli:
La începutul buclei, variabila de control este setată cu valoarea iniţială şi la fiecare execuţie a buclei
valoarea contorului este incrementată sau decrementată până se atinge valoarea finală.
Dacă valoarea iniţială este peste valoarea finală, instrucţiunile corpului buclei nu se execută. Variabila
de control trebuie să fie de tip INT sau DINT.
Se poate omite cuvântul cheie BY (incrementul). Dacă incrementul nu este specificat atunci el este luat
automat egal cu +1.
Ieşirea dintr-o buclă FOR se poate face, înainte de îndeplinirea condiţiilor de ieşire de mai sus, utilizând
instrucţiunea EXIT.
Valoarea iniţială, valoarea finală şi expresia pentru increment se evaluează odată la începutul execuţiei
buclei FOR;
Alterarea valorii finale şi a incrementului nu este permisă în timpul execuţiei buclei.
Se poate realiza o ieşire din buclă folosind instrucţiunea EXIT.

54
AUTOMATE PROGRAMABILE vol. I

Exemplu: Presupunând că valoarea iniţială a variabilei Var1 este 1, la sfârşitul execuţiei buclei FOR din
programul de mai jos, valoarea variabilei Erg va fi 32.
FOR Counter:=1 TO 5 BY 1 DO
Var1:=Var1*2;
END_FOR;
Erg:=Var1;
La utilizarea buclei FOR trebuie avut în vedere următoarele limitări:
În cazul în care <Pas> este pozitiv <valoare_initiala> trebuie să fie mai mică decât
<valoare_finala> şi mai mare, în cazul în care pasul este negativ, <valoare_finala>+<Pas> trebuie
să fie mai mică decât valoarea maximă a unui întreg sau a unui întreg în dublă precizie în mediul în
care se face programarea.
II.3.3.2. INSTRUCŢIUNEA DE REPEAT
Instrucţiunea REPEAT are ca efect prelucrarea repetată a unei secvenţe de instrucţiuni până la îndeplinirea
unei condiţii. Condiţia de terminare a execuţiei este exprimată sub forma unei expresii logice şi este
evaluată la sfârşitul ciclului. În consecinţă instrucţiunile din corpul ciclului se execută cel puţin o dată.
Forma generală a instrucţiunii este:
REPEAT
<Instructiuni>
UNTIL <Expresie booleană>
END_REPEAT;
Executarea instrucţiunii se face conform cu următoarele reguli: Se execută secvenţa de instrucţiuni din
corpul ciclului, după prima execuţie se evaluează expresia logică, iar dacă condiţia este FALSE, se reia
secvenţa de instrucţiuni din corpul ciclului, iar în caz contrar se întrerupe execuţia secvenţei de
instrucţiuni.
Exemplu: Presupunând că valoarea iniţială a variabilei Var1 este 1 şi a contorului este 5, valoarea
variabilei Var1 după executarea ciclului este 32.
REPEAT
Var1 := Var1*2;
Counter := Counter-1;
UNTIL
Counter=0
END_REPEAT;

II.3.3.3. INSTRUCŢIUNEA WHILE


Instrucţiunea WHILE are ca efect prelucrarea repetată a unei secvenţe de instrucţiuni controlată de o
condiţie. Condiţia de terminare a execuţiei este exprimată sub forma unei expresii logice şi este
evaluată la începutul ciclului. În consecinţă este posibil ca instrucţiunile din corpul ciclului să nu se
execute niciodată. Forma generală a instrucţiunii este:
55
AUTOMATE PROGRAMABILE vol. I

WHILE <Expresie booleana > DO


<Instructiuni>
END_WHILE
Executarea instrucţiunii se face conform cu următoarele reguli: Se evaluează expresia logică, dacă
condiţia este FALSE, se execută secvenţa de instrucţiuni din corpul ciclului, iar în caz contrar ciclul nu
se execută.
Exemplu: Presupunând că valoarea iniţială a variabilei Var1 este 1 şi a contorului este 5, valoarea
variabilei Var1 după executarea ciclului este 32.
counter :=5;
WHILE counter<>0 DO
Var1 := Var1*2;
Counter := Counter-1;
END_WHILE

Buclele WHILE şi REPEAT sunt, într-un anumit sens, mai puternice decât bucla FOR atunci când nu se
cunoaşte numărul de execuţii ale ciclului înainte de execuţia acestuia. Trebuie tratate cu atenţie buclele
WHILE şi REPEAT deoarece se poate ajunge la repetări infinite. În cazul în care, totuşi, numărul de
repetări ale buclei este clar, o buclă FOR este de preferat, deoarece nu permite bucle fără sfârşit.
II.3.3.4. INSTRUCŢIUNEA EXIT
Instrucţiunea EXIT este utilizată pentru ieşirea din bucle (FOR, WHILE, REPEAT) în orice punct fără
îndeplinirea condiţiilor de ieşire din buclă.
Executarea instrucţiunii se face conform cu următoarele reguli: această instrucţiune are ca efect
părăsirea imediată a unei bucle. Execuţia programului va continua cu prima instrucţiune care urmează
sfârşitului ciclului.
Exemplu: În programul următor bucla FOR este părăsită imediat ce valoarea Var1[INDEX] este mai mare
decât 3 şi se va reţine valoarea indicelui din vector, care a îndeplinit această valoare.
VAR
INDEX: INT;
INDEXC: INT;
Val1 ARRAY[1..50] OF INT;
END_VAR
FOR INDEX := 1 TO 50 BY 2 DO
IF Var1[INDEX]>3 THEN
INDEX1 := INDEX;
EXIT;
END_IF;
END_FOR;

56
AUTOMATE PROGRAMABILE vol. I

II.3.3.5. INSTRUCŢIUNEA CONTINUE


Instrucţiunea CONTINUE este utilizată pentru terminarea execuţiei curente a corpului unei bucle (FOR,
WHILE, REPEAT).
Executarea instrucţiunii se face conform cu următoarele reguli: această instrucţiune are ca efect
terminarea imediată a execuţiei corpului unei bucle. Execuţia programului va continua, în funcţie de
condiţia de ieşire din buclă cu prima instrucţiune a ciclului, dacă condiţia de ieşire nu este satisfăcută
sau cu instrucţiunea care urmează sfârşitului ciclului, dacă condiţia de ieşire este satisfăcută. Într-o
buclă FOR, variabila de control este incrementată cu valoarea din linia de definiţie, imediat după
executarea instrucţiunii CONTINUE.
Exemplu: În programul următor valoarea ariei Var1 nu este schimbată dacă valoarea ariei este egală cu
INDEX.
VAR
INDEX: INT;
Val1 ARRAY[1..50] OF INT;
END_VAR
while INDEX <= 100 DO
INDEX := INDEX+1;
IF Var1[INDEX]= INDEX THEN
CONTINUE;
END_IF;
Var1[INDEX] :=0;
END_WHILE;
II.3.4. STUDIU DE CAZ
Problemă: Să se realizeze o procedură de interpolare liniară, care să întoarcă valoarea cantităţii de
lichid dintr-un rezervor. Experimental s-au determinat pentru rezervor 10 perechi de puncte care
reprezintă cantitatea de lichid în funcţie de informaţia, în unităţi convertor sau în mA, provenită de la
traductorul de presiune montat pe fundul rezervorului. Aceste perechi de puncte sunt introduse în
memoria unui automat prin intermediul unui panou operator.
Soluţie: Datele experimentale, pentru un rezervor, sunt introduse într-o matrice cu două rânduri şi 10
coloane, având pe primul rând valorile obţinute experimental de la traductoare în unităţi convertor , iar
pe rândul al doilea valorile corespunzătoare, în litri, ale conţinutului rezervorului. Elementele acestei
matrice sunt transferate în procedură (Matricea C). De asemenea se transferă în procedură valoarea
unei informaţii momentane obţinută de la traductorul de presiune (Trad), pe baza căreia se va calcula,
prin interpolare liniară, valoarea momentană a cantităţii de lichid din rezervor. Pentru aceasta se va
stabili mai întâi intervalul în care se găseşte mărimea Trad. Presupunând că această mărime este x şi se
situează în intervalul ( xi , xi 1 ] , cărora le corespund valorile ( yi , yi 1 ] , formula pentru determinarea
valorii y prin interpolare liniară este:
yi 1  yi
y( x)  yi  m( x  xi ), unde: m  .
xi 1  xi

57
AUTOMATE PROGRAMABILE vol. I

Codul unei funcţii bloc pentru realizarea interpolării liniare, care întoarce valoarea y este următorul:
FUNCTION_BLOCK F1
VAR_INPUT
C: ARRAY [1..2,1..10] OF REAL;
Trad: INT;
END_VAR
VAR_OUTPUT
Cant: REAL;
Error: BOOL;
END_VAR
VAR
ValT: REAL;
I: INT;
m: REAL;
END_VAR
ValT := Trad/1.0; (* Transformarea in REAL a valorii*)
Error := TRUE; (* Setarea variabilei de eroare *)
IF ValT > C[1, 1] AND ValT <C[1, 10]
THEN
Error := FALSE; (* Testul daca valoarea este falsa *)
END_IF;
FOR I := 1 TO 10 DO (* Testul incadarii intr-o zona *)
IF (ValT < C[1, I+1] AND ValT >= C[1, I])
THEN
EXIT;
END_IF;
END_FOR; (* Calculul pantei deptei de aprox.*)
m := (C[2, I+1] - C[2, I])/(C[1, I+1] -C[1, I]);
(* Determinarea cantitatii de lichid *)
Cant := C[2, I]+ m*(ValT-C[1, I]);
Fig. II.5. Programul pentru rutina de interpolare liniară

58
AUTOMATE PROGRAMABILE vol. I

II.4. LIMBAJUL LAD (LAdder Diagram)


II.4.1. INTRODUCERE
Limbajul Ladder Diagram (LAD) este un limbaj grafic. El este utilizat pentru realizarea aplicaţiilor de
către programatorii, care au experienţe anterioare în proiectarea aplicaţiilor cu contacte şi relee. El este,
de fapt, o reprezentare grafică a ecuaţiilor booleene, realizând o combinaţie între contacte (variabile de
intrare) şi bobine (variabile de ieşire).
Simbolurile grafice ale limbajului sunt plasate în suprafața de lucru (diagramă) în mod asemănător cu
plasarea contactelor şi releelor într-o schemă electrică.
La elaborarea unui program în LAD nu este nevoie ca el să fie scris sub forma unei funcții, el putând să
apară direct în programul ciclic. Dacă programatorul elaborează o funcție în limbaj LAD aceasta
trebuie apelată, iar la apel i se asociază un bloc de date.
În fig.II.6 este prezentată o schemă cu contacte și relee, iar în fig. II.7 programul în limbajul LAD care
implementează pe un automat, schema cu contacte și relee. Unele implementări ale limbajului LAD
chiar păstrează obiecte asemănătoare cu cele din schemele cu contacte şi relee. Unul din avantajele
utilizării automatelor programabile şi a limbajului LAD este că, odată ce semnalul de intrare a fost
preluat în automat pentru a fi utilizat în program, acesta se poate utiliza ca mai multe contacte şi fiecare
din ele poate fi normal închis sau normal deschis.

B
I1 I3
I2

Fig. II.6. Schemă electrică cu contacte și relee

Obiect al Obiect al
Linie de
limbajului limbajului
conexiune
reprezentând reprezentând
orizontală
un contact o bobină
%I0.0 %I0.2 %Q0.0

Linie de Linie de
%I0.1
alimentare alimentare
stângă dreaptă
Linie de
conexiune
verticală

Fig. II.7. Schemă electrică și reprezentarea ei în LAD


Un program în limbajul LAD este alcătuit din reţele, care utilizează simboluri grafice (obiecte ale
limbajului). Fiecare reţea constă din mai multe obiecte ale limbajului conectate între ele având mai
multe ramuri. O rețea trebuie să aibă la început cel puțin o instrucțiune de intrare și la sfârșit cel puțin
o instrucțiune de ieșire.

59
AUTOMATE PROGRAMABILE vol. I

Startul unei reţele are loc la bara de alimentare stângă. Fiecare reţea se închide utilizând un obiect de
tip bobină. Unele editoare permit poziţionarea bobinele direct la linia de alimentare dreaptă. Se pot
realiza ieşiri paralele.
Fiecare element al limbajului are deasupra sa o variabilă de adresă directă sau simbolică.
Intrările într-un program în limbajul LAD sunt: întreruptoare, butoane, contacte ale bobinelor de ieşire,
contacte ale releelor interne. Reprezentarea tipică pe care o recomandăm pentru oricare intrare este de
tip XIC (eXamine If Closed). Pentru a lămuri reprezentarea XIC a contactelor normal deschise şi
normal închise să examinăm circuitul hardware din fig. II.8a. și programul în limbajul LAD, care dă
aceleaşi rezultate reprezentat în fig. II.7b.

C
BP BO BP BO C

a. b.

Fig. II.8. Reprezentarea XIC


Se observă că cele două butoane se reprezintă prin acelaşi obiect LAD (contact normal deschis).
Aceasta deoarece starea normală a unui contact nu are importanţă. Ceea ce are importanţă este că
pentru a alimenta ieşirea cele două contacte trebuie să fie închise. Atragem atenția asupra acestui
aspect, care cu alte cuvinte, însemnă că fiecare contact trebuie interpretat ca un simbol.
Butoanele de mai sus reprezintă intrări în automat şi cu ajutorul lor se poate porni sau opri orice
element de acţionare. În cadrul programelor de automatizare trebuie prevăzut un buton de oprire de
urgenţă (ES), care trebuie să realizeze oprirea tuturor elementelor de acţionare şi în special a elemen-
telor în mişcare. ES este numit Ciupercă de avarie și este un contact normal închis. Dacă acest buton
este legat la o intrare a automatului, o funcţionare incorectă a automatului va conduce la imposibilitatea
opririi elementelor în mişcare. Dacă,însă butonul este montat pe circuitele de ieşire ale automatului, ca
în fig. II.9 atunci el îşi va efectua funcţia.

60
AUTOMATE PROGRAMABILE vol. I

Ieşiri - RT

AP Q1
ES

1 35
Q1
246

Fig. II.9. Locul butonului de oprire de urgență (ES)

II.4.2. OBIECTELE LIMBAJULUI


Componentele grafice de bază ale limbajului LAD sunt prezentate în fig. II.10. Un program cu
simboluri de bază este un program LAD pur. În afara acestor simboluri mai pot apărea într-o reţea LAD
şi o serie de blocuri, care realizează funcţii mai complexe (numărătoare, timere), operaţii matematice
sau logice, comparaţii sau deplasări. Contactele şi bobinele sunt conectate la barele de alimentare prin
linii orizontale şi verticale. Fiecare segment al unei linii poate avea starea TRUE sau FALSE. Starea
booleană a segmentelor legate împreună este aceeaşi. Orice linie orizontală legată la bara de alimentare
stângă se află în starea TRUE. Deasupra simbolului grafic se află variabila asociată acestuia. Fiecărui
element i se asociază un identificator, adică o adresă absolută sau simbolică, care poate fi o variabilă de
intrare, de ieșire sau internă.
Contactele modelează contactele aparatelor electrice de comutație. Acestea pot avea două stări:
alimentate sau nealimentate. Contactele de bază sunt: Contactul direct, contactul inversat, contacte de
sesizare a frontului crescător sau descrescător.
Contactul direct (fig. II.10 a) realizează o operaţie booleană între starea legăturii stângi şi variabila
booleană asociată. Starea legăturii drepte este obţinută printr-un AND logic între starea legăturii stângi
şi valoarea variabilei asociate contactului.

61
AUTOMATE PROGRAMABILE vol. I

Variabilă asociată
contactului

%I0.0 %I0.3
P N
a. b. c. d.
Linie de conexiune Linie de conexiune
stângă dreaptă
%Q0.0
S R

e. f. g. h.

Fig. II.10. Obiecte ale limbajului LAD


Contactul inversat (fig. II.10 b) realizează o operaţie booleană între starea legăturii stângi şi negaţia
variabilei booleene asociate. Starea legăturii drepte este obţinută printr-un AND logic între starea
legăturii stângi şi valoarea negată a variabilei asociate contactului.
Contactul de sesizare a frontului crescător (fig. II.10 c) realizează o operaţie booleană între starea
legăturii stângi şi frontul crescător al variabilei booleene asociate. Starea legăturii drepte este setată în
TRUE atunci când starea legăturii stângi este TRUE şi variabila asociată contactului trece din FALSE
în TRUE. Starea este FALSE în oricare alt caz. Starea legăturii stângi rămâne valabilă un singur ciclu
la apariția frontului crescător (TC).
Contactul de sesizare a frontului descrescător (fig. II.10 d) realizează o operaţie booleană între starea
legăturii stângi şi frontul descrescător al variabilei booleene asociate. Starea legăturii drepte este setată
în TRUE atunci când starea legăturii stângi este TRUE şi variabila asociată contactului trece din TRUE
în FALSE. Starea este FALSE în oricare alt caz.
Dacă un front crescător sau descrescător a fost detectat într-un ciclu, acesta va rămâne detectat un
singur ciclu (fig. II.11).

%I0.0

TC
%I0.0
P
TC
%I0.0
N

Fig. II.11. Contactele de detectare a frontului crescător și descrescător și diagrama de semnale


În fig. II.12 este reprezentat contactul de sesizare a frontului crescător și descrescător în Step 7
Manager.

62
AUTOMATE PROGRAMABILE vol. I

Semnal Semnal
scanat scanat
<adresa 1> <adresa 1>

POS NEG
Q Q

<adresa 2> M_BIT <adresa 2> M_BIT


Ieșire care este Ieșire care este
Retine 1, un ciclu la Retine 1, un ciclu la
starea front pozitiv starea front negativ
anterioară anterioară

Fig. II.12. Sesizarea fronturilor în Step 7 manager


Bobinele din LAD modelează bobinele releelor. Acestea pot avea două stări: alimentate sau
nealimentate. Bobinele de bază sunt: bobina directă, bobina inversă, bobinele de setare şi resetare.
Bobina directă (fig. II.10 e) realizează o asociere între o variabilă de ieşire booleană şi starea legăturii
stângi. La unele implementări starea legăturii stângi se propagă spre legătura dreaptă şi se pot conecta
mai multe bobine în serie. La alte implementări, pentru a conecta mai multe bobine trebuie realizată o
derivaţie. Legătura dreaptă se consideră legată la bara de alimentare sau este efectiv legată.
Bobina inversă (fig. II.10 f) realizează o asociere între o variabilă de ieşire booleană şi starea negată a
legăturii stângi. La unele implementări starea legăturii stângi se propagă spre legătura dreaptă şi se pot
conecta mai multe bobine în serie. La alte implementări nu există acest tip de bobină.
Bobina de setare (fig. II.10 g) realizează o setare a variabilei de ieşire asociate atunci când starea
legăturii devine TRUE. Valoarea variabilei rămâne TRUE până când o instrucţiune inversă, de resetare,
se aplică aceleiaşi variabile.
Bobina de resetare (fig. II.10 h) realizează o resetare a variabilei de ieşire asociate atunci când starea
legăturii stângi devine TRUE. Valoarea variabilei rămâne FALSE până când o instrucţiune inversă, de
setare, se aplică aceleiaşi variabile.
Etichete, salturi necondiţionate şi condiţionate. Într-un program LAD se pot utiliza etichete, salturi
condiţionate şi necondiţionate pentru a controla execuţia programului. Eticheta se pune pe bara de
alimentare stângă sau într-o reţea separată. Primitivele (obiectele grafice) utilizate sunt diferite, în
funcţie de implementarea limbajului.
Așa cum am mai arătat majoritatea mediilor de programare au posibilitatea de a converti un program
LAD într-unul STL şi invers. Aceasta poartă numele de reversibilitate. În esenţă, reversibilitatea arată
că, indiferent de limbajul în care este scris, un program (LAD sau STL), el va fi memorat sub formă
STL.
Unele medii de programare au și alte reprezentări pentru contacte și bobine. Ele pot fi ușor utilizate
datorită modului sugestiv în care sunt reprezentate și a indicațiilor din meniurile de ajutor și din
manualele de utilizare.

63
AUTOMATE PROGRAMABILE vol. I

II.4.3. UTILIZAREA RELEELOR INTERNE


În LAD se pot folosi adrese ale variabilelor de memorie internă, atât pentru obiectele de ieşire cât şi
pentru obiectele de intrare. Dacă este vorba de obiecte de ieşire acestea se mai numesc şi relee interne.
Aşa cum am arătat mai sus releele interne nu există în realitate, dar pot fi tratate în acelaşi mod ca
releele reale din punct de vedere al programării. Releele interne pot avea la rândul lor contacte, care au
acelaşi nume, în cadrul programului. Activarea bobinei unui releu intern are ca efect
închiderea/deschiderea acestor contacte.
II.4.4. NUMĂRĂTOARE (CONTOARE)
Numărătoarele modelează contoarele din schemele electrice furnizând ieșiri, care arată că au avut loc
un număr de evenimente, de obicei fronturi crescătore/descrescătoare ale unor semnale conectate la
intrări. Fiecare contor are un identificator unic, modul de identificare depinde de la un producător la
altul, o intrare de validare (la activarea cărei numărătorul începe să numere impulsurile), una sau mai
multe intrări de numărare și o intrare de setare a valorii prestabilite pentru numărul de impulsuri care
determină semnalul de ieșire. Unele numărătoare au o ieșire suplimentară de unde se poate citi
numărul curent de impulsuri primite (valoarea curentă). Numărul de evenimente de pe intrare este
comparat cu valoarea presetată (PV) și în funcție de rezultat se pot lua anumite decizii.
Un programator are la dispoziţie în toate mediile de programare de cel puțin 3 tipuri de contoare:
Contoare de tip CTU (CounT Up. Un contor de acest tip are, în general, trei intrări: o intrare de
numărare directă (CU), o intrare pentru setarea caracteristicii funcţiei ieşire dependentă de numărul de
impulsuri (PV) şi o intrare de resetare (R). Sunt disponibile două ieşiri: una care reprezintă funcţia
booleană dependentă de impulsuri (Q) şi una care este o funcţie continuă (CV) şi reprezintă valoarea
curentă din contor. Orice impuls primit pe intrarea CU determină creşterea conţinutului numărătorului.
Atât timp cât numărul de impulsuri de pe intrarea CU, este mai mic decât valoarea PV, ieşirea Q este 0.
După ce numărul de impulsuri primite este mai mare sau egal cu PV, Q devine 1. Există implementări
şi denumiri diferite ale acestui tip de contor pentru diferiţi furnizori de AP. La unii furnizori, pe intrarea
CU trebuie să se prevadă un bloc de sesizare a frontului. La alţi furnizori cele două ieşiri sunt
interpretate, în funcţie de context ca fiind valoarea booleană sau valoarea curentă. Simbolul acestui tip
de contor şi diagrama de semnale pentru un contor CTU este prezentată în fig. II.13.
Contoarele de tip CTD (CounT Down). Un contor de acest tip are, în general, trei intrări: o intrare de
numărare inversă (CD), intrare pentru setarea caracteristicii funcţiei ieşire dependentă de numărul de
impulsuri (PV) şi o intrare de încărcare (LD). Sunt disponibile două ieşiri: una care reprezintă funcţia
booleană dependentă de impulsuri (Q) şi una care este o funcţie continuă (CV) şi reprezintă valoarea
curentă din contor. Orice impuls primit pe intrarea CD determină scăderea conţinutului numărătorului.
Atât timp cât conţinutul numărătorului, este mai mare decât 0, ieşirea Q este 0. După ce numărul de
impulsuri primite determină aducerea în zero a conţinutului numărătorului, Q devine 1. Există
implementări şi denumiri diferite ale acestui tip de contor pentru diferiţi furnizori de AP. La unii
furnizori, pe intrarea CD trebuie să se prevadă un bloc de sesizare a frontului. La alţi furnizori cele
două ieşiri sunt interpretate, în funcţie de context ca fiind valoarea booleană sau valoarea curentă.
Simbolul acestui tip de contor şi diagrama de semnale pentru un contor CTU este prezentată în fig.
II.14.

64
AUTOMATE PROGRAMABILE vol. I

CU

Contor CTU presetat cu 4


CV
CTU
CU
Q
R
CV Q
PV

1 2 3 4 5 6 7 8 9 timp

Fig. II.13. Simbolul și diagramele de timp pentru un contor CU

CD

LD Contor înapoi presetat cu 4

CTD
CD
Q CV
LD
CV 4
3
PV 2
1

1 2 3 4 5 6 7 8 9 timp

Fig. II.14. Simbolul și diagramele de timp pentru un contor CD


Contoarele de tip CTUD (CounT Up-Down). Acest tip de contor are caracteristicile celor două contoare
prezentate mai sus. Un contor de acest tip are, în general, cinci intrări: o intrare de numărare directă
(CU), o intrare de numărare inversă (CD), o intrare de resetare (R), o intrare de încărcare (LD) şi
intrare pentru setarea caracteristicii funcţiei ieşire dependentă de numărul de impulsuri (PV). Sunt
disponibile trei ieşiri: una care reprezintă funcţia booleană pentru numărarea directă (QU), una care
reprezintă funcţia booleană pentru numărarea inversă (QU) şi una care este o funcţie continuă (CV) şi
reprezintă valoarea curentă din contor. În diagrama de semnale din fig. II. 15, care este alcătuită pentru
contorul de tip CTUD, semnalul LD încarcă contorul cu numărul întreg 4, care este egal cu constanta
PV. Corespunzător, ieşirea QU trece în 1 logic. Aceasta va rămâne aşa dacă sosesc impulsuri pe CU,
valoarea CV rămânând egală cu PV. La fiecare impuls care vine pe intrarea CD, conţinutul contorului
scade cu o unitate. Imediat ce conţinutul contorului CV devine mai mic decât PV, ieşirea QU trece în 0
logic. Dacă continuă să sosească impulsuri pe intrarea CD, conţinutul contorului va continua să scadă.
65
AUTOMATE PROGRAMABILE vol. I

La atingerea valorii zero, ieşirea QD va trece în 0 logic. Conţinutul contorului rămâne 0, iar ieşirea QD
rămâne 1 logic chiar dacă continuă să vină impulsuri pe CD. Dacă semnalul de intrare R devine activ,
indiferent ce se întâmplă pe celelalte intrări, conţinutul numărătorului devine 0 şi semnalul QD trece în
1 logic.

LD

CD Contor CTU presetat cu 4

CU

CV
CTUD
CU
CD QU
R QD QU
LD CV
PV QD

1 2 3 4 5 6 7 8 9 101112131415161718 timp

Fig. II.15. Simbolul și diagramele de timp pentru un contor CTUD


Există numărătoare care primesc impulsurile de numărare pe aceeași intrare și numără crescător sau
descrescător în funcție de o intrare numită direcție (automatul LOGO!) sau în funcție de un bit special
de memorie, asociat numărătorului (automatele Mitsubishi, Wecon etc.).
Contoarele de mare viteză au un identificator unic și, în funcție de acesta, se leagă la diferite intrări.
Legarea contoarelor de mare viteză nu se face efectiv în program. În cadrul programului se realizează
instrucțiunile de setare, de preluare a valorii acestora și de luarea deciziilor în funcție de acestea.
II.4.5. TEMPORIZATOARE
Temporizatoarele modelează releele de timp și contactele temporizate furnizând ieșiri ce modelează
acțiuni întârziate sau care durează un anumit timp. În LAD se folosesc temporizatoare cu funcții mai
complexe decât temporizatoarele utilizate în schemele electrice.
Fiecare temporizator trebuie să aibă un identificator unic (modul de identificare depinde de la
producător la producător), o intrare de validare la activarea căreia pornește temporizatorul, o intrare de
setare a timpului prestabilit și o ieșire care să devină activă la executarea funcției. Unele temporizatoare
au o ieșire suplimentară de unde se poate citi timpul scurs de la validarea acestora. Temporizatoarele
sunt de fapt numărătoare, care primesc impulsuri de la generatoare interne cu mai multe perioade. Unii
producători perioada impulsurilor este dependentă de identificatorul unic. Acest lucru este precizat în

66
AUTOMATE PROGRAMABILE vol. I

manualul de programare. În cazul în care baza de timp este omisă atunci ea este, conform IEE 61131-3,
de o milisecundă. Un programator are la dispoziţie în toate mediile de programare de cel puțin 3 tipuri
de contoare:
Temporizatoare de tip TON (Timer ON-delay). Acesta este cel mai folosit tip de temporizator. Un
temporizator de acest tip are, în general, trei intrări: o intrare de validare (IN), o intrare pentru setarea
caracteristicii funcţiei de timp (TP) şi o intrare de resetare (R). Sunt disponibile două ieşiri, una care
reprezintă funcţia booleană de timp (Q) şi una care este o funcţie continuă (TS) şi reprezintă timpul
scurs de la validarea intrării. Simbolul acestui tip de temporizator şi diagrama de timp sunt prezentate
în fig. II.16. Din diagramă se observă că un astfel de temporizator aşteaptă TP secunde de la activarea
intrării de validare înainte de a trece în1 logic ieşirea Q. La dispariţia semnalului de validare Q devine
0.
Dacă intrarea de validare nu este în unu un timp mai mare ca TP, atunci ieşirea Q nu este trecută în 1
logic. Intrarea de reset are ca efect anularea ieşirii, indiferent de intrarea de validare. Există
implementări şi denumiri diferite ale acestui tip de temporizator pentru diferiţi furnizori de AP.
Temporizatoare de tip TOFF (Timer OFF-delay). Şi acest tip de temporizator are trei intrări: o intrare
de validare (IN), o intrare pentru setarea caracteristicii funcţiei de timp (TP) şi o intrare de resetare (R).
Sunt disponibile două ieşiri, una care reprezintă funcţia booleană de timp (Q) şi una care este o funcţie
continuă (TS) şi reprezintă timpul scurs de la validarea intrării. Simbolul acestui tip de temporizator şi
diagrama de timp sunt prezentate în fig. II.17. Din diagramă se observă că un astfel de temporizator
este exact opusul lui TON, descris mai sus. După activarea intrării de validare, se trece în unu ieşirea Q,
iar după trecerea în zero a intrării de validare aşteaptă TP secunde şi apoi anulează ieşirea Q. La
dispariţia semnalului de validare dacă nu s-a scurs timpul TP şi a apărut un nou semnal pe intrarea de
validare, Q rămâne în unu, până este îndeplinită condiţia de anulare a ieşirii, măsurată de la frontul
negativ al intrării de validare. Intrarea de reset are ca efect anularea ieşirii, indiferent de intrarea de
validare. Există implementări şi denumiri diferite ale acestui tip de temporizator pentru diferiţi furnizori
de AP. Totuşi trebuie remarcat că un astfel de temporizator este mai rar folosit.
Temporizatoare de tip TP (Timer Pulse). Şi acest tip de temporizator are, în general, trei intrări: o
intrare de validare (IN), o intrare pentru setarea caracteristicii funcţiei de timp (TP) şi o intrare de
resetare (R). Sunt disponibile două ieşiri, una care reprezintă funcţia booleană de timp (Q) şi una care
este o funcţie continuă (TS) şi reprezintă timpul scurs de la validarea intrării. Simbolul acestui tip de
temporizator şi diagrama de timp sunt prezentate în fig. II.18. Din diagramă se observă că un astfel de
temporizator îşi trece în unu ieşirea Q şi aşteaptă TP secunde de la activarea intrării de validare înainte
de a trece în zero ieşirea Q, indiferent ce se întâmplă pe intrarea de validare în acest timp. Intrarea de
reset are ca efect anularea ieşirii, indiferent de intrarea de validare. Există implementări şi denumiri
diferite ale acestui tip de temporizator pentru diferiţi furnizori de AP.

67
AUTOMATE PROGRAMABILE vol. I

IN

Q
TON
IN TP
Q TS
TP
TS TP
R
R

timp

Fig. II.16. Temporizator TON

IN

Q
TOFF
IN TP
Q TS
TP
TS TP
R
R

timp

Fig. II.17. Temporizator TOFF

IN

Q
TP
IN TP TP
Q TS
TP
TS TP
R
R

timp

Fig. II.18. Temporizator TP

68
AUTOMATE PROGRAMABILE vol. I

II.4.6. BLOCURI FUNCȚIONALE


Blocurile funcționale din LAD implementează software funcții complexe cum sunt: funcții de
încărcare, funcții aritmetice, care operează cu numere întregi sau reale, funcții de conversie a
informației în diferite formate, funcții de tratare a întreruperilor, funcții de detectare a fronturilor
crescătoare/descrescătoare, funcții de comparare etc.
Alte blocuri funcționale folosite în limbajul LAD sunt:
Blocuri de realizare a tamburelor (Drum controller). Acestea sunt blocuri cu ajutorul cărora se poate
realiza o succesiune simplă de evenimente la ieșirile automatului, care trebuie să aibă loc într-un
interval de timp stabilit (Time based) sau ca urmare a unor evenimente (Event based). Tamburul imită
un generator de secvență cu tambur mecanic. Un tambur poate avea mai mulți pași (Steps) sau etape.
Fiecare pas poate fi executat un număr de unități din timpul de bază (setabil). În cadrul fiecărui pas se
pot genera una sau mai multe ieșiri.
Blocuri de lucru cu fișiere.
Blocuri de reglare (PID).
Blocuri FOR-NEXT.
Blocuri de control (JMP. LABEL, RET).
De obicei, modul de reprezentare diferă de la producător la producător, iar IEE 61131-3 încearcă să
standardizeze aceste blocuri.
II.4.7. LIMITĂRI (RESTRICȚII) ÎN PROGRAMELE LAD
În programele LAD sunt două feluri de restricții: limitări legate de formatul programului și limitări care
se referă la modul de execuție.
Limitările legate de formatul programului sunt:
Limitarea 1. O rețea trebuie să înceapă cu un contact (o intrare) și să se termine cu o bobină (o ieșire).
Termenul de intrare este utilizat pentru a senzori utilizaţi pentru controlul acţiunilor, de exemplu
contactele unui buton. Se permite să fie utilizat ca început de reţea şi un contact reprezentând o
variabilă internă. Soluţia, care se recomandă în cazurile în care nu este posibil acest lucru este folosirea
unor biţi speciali de memorie, care sunt întotdeauna 1, sau crearea unui releu intern, care este
întotdeauna nealimentat şi folosirea unui contact normal închis al acestuia pentru a începe o reţea.
Limitarea 2. Contactele și bobinele trebuie plasate pe orizontală.
Limitarea 3. Numărul de contacte pe o linie este limitat.
Limitarea 4. Un grup de contacte poate alimenta o singură bobină.
Limitarea 5. O intrare individuală poate fi folosită de câte ori este necesar.
Limitarea 6. Biții de memorie pot fi reprezentați ca relee interne sau contacte.
Limitarea 7. Într-un program LAD nu este permis fluxul de putere în sens invers, spre bara de
alimentare stângă. De exemplu nu este permisă o rețea de tipul celei din fig. II.19, ea trebuie să arate ca
in fig. II. 20, pentru a fi corectă și pentru a îndeplini funcția pe care a gândit-o programatorul.

69
AUTOMATE PROGRAMABILE vol. I

A B C

D E

Fig. II.19. Flux de putere spre stânga interzis


A B C

D E

F D B C

F E

Fig. II.20. Rețea corectă pentru cea din fig. II19.


In ceea ce privește execuția sunt respectate următoarele reguli:
Regula 1. Un program LAD este alcătuit din mai multe rețele de tipul celei din fig. II.7.
Regula 2. Odată ce a fost evaluată rețeaua nu mai este evaluată până la următoarea parcurgere a
ciclului. Referindu-ne la fig. II.7, dacă contactul %I0.0 este închis tensiunea barei de alimentare drepte
se consideră aplicată în punctul în care este conectată intrarea contactului %I0.2, iar dacă şi %I0.2 este
închis atunci tensiunea barei de alimentare stângi se aplică bobinei %Q0.0, care se va găsi acum în
situaţia că este conectată la sursă.
Regula 3. O ieșire sau un releu intern, utilizat ca ieșire, poate să apară o singură dată.
Regula 4. Valorile cu memorie își mențin valoarea după un ciclu de conectare-deconectare-conectare
la sursa de alimentare, iar valorile fără memorie iau valoarea zero după un astfel de ciclu. În
majoritatea cazurilor de automate programabile doar bobinele, temporizatoarele și unele contoare sunt
cu memorie. Pentru revenirea la starea inițială este necesar ca aceste elemente să fie resetate, de o altă
instrucțiune, în cazul bobinelor sau de o intrare, în cazul temporizatoarelor și contoarelor.
Regula 5. Execuţia unui program se face de sus în jos, iar reţea este executată de la stânga la dreapta.
Cele mai multe persoane, începători în programarea în limbajul LAD, interpretează afirmaţia făcută
mai sus că un program în limbajul LAD se execută de sus în jos şi de la stânga la dreapta ca o execuţie
de tip sincron, care presupune că toate releele operează deodată, în locul execuţiei asincrone, care
presupune că fiecare releu operează atunci când primeşte semnalul. Este adevărat că valorile văzute din
70
AUTOMATE PROGRAMABILE vol. I

exterior ale variabilelor de ieşire sunt transmise deodată în faza ciclului numită PIOT (Process Image
Output Table), dar valorile cu care se operează în interiorul fazei de procesare a programului trebuie să
ţină seama de execuţia asincronă.
După câştigarea unei experienţe programatorii încep să înţeleagă ce este o execuţie asincronă şi cum
poate fi folosită aceasta în avantajul programării.
Vom vedea, în cele ce urmează câteva secvenţe de program, care să ilustreze afirmaţia de mai sus şi
care să contribuie la o mai bună înţelegere a modului de programare în limbajul LAD.
Trebuie subliniat că ordinea reţelelor în aceste exemple este critică. Dacă reţelele sunt rearanjate într-o
altă ordine, este probabil că aceste programe nu operează corect.
Este indicat să ne concentrăm nu asupra memorării exemplelor ci mai mult asupra principiilor (cum
lucrează astfel de secvenţe de programe) şi asupra modului în care pot fi utilizate pentru rezolvarea
unor probleme de programare.
Să examinăm pentru început un oscilator, realizat în LAD. Un oscilator, în lumea programatorilor în
limbajul LAD, este o bobină (un releu intern) care îi schimbă starea (din OFF în ON şi invers) la
fiecare ciclu. Un oscilator poate fi folosit într-un program LAD sau hibrid, pentru a conduce diferite
blocuri de funcţii secvenţiale, controlate de generatoare de tact. Utilizând aceste generatoare de tact se
pot realiza programe, care să controleze automatizări complexe pe principiul proiectării automatelor
sincrone.
Să analizăm reţeaua din fig. II.21. Acest program conţine o singură reţea cu un releu intern RI1. Un
contact normal închis al acestuia alimentează bobina.

RI1 RI1

Fig. II.21. Oscilator


În faza de actualizare a intrărilor nu se va actualiza nimic din acest program deoarece releele interne nu
sunt accesibile din exterior. După faza de actualizare automatul va trece la procesarea programului. Se
va analiza contactul RI1 şi va trebui, pentru a rezolva această problemă, să determine dacă bobina este
alimentată sau nu. Fiind vorba de primul ciclu, bobina nu este alimentată şi ca urmare contactul normal
închis RI1 este închis. Datorită acestui fapt bobina va fi alimentată. Apoi programul pe automat va
ajunge din nou în faza de actualizare pentru a efectua al doilea ciclu. În acest ciclu bobina este
alimentată, contactul RI1 este deschis şi ca urmare, bobina îşi va pierde alimentarea. La următorul ciclu
ne vom afla în situaţia de la primul ciclu. Ca urmare bobina va trece din starea ON în starea OFF, la
fiecare ciclu, atât timp cât automatul va funcţiona.
Se poate realiza, într-un mod asemănător, un generator de impuls singular (one shot). Generarea unui
impuls singular se poate face cu programul din fig. II.22.

71
AUTOMATE PROGRAMABILE vol. I

RI2 RI1

RI1 RI2

RI2

Fig. II.22. Generator de impuls singular


Programul are două relee interne. Dacă se analizează prima reţea se vede că, datorită faptului că toate
bobinele nu sunt alimentate, la primul ciclu, contactul normal închis al bobinei RI2 va realiza
alimentarea bobinei releului RI1. La execuţia celei de a doua reţele, contactul normal deschis al bobinei
RI1 fiind închis (bobina a fost alimentată la executarea primei reţele) va alimenta bobina RI2. care prin
contactul RI2 se va auto-reţine. În al doilea ciclu contactul normal închis RI2 va fi deschis, deoarece
bobina RI2 a fost alimentată la ciclul precedent. Ca urmare bobina RI1 îşi va pierde alimentarea. Ea va
rămâne nealimentată toate ciclurile automatului, care urmează. S-a realizat posibilitatea creării unui
impuls singular care are loc în primul ciclu de durată egală cu timpul de ciclu.
Foarte multe firme livrează automate programabile, care au biţi de memorie, care reprezintă generatore
de impulsuri de diferite frecvenţe şi chiar un generator de tip one shot. De exemplu bitul special de
memorie SM0.1 de la automatele SIEMENS din seria S7 2xx este ieşirea unui generator de tip one
shot. Acest tip de impuls prezintă o mare importanţa, aşa după cum vom arăta mai jos, în proiectarea
programelor cu metoda activării şi dezactivării sincrone.
Bistabilul RS este cel mai important tip de bistabil şi în acelaşi timp şi cel mai utilizat. În mediile de
programare se foloseşte bistabilul R-S, ceea ce înseamnă că intrarea R este dominantă sau bistabilul S-
R cu intrarea S dominantă. În fig. II.23 este arătat programul LAD, care realizează un bistabil R-S cu
intrarea R dominantă.

IN1 IN2 RI1

RI1

Fig. II.23. Bistabil R-S


Dacă intrarea IN1 este în starea ON şi IN2 este în starea OFF atunci bobina IR1 va fi alimentată. Odată
alimentat IR1, contactul său IR1 se va închide, iar bobina releului IR1 va rămâne alimentată. Se poate
vedea uşor că IN1 este intrarea S, iar IN2 este intrarea R.
În general numărul obiectelor, care apare în IEE 61131-3 este mult mai mic decât cel oferit de
producători. Scopul este de a oferi automate mai bine adaptate la scopurile care și le propun utilizatorii
și constituie un criteriu important pentru alegerea unui anume tip de automat. Totuși studiul
standardului este recomandat deoarece permite o realizare cu ușurință a programelor cu foarte puține

72
AUTOMATE PROGRAMABILE vol. I

probleme de adaptare, puternic sprijinite de manuale de programare care însoțesc ale mediilor de
programare.
II.4.8. STUDII DE CAZ
Studiul 1. Controlul unei bariere.
Pentru o ilustrare a modului de utilizare a acestor relee să considerăm următoarea situaţie: Fie un sistem
de deschidere a unei bariere (fig. II.24) care să se deschidă atunci când cineva se apropie de aceasta din
orice parte. Bariera este acţionată de un motor electric M, acţionat de un contactor (K), pentru
deschidere şi de o contra greutate (CG) pentru închidere. I1 şi I2 sunt senzori fotoelectrici de prezență în
fața și în spatele barierei, iar I4 este un contact de validare a sistemului. Dacă I1 sau I2 şi I4 sunt 1 și
contactul de validare este activat, atunci un releu intermediar M va fi activat. Contactul lui se va
închide şi dacă bariera nu este deschisă se va alimenta contactorul K, care este legat de o variabilă de
ieşire, care va deschide bariera. Când va ajunge la limita de cursă contactorul va pierde alimentarea şi
bariera se va închide sub acţiunea contragreutăţii. Dacă în timpul închiderii se va apropia ceva de
baieră, acesta va fi din nou acţionată la deschidere. În cadrul programului se vor folosi numele
simbolice din fig. II.23, presupunându-se că variabilele sunt astfel declarate.

I1
I3
T B
K

M I2
CG

Fig. II.24. Deschiderea/închiderea unei bariere


Programul în limbaj LAD este prezentat în fig. II.25.
I1 I4 M1

I2

M1 I3 K

Fig. II.25. Programul de control al barierei


Studiul 2. Utilizarea releelor interne pentru circuite de zăvorâre.
O altă utilizare a releelor interne este pentru deblocarea unor circuite de zăvorâre. Figura II.26
ilustrează o astfel de utilizare

73
AUTOMATE PROGRAMABILE vol. I

Când I1 se va închide se va alimenta bobina O1. Contactul normal deschis al acestei bobine va menţine
alimentarea bobinei O1 chiar dacă I1 se va deschide. Când I2 se va închide se va alimenta bobina
releului intern M1.
Aceasta are ca efect deschiderea contactului să normal închis din circuitul de blocare şi alimentarea lui
O1 va înceta
I1 O1

O1 M1

I2 M1

Fig. II.26. Programe de blocare/deblocare


Studiul 3.Comanda unui sistem de transport piese.
Un sistem de transport este alcătuit dintr-o bandă transportoare antrenată de un motor electric,
alimentat prin intermediul unui contactor (K). Dacă o piesă este încărcată pe bandă într-o poziţie
corectă şi se apasă un buton de pornire(BP), banda va trebui să transporte piesa către un container.
Căderea piesei în container este sesizată de o barieră luminoasă (BL) care furnizează un semnal logic
egal cu 1 la căderea piesei. Acest semnal trebuie să oprească mişcarea benzii.
Se va folosi un contact normal închis al barierei luminoase (BL) sau dacă acesta nu există se va crea o
reţea suplimentară cu un releu intern (RI) alimentat de la bariera luminoasă. Cele două variante sunt
reprezentate în fig. II.27 de mai jos.
BP BL K BP RI K

K K

BL RI

Fig. II.27. Soluţia problemei studiului de caz 3


Studiul 4.Comanda unui sistem de eliminare de pe bandă a unor motoare defecte.
Un fabricant de motoare mici cu ardere internă constată la verificarea finală că unele motoare nu
funcţionează. Motorul la care se constată defectul trebuie scos de pe linie şi trecut într-o zonă în care se
repară acest defect. Dacă operatorul liniei se constată un defect va introduce un bolţ într-un orificiu al
conteinerului care transportă motorul. Dacă un traductor de proximitate (TP) va constata prezenţa
bolţului programul de pe automat va trebui să activeze un cilindru hidraulic cu piston care să scoată
motorul în staţia de reparare.

74
AUTOMATE PROGRAMABILE vol. I

Zonă de Bolţ Motor


reparare

Y1

TP S1
Conveior
Traductor de
principal
proximitate
Fig. II.28. Sistemul din problema 5
Contactul traductorului de proximitate TP trebuie blocat de un contact normal deschis al bobinei
distribuitorului pentru ca mişcarea să continue până la împingerea completă a motorului în zona de
reparare. Dacă bobina distribuitorului nu are acest contact se utilizează un releu intermediar ca la
problema 2.
TP S1 Y1

Y1

Fig. II.29. Soluţia problemei studiului de caz 4

75
AUTOMATE PROGRAMABILE vol. I

II.5. LIMBAJUL FBD


II.5.1. INTRODUCERE
Limbajul FBD este tot un limbaj grafic. El permite programatorului să construiască funcţii complexe
utilizând blocurile existente în bibliotecile mediului. Un program FBD este alcătuit din blocuri de
funcţii elementare, conectate între ele prin linii de legătură. Programul se execută de sus în jos şi de la
stânga la dreapta.
La elaborarea unui program în FBD nu este nevoie ca el să fie scris sub forma unei funcții, el putând să
apară direct în programul ciclic. Dacă programatorul elaborează o funcție în limbaj FBD aceasta
trebuie apelată, iar la apel i se asociază un bloc de date.
Fiecare bloc are un număr de intrări şi ieşiri. Blocul este reprezentat printr-un dreptunghi. Intrările sunt
în partea stângă, iar ieşirile sunt în partea dreaptă a blocului. Un bloc elementar realizează o singură
funcţie asupra intrărilor. Funcţia pe care o realizează blocul este scrisă în interiorul acestuia.

La intrările fiecărui bloc sunt legate variabile de intrare, iar variabilele de ieșire ale blocurilor pot fi
conectate la ieșirile automatului sau la intrările altor blocuri (fig. II. 30). Tipul variabilelor de intrare
trebuie să corespundă cu tipul cerut de intrarea blocului. Ieșirea blocului poate fi de același tip ca și
intrarea, dar există cazuri când pot diferi tipul mărimilor de intrare fata de tipul mărimilor de ieșire.
Evaluarea unui bloc nu se poate face decât atunci când stările tuturor intrărilor sunt precizate.

<Nume bloc>

EN ENO

IN1 OUT
.
.
.
INn

Fig. II.30. Bloc în limbajul FBD

Conform recomandărilor IEC, fiecare bloc are o intrare de validare EN pe lângă intrările asupra cărora
realizează operații și o ieșire ENO, care poate fi folosită pentru testare. Când EN este FALSE operațiile
definite pe bloc nu sunt executate și ieșirea ENO este FALSE. Dacă valoarea EN este TRUE, operațiile
se execută și ieșirea ENO devine TRUE. De asemenea, valoarea ENO devine FALSE, dacă a apărut o
eroare la executarea operațiilor blocului. În cadrul implementărilor în diferite medii de programare, nu
toate blocurile au prevăzute intrarea EN şi ieşirea ENO.
II.5.2. BLOCURILE LIMBAJULUII
Bibliotecile mediilor de programare pentru AP oferă o mare varietate de blocuri, care respectă sau nu
recomandările IEC 61131. Unele medii oferă blocuri complexe, care realizează funcţii de reglare (PID)
sau operaţii matematice complexe (integrale, dezvoltări în serie etc.).
Principalele blocuri pot fi împărţite în două mari categorii: Blocurile standard-care corespunde
operatorilor standard și limbajului ST, Blocurile speciale, implementate prin proceduri complexe.

76
AUTOMATE PROGRAMABILE vol. I

Blocurile standard sunt: blocuri de manipulare a datelor (se mai numesc si blocuri de asignare), blocuri
pentru operații booleene (Fig. II.31 AND, OR, XOR), blocuri aritmetice (pentru efectuarea de operații
de adunare, scădere, înmulțire și împărțire), blocuri de comparative (pentru implementarea operatorilor
logici: mai mic, mai mare etc.).
AND NAND NOT

& &

OR NOR XOR

  =

Fig. II.31. Blocuri pentru operații booleene


Blocurile speciale sunt: blocuri de manipulare a datelor (bistabile SR şi RS şi de detecţie a fronturilor
crescătoare şi descrescătoare, multiplexoare, generatoare de numere aleatoare), contoare,
temporizatoare, blocuri de procesare a semnalelor (histerezis sau trigger SCHMITT, regulatoare PID,
integratoare, derivatoare etc.), blocuri generatoare de semnal (generator de semnal dreptunghiular,
generator de semnal modulat în lăţime PWM), blocuri matematice (de calcul a valorii absolute, a
funcţiei exponenţiale, a logaritmului, a rădăcinii pătrate, a funcţiilor trigonometrice etc.).
Aspectul general al unui program FBD este prezentat în fig. II.32. Implementările blocurilor diferă de
la producător la producător, dar respectă, în general recomandările CEI. Informaţii suplimentare despre
aceste blocuri se găsesc în manualele de programare de aceea nu vom prezenta în detaliu blocurile.

B1 B2
I1 Q1
I2
Q2
I3

I4 B3
I5 Q3
I6
Q4
I7

Fig. II.32. Program în limbajul FBD

77
AUTOMATE PROGRAMABILE vol. I

II.5.3. STUDII DE CAZ


Studiul 1. Controlul nivelului unui rezervor.
În fig. II.33 este prezentat un rezervor a cărui nivel trebuie controlat local şi de la distanţă. Rezervorul
este umplut cu apă în mod continuu. Nivelul său este controlat automat (dacă un buton cu auto-reţinere
REMOTE este apăsat) de către o pompă P. Când nivelul ajunge la 90% (se închide un contact LH) pompa
P porneşte şi începe să golească rezervorul. Secţiunea conductei de golire este mai mare decât secţiunea
conductei de umplere, astfel că la funcţionarea pompei P se va atinge, după un timp nivelul de 10% (se
închide contactul LL). Atunci pompa trebuie oprită. La funcţionarea manuală (dacă un buton cu auto-
reţinere LOCAL este apăsat), nivelul este controlat de un operator aflat lângă rezervor, iar controlul
automat este ignorat. Acesta va avea la dispoziţie doua butoane LOCALStart şi respectiv LOCALStop
pentru controlul sistemului. Motorul de antrenare al pompei este alimentat de o ieşire RUN.
Intrare apa

LH
Iesire
apa
LL

P
Fig. II.33. Controlul unui rezervor de apă
Se va folosi un automat XC 201 al firmei EATON. Se vor lega variabilele de intrare/ieşire conform
tabelului de declarare a variabilelor din fig. II.34.

PROGRAM PLC_PRG
VAR
LH AT %IX0.5: BOOL;
AUTOS AT %MX0.0: BOOL;
LL AT %IX0.6: BOOL;
RUN AT %QX0.0: BOOL;
LOCALStart AT %IX0.4: BOOL;
LOCAL AT %IX0.1: BOOL;
LOCALStop AT %IX0.3: BOOL;
AUX AT %MX0.1: BOOL;
REMOTE AT %IX0.0: BOOL;
END_VAR
Fig. II.34. Declararea variabilelor

78
AUTOMATE PROGRAMABILE vol. I

Programul va avea trei reţele, prezentate în fig. II.35.


OR AND
LH AUTOS
AUTOS LL

OR AND
LOCALStart AUX
RUN LOCAL
LOCALStop

AND OR
REMOTE RUN
AUTOS AUX

Fig. II.35. Programul automatizării golirii unui rezervor

Controlul de la distanţă este realizat de reţelele 1 şi 3. Din prima reţea, dacă sunt îndeplinite condiţiile
din caietul de sarcini, se setează releul intern AUTOS, pentru pornirea pompei la atingerea traductorului
de nivel LH, respectiv se resetează acelaşi releu intern dacă se atinge traductorul de nivel inferior LL.
Dacă variabila REMOTE este 1 atunci se va comanda închiderea/deschiderea releului RUN.
Controlul local este realizat de reţeaua 2. Dacă sunt îndeplinite condiţiile din caietul de sarcini, se
setează releul intern AUX, pentru pornirea pompei la atingerea apăsarea butonului LOCALStart,
respectiv se resetează acelaşi releu intern dacă se apasă butonul LOCALStop. Variabila AUX, din reţeaua
3, comandă închiderea/deschiderea releului RUN.

Studiul 2. Generator de impulsuri cu o perioadă de 1 s cu două temporizatoare TON .


Să se creeze un generator de impulsuri cu o perioadă de 1 s, utilizând două temporizatoare de tip TON.
Generatorul va porni la închiderea unui contact I1. Să se traseze diagrama de semnale timp de 2 s de la
închiderea lui I1.
Generatorul de impulsuri va avea două timere de tip TON (fig. II.36). Oricare din ieşirile timerelor va fi
sursa pentru generarea impulsurilor. Dacă sursa de semnal este ieşirea primului temporizator atunci la
închiderea contactului I1 semnalul va începe cu o semiperioadă TH, în care ieşirea va fi de nivel jos.
Timpul prescris pentru fiecare din temporizatoare va fi egal cu jumătatea perioadei cerute.

79
AUTOMATE PROGRAMABILE vol. I

T1
I1 IR1 TON OUT1
IN Q
T#0.5 s PT ET

T2 T2
OUT1 TON IR1
IN Q
T#0.5 s PT ET

I1

OUT1 .5s T

IR1 .5s

.5s
Fig. II.36. Generator de impulsuri cu TON
Studiul 3. Generator de impulsuri cu o perioadă de 1 s cu două temporizatoare TP .
Generatorul de impulsuri are două timere de tip TP (fig. II.37). Oricare din ieşirile timerelor va fi sursa
pentru generarea impulsurilor. Perioada impulsurilor va fi suma celor două temporizări care au fost
setate. Dacă ele sunt egale atunci generatorul este un generator de impulsuri dreptunghiulare cu TH şi
TL egale.
T1
Pulse1 Pulse
TP
IN Q
T#0.5s PT ET

Pulse T2
Pulse1
TP
IN Q
T#0.5s PT ET

Fig. II.37. Generator de impulsuri cu TP


Studiul 4. Să se simuleze un temporizator TOF cu un temporizator TON
Declanşarea funcţionării se va realiza pe frontul pozitiv al unei intrări I1. Să se traseze diagrama de
semnale pentru I1 şi AUT, presupunând că parametrizarea este realizată la 2 s.

80
AUTOMATE PROGRAMABILE vol. I

I1 Timer OUT

OUT T1
TON Timer
IN Q
T#0.5s PT ET

I1

OUT T

Timer

Fig. II.38. Simularea unui TOFF folosind un TON


Studiul 5. Să se realizeze un program pentru un sistem de transport piese
În figura II.39 este prezentat un sistem cu două benzi de transport (BT1 şi BT2) şi o cutie de stocare
temporară (C) între ele. Banda BT1 este antrenată de un motor electric cu un singur sens (M1),
comandat de un contactor (K1) şi transportă piese spre o cutie de stocare. O barieră electrică I1 care este
situată în apropierea cutiei de stocare determină câte piese sunt intrate în C. Banda BT 2 este antrenată
de un motor electric cu un singur sens (M2), comandat de un contactor (K2). Ea transportă cutiile C spre
un punct de livrare. Atingerea punctului de livrare este semnalată de o barieră electrică I3.Trecerea
cutiei de stocare pe banda BT2 se face cu ajutorul unui piston pneumatic comandat de un distribuitor.
Numărul de piese care încap în cutia de stocare este 20. Cursa de împingere este considerată terminată
atunci când cutia atinge barieră electrică I2. Un ciclu de umplere începe prin apăsarea unui buton BP şi
se termină la atingerea barierei I3.

I1

BT1 I2 I3

C
M1
K1 BT2
B1

M2
K22

Fig. II.39. Sistemul de transport piese cu stocare temporare.

81
AUTOMATE PROGRAMABILE vol. I

BP Out K1

K1

C1
I1 CTU
CU Out
I2 Q
R CV
20 PV

Out I2 B1

B1

I2 I3 K2

K2

Fig. II. 40. Programul pentru comanda sistemului transport piese


Studiul 6. Să se realizeze programul pentru încărcare selectivă a unor obiecte
Să se realizeze controlul unui sistem, care încarcă continuu mai întâi 12 obiecte într-o cutie şi apoi 6
obiecte în altă cutie, aşa cum este arătat în fig. II.41. Obiectele sunt transportate pe o bandă acţionată
continuu. Se foloseşte un opritor care este acţionat de un cilindru pneumatic. Controlul se realizează cu
ajutorul unei celule fotoelectrice I1, care dă un impuls la fiecare trecere a unui obiect.
B1

I1

12

Fig. II.41. Sistemul de transport selectiv de piese.

82
AUTOMATE PROGRAMABILE vol. I

C1
I1 B1 CTU
CU B1
Out Q
R CV
12 PV

C2
I1 B1 CTU
CU Out
B1 Q
R CV
6 PV

Fig. II.42. Programul de comandă

83
AUTOMATE PROGRAMABILE vol. I

II.6. LIMBAJUL SFC


II.6.1. INTRODUCERE
Sequential Function Chart (SFC) este un limbaj grafic de origine franceză. Limbajul este clar, strict şi
fără ambiguităţi, permiţând programatorului să realizeze o structură apropiată de caietele de sarcini.
SFC este definit în standardul IEC 848 şi are la bază metoda GRAFCET elaborată în Franţa. Elaborarea
sa a început în 1975, când un grup de cercetători au decis construirea unui model pentru descrierea
sistemelor de control secvenţial, mai uşor şi mai adecvat pentru sistemele tot mai complexe din
industrie. După doi ani de discuţii şi studii s-a propus modelul GRAFCET. Numele vine de la Graf şi
de la asociaţia ştiinţifică AFCET (Association Française de Cybernétique Économique et Technique).
În continuare vom numi reprezentarea grafică diagramă funcţională, grafcet sau graf al automatizării.
Dacă scriem graf, cu litere mici, ne vom referi la modelul obţinut utilizând regulile GRAFCET.
Destinat să reprezinte un mijloc de comunicaţie între automatist şi clientul său, graful este o unealtă
utilizată atât pentru descrierea caietelor de sarcini cât şi un limbaj de programare. Atunci când este
folosit pentru descrierea caietelor de sarcini el se numeşte graf de specificare, iar atunci când este
folosit în programare se numeşte graf de implementare.
Un graf de implementare, atunci când este compilat, generează în mediul de programare o funcție și un
bloc de date. Această funcție trebuie apelată în programul ciclic.
II.6.2. COMPONENTELE DE BAZĂ ALE LIMBAJULUI
Componentele de bază ale modelării sistemelor discrete cu regulile GRAFCET sunt clare, simple şi
sunt şi astăzi folosite aşa cum au fost ele iniţial elaborate. Aceste componente sunt: etapele, acţiunile,
arcele orientate, tranziţiile şi condiţiile asociate tranziţiilor.
Etapa reprezintă o substare a unui sistem, în cadrul căreia se execută o cel puţin o acţiune. Etapa este
reprezentată printr-un dreptunghi (fig. II.43), identificat printr-un reper care este, în general, un număr.
Acest număr este unic pentru un graf. Etapa poate fi activă sau inactivă. În reprezentarea grafică, o
etapă activă are un jeton în interiorul său, dacă este vorba de un graf dinamic. O variabilă booleană este
asociată fiecărei etape. Această variabilă este notată de obicei cu litera x, urmată de identificatorul
etapei. Variabila are valoarea 1 (TRUE), dacă etapa este activă şi 0 (FALSE), dacă etapa este inactivă.
De dreptunghiul etapei este legat printr-o linie, unul sau mai multe dreptunghiuri, în care se înscriu
acţiunile asociate etapei. Acţiunile sunt de mai multe feluri, iar acest lucru este specificat tot în
dreptunghi într-un mod care este, în general, specific implementării. Majoritatea implementărilor ale
limbajului, acceptă acţiuni care se execută o singură dată la intrarea sau la ieşirea din etapă. Tot aici se
introduce şi parametrizarea acţiunii, dacă este cazul. De exemplu, dacă acţiunea este întârziată se va
introduce întârzierea.
O etapă poate fi etapă iniţială şi atunci ea este activă la pornirea sistemului pe care este implementat
graful. Etapele care nu sunt iniţiale sunt la început inactive. Etapa iniţială este reprezentă într-un graf
printr-un dreptunghi dublu. Într-un graf pot exista mai multe etape iniţiale.

84
AUTOMATE PROGRAMABILE vol. I

1 Tip Acţiune 1 Tip Acţiune

a. Etapă activă b. Etapă inactivă

1 Tip Acţiune

c. Etapă iniţială

Fig. II.43. Reprezentarea unei etape şi a acţiunii asociate acesteia


Tranziţia este obiectul care separă etapa anterioară (una sau mai multe) de etapa următoare (una sau
mai multe). Acţiunile unei etape pot fi urmate de acţiunile etapei care urmează, dacă tranziţia dintre ele
este parcursă de jeton.
Parcurgerea unei tranziţii este efectuată dacă sunt îndeplinite următoarele condiţii:
Condiția 1. Toate etapele anterioare tranziţiei sunt active.
Condiția 2. Condiţia booleană asociată tranziţiei este adevărată.
Tranziţia este reprezentată printr-o linie orizontală, care traversează legătura verticală dintre etape (fig.
II.44). La dreapta tranziţiei este reprezentată condiţia de parcurgere a tranziţiei, încadrată sau nu într-un
dreptunghi. La stânga tranziţiei este reprezentat numărul asociat tranziţiei, care este un întreg pozitiv,
independent de numărul etapei.

1 Condiţie

Fig. II.44. Reprezentarea unei tranziții


Regulile de bază pentru construirea unui graf sunt următoarele:
Regula 1. Se leagă etapele şi tranziţiile, care trebuie să fie strict alternante, cu ajutorul arcelor orientate
(fig. II.45). Prin convenţie, etapele şi tranziţiile sunt plasate una după alta pe verticală. Arcele orientate
sunt linii simple, dacă legătura este de sus în jos, şi au săgeată pe ele dacă sunt orientate de jos în sus.
Condiție
1 Tip Acţiune 1 Tip Acţiune

Condiție
2 Tip Acţiune

5 Tip Acţiune
Condiție

Fig. II.45. Arce orientate

85
AUTOMATE PROGRAMABILE vol. I

Regula 2. Dacă mai multe etape se leagă la aceeaşi tranziţie, atunci arcele care vin la aceeaşi tranziţie
se regrupează cu ajutorul unei linii orizontale duble, numită convergenţă AND sau sincronizare (fig.
II.46).

4 5

Fig. II.46. Convergenţă AND


Regula 3. Dacă mai multe etape urmează unei tranziţii, atunci se regrupează arcele care duc spre etape
cu ajutorul unei linii orizontale duble, numită divergenţă AND sau sincronizare (fig. II.47).
5

4 5

Fig. II.47. Divergență AND


Regula 4. Dacă mai multe tranziţii sunt legate la o singură etapă, în sensul spre etapă, arcele se
regrupează printr-o linie orizontală simplă, numită convergenţă OR (fig. II.48).
5 6

Fig. II.48. Convergență OR


Regula 5. Dacă mai multe arce sunt legate la o etapă, în sensul de la etapă, acestea se regrupează printr-
o linie orizontală simplă numită divergenţă OR (fig. II.49).

5 6

Fig. II.49. Divergență OR


Regula 6. În afara acestor situaţii de convergenţă şi divergenţă se pot realiza salturi condiţionate (Fig.
II.50) şi bucle (Fig. II.51) etc. Condiția de etape alternante cu tranzițiile trebuie respectată.

86
AUTOMATE PROGRAMABILE vol. I

T1 T2
2

T3
3

T4
4

T5

Fig. II.50. Salt condiționat

11

T1
T1
22

T2
T2
33

T3
T3

T4 44
T4

T5
T5

55

Fig. II.51. Buclă


II.6.3.EVOLUȚIA UNUI GRAF
Evoluţia unui graf este descrisă sub forma a cinci reguli, menţionate şi în standardul IEC:
Regula 1. Starea iniţială. Starea iniţială este reprezentată de etapele care sunt prin definiţie active la
început. Trebuie să existe cel puţin o etapă care să fie iniţial activă. În general, etapele iniţiale sunt
etape de aşteptare a pornirii sistemului de conducere.

87
AUTOMATE PROGRAMABILE vol. I

Regula 2. Validarea și parcurgerea unei tranziţii. O tranziţie poate fi validată, imediat ce toate etapele
care o preced devin active, în caz contrar ea este invalidată. Parcurgerea unei tranziții are loc dacă
tranziția este validată și condiția asociată tranziției este adevărată.

44 55 44 55
T6=1
T6=1
T6
T6 T6
T6
66 66

Fig. II.52. Parcurgerea unei tranziţii


Regula 3. Evoluţia etapelor active. Fazele parcurgerii unei tranziţii sunt ilustrate în fig. II.52.
Parcurgerea unei tranziţii are ca efect activarea tuturor etapelor care urmează tranziţiei şi dezactivarea
tuturor etapelor care preced tranziţia. Dacă condiţia T6 va deveni adevărată va avea loc parcurgerea
celor două tranziţii. Aceasta are ca efect dezactivarea etapelor 4 şi 5 şi activarea etapei 6, 7 și 8.
Regula 4. Evoluţia simultană. Dacă mai multe tranziţii au condiţii de parcurgere, ele sunt parcurse
simultan (fig. II.53).
Parcurgerea unei tranziţii are o durată foarte scurtă, dar diferită de zero. Dacă două tranziţii succesive,
separate de o etapă, au ca condiţia asociată frontul aceleiaşi variabile, atunci sunt necesare două
fronturi pentru a parcurge cele două tranziţii (fig. II.54).

44 55 44 55
T6=1
T6=1
T6
T6 T6
T6 T6
T6 T6
T6

66 77 88 66 77 88

Fig. II.53. Parcurgerea simultană a mai multor tranziţii

88
AUTOMATE PROGRAMABILE vol. I

1 1 1
C1

C1 C1 C1

2 2 2 X1 a

C1 C1 C1
X2 b
3 3 3
X3 c

a. b. c.

Fig. II.54. Durata de parcurgere a unei tranziții


Regula 5. Activarea şi dezactivarea simultană. Dacă în cursul evoluţiei unui graf, o etapă are simultan
condiţii de activare şi dezactivare, atunci aceasta rămâne activă (fig. II.55). Se evită în acest fel apariţia
unor comenzi tranzitorii.

44 5 4 5
T6=1
T6=1
T6
T6 T6
T6
66 6

Fig. II.55. Activarea şi dezactivarea simultană


II.6.4. TIPURI DE ACȚIUNI
Una sau mai multe acţiuni pot fi asociate unei etape. Acțiunile pot fi declanșate la intrarea în etapă, în
timpul etapei sau la ieșirea din etapă. În cele mai multe implementări acțiunile sunt realizate în timpul
etapei. Acţiunile sunt, în general, ieşiri ale sistemului, deci comenzi date părţii operative. Pot fi folosite
pentru a realiza acţiuni şi variabile din memoria internă. Acţiunile sunt de mai multe feluri:
Tipul 1. Acţiuni continue sau nememorate. Sunt acele acţiuni, care sunt active atâta timp cât etapa este
activă. La dezactivarea etapei acţiunea încetează (fig. II.56).

89
AUTOMATE PROGRAMABILE vol. I

x1
1 A1

A1

a.
Step 1
1 1 N A1
N A1

b. c.
.
Fig. II.56. Acțiune continuă
a.Reprezentarea în graful de specificare şi diagrama de timp; b. Reprezentarea în mediul Step7
Manager; c. Reprezentarea în mediul CoDeSys
Tipul 2. Acţiuni memorate, care la rândul lor pot fi: de setare, care realizează setarea unei variabile,
până la execuţia unei acţiuni de resetare asupra aceleiaşi variabile și de resetare, care realizează
resetarea unei variabile (fig. II.57).
x1
1 S A1

x5

A1
5 R A1

a.

Step 1
1 1 R A1
S A1

b. c.

Fig. II.57. Acțiuni memorate


a.Reprezentarea în graful de specificare şi diagrama de timp; b. Reprezentarea unei acţiuni de
setare în mediul Step 7 Manager; c. Reprezentarea unei acţiuni de resetare în mediul CoDeSys.
Tipul 3. Acţiuni retardate. Sunt acele acţiuni, care se execută dacă etapa este activă şi a trecut un timp
T, care reprezintă un parametru al acţiunii. Acţiunea durează atât timp cât etapa este activă. Dacă etapa
este activă un timp mai mic decât timpul T, atunci acţiunea nu se execută (Fig. II.58).

90
AUTOMATE PROGRAMABILE vol. I

T x1

1 D A1
A1

T
a.

Step 1
1 A1 1 D T#2s A1
D
T#2s
b. c.

Fig. II.58. Acțiuni retardate


a. Reprezentarea în graful de specificare şi diagrama de timp; b. Reprezentarea în mediul Step 7
Manager; c. Reprezentarea în mediul CoDeSys
Tipul 4. Acţiuni limitate în timp. Sunt acele acţiuni, care se execută dacă etapa este activă şi durează un
timp T, care reprezintă un parametru al acţiunii. Acţiunea durează apoi atât timp cât etapa este activă.
Dacă etapa este activă un timp mai mic decât timpul T, atunci acţiunea se va executa numai atât timp
cât etapa este activă (II.59).

T x1

1 L A1
A1 T
a.

Step 1
1 A1 1 L T#2s A1
L
T#2s
b. c.

Fig. II.59. Acțiuni limitate în timp


a. Reprezentarea în graful de specificare şi diagrama de timp; b. Reprezentarea în mediul Step 7 Mana-
ger; c. Reprezentarea în mediul CoDeSys
Tipul 5. Acţiunile de tip impuls. Sunt acele acţiuni, care se execută o singură dată la activarea etapei,
sub forma unui puls care durează un ciclu. Nu toate mediile de programare acceptă astfel de acţiuni. În
fig. II.60 este reprezentată o astfel de acţiune în meiul CoDeSys.

x1
1 P A1
A1
TC

Fig. II.60. Acțiuni în impuls în mediul CoDeSys


91
AUTOMATE PROGRAMABILE vol. I

Tipul 6. Acţiunile la intrarea/ieşirea din etapă. Sunt acele acţiuni, care se execută o singură dată sub
forma unui impuls de durata unui ciclu, la intrarea/ieşirea dintr-o etapă. În mediul CoDeSys, acţiunile
la intrarea sau ieşirea dintr-o etapă se editează în ferestre diferite. În cazul fig. II.61c, acţiunea A1 este
o acţiune nememorată, acţiunea la intrare sau la ieşire nu este reprezentată.

1 A1 1 A1

a.

Step 1 Step 1
1 1
S1 A1 S0 A1

b.

1 N A1 1 N A1
E X

c.

Fig. II.61. Acțiuni la intrarea/ieșirea dintr-o etapă


a. Reprezentarea în graful de specificare; b. Reprezentarea în mediul Step 7 Manager;
c. Reprezentarea în mediul CoDeSys
În afara acestor acţiuni unele firme (de exemplu firma ABB) utilizează acţiuni memorate şi retardate,
acţiuni retardate şi memorate şi acţiuni declanşate de evenimente.
O acţiune memorată şi retardată este executată după un anumit timp de la activarea etapei şi rămâne
activă până la resetare. Acţiunea de setare are loc chiar dacă etapa a devenit în acest timp inactivă.
Acţiunea retardată şi memorată se execută după un anumit timp de la activarea etapei, dacă etapa
rămâne activă şi rămâne activă până la resetare.
O acţiune declanşată de un eveniment va deveni activă numai dacă evenimentul respectiv a apărut.
II.6.5. TEMPORIZARI ASOCIATE UNEI ETAPE
În multe cazuri ale automatizărilor secvenţiale, parcurgerea unei tranziţii trebuie să se realizeze după un
timp T de la activarea etapei anterioare tranziţiei. În aceste cazuri, la activarea etapei se porneşte un
temporizator de tip TON, iar condiţia de parcurgere a tranziţiei se exprimă în funcţie de ieşirea binară a
acestuia. Reprezentarea acestei situaţii este arătată în fig. II.62.

92
AUTOMATE PROGRAMABILE vol. I

1 t/1/2s
a.

1 1

Cmp 1 Step1.t>2s
Step1.T >
T#2s

b. c.

Fig. II.62. Reprezentarea temporizărilor asociate unei etape


a.Într-un graf de specificare; b. În Step7 Manager; c. În CoDeSys
Pentru mediile de programare Step7 Manager şi CoDeSys se pot realiza codiţii de parcurgere a
tranziţiilor mai complexe datorită utilizării diferitelor comparatoare sau expresii logice.
II.6.6. MACRO-ETAPE (SUBPROGRAME)
O macro-etapă este o reprezentare unică a unui ansamblu unic de etape şi tranziţii. Scopul utilizării
macro-etapelor este realizarea de programe mai uşor de documentat.
O macro-etapă, conform recomandărilor IEC 1131, trebuie să respecte următoarele reguli:
Regula 1. O macro-etapă are o etapă particulară (una singură) numită etapă de intrare şi o etapă
particulară (una singură) numită etapă de ieşire.
Regula 2. Etapa de intrare are proprietatea că este activată de către parcurgerea tranziţiei anterioare
macro-etapei.
Regula 3. Numărul etapei de intrare este acelaşi cu numărul macro-etapei.
Regula 4. Etapa de ieşire are proprietatea că participă la validarea tranziţiei care urmează după macro-
etapă.
Regula 5. În afară de tranziţiile din amonte şi din aval nu există nici o legătură structurală între macro-
etapă şi restul grafului.
O macro-etapă poate fi apelată de mai multe ori în cadrul unui graf, la fel cu apelul unei proceduri din
limbajele de programare. La activarea unei macro-etape se activează etapa de intrare şi evoluţia
grafului continuă după regulile de evoluţie până la atingerea etapei de ieşire.
Reprezentarea unei macro-etape se face prin dublarea laturilor de sus şi de jos ale reprezentării unei
etape (fig. II.63).

93
AUTOMATE PROGRAMABILE vol. I

20 A20

C5
3 A3
6 A6
3 C3
C6
20
7 A7
4 C4
C7

8 A7

Fig. II.63. Macro-etapă


În mediul de programare Step7 Manager se poate apela o procedură scrisă în limbaj SFC, prin
intermediul unei acţiuni de tip CALL. Graful care reprezintă procedura este realizat după regulile din
Step7 GRAPH, având etapă iniţială. Nu există restricţii în ceea ce priveşte numele etapelor. Regulile de
evoluţie sunt în graf sunt aplicate atât timp cât etapa şi acţiunea este activă.
În mediul de programare CoDeSys se poate apela o procedură scrisă în limbaj SFC dacă se defineşte ca
o acţiune în limbajul SFC, care se ataşează unui POU definit în acelaşi limbaj, prin selectarea unităţii
de program la care se ataşează macro-etapa şi apoi selecţia Project→Add Action. Există restricţii în
ceea ce priveşte numele etapelor, nefiind permise acelaşi numere de etapă ca în graful care apelează
procedura. Regulile de evoluţie sunt în graf sunt aplicate atât timp cât etapa şi acţiunea este activă.
II.6.7. INSTRUCȚIUNI PERMANENTE
Unele medii de programare permit introducerea unor instrucțiuni permanente. Instrucțiunile
permanente sunt executate o dată la fiecare ciclu, indiferent de etapa în care se găsește graful.
În cadrul instrucțiunilor permanente se pot programa:
 Calculul unor variabile de proces achiziționate în mai multe puncte.
 Achiziționarea și procesarea evenimentelor la care sistemul trebuie să reacționeze, indiferent de
etapă.
Acțiunile permanente se pot executa la începutul sau sfârșitul unui ciclu
II.6.8. REGULI FORMALE DE DESCRIERE A UNUI GRAF)
Regulile de evoluţie a unui graf pot fi prezentate formal introducând funcţiile de parcurgere a
tranziţiilor, de activare şi dezactivare a etapelor. Dacă se notează cu xi variabila asociată etapei i,
regulile formale au forma de mai jos.
Regula 1. Funcţia de parcurgere a unei tranziţii se poate exprima prin relaţia:
f i  Ci x ,
j
j (II.1)

94
AUTOMATE PROGRAMABILE vol. I

unde:
C i este condiţia logică ataşată tranziţiei;

xi – variabilele logice ataşate etapelor care preced tranziţia.


Regula 2. Condiţia de activare a unei etape are forma:
Ai   f j , (II.2)
j

unde:
f j sunt funcţiile de parcurgere a tranziţiilor anterioare etapei.

Regula 3. Condiţia de dezactivare a unei etape are forma:


Di  f ,
j
j (II.3)

unde:
f j sunt funcţiile de parcurgere a tranziţiilor care urmează etapei.

Regula 4. După parcurgerea tranziţiilor, valorile asociate etapelor se calculează cu relaţia:

xi  Ai  D i xi , (II.4)
unde egalitatea are sens de atribuire.
Relaţia de mai sus arată că variabila logică asociată unei etape va fi TRUE dacă există condiţii de
activare sau dacă nu există condiţii de dezactivare şi valoarea anterioară a fost TRUE. Ea poate fi
demonstrată, dar interpretarea ei intuitivă este mai relevantă.
Relaţiile de mai sus sunt folosite, așa cum vom vedea mai jos, pentru proiectarea programelor de
automatizare, în cazul în care firma producătoare nu pune la dispoziţie un editor şi compilator pentru
limbajul SFC sau acest program este prea scump.
II.6.9. ANALIZA CORECTITUNII UNUI GRAF
Grafurile de implementare sunt de fapt, aşa cum am precizat mai sus, un limbaj grafic. Analiza
corectitudinii unui astfel de graf este realizată de compilator. De fapt marea majoritate a mediilor de
programare nu permit efectuarea unor greşeli, în sensul că bara de unelte nu permite înserarea
elementelor incorecte într-un graf, de exemplu două tranziţii sau etape succesive. Utilizarea unor intrări
ca acţiuni nu este, în general, verificată.
Pentru analiza corectitudinii unui graf de specificare se descompune acest graf în elemente de bază:
etape şi tranziţii. Etapele şi tranziţiile sunt elemente generale care au intrări şi ieşiri (fig. II. 64).

95
AUTOMATE PROGRAMABILE vol. I

Intrări Intrări

1 1

Ieşiri Ieşiri

Fig. II.64. Reprezentarea unei etape și a unei tranziții pentru analiza unui graf
După descompunerea în elemente de bază se va verifica:
Verificarea 1. Alternanţa etape-tranziţii să fie respectată.
Verificarea 2. Acţiunile unui graf trebuie să fie variabile de ieşire sau interne.
Verificarea 3. Funcţiile de parcurgere a tranziţiilor trebuie să fie funcţii booleene.
Verificarea 4. Fiecare element (etapă sau tranziţie) să fie corect reprezentat. Reprezentarea corectă
înseamnă că, toate ieşirile unui element (etapă sau tranziţie) trebuie legate la intrările elementului de alt
tip (tranziţie sau etapă)

3 4

2 3 4 2

5 5

a. b.

Fig. II.65. Reprezentarea corectă (a și incorectă (b) a unui graf pentru analiză
II.6.10. TESTAREA PROGRAMELOR SCRISE ÎN SFC
Pentru testarea programelor scrise în SFC sunt prevăzute în mediile de programare facilităţi speciale.
Depinzând de mediu, sunt prevăzute următoarele facilităţi:
1. Setarea/resetarea parcurgerii tranziţiilor pentru a bloca trecerea la etapa următoare.
2. Activarea unei etape pentru a începe execuţia de la o anumită etapă.
3. Blocarea unor etape pentru a preveni activarea lor.

96
AUTOMATE PROGRAMABILE vol. I

4 Citirea şi modificarea unor date relevante pentru un graf, de exemplu flagurile pentru paşi sau
temporizatoarele asociate unor etape.
Cele mai multe compilatoare de limbaj SFC dispun de simulatoare unde există posibilităţi de
modificare pentru orice variabilă.
II.6.11. STUDII DE CAZ
Vom prezenta în continuare studii de caz pentru mai multe automatizări sub forma unor grafuri de
specificare. Aceste grafuri pot folosi celor interesați de a construi programe de automatizare folosind,
fie limbajul SFC, fie alte metode de transformare a unui graf de specificare într-un program în limbajul
LAD sau FBD.
Studiul 1. Automatizarea umplerii bidoanelor de ulei.
O bandă de umplere a bidoanelor cu ulei are mai multe poziţii unde pot fi plasate bidoane (fig. II:66).
Banda este alimentată manual în postul 1. Un traductor PB detectează prezenţa unui bidon în poziţia de
alimentare. De-a lungul benzii se află trei posturi active, în poziţiile 4, 5 şi 6 realizând operaţiile de: U
(Umplere), A (Astupare) şi AM (Ambutisare). Timpii pentru efectuarea celor trei operaţii sunt
respectiv TU, TA şi TAM. Banda este antrenată de motorul electric M, alimentat prin intermediul
contactorului K. Ea se deplasează sacadat, oprindu-se atunci când un traductor AV este apăsat de către
o camă C, realizându-se un avans egal cu distanţa dintre două posturi de lucru.
Se poate întâmpla ca, din când în când, alimentarea manuală să nu se realizeze, aşa că din unele locuri
pot lipsi bidoane. Se construiască graful de specificare a automatizării instalaţiei astfel încât efectuarea
celor trei operaţii să se facă simultan, cu excepţia cazului în care nu există bidon în dreptul postului de
lucru. Condiţiile iniţiale presupun că banda este goală la pornirea sistemului.

U A AM

1 2 3 4 5 6 7
PB

AV
M
K BP

Fig. II.66. Sistemul de umplere a bidoanelor cu ulei


Pentru întocmirea grafului automatizării s-a apelat la o modelare paralelă (fig. II.67). Primul graf
descrie evoluţia bidoanelor pe bandă şi este alcătuit astfel încât dacă o etapă i este activă înseamnă că
există un bidon în poziţia i. Tranziţia 1 are condiţia de parcurgere exprimată ca o conjuncţie între
frontul crescător al semnalului AV şi semnalul PB. Dacă această condiţie este adevărată se activează
etapa 2. Mai departe jetonul curge în etapele următoare dacă apare un front pozitiv al semnalului AV.
Se realizează urmărirea prin intermediul jetonului a fiecărui bidon încărcat pe bandă.
97
AUTOMATE PROGRAMABILE vol. I

Al doilea graf realizează comanda posturilor de lucru şi a motorului de avans al benzii. În etapele
simultane 7, 9 şi 11 se realizează operaţiile din postul respectiv, adică umplerea, astuparea şi
ambutisarea. Acţiunile din aceste etape sunt acţiuni condiţionate de prezenţa unui bidon în post.
Acest lucru este testat prin condiţia ca etapele corespunzătoare din primul graf să fie active. În cazul în
care nu este bidon în post sau s-a scurs timpul pentru efectuarea operaţiei se trece în etapele 8, 10 sau
12 în care se realizează sincronizarea. După ce toate operaţiile s-au terminat se realizează pornirea
motorului M de avans al benzii. Butonul de pornire BP este un buton cu auto-reţinere.

1 ↑AV PB ↑AV

2 ↑AV x4 x5 x6
3 7 C U 9 C A 11 C AM

3 ↑AV 7 x 4  TU 8 x 5  TA 9 x 6  TAM

4 8 10 12

4 ↑AV
BP
5
13 K
5 ↑AV
AV
6

6 ↑AV

Fig. II.67 Graful de specificare al automatizării sistemului de umplere bidoane


Studiul 2. Automatizarea unei linii de evacuare a produselor dintr-o secţie.
O navetă (N) transportă pe o bandă rulantă (BR) unul din produsele de dimensiuni mari fabricate pe trei
linii de fabricaţie independente (L1, L2 şi L3), spre o bandă de evacuare (BE) (Fig. II.68). Naveta la
rândul ei are, în interior, o bandă transportoare, pentru încărcarea şi evacuarea pieselor. Fiecare din cele
trei benzi ale liniilor de fabricaţie este acţionată de un motor electric, comandat de un contactor M i
(i=1, 2, 3), care asigură deplasarea într-un singur sens şi este prevăzută cu un traductor inductiv SLi
(i=1, 2, 3), care sesizează prezenţa unei piese la capătul benzii. Cele patru poziţii ale navetei: în dreptul
liniilor de fabricaţie şi al benzii de evacuare sunt sesizate cu ajutorul unor traductoare de poziţie S1, S2,
S3 şi SE . Banda BR este acţionată de un motor electric care poate fi comandat în ambele sensuri prin
98
AUTOMATE PROGRAMABILE vol. I

intermediul contactoarelor MD şi MS. Banda din interiorul navetei este acţionată de un motor electric,
care asigură deplasarea într-un singur sens comandat de contactorul MN, pentru a realiza încărcarea
respectiv evacuarea pieselor. Pe navetă se află un senzor de poziţie S N, care sesizează dacă în navetă a
fost încărcată o piesă. Banda de evacuare este acţionată de un motor electric, care asigură deplasarea
într-un singur sens, comandat de un contactor MBE.

L1 L2 L3

M1 M2 M3

SE
SL1 SL2 SL3
N
MN
BR
SN
BR
S1 S2 S3
SBE
MS MD

BP

BE

Fig. II.68. Linie de evacuare piese dintr-o secţie


Deplasarea benzii de evacuare are loc un timp T=10 s, măsurat din momentul în care ajunge o piesă pe
aceasta. La capătul dinspre BR a BE se găseşte un traductor de poziţie SBE, care sesizează că pe banda
de evacuare s-a încărcat o piesă. La pornire, naveta se află în dreptul benzii de evacuare şi în ea nu se
găseşte nici o piesă. Sistemul porneşte la apăsarea unui buton de pornire BP.
Să se realizeze graful pentru conducerea sistemului descris mai sus şi să se analizeze modul de a acorda
priorităţi liniilor de fabricaţie, în cazul în care sosesc simultan piese pe acestea. Graful de specificare al
acestei automatizări este prezentat în fig. II.69. El are cinci grafuri paralele: unul pentru asigurarea
acţiunilor de deplasare a BR şi de încărcare/descărcare a navetei, iar celelalte patru pentru acţiunile de
deplasare a celor trei benzi de încărcare şi a benzii de evacuare. Dacă se acordă, în caz de conflict,
prioritatea cea mai mare liniei celei mai îndepărtate atunci condiţiile C1 , C2 şi C3 se exprimă cu
relaţiile:
C1  S L1 ;
C 2  S L1  S L 2 ;
C3  S L1  S L 2 .S L3 .

99
AUTOMATE PROGRAMABILE vol. I

Pentru a acorda priorităţi rotitoare, condiţiile C1 , C 2 şi C3 s e exprimă cu relaţiile:

C1  S L1 ( x19  x 20  S L 2  S L3  x21  S L3 );
C 2  S L 2 ( x20  x 21  S L3  S L1  x19  S L1 );
C3  S L3 ( x21  x19  S L1  S L 2  x20  S L 2 ).
unde x19 , x20 şi x21 sunt etape în graful de priorităţi din fig. II.70.
1

1 BP SE SN

2 C1 7 C2 10 C3

3 MS 7 MS 9 MS

3 S1 8 S1 11 S1
M1 M2 M3
4 8 10
MBE MBE MBE
4 SN 9 SN 12 SN

5 MD 11 M1 13 M2

5 SE 13 SL1 15 SL2
6 MBE 12 14

6 SBE 14 SL1 16 SL2


1 11 13
15 M1 17

17 SL3 19 SBE

16 18 MBE

18 SL3 20 t/18/10s

15 17

Fig. II.69. Graful de specificare al automatizării


Conform relaţiilor iniţial se acordă prioritatea cea mai mare liniei 1, în cazul sosirii simultane a pieselor
pe cele trei linii. Dacă este servită această linie în graful priorităţilor se trece în etapa 20, ceea ce
conduce la schimbarea priorităţii. Acum dacă sosesc simultan pe cele trei linii piese va fi servită linia 2.
După această servire se trece în etapa 21 şi prioritatea cea mai mare o va avea linia 3. După servirea
liniei 3 se revine la situaţia iniţială ş.a.m.d.

100
AUTOMATE PROGRAMABILE vol. I

19

19 x3

20

20 x7

21

21 x9

19

Fig. II.70. Graful priorităţilor pentru sistemul de evacuare a pieselor


Studiul 3. Automatizarea unei linii de transport cutii de conserve.
Pe o bandă se transportă cutii de conserve, care se succed la o distanţă foarte mică (fig. II.71). Ele sunt
deja închise şi urmează să se stabilească dacă au fost complet umplute. Verificarea gradului de umplere
se realizează cu o sursă de raze gamma, al cărei receptor trimite un semnal S 2 (semnal unu logic când
cutia nu este plină). Măsurătoarea are loc atunci când o cutie închide contactul S 1, montat în aceeaşi
poziţie (semnal logic unu la închiderea contactului). Pentru eliminarea unei cutii insuficient umplute
trebuie acţionat distribuitorul electropneumatic cu arc, care este montat la distanţă de trei cutii de
punctul de măsură. Acţionarea se face prin alimentarea bobinei Y, care va fi menţinută până la
atingerea traductorului de proximitate S3. Acţionarea benzii nu este obiectivul acestei automatizări.

1
S3 Y

 2 3 4

S2
S1

Fig. II.71. Bandă de transport cutii de conservă


Să se realizeze graful pentru conducerea sistemului descris mai sus şi să se analizeze modul în care se
acționează pistonul pentru eliminarea cutiei care nu este plină. Graful acestei automatizări este
prezentat în fig. II.72.
Graful din partea stângă realizează memorarea prin variabilele asociate etapelor a apariţiei simultane a
frontului semnalului de la traductorul de prezenţă cutie şi a semnalului de cutie insuficient umplută.
Dacă ambele semnale sunt unu atunci un jeton va trece în etapa următoare şi se va propaga la fiecare
front crescător al semnalului de la traductorul de prezenţă cutie spre etapa 4. Dacă în etapa 4 va apare
101
AUTOMATE PROGRAMABILE vol. I

un jeton însemnă că în dreptul sistemului de eliminare al cutiei defecte a ajuns o cutie care trebuie
eliminată şi ca urmare sistemul va acţiona bobina distribuitorului pentru eliminarea cutiei. Acest lucru
este realizat în graful din partea dreaptă. Implementarea pentru un automat dat depinde de modul în
care este rezolvată problema prezenţei mai multor etape iniţiale în acelaşi garf. Dacă este vorba de S7
GRAF cele două grafuri sunt implementate în funcții separate. Dacă acest lucru nu este permis atunci se
vor implementa cele două grafuri în taskuri diferite cu aceeaşi prioritate, cum este cazul mediului
CoDeSys. În mediul ISaGRAPH graful de implementare nu diferă de cel de specificare.

1 5

6 ↑x4
1 ↑S1 S2 2 ↑S1
6 Y
2 1
7 S3
3 ↑S1
5
3

4 ↑S1

5 ↑S1

Fig. II.72. Graful de specificare al automatizării.


Studiul 4. Automatizarea unei linii de distribuire de tablete.
În figura II.73 este prezentată o instalaţie pentru distribuirea tabletelor. Aceasta trebuie sa controleze
umplerea mai multor eprubete cu tablete dintr-o magazie. Procesul este pornit cu ajutorul comutatorului
C cu două poziţii (unu logic pentru pornit şi zero logic pentru oprit). Eprubetele sunt transportate cu
ajutorul unei benzi antrenată cu motorul M, care este comandat de către contactorul K. Motorul va fi
oprit când o eprubetă ajunge în dreptul traductorului S1 iar apoi electrovalva Y va deschide magazia
pentru ca tabletele sa poată să cadă în eprubeta respectivă. Numărarea tabletelor se face cu ajutorul
barierei luminoase LI iar când s-a atins numărul stabilit, electrovalva Y se închide şi banda reporneşte.
Acest proces se va repeta apoi continuu. Dacă se alege un nou număr de tablete atunci procesul actual
de umplere se va încheia cu vechiul număr de tablete. La oprirea instalaţiei trebuie mai întâi încheiat
procesul actual de umplere înainte ca toate elementele sa fie oprite.
Numărul de tablete se va alege cu ajutorul a trei butoane S 2,S3 şi S4 care reprezintă trei, cinci respectiv
şapte tablete. În dreptul butoanelor sunt trei leduri (H1,H2 respectiv H3) care indică numărul actual de
tablete ales.

102
AUTOMATE PROGRAMABILE vol. I

H1 H2 H3

3 5 7

S 2 S3 S 4
Y
Pornit
LI R E C Oprit

Bandă
S1 K
M

Fig. 4.73. Instalaţie de distribuire tablete


Graful de specificare este prezentat în fig. II.74.
Graful de sus conduce motorul benzii şi electrovalva, iar graful de jos este folosit pentru aprinderea
lămpilor şi setarea valorii prescrise pentru intrarea contorului. Se va folosi un singur contor de tip CU a
cărui valoare prescrisă este luată dintr-o zonă de memorie, care este încărcată diferit, cu valorile
corespunzătoare în etapele 5, 6 sau 7. Valoarea binară de ieşire a contorului este QU.
Ca şi mai sus implementarea pentru un automat dat depinde de modul în care este rezolvată problema
prezenţei mai multor etape iniţiale în acelaşi garf. Dacă este vorba de S7 GRAF cele două grafuri sunt
implementate în rutine separate. Dacă acest lucru nu este permis atunci se vor implementa cele două
grafuri în taskuri diferite cu aceeaşi prioritate, cum este cazul mediului CoDeSys. În mediul
ISaGRAPH atunci graful de implementare nu diferă de cel de specificare.

103
AUTOMATE PROGRAMABILE vol. I

1 C (x5+x6+x7)

2 K

2 ↑S1

3 Y

3 QU

1
4

4 QU C S2 6 QU C S3 8 QU C S4

5 H1 6 H2 7 H3

5 C+S3+S3 7 C+S2+S4 9 C+S2+S3

4 4 4

Fig. II.74. Graful de specificare al sistemului de testat cutii de conservă

104
AUTOMATE PROGRAMABILE vol. I

Studiul 5. Automatizarea unei instalații de fabricare de masă plastică.


Pentru fabricarea masei plastice se amestecă într-un cazan, la o anumită temperatură materia primă cu o
substanţă suplimentară (fig. II.75).
A1
materie
primă condensator
TN1
magazie
A2 H1
apa +- TT1
A3 K
substanța TN2
M
suplimentară
A4
TV -+
cazan

H2 TT2
+-

TN3
BP BO
A5

produs final

Fig. II.75. Instalație de fabricat masă plastică


După apăsarea butonului de start BP, se umple magazia cu materia primă prin deschiderea electrovalvei
A1. Când traductorul de nivel TN1 semnalează umplerea magaziei, electrovalva A1 se închide şi materia
primă din magazie este golită în cazan prin deschiderea electrovalvei A4. După ce magazia s-a golit,
fapt semnalat de traductorul de nivel TN2, ea este umplută din nou cu materia primă şi simultan se
porneşte amestecătorul din cazan prin intermediul motorului M, comandat de contactorul K. După ce
magazia s-a umplut, se porneşte încălzitorul H1. După scurgerea a zece secunde de la pornirea
amestecătorului se deschid electrovalva A2 a condensatorului alimentat cu apă de răcire şi electrovalva
A3 prin intermediul căreia se introduce substanţa suplimentară în cazan. Când traductorul de volum TV
semnalează amestecul optim în cazan, se închide electrovalva A3 şi se porneşte încălzitorul H2. Când
traductorul de temperatură TT1 indică atingerea temperaturii prescrise in magazie, se opreşte
încălzitorul H1. Similar se va opri încălzitorul H2 al cazanului când traductorul TT2 indică atingerea
temperaturii prescrise în cazan. După ce ambele încălzitoare au fost oprite, se goleşte materia primă din
magazie în cazan. După golirea completă, amestecarea mai continuă timp de douăzeci de secunde.
Apoi amestecătorul este oprit şi electrovalva A2 închisă, iar produsul final este evacuat din cazan prin
deschiderea electrovalvei A5 până când traductorul de nivel TN3 semnalează golirea completă a
cazanului. Dacă pe parcursul acestor operaţii s-a apăsat butonul de oprire BO instalaţia este oprită iar
dacă nu, întreg procesul este reluat. Iniţial magazia şi cazanul sunt goale. Traductoarele de nivel,
temperatură şi volum dau semnale binare.

105
AUTOMATE PROGRAMABILE vol. I

K
14 1 11 A2
A4
13 BP BO 1 x15 10 TN2

12 K
15 2 A1 A2

14 BO 2 TN1 11 t/12/20s

3 A4 13 A5
14
3 TN2 12 TN3

1
4 A1 7 K

4 TN1 6 t/6/10s
K
5 H1 8 A2
A3
5 TT1 7 TV
K
6 9 A2
H2
8 TT2

10 K
A2

9 TRUE

11

Fig. II.76. Graful sistemului de fabricare de masă plastică


Graful de specificare este prezentat în fig. II.76. Se remarcă faptul că la un moment dat trebuie
desfăşurate mai multe activităţi în paralel şi acest lucru este rezolvat prin deschiderea unor ramuri
paralele. Graful alcătuit din etapele 14 şi 15 este folosit pentru pornirea/oprirea grafului principal cu
ajutorul a două butoane: BP, de pornire şi BO de oprire. Aceleaşi consideraţii ca mai sus asupra
implementării grefurilor pe diferite tipuri de automate. Saltul la etapa 11 a fost implementat pentru
compactarea figurii. El poate fi continuat fără salt.

106
AUTOMATE PROGRAMABILE vol. I

Studiul 6. Automatizarea unei instalații de încărcare de vagoane.


În figura II.77 este prezentată o instalaţie de încărcare a vagoanelor cu material provenit dintr-un siloz.
Cu ajutorul unui melc de exploatare se descarcă dintr-un siloz materialul, care cade pe o bandă de
transport. Melcul este antrenat de motorul M2, care este comandat de contactorul K2, iar banda este
antrenată de motorul M1, care este comandat de contactorul K1.
Cu ajutorul benzii materialul este transportat până la un vagon, care este plasat pe un cântar. Senzorul
S2 al cântarului va furniza semnal logic unu când vagonul este plin.
Instalaţia este pusă în funcţiune cu ajutorul unui buton de pornire BP, dar numai dacă vagonul este
poziţionat corect, fapt semnalat de traductorul S1. Pentru a nu se aduna material pe bandă este necesar
ca aceasta sa meargă timp de trei secunde înainte de a fi pornit melcul de exploatare. Melcul va fi oprit,
dacă senzorul cântarului semnalează umplerea vagonului, dacă vagonul nu mai este in poziţia corectă
sau dacă se apasă butonul de oprire BO. După ce melcul s-a oprit este necesar ca banda să mai meargă
încă cinci secunde pentru a se goli complet. Un nou proces de umplere poate fi pornit prin apăsarea lui
BP.
K2
M2

BP BO
Melc de exploatare

K1 Bandă de transport
S1 Cântar
M1

S2

Fig. II.77. Instalație de încărcare a vagoanelor


Graful de specificare al instalației de încărcare a vagoanelor este prezentat în fig. II.78.
După apăsarea butonului de pornire, dacă vagonul se află în poziție se pornește banda. După 3 s se
pornește și melcul de exploatare. Aceste acțiuni rămân, până se apasă butonul de oprire al instalației
sau cântarul arată că vagonul are greutatea necesară pentru a fi considerat încărcat. După ce una din
aceste condiții sunt îndeplinite, motorul benzii va mai funcționa timp de 5 s pentru ca banda de
transport să se golească.

107
AUTOMATE PROGRAMABILE vol. I

1 BP S1

2 K1

2 t/2/3 s
K1
3
K2

3 BO+S2

4 K1

4 t/4/5 s

Fig. II.78. Graful de specificare al instalației de încărcare a vagoanelor


Studiul 7. Automatizarea unei instalații de curățire tehnologică.
Instalaţia de curăţire a cărei schemă tehnologică este prezentată în fig. II.79 constă dintr-un cilindru
hidraulic, care ridică şi coboară un coş cu piese care urmează să fie curăţate prin scufundarea într-o
baie de curăţire. Cilindrul hidraulic este comandat prin intermediul unui distribuitor elector-hidraulic
4/2, comandat de bobinele Y1 (pentru coborâre) şi Y2 (pentru ridicare). Controlul poziţiei cilindrului se
realizează cu ajutorul a două limitatoare de cap de cursă L1 şi L2. Ciclul de curăţire cuprinde trei
coborâri şi ridicări. La fiecare coborâre piesele rămân scufundate în baie timp de 5 s. Iniţial cilindrul se
află în starea ridicat. Prin apăsarea unui buton B1 va fi pornit ciclul de curăţire şi o lampă H1 va fi
aprinsă pe toată durata execuţiei ciclului.
B1 H1
Y1
P2

L1

Y2
L2

h
5s

Fig. II.79. Instalaţie de curăţire piese

108
AUTOMATE PROGRAMABILE vol. I

1 R H1

1 B1
Y1
2
S H1
2 L2

3 Y1

3 t/3/5 s
Y2
4
VAL_C

4 C  L2 5 C L2

1 2

Fig. II.80. Graful instalaţiei de curăţire piese


Graful de specificare a sistemului de curăţire este prezentat în fig. II.80. Oprirea programului este
condiţionată de atingerea unui număr de 3 scufundări, care este sesizat de mărimea de ieşire a unui
contor C, care numără la fiecare front crescător al variabilei Cont. Contorul este de tip CTU şi este
presetat cu valoarea 3. În etapa 4 se validează contorul CTU și în funcție de ieșirea acestuia se reia sau
nu procesul de scufundare.
Studiul 8. Conducerea unei centrale termice de apartament.
Arzătorul unei instalaţii de încălzire, prezentată în fig. II.81, este format dintr-un motor M, ce
acţionează pompele de combustibil C şi de aer A. Un ventil electromagnetic V controlat de semnalul
Y1, deschide conducta de combustibil. Aprinderea combustibilului se realizează cu ajutorul unei scântei
generate în faţa duzei D, între doi electrozi E, din care unul este pus la pământ, iar celălalt este
alimentat de la un transformator de înaltă tensiune T, care este conectat la reţea de contactorul Y2.
Sistemul trebuie să pună în funcţiune motorul atunci când termostatul S2 arată că temperatura agentului
termic a scăzut sub o anumită valoare. În acest caz, după un timp de 3 s, necesar pre-umplerii, se
deschide ventilul electromagnetic şi concomitent se realizează şi aprinderea. Generarea scânteii este
oprită imediat ce un detector de flacără emite semnalul S1, care indică aprinderea combustibilului. Dacă
nu se generează scânteia, după 10 s, se semnalizează această avarie prin aprinderea unei lămpi L şi se
opreşte motorul M. Când se atinge temperatura reglată, pompa de combustibil şi ventilatorul vor fi
oprite. După ce s-a atins starea de avarie, instalaţia va putea fi pornită numai prin apăsarea unui buton
S3, care este un buton de deblocare. Dacă flacăra se stinge în timpul funcţionării, aprinderea va trebui
să se realizeze în mod automat.

109
AUTOMATE PROGRAMABILE vol. I

S2 t
S3 LA LC

Y2
Mixer
M

Y1
Gaz E
C
V
Aer S1
A

Fig. II.81. Schema tehnologică a instalaţiei de încălzire


Graful de specificare pentru sistemului de conducere este prezentat în fig. II.82. În elipsă este o etapă și
o tranziție suplimentară, necesare pentru transformarea grafului în program cu o metodă care va fi
analizată în volumul II

1 S2

2 M

2 t/2/3s
M
3 Y1
Y2
3 S1 6 t/3/10s
M L
4 Y1 5

S1 54 S2 7 S3
3 1 1

6 M

8 t/6/0.1s

Fig. II.82. Graful instalaţiei de încălzire


110
AUTOMATE PROGRAMABILE vol. I

Studiul 9. Instalație de selectare a pieselor de diferite lungimi de pe o bandă


Pe o bandă transportoare se aduc, în ordine aleatoare, piese de două dimensiuni: scurte şi lungi. Pentru
selecţie se utilizează un macaz a cărui schemă tehnologică este prezentată în fig. II.83. Macazul trebuie
comandat astfel încât cele două tipuri de piese să fie depozitate în locuri diferite. Lungimea pieselor va
fi determinată prin intermediul a două traductoare S1 şi S2. Dacă piesa este lungă şi traversează zona
celor două traductoare, acestea vor da simultan un semnal. Dacă piesa este scurtă şi traversează zona
atunci numai traductorul S2 va da un semnal. Macazul este acţionat prin intermediul unui piston
pneumatic, care, prin intermediul unui distribuitor îl va poziţiona pe acesta în poziţia A sau în poziţia
B.

S1 S2
A
Piese lungi

Pi
Y

es
e
sc
ur
te
Fig. II.83. Schema tehnologică pentru instalaţia de sortare a pieselor
Graful de specificare al instalației este prezentat în fig. II.84. Se vede că atunci când ambele traductoare
dau semnal, este vorba de o piesă lungă și distribuitorul pneumatic trebuie acționat.

1 S1

2 S1  S 2 4 S1  S2

3 Y 4

3 T1 5 T1

1 1

Fig. II.84. Graful de specificare pentru studiul 9

111
AUTOMATE PROGRAMABILE vol. I

Studiul 10. Comanda unui semafor de pe un drum național aflat în reparație


Din cauza unor lucrări de reparaţie, circulaţia pe un drum naţional trebuie realizată, pe o anumită
porţiune, pe un singur sens (fig. II.85). Deoarece traficul este mare trebuie instalat, la ambele capete, un
semafor, care funcţionează astfel: la pornire semafoarele de la ambele capete vor avea lumină roşie.
Dacă senzorul de prezenţă vehicul de la unul din capete devine activ ca urmare a sosirii unui vehicul,
lumina de la capătul respectiv va trece în verde, după 5s. Semnalul verde va dura 30s, după care, dacă
nu este activ nici un senzor, lumina de la ambele capete va rămâne în aceeaşi poziţie.

START H4
S0 STOP H2
I2

I1 H3
H1

Fig. II.85 Semafor pe un drum naţional în reparaţie


: Graful de specificare a automatizării este prezentat în fig. II.86.
1

1 S0
H3
2
H4

2 I1 7 I1  I2
H3 H3
3 6
H4 H4
3 t/3/5s 8 t/6/5s
H1 H2
4 7
H4 H3
4 t/4/30s 9 t/7/30s
H1 H2
5 8
H4 H3
I2  S0 6 5 S0 S0 I1  S0
10 11
6 1 1 3

Fig. II.86. Graful de specificare pentru semafoare

112
AUTOMATE PROGRAMABILE vol. I

Graful are două ramuri, corespunzătoare controlului lămpilor celor două semafoare, când un vehicul
soseşte la un capăt sau la celălalt capăt. Dacă sosesc în acelaşi timp vehicule pe ambele sensuri, trebuie
realizată o protecţie în sensul că se va prevedea o tratare cu prioritate a unui sens. Acest lucru se
realizează introducând la tranziţia 2 sau 7 o condiţie care să cuprindă conjuncţia cu valoarea negată de
la celălalt capăt. În acest fel sensul respectiv va fi tratat, la început, numai dacă nu sunt vehicule pe
celălalt sens.
Studiul 11. Controlul unui reactor de chimic.
În fig. II.87 este prezentat un reactor chimic. Acesta este destinat realizării unei reacţii chimice dintre
două cantităţi determinate din lichidele conţinute în rezervoarele R1 şi R2. Umplerea acestor rezervoare
cu lichid se face prin comanda electrovanelor A1 şi A2. Volumele lichidelor care trebuie să intre în
reacţie sunt fixate respectiv prin traductoarele de nivel T1 şi T2. Dacă s-a atins nivelul fixat în oricare
din cele două rezervoare trebuie să se închidă electrovana corespunzătoare. Dacă în oricare din
rezervoare s-a atins cota traductorului de nivel superior, acesta se va goli în reactorul R3 sub controlul
electrovanelor A3 sau A4. După ce conţinutul ambelor rezervoare s-a golit în reactorul R3, între cele
două lichide va avea loc o reacţie chimică, care trebuie să dureze 1 minut, în acest timp producându-se
o agitare comandată de motorul M. La sfârşitul acestei operaţii, lichidul este evacuat prin comanda
electrovanei A5. Traductoarele de nivel T3, T4 şi T5 detectează condiţia rezervor sau reactor gol.
Sistemul este completat de un buton BP de pornire a instalaţiei. Umplerea rezervoarelor se va face în
paralel până la atingerea cantităţii necesare în fiecare din ele, iar golirea în reactor se face imediat după
ce fiecare se umple. Cum acest lucru nu se va realiza, în general, simultan se va continua umplerea
celuilalt până la atingerea cantităţii necesare.

A1
A2
T1
R1 T2
R2
T3 T4
M
A3 A4

R3

T5

A5

Fig. II.87. Reactor chimic


Graful automatizării este prezentat în fig. II.88.

113
AUTOMATE PROGRAMABILE vol. I

1 BP

3 A1 4 A2

2 T1 3 T2

3 A3 5 A4

4 T3 T4

6 M

5 t/6/1 min.

7 A5

6 T5
1
Fig. II.88. Graful automatizării
Studiul 12.Comanda unui sistem de evacuare piese
Fie sistemul din fig. II.89 de mai jos, care este destinat dirijării alternative a unor obiecte care vin pe
banda B1 spre benzile de evacuare B2 şi B3. Benzile B2 şi B3 se deplasează încontinuu, iar banda B1 este
oprită atunci când pistonul P1 este acţionat (nu se află la traductorul 1S0). Controlul motoarelor de
acţionare este însă realizat tot de program. Dacă banda care urmează să fie folosită pentru evacuare este
ocupată se aşteaptă eliberarea ei. O bandă este ocupată dacă după transferul obiectului pe aceasta (după
depăşirea traductorului de la intrarea pe banda) timpul este mai mic de 5 s.
Se presupune că împingerea pieselor de către pistonul P1 are loc până ce piesa va fi preluată de către
banda B2 sau B3. Această acţiune va avea loc numai dacă o piesă a fost adusă de banda B1 până la
traductorul S1. La început ambele benzi sunt disponibile aşa că trebuie ca una din benzi să aibă
prioritate. Am ales, în această rezolvare ca banda B2 să fie cea care să fie preferată. Pentru a asigura o
folosire alternativă a benzilor se va introduce o variabilă suplimentară D, care atunci când este 0 se
transferă piesa pe banda B2, iar atunci când este 1 se transferă piesa pe banda B3. Pentru mai multă
claritate, vom împărţi automatizarea în mai multe grafuri paralele (fig. II.90):
Graful1. Un graf care porneşte benzile B2 şi B3 la apăsarea butonului BP.
Graful 2. Câte un graf pentru setarea/resetarea variabilelor B1o şi B2o, care vor fi egale cu 1 atât timp cât
banda respectivă este ocupată.

114
AUTOMATE PROGRAMABILE vol. I

Graful 3Un graf pentru conducerea distribuitoarelor care transportă piesa de la banda B1 la benzile B2
sau B3.

2Y12 B1
P2 M1

2S0
3 2
1 1Y14 5 13 1Y12
5 4
2S1 4 2

2Y14

B2 P1

S2 1S2 1S1 1S0


M2

B3

S3 S1

M3

Fig. II.89. Schema tehnologică pentru sistemul de benzi de evacuare piese


Cele patru grafuri de specificare sunt prezentate mai jos. Pentru implementarea acestora se va ţine
seama de particularităţile mediului de programare folosit. În cazul în care mediul permite se vor defini
câte un task pentru fiecare graf sau se vor defini mai multe grafuri paralele.

115
AUTOMATE PROGRAMABILE vol. I

R K2
1 3 5
R K3
1 BP 3 S2 5 S3
S K2
2 4 B2O 6 B3O
S K3
2 BP 4 t/4/5s 6 t/6/5s

1 3 5
7 K1

7 S1  B O 2  D 10 S1  BO 2  B O 3  D

8 1Y12 10 1Y12

8 1S 2 11 1S1

N 1Y14
9 11 1Y14
S D
9 1S 0 12 1S 0

7 12 2Y12

13 2S1

N 2Y14
13
S D
14 2S 0

Fig. II.90. Graful de specificare pentru studiul de caz 12.


Studiul 13. Comanda unei ecluze
Pentru ca o încăpere să rămână cât mai curată se foloseşte o ecluzăcu două uşi (fig. II.91). Pentru
parcurgerea acesteia trebuie apăsat unul dintre butoanele S1 sau S2. Dacă se doreşte de exemplu
trecerea din exterior spre interior trebuie apăsat butonul S1. Se va deschide uşa A, persoana respectivă
va intra în ecluză, şi după ce uşa a stat deschisă timp de trei secunde ea se va închide (poziţiile limită
ale uşii A sunt semnalate de traductoarele S5 şi S6).Uşa B se va deschide apoi automat când uşa A s-a
închis. Uşa B va rămâne de asemenea timp de trei secunde deschisă, după care se va închide. Poziţiile
limită ale uşii B sunt semnalate de traductoarele S7 şi S8. Trecerea inversă din interior spre exterior sa
va realiza similar, butonul care va fi acţionat fiind S2.
Lângă butoanele S1 şi S2 sunt amplasate două leduri, H1 respectiv H2, care se vor aprinde când se apasă
butoanele respective pentru a indică faptul ca au fost acceptate comenzile.

De asemenea s-a montat la fiecare uşă câte o barieră luminoasă (LI1 pentru uşa A şi LI2 pentru uşa B).
Dacă una dintre bariere este întreruptă, atunci uşa respectivă nu are voie să se închidă sau dacă este în
procesul de închidere, ea se va deschide şi va rămâne deschisă timp de trei secunde după care se
încearcă din nou închiderea ei.
116
AUTOMATE PROGRAMABILE vol. I

Pentru siguranţa s-au amplasat în interiorul ecluzei două butoane S3 şi S4 cu ajutorul cărora se pot
deschide uşile A respectiv B dacă cineva a intrat în ecluză fără să fi apăsat pe unul din butoanele S1
respectiv S2. Acest lucru este posibil dacă a venit cineva de pe partea cealaltă şi uşa era deschisă. Dacă
în timpul închiderii unei uşi se apasă unul dintre butoanele respectivei uşi S1, S2, S3 sau S4 atunci uşa se
redeschide imediat.
Uşa A este deplasată cu ajutorul motorului electric M1 comandat de către contactoarele M1A pentru
deschidere şi M1R pentru închidere. Uşa B este deplasată cu ajutorul motorului electric M2 comandat de
către contactoarele M2A pentru deschidere şi M2R pentru închidere.

H1 S1
Uşa A
S5 M1 S6
LI1 R E M1A
S3 M1R

LI2 S4 M2R
R E M2A
S7 M2 S8
Uşa B
H2 S2

Fig. II.91. Schema tehnologică pentru ecluză


Graful de specificare este prezentat în fig. II.90. Aşa cum se vede din graf s-a acordat prioritate celui
care vrea să intre.

117
AUTOMATE PROGRAMABILE vol. I

1 S1 8 S1 S2
M1A M2A
2 8
H1 H2
2 S6 9 S8

3 9

3 t/3/3s 10 t/9/3s

4 M1R 10 M2R
11 LI2
LI1 40 4 S5 11 S7
0
2 5 M2A 11 M1A 8

5 S8 12 S6

6 12

6 t/6/3s 13 t/12/3s

7 M2R 13 M1R

LI2 70 7 S7 14 S5 140 LI1

2 1 1 11

Fig. II.92. Graful de specificare pentru studiul de caz 13

118
AUTOMATE PROGRAMABILE vol. I

Studiul 14.Gestionarea unei parcări


În fig. II.93 este prezentată o parcare cu patruzeci de locuri, care are o intrare şi o ieşire care au fiecare
câte o barieră. Bariera de la intrare este controlată cu ajutorul motorului M1, iar bariera de la ieşire cu
ajutorul motorului M2. În faţa şi în spatele fiecărei bariere este montat câte un traductor inductiv. La
intrare este amplasat un semafor care va arăta culoarea roşie (H1) când parcarea este plină, altfel el va
arăta culoarea verde (H2).
Dacă o maşina ajunge în faţa barierei de la intrare (traductorul inductiv I1 da semnal logic unu) şi
semaforul arată verde, atunci bariera se va deschide (prin contactorul K1 al motorului M1) până când va
atinge limitatorul S1. După ce maşina a trecut de traductorul inductiv I2, bariera se va închide (prin
contactorul K2 al motorului M1) până când va atinge limitatorul S2.
Dacă o maşina ajunge în faţa barierei de la ieşire (traductorul inductiv I3 dă semnal logic unu) bariera
se va deschide (prin contactorul K3 al motorului M2) până când va atinge limitatorul S3. După ce
maşina a trecut de traductorul inductiv I4, bariera se va închide (prin contactorul K4 al motorului M2)
până când va atinge limitatorul S4.
Cu ajutorul butonului S0 se poate reseta numărul de maşini la zero.

H1
S1 H2 S3
I2 I3
M1 M2
K1 I1 K3 S4 I4
K2 S2 K4

Intrare Ieşire

Fig. II.93. Schema tehnologică pentru parcare


Vor fi elaborate trei unităţi de program, care vor fi atribuite câte unui task, sau vor fi realizate trei
funcţii bloc care vor fi apelate în programul ciclic. Cele trei unităţi, în limbajul FBD (a) sau sub forma
unor grafuri de specificare (b și c) sunt prezentate în fig. II.92.

119
AUTOMATE PROGRAMABILE vol. I

CU CTUD
CU C
CD
CD QU
R QD
LD CV
40 PV

a.

1 5

1 I1 C 5 I3

2 K1 6 K3

2 S1 6 S3

3 7

3 I2 7 I4
CU 8 CD
4
K2 K4
4 S2 8 S4

1 5
b. c.

Fig. II.94. Programele pentru studiul de caz 14

120
AUTOMATE PROGRAMABILE vol. I

II.7. LIMBAJE BAZATE PE GRAFURI DE STARE


Deși programarea automatelor prin intermediul grafurilor de stare nu este menționată în IEC 61131-3,
deci nu este stabilită printr-un standard internațional, unele firme implementează în mediul de
programare limbaje de programare bazate pe grafuri de stare (de exemplul limbajul HiGraph din Step 7
Manager). Aceste limbaje intră în categoria limbajelor grafice. Ele sunt similare cu limbajele de tip
SFC prin faptul că descriu un proces tehnic sau un element funcțional prin stări și tranziții.
Amintim aici câteva din caracteristicile unui graf de stare. Acesta are două elemente: stări și tranziții
(fig. II.95). Reprezentarea este asemănătoare cu cea din HiGraph.
Nume stare
A Ieșire
=Y1 (Acțiune)
Condiție Număr stare

N
C
1

B
=Y2

M
Y2

Fig. II. 95. Graf de stare


Stările reprezintă situații din timpul unui proces și se reprezintă prin cercuri/dreptunghiuri. Atașat unei
stări se introduc, pe lângă nune și acțiunile care se execută. Aceste acțiuni pot avea loc la intrarea în
stare, la ieșirea din stare sau în timp ce starea este activă.
Tranzițiile sunt reprezentate prin săgeți și sunt calea dintre diferitele stări. Tranzițiile se etichetează, de
obicei, cu evenimentele care determină tranziția.
O stare poate avea o tranziție care se îndreaptă spre ea însăși.
Acțiunile și condițiile pentru tranziții sunt definite folosind un subset al limbajelor de programare
acceptate de mediu.
În orice moment într-un graf de stare, doar o singură stare poate fi activă. Grafurile de stare pot avea
ramuri și buclele și să permită căile alternative de trecere de la o stare la alta. Pentru a trece de la o
stare la alta , trebuie să existe o tranziție între cele două stări. Există o stare inițială care trebuie să fie
activă inițial și pornirea se realizează prin activarea unei tranziții.
Fig. II.96 prezintă un element funcțional (un dispozitiv de nituit) și oferă o descriere funcțională a lui
sarcina de control cu ajutorul unei scheme de flux. Există două modalități de a construi o diagramă de
stare.

121
AUTOMATE PROGRAMABILE vol. I

V1

V2

S1

S2

Fig. II.96. Mașină de nituit


Putem modela funcționarea în funcție de descrierea sarcinii sau putem construi un model real al tuturor
elementelor funcționale și le putem combina.
START

S0=1& NU
S1=1&
S2=0

DA

V1=1; V2=0

NU
S2=1

DA

V1=0; V2=1

NU
S2=1

DA

START

Fig. II.97. Schema logică a programului


Graful atașat mașinii de nituit este reprezentat în fig. II.98. A fost utilizată o descriere grafică
asemănătoare cu cea din HiGraph,

122
AUTOMATE PROGRAMABILE vol. I

SUS

S0 1

S1

INT 0
1 1

MIȘC. SUS MIȘC. JOS


4 2
=V2 =V1

1 1

S2

JOS

Fig. II.98. Graf de stare mașina de nituit

Nu toate automatizările sunt așa de simple ca în exemplul de mai sus. La automatizările complexe,
pentru programare, sarcinile de automatizare sunt împărțite în unități funcționale individuale. O unitate
funcțională poate consta dintr-o componentă mecanică (de exemplu, o supapă) sau reprezintă o unitate
conceptuală. Comportamentul fiecărei unități funcționale este apoi descris cu ajutorul unui graf de
stare.
Pentru a genera un program de control pentru un proces complex din grafurile de stare individuale,
grafurile de stare sunt grupate în grupuri. În cadrul unui grup, un graf de stare poate fi folosit ca
coordonator. Pentru coordonare grafurile de stare pot comunica între ele prin intermediul mesajelor.
La programarea automatelor prin această metodă trebuie ca programatorul să dea dovadă de multă
experiență. Nu este recomandat ca un programator să recurgă la această metodă decât în cazuri mai
simple și nici atunci nu este justificată această soluție.

123
AUTOMATE PROGRAMABILE vol. I

BIBLIOGRAFIE
[1] John, K.-H., Tiegelkamp M., SPS-Programmierung mit IEC 61131-3, Springer, Berlin, Heidelberg,
New York, 1999, 3rd Ed. (German), ISBN 3-540-66445-9
[2] Lewis, R. W., Programming industrial control systems using IEC 1131-3, IEE Control Engineering,
The Institution of Electrical Engineers, 1998, ISBN 0-852-96950-3
[3] Dr. Monari, Prof. Bonfatti and Dr. Sampieri, IEC 1131-3 Programming Methodology; Software
engineering methods for industrial automated systems, ISBN 2-9511585-0-5
[4] Mărgineanu, I., Utilizarea automatelor programabile în controlul proceselor, Editura Albastră,
Cluj-Napoca, 2010. ISBN 978-973-650-255-2.
[5] Gary, D., Introduction to Programmable Logic Controllers, 2nd ed., Delmar, Albany, NY, 2002.
[6] Hackworth, J., R., Hackworth, F., D. Programmable Logic Controllers: Programming Methods
and Applications, Prentice Hall, 2004, ISBN-10: 0130607188.
[7] Stenerson, J., Fundamentals of Programmable Logic Controllers, Sensors and Communication,
Prentice Hall, 1998, ISBN 10: 0-13-061890-X.
[8] Webster, G., John, Electrical Measurement, Signal Processing, and Displays, CRC Press, 2003,
ISBN: 0849317339
[9] Fraden, J., Handbook of Modern Sensors, AIP Press, Springer, 2003, ISDN 0-387-00750-04
[10] Ivănescu, M., Roboţi industriali, EUC Craiova, 1994
[11] Berger, H., Automating with SIMATIC, Publicis Corporate Publishing, 2003, ISDN 3-89578-233-8
[12] Bolton, W., Programmable Logic Controllers, Fourth Edition, Elsevier Science, 2006, ISDN 978-
0-7506-8112-4
[13] Rohner, P., Automation with Programmable Logic Controllers, Unsw Press, 1996, ISDN 0-86840-
287-4
[14] Swainston F., A System Approach to Programmable Logic Controllers, Deimar Publishers, 1992,
ISDN 0- 8273-4670-0
[15] Jones, C., T., Programmable Logic Controllers, Patrick-Turner, 1996, ISDN 1-889101-00-1
[16] Larionescu S., – Automatizarea instalaţiilor, vol. 1
https://www.scribd.com/document/111261630/Automate-Finite.

124
AUTOMATE PROGRAMABILE vol. I

Despre autor.
Ioan Mărgineanu, născut în Șeitin, jud. Arad la 24 iulie 1941, este inginer automatist la IMSAT
Cuadripol Brașov, o firmă care oferă inginerie în controlul proceselor, tehnologie de măsurare și
analiză, montaj și punere în funcțiune, precum și servicii de management de proiect.
A terminat secția de Electrotehnică la Institutul politehnic din București în anul 1964. A lucrat, având
diferite grade didactice la Universitatea din Brașov din 1965 până în 2010. A predat cursul de
Automate Programabile și Utilizarea calculatoarelor în controlul proceselor, studenților de la secția
de Automatică a Universității din Brașov timp de 30 ani. A scris. În editura Universității din Brașov și
în alte edituri mai multe cărți și îndrumare de laborator, referitoare la controlul proceselor: Utilizarea
calculatoarelor în controlul proceselor (Editura Ecran Magazin, 2014), Utilizarea Automatelor
Programabile în controlul proceselor (Editura Albastră, 2010) etc.
În prezent, la firma IMSAT Cuadripol Brașov, se ocupă elaborarea de software pentru automate
programabile și calculatoare de proces, implementarea și punerea în funcțiune a automatizărilor
industriale în diferite ramuri industriale: industria cimentului, industria constructoare de mașini,
industria chimică, industria farmaceutică etc.
Poate fi contactat pentru întrebări și sugestii pe E-mail la adresa ioan.marginenu@yahoo.com.

125

S-ar putea să vă placă și