Sunteți pe pagina 1din 126

AUTOMATE PROGRAMABILE vol.

CUPRINS VOL. I
INTRODUCERE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
CAP.1. STRUCTURA ȘI MODUL DE FUNCȚIONARE A UNUI AP . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . 9
I.1. PARTICULARITĂȚI ALE STRUCTURII ȘI MODULUI DE FUNCȚIONARE A UNUI AP . . . . . . . . . . . . . . . 9
I.2. MODULE DE INTRĂRI BINARE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
I.3. MODULE DE IEȘIRI BINARE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
I.4. MODULE DE INTRĂRI ANALOGICE. . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
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
II.6. LIMBAJUL SFC . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

2
AUTOMATE PROGRAMABILE vol. I

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). TIA Portal
permite, pe lângă dezvoltarea programelor pentru automat și realizarea configurării panourilor operator
produse de firmă.
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.

4
AUTOMATE PROGRAMABILE vol. I

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.
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 sunt diferite fiind adaptabile
la diferitele aplicații. 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 capitolul 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
problemă reală este rezolvată 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

6
AUTOMATE PROGRAMABILE vol. I

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

7
AUTOMATE PROGRAMABILE vol. I

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
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 în special calculatoarelor de proces, 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ă. Până nu demult, 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. Odată cu progresul în domeniul în domeniul hardware
AP au început să fie dotate cu procesoare mai puternice, iar performanțele lor s-au apropiat de cele ale
calculatoarelor de proces. 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ă și
pot suporta programa cu mai multe fire. 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 aplicației. Există și module de comunicație care sunt folosite pentru dialog
bidirecțional cu terminalele de programare, pentru comunicația pe rețele, pentru comunicația cu servere,
care pot fi AP sau PC etc. S-au elaborat și module speciale pentru controlul poziției în buclă închisă sau
deschisă, module video, module cititoare de coduri de bare etc. 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.

9
AUTOMATE PROGRAMABILE vol. I

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 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 AP este de două feluri: ROM și RAM. Memoria ROM este folosită, în principal, pentru
memorarea sistemului de operare. Memoria RAM este folosită pentru: memoria de date, pentru stocarea
programului, pentru zona de lucru a procesorului și pentru alte destinații speciale, cum ar fi valorile
prestabilite ale contoarelor și temporizatoarelor. În ceea ce privește memoria nu sunt deosebiri
semnificative față de calculatoare decât în ceea de privește memoria de pentru date, care vor fi analizate
mai jos.
Memoria pentru date sau memoria internă 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.
Unele automate au și memorie EPROM încorporată. Aceasta poate fi folosită cu o funcție de tip Copy
RAM to ROM pentru a copia conținutul memoriei RAM în EEPROM, cu scopul de a nu pierde date în
cazul in care au loc defecte majore de alimentare. Astfel de funcție trebuie folosită cu atenție în ceea ce
privește valorile inițiale ale variabilelor din blocurile de date.

10
AUTOMATE PROGRAMABILE vol. I

Module de
intrări
Module de ieșiri
Program,Variabile
Proces
interne, Contoare,
Timere

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 reperate prin
simboluri, care încep cu litere prefixate diferit, de exemplu la automatele din seria SIMATIC: I, pentru
intrări binare, IW, pentru variabile de intrare pe cuvânt, Q, pentru ieşiri, M, pentru variabilele interne.
În zona de memorie se mai găsesc contoare simulate software, care nu există fizic. Aceste contoare pot
număra înainte, înapoi sau în ambele sensuri, în funcție de intrări legate la contor. Contoarele acceptă o
frecvență relativ mică pentru mărimile de intrare, care este de cele mai multe ori suficientă pentru
aplicațiile industriale. Vom vedea, mai jos, că mulți furnizori livrează AP echipate cu contoare de mare
viteză, care sunt realizate hardware și care sunt legate la unele intrări, într-un proces de configurare.
Tot în zona de memorie sunt simulate software și timere care nu există fizic. Incrementarea timpului la
acestea este, de obicei, mai mate de 1 ms. Incrementarea timpului se oprește și se anulează la dispariția
unui semnal numit de validare. Există și timere, numite retentive, care se opresc la dispariția semnalului
de validare și pornesc, măsurând timpul, de unde au rămas, la reapariția acestuia. În ceea ce privește
utilizarea temporizatoarelor în proceduri, unele medii de programare, au temporizatoare multi-instanță
care pot fi folosite in mai multe proceduri, acestea fiind prevăzute cu zone speciale de memorie ăn care
se memorează date specifice instanței respective,
În zona de memorie se mai găsesc registre rapide de memorie, utilizate în calcule matematice sau pentru
memorarea temporară de date, a valorilor asociate contoarelor și temporizatoarelor. Există posibilitatea
ca valorile de memorie să fie accesate pe bit, cuvânt, dublu cuvânt etc. Valorile adresabile pe bit se mai
numesc relee interne.
La unele AP există un număr de locații de memorie numite retentive sau nevolatile, care nu sunt șterse
atunci când cade sursa de alimentare. De obicei aceste locații sunt setabile software.
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,
11
AUTOMATE PROGRAMABILE vol. I

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. Această abordare are avantajul accesării consistente a datelor din proces deoarece datele se
mențin constante în timpul unui ciclu a programului. Atragem atenția că, din această cauză, nu trebuie
făcute bucle în program a căror condiții de ieșire să fie variabile de intrare, care riscă să poată fi infinite
pentru anumite intrări.
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.
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.
12
AUTOMATE PROGRAMABILE vol. I

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

