Documente Academic
Documente Profesional
Documente Cultură
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
` `
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
9
AUTOMATE PROGRAMABILE vol. I
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
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
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
13
AUTOMATE PROGRAMABILE vol. I
I1
t1 t2 t
TC TC
I II
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
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
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
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
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 -
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)
22
AUTOMATE PROGRAMABILE vol. I
de unde:
HI _ LIM
OUT = IN .
2 N −1
23
AUTOMATE PROGRAMABILE vol. I
Magistral? intern?
LD DR
LCU
CNA
SCS
Ie?ire AO
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)
25
AUTOMATE PROGRAMABILE vol. I
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
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
28
AUTOMATE PROGRAMABILE vol. I
Circiute(module) de ieșire
REGISTRE
REGISTRE HSIO
HSIO
Circiute(module) de intrare
29
AUTOMATE PROGRAMABILE vol. I
30
AUTOMATE PROGRAMABILE vol. I
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.
Memorie de
Secvenţiator
microprograme
Intrări
Informaţie de B A
secvenţiere
Ieşiri
▪ 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
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
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.
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
34
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 0 0 1 1 X 1 1 1
3 F
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
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
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
TCLK
I(k) I(k+1)
t1
Y
k k+1 k+2
MR
taMR
I(k) I(k+1) I(k+2)
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 (taMP), 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 aMP
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
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
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
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-
44
AUTOMATE PROGRAMABILE vol. I
apropiată de limbajul de nivel înalt PASCAL și două limbi grafice, Ladder Diagram (LD), care permite
programarea aplicațiilor într-o manieră asemănătore cu proiectarea unui circuit cu contacte și relee,
operând numai cu variabile booleene și Function Block Diagram (FBD), care este o extensie a limbajului
LD, conținând blocuri complexe și putând opera și cu alte tipuri de variabile decât cele booleene. Ediție
a treia, publicată în 2013, anulează și înlocuiește ediția a doua, publicată în 2003 și constituie o revizie
tehnică. Acesta include următoarele modificări tehnice semnificative: Este o extensie compatibilă celei
de a doua ediție, iar principalele extensii sunt noi tipuri de date și funcții de conversie, referințe, spații de
nume și caracteristicile orientate pe obiecte ale claselor și blocuri de funcții.
Cele mai multe medii de programare permit vizualizarea programelor scrise în LAD sau FBD și în STL
prin selectarea limbajului din opțiunile care apar în mediu la View (uneori mediul introduce câteva
instrucțiuni NOP). Se spune că limbajele sunt reversibile. Invers, adică din STL la LAD sau FBD nu
este permisă dacă se apelează blocuri de tip TIMER sau CONTOR.
Normele IEC 61131-1 definesc SFC (Sequential Function Chart) ca fiind un mijloc destinat pentru
structurarea şi organizarea unui program. Unele medii de programare oferă compilatoare grafice pentru
realizarea programelor pentru AP pe baza SFC. Acesta are la bază reprezentarea sub formă de reţea
GRAFCET a acţiunilor secvenţiale. Chiar dacă nu este disponibil un compilator de SFC este recomandat
să se realizeze diagrama pentru orice program, care cuprinde acţiuni secvenţiale pornind de la regulile
GRAFCET. Această reprezentare poartă numele de graf de specificare. Utilizarea grafului de specificare
este utilă pentru prezentarea structurată a acțiunilor secvențiale cu atât mai mult cu cât se cunosc metode
de transformare a unui graf de specificare, așa cum vom arăta mai jos, în orice limbaj.
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
OPERATOR MODIFICATOR
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
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"
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
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
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
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;
55
AUTOMATE PROGRAMABILE vol. I
END_FOR;
Erg:=Var1;
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;
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;
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;
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
59
AUTOMATE PROGRAMABILE vol. I
B
I1 I3
I2
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ă
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.
61
AUTOMATE PROGRAMABILE vol. I
Ieşiri - RT
AP Q1
ES
1 35
Q1
246
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.
%I0.0
TC
%I0.0
P
TC
%I0.0
N
63
AUTOMATE PROGRAMABILE vol. I
Semnal Semnal
scanat scanat
<adresa 1> <adresa 1>
POS NEG
Q Q
64
AUTOMATE PROGRAMABILE vol. I
65
AUTOMATE PROGRAMABILE vol. I
CU
1 2 3 4 5 6 7 8 9 timp
CD
CTD
CD
Q CV
LD
CV 4
3
PV 2
1
1 2 3 4 5 6 7 8 9 timp
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
CU
CV
CTUD
CU
CD QU
R QD QU
LD CV
PV QD
1 2 3 4 5 6 7 8 9 101112131415161718 timp
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
IN
Q
TOFF
IN TP
Q TS
TP
TS TP
R
R
timp
IN
Q
TP
IN TP TP
Q TS
TP
TS TP
R
R
timp
69
AUTOMATE PROGRAMABILE vol. I
70
AUTOMATE PROGRAMABILE vol. I
A B C
D E
D E
F D B C
F E
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
72
AUTOMATE PROGRAMABILE vol. I
RI2 RI1
RI1 RI2
RI2
RI1
I1
I3
T B
K
M I2
CG
I2
M1 I3 K
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
K K
BL RI
75
AUTOMATE PROGRAMABILE vol. I
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
76
AUTOMATE PROGRAMABILE vol. I
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
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
=
B1 B2
I1 Q1
I2
Q2
I3
I4 B3
I5 Q3
I6
Q4
I7
78
AUTOMATE PROGRAMABILE vol. I
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
79
AUTOMATE PROGRAMABILE vol. I
OR AND
LOCALStart AUX
RUN LOCAL
LOCALStop
AND OR
REMOTE RUN
AUTOS AUX
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.
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
81
AUTOMATE PROGRAMABILE vol. I
I1 Timer OUT
OUT T1
TON Timer
IN Q
T#0.5s PT ET
I1
OUT T
Timer
I1
BT1 I2 I3
C
M1
K1 BT2
B1
M2
K22
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
I1
12
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
84
AUTOMATE PROGRAMABILE vol. I
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
c. Etapă iniţială
1 Condiţie
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
4 5
4 5
87
AUTOMATE PROGRAMABILE vol. I
5 6
T1 T2
2
T3
3
T4
4
T5
11
T1
T1
22
T2
T2
33
T3
T3
T4 44
T4
T5
T5
55
44 55 44 55
T6=1
T6=1
T6
T6 T6
T6
66 66
44 55 44 55
T6=1
T6=1
T6
T6 T6
T6 T6
T6 T6
T6
66 77 88 66 77 88
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.
44 5 4 5
T6=1
T6=1
T6
T6 T6
T6
66 6
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.
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.
T x1
1 L A1
A1 T
a.
Step 1
1 A1 1 L T#2s A1
L
T#2s
b. c.
x1
1 P A1
A1
TC
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.
93
AUTOMATE PROGRAMABILE vol. I
1 t/1/2s
a.
1 1
Cmp 1 Step1.t>2s
Step1.T >
T#2s
b. c.
94
AUTOMATE PROGRAMABILE vol. I
20 A20
C5
3 A3
6 A6
3 C3
C6
20
7 A7
4 C4
C7
8 A7
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.
unde:
f j sunt funcţiile de parcurgere a tranziţiilor care urmează etapei.
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
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
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
100
AUTOMATE PROGRAMABILE vol. I
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
17 SL3 19 SBE
16 18 MBE
18 SL3 20 t/18/10s
15 17
101
AUTOMATE PROGRAMABILE vol. I
19
19 x3
20
20 x7
21
21 x9
19
1
S3 Y
2 3 4
S2
S1
î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
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
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
4 4 4
105
AUTOMATE PROGRAMABILE vol. I
H2 TT2
+-
TN3
BP BO
A5
produs final
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
107
AUTOMATE PROGRAMABILE vol. I
BP BO
Melc de exploatare
K1 Bandă de transport
S1 Cântar
M1
S2
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
L1
Y2
L2
h
5s
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
110
AUTOMATE PROGRAMABILE vol. I
S2 t
S3 LA LC
Y2
Mixer
M
Y1
Gaz E
C
V
Aer S1
A
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
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
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
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
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
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
B3
S3 S1
M3
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
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
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
2 1 1 11
119
AUTOMATE PROGRAMABILE vol. I
H1
S1 H2 S3
I2 I3
M1 M2
K1 I1 K3 S4 I4
K2 S2 K4
Intrare Ieşire
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.
121
AUTOMATE PROGRAMABILE vol. I
N
C
1
B
=Y2
M
Y2
122
AUTOMATE PROGRAMABILE vol. I
V1
V2
S1
S2
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
123
AUTOMATE PROGRAMABILE vol. I
SUS
S0 1
S1
INT 0
1 1
1 1
S2
JOS
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