13
AUTOMATE PROGRAMABILE vol. I

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, făcută mai sus, 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
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.

14
AUTOMATE PROGRAMABILE vol. I

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.
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
15
AUTOMATE PROGRAMABILE vol. I

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.

16
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
R2
R1

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.

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

18
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ă
traductorul folosit dă semnal în curent etc. O mare parte din furnizorii de echipament oferă module
19
AUTOMATE PROGRAMABILE vol. I

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.

20
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
I IN 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 − K 1 = (OUT − LO _ LIM ) ,
HI _ LIM − LO _ LIM

21
AUTOMATE PROGRAMABILE vol. I

de unde rezultă:
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 (UR). Î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)

22
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

23
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):

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

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

26
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

27
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

28
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ă. Unul dintre
automatele, care au implementate contoare de mare viteză este S7-1200. Automatul are și două ieșiri de
mare viteză, care se folosesc pentru generarea de impulsuri PTO (Pulse Train Outputs) și pentru controlul
structurilor PWM (Pulse-Width-Modulation). Se mai folosesc pentru monitorizarea traductoarelor
incrementale.

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

30
AUTOMATE PROGRAMABILE vol. I

I.8. AUTOMATE MICROPROGRAMATE


I.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ă sau automatul 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:
31
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
.

32
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 din ROM CMS unul

33
AUTOMATE PROGRAMABILE vol. I

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 micropro-
grame.

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 pe intrarea CLK, microinstrucţiunea adresată de
microsecvenţiator este citită din memoria de microprograme şi încărcată în registrul RPL.
▪ Conţinutul microinstrucţiunii este decodificat şi utilizat ca informaţie de control.

34
AUTOMATE PROGRAMABILE vol. I

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

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

36
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 adresă.
Pentru ca aceasta să fie corect executată trebuie ca, în prealabil, registrul NB şi stiva să fie încărcate cu
37
AUTOMATE PROGRAMABILE vol. I

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

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

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

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

0000: 03 A0 00 LDNB
0001: 00 40 00 FOR
41
AUTOMATE PROGRAMABILE vol. I

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ă
piese şi cu braţul coborât atunci când este descărcat. Poziţiile conveierului pe calea de rulare sunt

42
AUTOMATE PROGRAMABILE vol. I

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.

43
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

44
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 contra-
dicţ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ă
45
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.
Programarea AP se realizează, de obicei, din programe numite medii de programare, cere permit
elaborarea programului într-un limbaj de programare specific, încărcarea acestuia în automat și inițierea
execuției.
Unele medii de programare permit crearea unui tabel (Watch table), care permite monitorizarea
variabilelor unui program sub forma unui tabel. Există posibilitatea de a crea și un alt tabel (Force table),
care permite forțarea unor variabile ale programului în starea TRUE sau FALSE. Trebuie menționat că
forțarea este periculoasă, deoarece mediul suprascrie din punct de vedere logic o stare din automat a unor
intrări sau ieșiri.
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.
46
AUTOMATE PROGRAMABILE vol. I

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.
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*)

OPERATOR MODIFICATOR

Fig. II.1. Sintaxa generală a unei instrucţiuni în IL

47
AUTOMATE PROGRAMABILE vol. I

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

48
AUTOMATE PROGRAMABILE vol. I

LD %I0.0
LD %I0.1
LD %I0.2
A %I0.3
OLD
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

49
AUTOMATE PROGRAMABILE vol. I

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

50
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

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

A2
23
AUTOMATE PROGRAMABILE vol. I

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

II.3. 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, constantelor 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 memorie

52
AUTOMATE PROGRAMABILE vol. I

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 separată
fereastra de instrucţiuni ce cea de declaraţii începutul secţiunii de cod se face cu un cuvânt cheie BEGIN.
53
AUTOMATE PROGRAMABILE vol. I

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

54
AUTOMATE PROGRAMABILE vol. I

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

55
AUTOMATE PROGRAMABILE vol. I

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:
WHILE <Expresie booleana > DO
<Instructiuni>
END_WHILE

56
AUTOMATE PROGRAMABILE vol. I

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;

II.3.3.5. INSTRUCŢIUNEA CONTINUE


Instrucţiunea CONTINUE este utilizată pentru terminarea execuţiei curente a corpului unei bucle (FOR,
WHILE, REPEAT).

57
AUTOMATE PROGRAMABILE vol. I

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

Codul unei funcţii bloc pentru realizarea interpolării liniare, care întoarce valoarea y este următorul:
FUNCTION_BLOCK F1
VAR_INPUT

58
AUTOMATE PROGRAMABILE vol. I

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ă

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

60
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 elementelor î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.

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

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

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

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

65
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ă. La atingerea valorii zero, ieşirea
66
AUTOMATE PROGRAMABILE vol. I

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
manualul de programare. În cazul în care baza de timp este omisă atunci ea este, conform IEE 61131-3,

67
AUTOMATE PROGRAMABILE vol. I

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.
Pentru fiecare din tipurile de mai sus, unele medii de programare, implementează temporizatoare multi-
instanță. Spre deosebire de cele obișnuite, în structura de implementare, sunt rezervate locații de
memorie statice, care permit apelarea acestora în mai multe proceduri fără a afecta valorile valorilor
variabilelor interne și ieșirilor.

68
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

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

70
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 exterior ale
71
AUTOMATE PROGRAMABILE vol. I

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.

72
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 probleme de
adaptare, puternic sprijinite de manuale de programare care însoțesc ale mediilor de programare.
73
AUTOMATE PROGRAMABILE vol. I

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

74
AUTOMATE PROGRAMABILE vol. I

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.

75
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

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

77
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

78
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

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

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

81
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 BT2 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.

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

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

84
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.
Implementarea acestui limbaj conduce la un consum mare de memorie și nu este recomandat să fie folosit
la automatele cu memorie mică, chiar dacă mediul de programare oferă posibilitatea programării în acest
limbaj. De altfel pentru automate le din clasa mică nici mediul de programare nu oferă aceasta această
posibilitate.
În aceste cazuri se preferă folosirea metodei activării și deazctivării sincrone, prezentată în volumul II,
care necesită o memorie semnificativ mai mică și păstrează legătura cu graful de specificare.

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 sub stare 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.

85
AUTOMATE PROGRAMABILE vol. I

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.

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.

86
AUTOMATE PROGRAMABILE vol. I

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


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

87
AUTOMATE PROGRAMABILE vol. I

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

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ă


88
AUTOMATE PROGRAMABILE vol. I

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

89
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).

90
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).

91
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


92
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 TRANZIȚII
Î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.

93
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).

94
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)

95
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).

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

97
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ă.
98
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 S 1, S2, S3 şi SE .
Banda BR este acţionată de un motor electric care poate fi comandat în ambele sensuri prin intermediul
99
AUTOMATE PROGRAMABILE vol. I

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 SN, 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 , C 2 şi C 3 se exprimă cu relaţiile:
C1 = S L1 ;
C 2 = S L1  S L 2 ;
C 3 = S L1  S L 2 .S L 3 .

100
AUTOMATE PROGRAMABILE vol. I

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

C1 = S L1 ( x19 + x20  S L 2  S L3 + x 21  S L3 );
C 2 = S L 2 ( x 20 + 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 , x 20 şi x 21 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.

101
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 S2 (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 un jeton
102
AUTOMATE PROGRAMABILE vol. I

î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 S2,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.

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

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

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

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

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

108
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

109
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 Y 1, 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.

110
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


111
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


Studiul 10. Comanda unui semafor de pe un drum național aflat în reparație
112
AUTOMATE PROGRAMABILE vol. I

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


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
113
AUTOMATE PROGRAMABILE vol. I

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 A 5.
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.

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

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

116
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.
117
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.

118
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

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

120
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

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

122
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,

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

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

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

126

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