1
AUTOMATE PROGRAMABILE vol. I
CUPRINS VOL. I
INTRODUCERE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
CAP.1. STRUCTURA ȘI MODUL DE FUNCȚIONARE A UNUI AP . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . 8
I.1. PARTICULARITĂȚI ALE STRUCTURII ȘI MODULUI DE FUNCȚIONARE A UNUI AP . . . . . . . . . . . . . . . 8
I.2. MODULE DE INTRĂRI BINARE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
I.3. MODULE DE IEȘIRI BINARE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
I.4. MODULE DE INTRĂRI ANALOGICE. . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
I.5. MODULE DE IEȘIRI ANALOGICE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
I.6. MODULE DE INTRĂRI/IEȘIRI ÎN IMPULSURI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
I.7. ALTE TIPURI DE MODULE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
I.8. AUTOMATE MICROPROGRAMATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
I.8.1. INTRODUCERE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
I.8.2. STRUCTURA UNUI MICROSECVENȚIATOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
I.8.3. STRUCTURA AUTOMATULUI MICROPROGRAMAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
I.8.4. CONȚINUT POSIBIL AL MEMORIEI ROM-CMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
I.8.5. SIMULATORUL DE AUTOMAT MICROPROGRAMAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
I.8.6. EXEMPLE DE PROGRAME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
I.8.7. STUDIU DE CAZ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
CAP. II. LIMBAJE DE PROGRAMARE PENTRU AP. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
II.1. INTRODUCERE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
II.2. LIMBALUL IL SAU STL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .45
II.2.1. INTRODUCERE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
II.2.2. STUDIU DE CAZ . . . . . . . . . . . . . . . . . . . . - - - - - - - - - - - - . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
II.3. LIMBAJUL ST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
II.3.1. INTRODUCERE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . 50
II.3.2. INSTRUCȚIUNEA DE ATRIBUIRE . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
II.3.3. INSTRUCȚIUNI REPETITIVE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
II.3.4. STUDIU DE CAZ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
II.4. LIMBAJUL LAD (LADDER DIAGRAM) . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
II.4.1. INTRODUCERE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
II.4.2. OBIECTELE LIMBAJULUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
II.4.3. UTILIZAREA RELEELOR INTERNE . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
II.4.4. NUMĂRĂTOARE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .63
II.4.5. TEMPORIZATOARE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
II.4.6. BLOCURI FUNCȚIONALE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
II.4.7. LIMITĂRI (RESTRICȚII) ÎN PROGRAMELE LAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
II.4.8. STUDII DE CAZ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
II.5. LIMBAJUL FBD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
II.5.1. INTRODUCERE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
II.5.2. BLOCURILE LIMBAJULUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
II.5.3. STUDII DE CAZ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . 77
2
AUTOMATE PROGRAMABILE vol. I
BIBLIOGRAFIE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
DESPRE AUTOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . 124
3
AUTOMATE PROGRAMABILE vol. I
INTRODUCERE
Automatele programabile sunt unele din cele mai răspândite dispozitive folosite în automatizările
secvențiale, care se folosesc în România. Acestea acoperă domeniul de aplicații la complexitate mică,
medie și mare. Aplicațiile de complexitate mică, realizate de obicei cu mini-automate, acoperă, ceea ce
în trecutul apropiat, se făcea utilizând contacte și relee, iar aplicațiile de complexitate mare, realizate cu
automate având controlere (procesoare) puternice. Acestea se suprapun de multe ori domeniului în
care se utilizează calculatoarele de proces. Pe acestea din urmă se pot realiza chiar și programe
multitasking deosebit de performante.
Dacă este să analizăm aplicațiile cu AP din punct de vedere al numărului de echipamente identice
atunci trebuie să spunem că de obicei acestea sunt unicate, rare ori sunt elaborate aplicații, care să fie
utilizate în mai multe locuri, având în vedere faptul că aplicațiile diferă mult, în funcție de elementele
de execuție specifice fiecărui loc. Desigur că, firmele mari au elaborat aplicații mai generale, folosind
sisteme expert, dar și acestea trebuie adaptate cazurilor concrete în care se utilizează. Un exemplu în
această privință este sistemul expert CEMAT, utilizat cu mici adaptări la fabricile de ciment. Pentru
automatizări cu număr mare de echipamente identice se folosesc sisteme dedicate, de obicei automate
microprogramate sau sisteme înglobate. În finalul cap I mă voi referi la automatele microprogramate
cu scopul de a lămuri modul de funcționare al acestora, de a simula și construi sisteme înglobate și, de
ce nu, a lămuri modul de funcționare al unităților centrale ale microprocesoarelor.
Un realizator de automatizări industriale poate alege unul din mai multe automate produse de
numeroase firme: Siemens, Allen-Bradley, ABB, Schneider Electric, Omron, Mitsubishi, Fuji etc.
Siemens este, probabil, cel mai mare producător de automate programabile. Cele mai importante sunt:
Logo, S7-1200 (înlocuitoarele seriei S7-200), S7-1500, S7-300 și S7-400. Automatele Siemens au mai
multe facilități de comunicare, utilizând PROFINET (Conexiune Ethernet TC/IP), PROFIBUS, AS-i
sau MPI. Mediile de programare se numesc Logo Soft Confort, Step 7 MicroWin, Step 7 Manager sau
TIA Portal (Totally Integrated Automation). Acestea permit abordarea programării în diferite limbaje
de programare bazate pe mediile de programare avansate (cum ar fi limbajul Visual C++) și pe medii
grafice care implementează limbaje grafice recomandate de IEC (International Electric Committee).
Un alt mare producător este Rockwell Automation, care produce automatele Allen-Bradley: Micro-
logic, SLC 500 și PAC (Programmable Automation Controller). Primele două sunt folosite pentru
aplicații medii și mici, în timp ce PAC este folosit pentru aplicații mari. Mediile de programare pentru
aceste automate sunt RS Logicx 500 și Studio 500.
Firma ABB este și ea unul din cei mai mari producători de automate programabile. Aceasta produce
mai multe serii de unități centrale: seria 40, seria 50, seria 70 și seria 90. Primele două sunt destinate
aplicațiilor de medie ți mică complexitate cu până la 110 intrări/ieșiri. Seria 90 este destinată
aplicațiilor de mare complexitate cu peste 1000 de intrări/ieșiri. Între mediile de programare cel mai des
utilizate sunt AC1131 și Automation Builder (destinat automatelor AC500eCo și AC500).
Producătorul Schneider Electric, produce automatele M221, iar SoMachine este mediul de programare
care facilitează configurarea, programarea și punerea în funcțiune programelor.
Firma Moeller (după 2011 Contron ) produce automatele Eassy și XC101, XC 121 ș XC11201. Mediile
de programare sunt easySoft Pro (pentru automatele Eassy 400, 500, 600, 700 și 800), si easySoft
CoDeSys.
4
AUTOMATE PROGRAMABILE vol. I
Nu trebuie uitat și firmele de hardware și software: Mitsubishi, Omron, Hitachi (din Japonia), Wecon
(China) etc.
Pentru a fi cât mai ușor adaptate la nevoile unei aplicații, automatele programabile, sunt, de obicei cu
structură modulară. Se utilizează, în acest caz o unitate centrală și mai multe module cuplate pe o
magistrală internă. Numărul de module care pot fi adăugate depinde de capacitatea magistralei interne.
De obicei acest număr este opt, dar există posibilitatea de mări acest număr prin utilizarea unor module
de extensie a magistralei, care comunică pe o rețea cu unitatea centrală. Uneori aceste module sunt
astfel concepute încât adresele modulelor adăugate apar ca fiind în componența modulelor de pe
magistrala internă.
Așa cum vom vedea automatele nu au, decât rare ori (de obicei la mini-automate), dispozitive de
intrare/ieșire clasice. Introducerea/extragerea de date se poate face direct legând la ieșirile și intrările
automatelor traductoare sau elemente de execuție. Pentru interfațarea cu utilizatorul numită de obicei
HMI (Human Machine Interface) se folosesc în mod uzual dispozitive speciale numite panouri
operator. Acestea comunică cu automatul programabil pe o rețea, care poate fi de tip RS-232, RS-485,
PROFIBUS, Ethernet etc. Operațiunea de legare de aplicație se face printr-o operație numită
configurare. Programele de configurare oferă posibilitatea realizării unei interfețe cu operatorul uman,
făcând legătura prin intermediul unor variabile numite taguri cu variabilele din automat, atât pentru
operații de intrare (introducere de date în automat) cât și pentru ieșire (afișare de stări ale unor variabile
din automat). În programele de configurare există obiecte, care se pot lega de variabile de stare și pot fi
prezentate stările diferitelor elemente de intrare (traductoare) sau elemente de execuție. Editorul
programului de configurare simplifică definirea parametrilor aplicației și oferă capabilități adăugate
pentru a face monitorizarea sistemului intuitiv, stochează întreaga aplicație, inclusiv imagini, astfel
încât editarea nu necesită fișiere sursă originale.
Gama de dimensiuni ale ecranului, tipul ecranului (tactil sau nu) și culorile se potrivesc nevoilor de
spațiu și de aplicații disponibile. Unele panouri operator sunt dotate cu sisteme de operare evoluate
(Windows CE). Exemple de programe de configurare sunt WinCC Flexible, pentru automatele
SIEMENS, Magelis, pentru automatele Schneider, Levi Studio pentru automate Wecon etc.
Acest mod de realizare a interfeței cu operatorul uman nu este singurul mod de realizare a acesteia. Se
pot folosi module speciale de interfațare în care sunt realizate servere de date, care pot comunica cu
programe care rulează pe un calculator, care au acces în acest fel la datele din automat. Astfel de
programe necesită pe lângă configurarea serverului de date și realizarea unei interfețe grafice cu
utilizatorul. Exemple de astfel de programe WinCC, InTouch etc.
Dispozitivele HMI oferă facilități de memorare în baze de date a datelor de la un moment dat, de
reprezentare grafică a istoricului unei variabile de proces și de setare de alarme la anumite valori ale
variabilelor.
În fig. 1 sunt reprezentate posibilitățile de realizare și monitorizare a unui sistem cu AP. Evident se va
opta doar pentru una din soluțiile de realizare a interfeței HMI. Dacă se folosește calculatorul pentru
realizarea HMI atunci configurarea se realizează chiar pe calculatorul pe care se realizează interfața.
5
AUTOMATE PROGRAMABILE vol. I
Proces
Panou Operator
OP
Automat Port
Programabil comunicaţie
Reţea
RS-232/Profibus/Ethernet
Port programare Port configurare
` `
6
AUTOMATE PROGRAMABILE vol. I
În cap. III sunt cuprinse metodele de programare structurată pentru automatele vectoriale: metoda
activării şi dezactivării sincrone, metoda utilizării bistabilelor R-S, metoda programării directe a
acţiunilor, metoda utilizării variabilelor de tip releu secvenţial și metode de programare structurată a
aplicațiilor mai. Acestea din urmă pot fi realizate și ca aplicații multitasking. Sunt analizate metode de
excludere mutulă pentru obiectele folosite în mai multe taskuri pentru eliminarea unor opriri de
elemente utilizate în mai multe taskuri. Scopul acestui capitol este acela de a pune la dispoziţie
programatorilor metode de programare structurată, uşurând activitatea de elaborare, depanare şi
documentare. Toate exemplele de programare sunt prezentate în limbaje apropiate de recomandările
IEC61131, fără referire la implementările din diversele medii de programare. Am considerat că
adaptarea lor la specificul unui mediu de programare este ușoară pornind de la aceste exemple.
Cap. IV este dedicat prezentării interfeţelor cu operatorul uman şi a programelor de configurare a
dispozitivelor de realizarea a acestor interfeţe. Prin intermediul acestora se poate realiza controlul unei
aplicaţii şi se pot monitoriza stările programului. Se tratează de asemenea posibilităţile utilizării
tehnologiei OLE for Process Control (OPC) pentru monitorizarea şi controlul aplicaţiilor cu automate
programabile.
Cap. V prezintă reţelele de automate. Acest capitol este necesar, într-o prezentare a problematicii
automatelor programabile, deoarece progresele realizate în domeniul automatizării întreprinderilor au
impus necesitatea interconectării acestora în reţele deterministe. Sunt tratate, în cadrul lucrării două
nivele ale reţelelor dezvoltate în întreprinderile automatizate: reţelele AS-i şi reţelele PROFIBUS.
Reţelele AS-i (Actuator-Sensor interface) sunt optimizate pentru interfaţarea cu senzori şi elemente de
execuţie binare şi prezintă avantajul combinării într-un singur cablu a alimentării şi comunicaţiei de
date, ceea ce reduce consumul de material şi creşte eficienţa conducerii proceselor. Reţelele
PROFIBUS sunt reţele de mare viteză şi siguranţă pentru automate şi alte echipamente. În cadrul
acestui capitol sunt tratate problemele legate în special de exploatarea datelor vehiculate pe aceste
reţele din perspectiva programelor care rulează pe automate. Sunt prezentate mai ales elemente de
configurare a reţelelor şi de utilizare a datelor vehiculate pe acestea în cadrul programelor de
automatizare şi mai puţin cele legate de protocolul de comunicaţie. Sunt tratate, în mod simplificat și
alte tipuri de rețele de automate. De asemenea sunt prezentate, succint și alte tipuri de rețele de
automate cu ar fi rețelele CAN, PROFINET etc.
În cap. VI este analizat modul de alcătuire al unor proceduri pentru comanda cu AP a unor elemente de
execuție mai des întâlnite în automatizările industriale: motoare asincrone, vane hidraulice și
pneumatice, elevatoare și benzi transportoare, sisteme de cântărire, sisteme de dozare, sisteme de
descărcare din vagoane și camioane a pulberilor etc.
Este ceea ce mi-am propus să abordez în cadrul celor două volume, însoţind consideraţiile teoretice de
cât mai multe exemple de programe, conținute în studii de caz, realizate pentru probleme concrete.
Exemplele cuprinse în fiecare capitol oferă cititorului cadrul necesar pentru înţelegerea conceptelor
prezentate, precum şi un ghid pentru dezvoltarea de programe proprii. Am căutat să rezolv studiile de
caz astfel încât să fie cât mai independente de tipul automatului folosit, fără a mă referi la mediile de
programare oferite de diferite firme. Cunoașterea limbajelor și meniurile de ajutor sunt, cred eu,
suficiente pentru a realiza încărcarea, depanarea și vizualizarea on-line a variabilelor programului
Am depus eforturi majore pentru a alege problemele cele mai instructive astfel încât rezolvarea lor să
ofere atât informaţii cât şi cunoştinţe practice. În cadrul exemplelor şi a problemelor rezolvate nu s-a
abordat comanda manuală şi nu s-a prevăzut reflectarea stării circuitelor de siguranţă cu scopul de a nu
complica prea mult prezentarea. Cititorul trebuie să ştie că o soluţie destinată implementării efective
7
AUTOMATE PROGRAMABILE vol. I
trebuie să conţină şi aceste structuri. Am ales, cred, cele mai reprezentative exemple pentru înţelegerea
chestiunilor teoretice prezentate. Nu mi-am propus enunţarea şi rezolvarea unor probleme de cercetare.
Trebuie menţionată, în final, contribuţia la realizarea a aplicațiilor concrete a problemelor rezolvate la
firma IMSAT Cuadripol Brașov. Aduc mulțumirile mele regretatului inginer Dan Pălășan, care a fost
un consultant de nădejde în toate problemele practice pe care le-am rezolvat la firmă.
La realizarea acestei cărți, un rol important l-au avut generaţiile de studenţi care, prin modul în care s-
au apropiat de problematica tratată şi prin entuziasmul cu care s-au grăbit să o aplice în cadrul firmelor
în care lucrează, au întărit convingerea mea în utilitatea cărții şi au stimulat perfecţionarea ei continuă.
Tuturor celor care m-au învăţat să preţuiesc efortul intelectual le dedic această carte. Autorul a depus
toate eforturile pentru redactarea acestui material. Nu fac nici o declaraţie şi nu ofer garanţii de orice fel
cu privire la caracterul complet sau precizia conţinutului prezentat şi nu îmi asum răspunderea de orice
natură. Autorul nu va fi răspunzător pentru orice pierderi sau daune de orice fel cauzate, direct sau
indirect, de conţinutul materialului. Autorul ţine să mulţumească prietenilor, colegilor şi altor
specialişti pentru sugestiile lor şi pentru revizia unor părţi din manuscris, pentru corecturile şi
completările semnalate. Orice erori care au mai rămas sunt din vina autorului.
Ioan MĂRGINEANU
BRAȘOV 10 mai 2019
8
AUTOMATE PROGRAMABILE vol. I
automat şi nu sunt modificate şi deci pot fi memorate în memorii de tip ROM, fiind în acest fel şi mai
bine protejate de eventualele întreruperi accidentale ale alimentării cu energie electrică.
Dispozitiv de
programare
Relee Elemente de Relee Elemente de
Bobine execuţie Bobine execuţie
`
Port de
progranare
Modul de intrări
Modul de intrări
Modul de intrări
Modul de intrări
analogice (AO)
Modul de ieşiri
Modul de ieşiri
analogice (AO)
Modul de ieşiri
Modul de ieşiri
analogice (AI)
analogice (AI)
digitale (DO)
digitale (DO)
digitale (DI)
interfață cu
digitale (DI)
Rack
Modul de
rețeaua
Sursă CPU
Port de Port de
comunicaţie comunicaţie
Butoane Butoane
Traductoare Traductoare
Contacte Contacte
Reţea
Fig. I.1. Structura unui automat modular și extensii ale acestuia prin intermediul rețelei
Memoria pentru date, care este de tip RAM, este organizată conceptual cu acces la nivel de bit, la nivel
de octet, la nivel de cuvânt sau la nivel de dublu cuvânt şi este împărţită în trei zone distincte (fig. I.2):
o zona rezervată pentru păstrarea imaginii intrărilor, o zona rezervată pentru păstrarea imaginii ieşirilor
și o zona rezervată variabilelor de program şi de sistem.
Module de
intrări
Module de ieșiri
Proces
Variabile de interne
Module de
ieșiri
Variabile de ieșire
reperate prin simboluri, care încep cu litere prefixate diferit, de exemplu la automatele din seria
SIMATIC: I, pentru intrări binare, PIW, pentru variabile de intrare pe cuvânt, Q, pentru ieşiri, M,
pentru variabilele interne.
O altă deosebire constă în modul de execuţie a unui program. În timp ce la calculatoarele de proces sau
informatice, un program (proces, task, aplicaţie) este activat de către sistemul de operare şi se execută
în regim monotasking sau multitasking, începând de la prima instrucţiune până la terminare sau până la
intrarea în funcție a comutatorului dintre taskuri, la AP se execută în regim monotasking un ciclu
infinit, care are trei faze (fig. I.3): faza de citire a intrărilor, numită în literatură PIIT (Process Image
Input Table) în care sunt scanate intrările automatului şi are loc încărcarea acestora în zona de memorie
rezervată variabilelor de intrare, faza de tratare, numită PP (Processing the Program) în care se execută
instrucţiunile încărcate într-o zonă de memorie rezervată programelor. Dacă în această zonă utilizatorul
nu a încărcat nici un program, atunci se va executa o singură instrucţiune NOP și faza de actualizare a
ieşirilor, numită PIOT (Process Image Output Table) în care se transferă spre ieşirile automatului o
zonă de memorie care conţine imaginile acestora în memoria automatului.
PIIT PP PIOT
TC
Pentru ca AP să răspundă cât mai rapid la modificările din proces trebuie ca ciclul să fie cât mai scurt
posibil. Lungimea ciclului depinde de numărul de intrări şi ieşiri şi de numărul de instrucţiuni din
programul scris de utilizator. Trebuie ca ciclul unui AP să nu depăşească o valoare critică pentru
procesul controlat.
Pentru automatele mai complexe, la începutul unui ciclu s-a introdus o fază de procesare internă,
numită IP (Internal Processing), prezentată în fig. I.4, în care se realizează operaţii specifice, cum ar fi:
gestionarea cuvintelor de sistem, actualizarea valorii timpului, actualizarea stării lămpilor de pe panoul
automatului, citirea stării butoanelor de pe panoul automatului etc.
IP PIIT PP PIOT
TC
variabila I1 se schimbă din zero în unu la momentul t1 ea va fi considerată în cursul primului ciclu tot
de valoare zero, urmând să fie considerată cu valoarea unu doar în faza de prelucrare din ciclul al
doilea (după timpul t2).
I1
t1 t2 t
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
13
AUTOMATE PROGRAMABILE vol. I
hardware. Uneori, depinzând de producător, aceste intrări trebuie configurate. Alte ori intrările
contoarelor de mare viteză sunt legate la anumite intrări.
Mărimile de intrare într-un automat programabil sunt de două tipuri: booleene (care pot fi și sub formă
de impulsuri) și analogice (care pot fi în tensiune sau în curent). Pentru alte tipuri de mărimi de intrare
se folosesc structuri speciale de condiționare de semnal pentru a le transforma în curent sau tensiune.
Pentru mărimile booleene (contactele) trebuie avut în vedere ce contact se preia în automat și ce
semnificație are acesta în cadrul procesului. De obicei traductoarele pun la dispoziție cel puțin două
contacte: unul normal deschis (care se închide în anumite condiții) și unul normal închis (care se
deschide în anumite condiții). Folosirea unui contact depinde de modul în care se interpretează cele
două poziții ale acestuia. De exemplu ciuperca de avarie are legat contactul normal închis la automat.
Apăsarea ciupercii deschide acest contact, ceea ce trebuie interpretat ca o avarie. Pentru orice contact
care semnifică buna funcționare, dacă este închis, se va folosi în program valoarea negată a intrării
respective ca să se considere avarie. Pentru orice contact care semnifică buna funcționare, dacă este
deschis, se va folosi în program valoarea nenegată a intrării respective ca să se considere avarie. Pentru
a stabili starea unui motor, de exemplu, se folosește contactul normal deschis al contactorului, care
alimentează motorul. Închiderea acestuia semnifică faptul că motorul este pornit, mai precis că o
comandă spre motor a fost dată.
În programele de automatizare preluarea mărimilor analogice se face cu convertoare analog-numerice,
care pot prelua doar mărimi sub formă de tensiuni.
Valorii de 0 V îi corespunde LO_LIM în convertor și valorii de 10 V îi corespunde valoarea HI_LIM
unități convertor. Dacă mărimea este un curent (0 – 20 mA sau 4 – 20mA) automatul are un sistem de
condiționare se face posibilă preluarea în mod asemănător cu cea de tensiune. Există o legătură, de
obicei liniară, între mărimea din convertor și mărimea fizică, exprimată în unități ale sistemului
internațional. Această legătură este exprimată de caracteristica traductorului care este pusă la dispoziție
de producător, care este de obicei este liniară sau liniarizată (fig. I.7). Valorile HI_LIM și LO_LIM
sunt, de multe ori, setabile în faza de punere în funcțiune a traductorului.
SI
HI_LIM
LO_LIM
4 mA 20 mA
0V 10 V
14
AUTOMATE PROGRAMABILE vol. I
Aşa cum s-a arătat mai sus, legătura cu procesul este realizată la AP prin intermediul unor module sau
porturi de I/O, care sunt specifice tipului de mărimi de intrare/ieşire necesare pentru conducerea
procesului. Vom analiza, în cele ce urmează modulele cele mai des întâlnite în cazul controlului
proceselor: module de intrări/ieşiri binare şi modulele de intrări/ieşiri analogice. O altă categorie de
structuri de legare la proces, cele de intrări sau ieşiri în impulsuri sunt realizate chiar pe unitatea
centrală sub forma unor contoare programabile.
Toate modulele AP sunt compuse din două părţi distincte: o structură de conectare la magistrală și o
structură de conectare la proces, conectate printr-o magistrală internă a modulului.
Structura de conectare la magistrală, semănă cu structura de conectare la magistrală a porturilor
calculatoarelor, conținând logica de decodificare a adresei modulului, registre de date, logica de
generare a semnalelor încărcare de pe o magistrală internă, de selectare a acestor registre, logica de
generare a semnalelor de hand-shaking cu unitatea centrală pentru transfer în/de la memorie și,
eventual, a unor semnale de întrerupere etc. Deoarece această structură este studiată la disciplina de
calculatoare nu vom insista asupra ei.
Structura de conectare la proces este foarte variată, în funcție de tipul de mărime care trebuie preluată.
Rolul acesteia de a aduce pe magistrala internă și în cele din urmă, în registrele de date ale modulului, a
unui vector, izolat galvanic, reprezentând starea pentru una sau mai multe intrări ale automatului.
15
AUTOMATE PROGRAMABILE vol. I
Magistrala internă
C
R5
R4
R3
OC
LED
DZ
R1 R2
I GND +Ua
Fig. I.8. Structura de conectare la proces pentru un bit al unui modul de intrări binare
Starea unui contact este transformată într-o tensiune prin intermediul unei surse exterioare de tensiune
U, care este diferită de Ua, care alimentează modulul. Rezistenţele R1 şi R2 sunt rezistenţe de adaptare a
nivelului (divizor de tensiune). Tensiunea redresată alimentează o diodă dintr-un optocuplor OC. Dacă
dioda din optocuplor este parcursă de curent, ceea ce înseamnă că traductorul binar (contactul) legat la
intrarea AP este închis, tranzistorul din OC este deschis, ceea ce înseamnă că pe linia magistralei
interne se află un zero logic, deoarece condensatorul C se descarcă pe rezistenţa directă a tranzistorului.
În cazul în care traductorul binar de intrare nu este închis, prin diodă nu va trece curent şi deci
tranzistorul este închis, ceea ce înseamnă că la intrarea portului se află un unu logic, condensatorul C
fiind încărcat. Este după cum se vede o logică negativă de preluare a semnalului, care poate fi
transformată în interiorul modulului (ceea ce se întâmplă).
Rezistenţa R3 are rolul de a limita curenţii absorbiţi din sursă. Rolul diodei DZ este acela de a fixa un
prag de la care să fie sensibilă intrarea, iar LED este un indicator luminos al stării intrării.
16
AUTOMATE PROGRAMABILE vol. I
Magistrala internă
OC
PA
LED
D1
AD
B D2
Q +Ua
Fig. I.9. Structura de conectare la proces pentru un bit al unui modul de ieșiri binare.
Acesta va comanda printr-un contact C procesul condus de automat. Trebuie astfel proiectat PA încât,
la un unu pe ieşirea respectivă, să realizeze alimentarea releului. LED este un indicator luminos al stării
unu a ieşirii, iar dioda D1 este montată cu scopul împiedicării conectării inverse la sursă a modulului.
Dioda D2 are rolul de a realiza preluarea supratensiunilor de comutaţie care apar pe înfăşurarea releului.
Există și automate care au ieșire de tip tranzistor. În aceste cazuri ieșirea amplificatorului Darlington
polarizează tranzistorul de ieșire.
17
AUTOMATE PROGRAMABILE vol. I
traductorul folosit dă semnal în curent etc. O mare parte din furnizorii de echipament oferă module
configurabile software şi hardware pentru cea mai mare parte din funcţiile amintite mai sus.
Configurarea hardware se realizează direct pe modul prin intermediul unor jumperi, care trebuie
poziţionate corespunzător înaintea introducerii modulului în rack. Configurarea software se realizează
din mediul de programare al automatului. Această configurare este transmisă unităţii centrale care
programează corespunzător unitatea de control locală (LCU) a modulului. La automatele simple pentru
conversia mărimilor analogice este folosit convertorul din controler, iar sistemul de condiţionare
realizează selectarea căii de legătură dintre o intrare şi convertor realizată prin aşa numita configurare
software a intrării.
Magistrală internă
Canal 1
Canal 2 MUX
SCS AICV E/M CAN
A
Canal n
H SC EOC
Tip
Canal Câstig
achiziție
LCU
19
AUTOMATE PROGRAMABILE vol. I
O structură posibilă a unui sistem de condiţionare care să realizeze adaptarea modulului pentru
conectarea intrărilor atât la traductoare cu mărimi de ieşire în tensiune cât şi la traductoare cu mărimi
de ieşire în curent este prezentată în fig. I.11.
Volt
20 mA
3 21 Amplificator
Instrumental
VIN R2 + Canal 1
IIN R1
com -
de unde rezultă:
20
AUTOMATE PROGRAMABILE vol. I
HI _ LIM LO _ LIM
OUT ( IN K1 ) LO _ LIM .
K 2 K1
U X
(UC)
UR
K2 2N 1
SCALARE
ux
IN
K1
LO_LIM OUT HI_LIM Y
(HMI) REAL
(SI)
21
AUTOMATE PROGRAMABILE vol. I
de unde:
HI _ LIM
OUT IN .
2 N 1
22
AUTOMATE PROGRAMABILE vol. I
Magistrală internă
LD DR
LCU
CNA
SCS
Ieșire AO
23
AUTOMATE PROGRAMABILE vol. I
K 2 K1
OUT ( IN LO _ LIM ) K1
HI _ LIM LO _ LIM
Valoarea OUT este aceea care trebuie încărcată în convertorul CNA, pentru a atinge valoarea dorită IN.
La automatele SIEMENS acest lucru se face cu o rutină specială numită UNSCALE care să transforme
valoarea din unități ale sistemului internațional în unități convertor.
Considerații aproape similare ca la modulele de intrări analogice, se fac pentru cazul în care se folosesc
convertoare CNA cu număr fix N de biți și tensiuni de referință cunoscute (Săgeata de descalare este cu
sens schimbat față de fig. I.13).
X
(UC)
K2
OUT
Descalare
K1
LO_LIM IN HI_LIM Y
REAL
(SI)
24
AUTOMATE PROGRAMABILE vol. I
25
AUTOMATE PROGRAMABILE vol. I
U D
a b
U D
c d
P P
R R
e f
P P
R R
g h
26
AUTOMATE PROGRAMABILE vol. I
CPU CPU
CV
CV PV
PV Internal Memory
Internal Memory
U,
U, P,
P, AA
Comparator
Comparator
Register
Register
LOGIC
Register
Register
CV
PV
CONTR
CV
PV
D,
D, R,
R, BB
OL
Software
Software
direction
direction M
M CC
Mask
Mask
Control
Control PV=CV
PV=CV
Clear
Clear
Control
Control
EN
EN
Software
Software Software
Software
Mask
Mask Clear
Clear
27
AUTOMATE PROGRAMABILE vol. I
Circiute(module) de ieșire
REGISTRE
REGISTRE HSIO
HSIO
Circiute(module) de intrare
28
AUTOMATE PROGRAMABILE vol. I
29
AUTOMATE PROGRAMABILE vol. I
Unitatea de control microprogramată are semnalele de control incluse în cuvinte binare succesive
(microinstrucţiuni) stocate într-o memorie de mare viteză, inclusă în UC, numită memorie de control.
Implementarea algoritmului de control se face prin programarea conţinutului memoriei de control.
Fiecărei instrucţiuni recunoscute de automat îi corespunde o secvență de microoperaţii generate prin
citirea unei secvenţe de microinstrucţiuni din memoria de control (secventa de microinstrucţiuni numită
microprogram). Microprogramele conţinute în memoria de control formează un interpretor al setului de
instrucţiuni recunoscut de procesor.
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
31
AUTOMATE PROGRAMABILE vol. I
Numărătorul de bucle NB este un numărător sincron de tip count-down care numără controlat de
semnalul de ceas (CLK) dacă este validat de semnalul EN, care este activ jos și poate fi încărcat cu o
adresă de pe intrările directe (D) pe frontul pozitiv al semnalului de ceas (CLK) această operaţie fiind
validată de semnalul LD, care este activ jos. Această facilitate este folosită, aşa cum vom vedea mai
jos, pentru executarea ciclurilor în programe. Pentru realizarea ciclurilor se poate testa semnalul TC=0,
emis de NB atunci când conţinutul său este 0.
Numărătorul de microprogram PC este alcătuit dintr-un registru şi un circuit de incrementare. Acest
circuit poate să transfere la intrarea PC valoarea Y+1. În acest fel se pot genera adrese consecutive.
Stiva F este folosită, în principal, pentru memorarea adresei de revenire în cazul lucrului cu proceduri.
Stiva are ataşat un pointer (SP) care indică ultima locaţie scrisă.
Pointerul de stivă funcţionează ca un numărător sincron bidirecţional cu intrări separate pentru
controlul operaţiilor PUSH şi al validării stivei FE (PUSH=1 și FE=0 se introduce în stivă; PUSH=0 și
FE=0 se extrage din stivă). După introducerea în stivă se crește cu o unitate SP, pentru a pregăti stiva
să primească o nouă adresă, iar înainte de extragerea din stivă se scade valoarea SP cu o unitate.
Ieşirea Y a microsecvenţiatorului reprezintă adresa pentru memoria de microprograme. De obicei
ieşirile Y ale microsecvenţiatorului sunt de tip trei stări, acest lucru este util dacă se doreşte controlul
extern al memoriei de microprograme.
I.8.3. STRUCTURA AUTOMATULUI MICROPROGRAMAT
Pentru realizarea unui automat microprogramat, microsecvenţiatorului descris mai sus i se adaugă
următoarele elemente hardware:
Un registru pipe-line (RPL), pentru memorarea microinstrucţiunii, care are două ieşiri: o ieşire
normală şi o ieşire TSL, care este legată la magistrala internă de adrese. Structura câmpurilor
registrului este prezentată în fig. I.21. Partea AS este de lăţimea adresei memoriei de
microprograme şi se leagă la magistrala internă de adrese a automatului. Partea Sel Next ADD
conţine adresa pentru o memorie PROM şi pentru un lanţ de două multiplexoare MUX IN şi
MUX N (P=0 selectează ieşirea lui MUX N, iar P=1 selectează ieşirea negată). Partea OUT a
registrului reprezintă chiar ieşirile automatului. Încărcarea registrului se face pe frontul crescător
al semnalului CLK, iar validarea ieşirilor sale spre magistrala internă de adrese se face cu
semnalul OE, care este activ jos.
AS Sel Next ADD OUT
A_CMS A_MUX
A3 A2 A1 X P I2 I1 I0
32
AUTOMATE PROGRAMABILE vol. I
din ROM CMS unul din două cuvinte (la adresa pară sau impară), deci două comenzi diferite
spre restul structurii după cum intrarea în automat selectată este 0 sau 1.
Alegând corespunzător conţinutul memoriei ROM-CMS se poate realiza un automat microprogramat
de performanţă mare, care permite implementarea unui set complet de instrucţiuni de adresare. Setul
poate cuprinde instrucţiuni de salt condiţionat si necondiţionat, instrucţiuni cu bucle şi subrutine,
oferind o mare flexibilitate în realizarea automatizărilor secvenţiale. Automatul este prezentat în figura
I.22.
Structura este o structură sincronă de tip pipe-line. O asemenea structură suprapune execuţia
microinstrucţiunii curente cu extragerea din memoria de microprograme a instrucţiunii următoare.
Elementul cheie al acestei structuri este registrul pipe-line (RPL) plasat la ieşirea memoriei de micro-
programe.
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
33
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
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.
35
AUTOMATE PROGRAMABILE vol. I
ADRESĂ 3 F
ROM-CMS S0 S1 LD EN PUSH FE OE
1110 0 0 1 1 X 1 1 1
1111 1 1 1 1 X 1 0 1
F D
Fig. I.27. Conținutul memoriei ROM-CMS pentru executarea instrucțiunii CJS
Instrucţiunea 6, LDNB (LoaD NB and Continue). Este o instrucţiune de încărcare necondiţionată a
NB cu o adresă din registrul pipe-line. Conţinutul celor două adrese este prezentat în fig. I.28.
Instrucțiunea trebuie plasată înaintea unei bucle FOR, care va fi executată de n+1 ori, daca se încarcă n
în NB.
ADRESĂ 1 D
ROM-CMS S0 S1 LD EN PUSH FE OE
1110 0 0 0 1 X 1 0 1
1111 0 0 1 1 X 1 0 1
1 D
. .
Fig. I.28. Conținutul memoriei ROM-CMS pentru executarea instrucțiunii LDNB
Instrucţiunea 7, FOR ( Început de bucla FOR). Are ca efect introducerea în stivă a adresei următoare,
care se găseşte în PC. Este o instrucţiune necondiţionată, prima dintr-o buclă de program. Adresa
încărcată în stivă este chiar adresa primei instrucţiuni a ciclului. Dacă se înscrie în NB un număr n şi la
sfârşitul ciclului se execută un salt condiţionat, condiţia de test fiind semnalul TC emis de NB, la
conţinut 0, atunci ciclul se va executa de n+1 ori.
Ultima instrucţiune a ciclului, cea care realizează testarea trebuie să realizeze şi scăderea cu o unitate a
conţinutului NB (vezi instrucţiunea LOOP şi NEXT). Conţinutul celor două adrese este prezentat în fig.
I.29.
ADRESĂ 3 B
ROM-CMS S0 S1 LD EN PUSH FE OE
1110 0 0 1 1 1 0 1 1
1111 0 0 1 1 1 0 1 1
3 B
Fig. I.29. Conținutul memoriei ROM-CMS pentru executarea instrucțiunii FOR
Instrucţiunea 8, NEXT (Sfârşit de buclă cu adresa de salt din stivă). Este o instrucţiune de salt
condiţionat a cărui mecanism este următorul: cât timp NB nu emite semnalul TC=1 (conţinut 0), adresa
următoare va fi luată din stivă, iar în caz contrar, din PC. Condiţia testată este deci semnalul emis de
numărătorul de bucle, iar la test nereuşit trebuie decrementat conţinutul NB. Operaţia de citire din stivă
nu este însoţită de decrementarea pointerului de stivă, ceea ce permite reluarea buclei de la aceeaşi
36
AUTOMATE PROGRAMABILE vol. I
adresă. Pentru ca aceasta să fie corect executată trebuie ca, în prealabil, registrul NB şi stiva să fie
încărcate cu numărul de buclări, respectiv, adresa de început a buclei. Conţinutul celor două adrese este
prezentat în fig. I.30.
ADRESĂ 6 F
ROM-CMS S0 S1 LD EN PUSH FE OE
1110 0 1 1 0 1 1 1 1
1111 0 0 1 1 0 0 1 1
3 F
TCLK
I(k) I(k+1)
t1
Y
k k+1 k+2
MR
taMR
I(k) I(k+1) I(k+2)
37
AUTOMATE PROGRAMABILE vol. I
Diagrama începe în momentul în care registrul RPL este încărcat cu microinstrucţiunea de la adresa k.
Această încărcare se realizează, în diagramă, pe frontul crescător al impulsului de ceas. După un timp
t1, necesar propagării prin memoria ROM-CMS şi multiplexorul din microsecvenţiator, se va selecta
adresa următoare k+1, pentru memoria de microprograme, deoarece instrucţiunea este o instrucţiune
CONT.
t1 t aROM CMS t MUX
După timpul de acces la memoria de microprogramare (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.
38
AUTOMATE PROGRAMABILE vol. I
39
AUTOMATE PROGRAMABILE vol. I
ÎNCĂRCARE PROGRAM, care permite încărcarea unui program, salvat anterior, începând de la
adresa 0 a memoriei de microprograme. Alegerea programului se face dintr-o fereastră pop-up
care se deschide la apăsarea butonului.
START PROGRAM, care permite rularea programului de la adresa Y. Rularea programului se
face fie instrucțiune cu instrucțiune, fie continuu, în funcție de poziția unui comutator care poate
fi poziționat pe funcționare continuă sau pe funcționare pas cu pas. La execuția pas cu pas, după
terminarea execuţiei unei instrucțiuni se trece într-o stare de aşteptare în care se pot analiza
semnalele din automat, care sunt afișate în casete numerice poziționate în locurile
corespunzătoare. Reluarea funcționării, în acest caz se face la o nouă apăsare a butonului. La
execuția continuă intervalul între două microinstrucţiuni este stabilit prin programarea unui
timer. În cazul programului timerul este setat la 1 s.
STOP PROGRAM, care permite oprirea programului.
Mai există și un buton numit RESET, care iniţializează adresa Y și SP permiţând rularea programului
de la adresa 0.
Cei interesați să lucreze cu simulatorul de automat microprogramat pot să mă contacteze prin e-mail la
adresa ioan.margineanu@yagoo.com pentru a primi programul de simulare.
Se poate imagina o extindere a programului. Această extindere ar putea pune în legătură automatul cu
un program de simulare a unui proces cu intrări și ieșiri booleene. În fereastra de simulare a
automatului se va prevedea un buton cu două poziţii, care permite funcţionarea programului
independent sau în legătură cu programul numit PROCES. Rularea independentă este recomandată
atunci când se urmăreşte înţelegerea modului de funcţionare a automatului, iar rularea în legătură cu
procesul este utilă pentru înţelegerea modului de cuplare la proces şi a interacţiunii dintre cele două
sisteme.
Cele două programe comunică între ele printr-o legătură de tip client-server, cu protocol TCP/IP. ele se
pot găsi pe acelaşi calculator sau pe calculatoare diferite legate într-o reţea Ethernet. Serverul este
programul care simulează automatul, iar clientul este programul care simulează procesul.
Pentru a realiza legătura între ele trebuie mai întâi trecut butonul din fereastra principală pe poziţia
Legat la proces. Apoi se va înregistra serverul prin apăsarea unui buton. La apăsarea acestuia se va
deschide o fereastră în care utilizatorul trebuie să precizeze numărul portului pe care se vor conecta
cele două programe. Din acest moment orice modificare a ieşirilor automatului va fi transmisă de către
server sub forma unui octet. În programul PROCES va exista un buton de conectare la server și se vor
preciza, la apăsarea acestuia, numele calculatorului pe care rulează serverul și numărul portului de
legătură. Acesta va deveni verde numai după ce clientul, care este programul Proces, se va conecta la
server.
I.8.6. EXEMPLE DE PROGRAME
Exemplul 1. Scrierea unei bucle
Să se scrie un program care să repete comenzile de la adresele 2, 3, 4 şi 5 de 4 ori, apoi să execute o
comandă nouă şi apoi să revină la repetarea comenzilor de la adresele 1, 2 şi 3.
Soluţie: Mediul de programare al automatului are un interpretor aşa că programul va fi dat atât în
hexazecimal cât şi cu mnemonice. Lungimea celor trei zone ale registrului RPL este de 1 octet.
40
AUTOMATE PROGRAMABILE vol. I
0000: 03 A0 00 LDNB
0001: 00 40 00 FOR
0002: 00 00 01 CONT
0003: 00 00 02 CONT
0004: 00 00 04 CONT
0005: 00 E0 08 NEXT
0006: 00 00 10 CONT
0007: 00 20 20 JP 00
41
AUTOMATE PROGRAMABILE vol. I
piese şi cu braţul coborât atunci când este descărcat. Poziţiile conveierului pe calea de rulare sunt
delimitate pe calea de rulare prin limitatoarele de poziţie C1, C2, C3, C4, C5, iar poziţiile braţ ridicat şi
braţ coborât sunt delimitate prin limitatoarele de cap de cursă S, pentru cap ridicat şi J, pentru cap
coborât.
Ciclul de funcţionare trebuie să asigure deplasarea succesivă a pieselor în dreptul fiecărui post de
tratare, lăsarea acestora acolo un timp care va fi reglat prin reglarea vitezei de deplasare a conveierului.
Iniţial, în posturile de lucru se găsesc stative goale, iar în postul I un stativ care va fi încărcat. Poziţia
iniţială a conveierului va fi în postul I cu braţul jos (numerotat cu 1). Acesta se va deplasa spre dreapta
cu braţul coborât până în poziţia C4 (numerotată cu 2), unde, prin ridicarea braţului se va prelua
stativul aflat aici şi îl va deplasa în postul C5 (pozițiile 3, 4 și apoi 5), unde îl va depune în scopul
descărcării. Din această poziţie, cu braţul coborât se va deplasa în poziţia C3 (numerotată cu 6), va
prelua stativul şi îl va transporta în postul eliberat anterior de la C4. (pozițiile 7, 8 și apoi 9),
În fazele următoare se va asigura transferul stativelor între posturile C2 şi C3, C1 şi C2. In ultima parte a
ciclului, conveierul se va deplasa la poziţia C5, de unde va aduce stativul descărcat acolo în poziţia C1,
pentru reîncărcare, revenind în poziţia iniţială.
Să se scrie programul pentru automatul microprogramat, care realizează această automatizare.
C1 C2 C3 C4 C5
O- O+
V+
S
V-
I II III IV V
20 19
15 11 12 7 8 3
16 4
10 13 6 9
14 5
J
1 17 2 18
42
AUTOMATE PROGRAMABILE vol. I
C1 C 2 C3 C4 C 5 S J
0 1 2 3 4 5 6 7 L+
0 1 2 3 4 5 6 7 M
O+ O- V+ V-
43
AUTOMATE PROGRAMABILE vol. I
apropiată de limbajul de nivel înalt PASCAL și două limbi grafice, Ladder Diagram (LD), care permite
programarea aplicațiilor într-o manieră asemănătore cu proiectarea unui circuit cu contacte și relee,
operând numai cu variabile booleene și Function Block Diagram (FBD), care este o extensie a
limbajului LD, conținând blocuri complexe și putând opera și cu alte tipuri de variabile decât cele
booleene. Ediție a treia, publicată în 2013, anulează și înlocuiește ediția a doua, publicată în 2003 și
constituie o revizie tehnică. Acesta include următoarele modificări tehnice semnificative: Este o
extensie compatibilă celei de a doua ediție, iar principalele extensii sunt noi tipuri de date și funcții de
conversie, referințe, spații de nume și caracteristicile orientate pe obiecte ale claselor și blocuri de
funcții.
Cele mai multe medii de programare permit vizualizarea programelor scrise în LAD sau FBD și în STL
prin selectarea limbajului din opțiunile care apar în mediu la View (uneori mediul introduce câteva
instrucțiuni NOP). Se spune că limbajele sunt reversibile. Invers, adică din STL la LAD sau FBD nu
este permisă dacă se apelează blocuri de tip TIMER sau CONTOR.
Normele IEC 61131-1 definesc SFC (Sequential Function Chart) ca fiind un mijloc destinat pentru
structurarea şi organizarea unui program. Unele medii de programare oferă compilatoare grafice pentru
realizarea programelor pentru AP pe baza SFC. Acesta are la bază reprezentarea sub formă de reţea
GRAFCET a acţiunilor secvenţiale. Chiar dacă nu este disponibil un compilator de SFC este
recomandat să se realizeze diagrama pentru orice program, care cuprinde acţiuni secvenţiale pornind de
la regulile GRAFCET. Această reprezentare poartă numele de graf de specificare. Utilizarea grafului de
specificare este utilă pentru prezentarea structurată a acțiunilor secvențiale cu atât mai mult cu cât se
cunosc metode de transformare a unui graf de specificare, așa cum vom arăta mai jos, în orice limbaj.
Orice POU este alcătuit din două părţi: partea de declaraţii şi partea de cod.
În partea de declaraţii a variabilelor se definesc toate variabilele utilizate într-un POU. Trebuie făcută
distincţia între variabilele vizibile pentru exteriorul POU (variabile de interfaţă) şi variabilele locale
(VAR). Variabilele de interfaţă pot fi variabile de intrare (VAR_INPUT) sau variabile de ieşire (VAR_OUTPUT).
Mai există şi alte variabile VAR_GLOBAL, care sunt comune tuturor POU, la SIEMENS aceste variabile
fac parte dintr-o structură numita Symbol Table sau VAR_EXTERNAL, care sunt din alte POU. Partea de
declaraţii poate avea diferite forme. De obicei ea este realizată în mod text sau tabelar.
Partea de cod conţine instrucţiuni destinate automatului în oricare dintre limbajele de mai sus.
Tipurile de date elementare definite de normele IEC 61131-3 sunt: Booleene, reprezentate pe un bit şi
notate cu BOOL, octeţi (8 biţi), cuvinte (16 biţi) şi cuvinte duble (32 biţi), notate cu BYTE, WORD şi
respectiv DWORD, Întregi, notate cu INT, Reale (32 biţi), notate REAL, Şiruri de caractere, notate cu STRING
și Variabile de tip timp şi dată, notate TIME şi respectiv DATE.
Este permisă utilizarea unor date de tip tablou (ARRAY) şi structură (STRUCT), precum şi date derivate din
acestea.
Identificarea datelor se face utilizând atât adrese absolute cât şi simbolice.
Adresarea absolută utilizează denumirea zonei de memorie pentru identificarea adresei. Denumirile
zonelor de memorie pot cuprinde două prefixe. Primul prefix poate fi: %I, pentru intrări, %Q, pentru
ieşiri și %M, pentru variabile interne. Există și alte variante prefixată specifice pentru diferiți
producători.
45
AUTOMATE PROGRAMABILE vol. I
Al doilea prefix poate fi: x.y, pentru variabile de tip boolean. Valoarea x reprezintă octetul, iar
valoarea y reprezintă bitul, B, pentru octet (Byte), W, pentru cuvânt (Word) și D, pentru dublu cuvânt
(Double word).
Exemple: %Ix.y, %IBx, %IWx, %IDx, reprezintă o variabilă de intrare booleană reprezentând bitul y
din octetul x, respectiv octetul x, cuvântul x sau dublul cuvânt x.
Adresarea indirectă sau simbolică utilizează identificatorii, care sunt şiruri de caractere alfanumerice,
începând cu o literă, pentru identificarea adresei. În aceste cazuri este nevoie de editarea zone de
declaraţii pentru variabile, care poate fi şi o tabelă de simboluri, pentru a face legătura dintre adresa
absolută şi cea indirectă.
II.2. LIMBAJUL IL (Instruction List) SAU STL (StaTement List)
II.2.1. INTRODUCERE
Instruction List (IL) sau StaTement List (STL) este un limbaj de nivel jos, definit ca parte a normei IEC
61131. El este utilizat pentru realizarea aplicaţiilor mici, pentru optimizarea codului anumitor părţi ale
unor aplicaţii și uneori pentru ascunderea unor algoritmi importanți dintr-un program. De aceea nu vom
insista asupra lui. Este destinat, în special programatorilor care au experiență în utilizarea limbajelor de
asamblare. IL se bazează pe AWL (AnWeisungsListe) elaborat de firma SIEMENS, care utilizează
modelul cu un singur acumulator. Limbajul este nivelul de bază al limbajelor de programare pentru AP
- toate celelalte limbaje de programare putând fi convertite la programe IL. Conversia inversă, adică
din alte limbaje de programare pentru AP în IL, nu este întotdeauna posibilă. Un program scris în
limbaj de IL este o secvenţă de mnemonice (nume simbolice) care va fi convertită în cod executabil
prin operaţii de asamblare şi editare de legături.
Programele în limbajul IL utilizează stiva pentru întârzierea operaţiilor indicate de paranteze. Vom
prezenta în continuare caracteristicile generale ale limbajului, urmând ca scrierea unui program, pentru
un anumit tip de automat, să se facă respectând aceste reguli, împreună cu altele, prezentate de
producător în manualele de utilizare a mediilor de programare sau în meniurile de ajutor ale mediilor și
manualele de utilizare, deoarece versiunile diferiţilor producători sunt similare, dar nu identice cu
versiunea IEC 61131 a limbajului IL.
În general, un program IL sau STL este o listă de instrucţiuni de diferite tipuri, care calculează, de
obicei, termeni ai unor expresii logice. Rezultatul unei astfel de instrucţiuni este o valoare logică
(TRUE sau FALSE). Fiecare instrucţiune trebuie să înceapă pe o linie nouă şi trebuie să conţină un
operator, completat, eventual, cu un modificator şi, dacă este nevoie, pentru anumite instrucţiuni, de
unul sau mai mulţi operanzi, separaţi prin virgulă (fig. II.1). Anumite instrucţiuni au mai mulţi
operanzi.
ETICHETĂ : OPERATOR OPERAND(ZI) (* COMENTARIU*)
46
AUTOMATE PROGRAMABILE vol. I
Operaţia, care este descrisă de operator, se execută între operand şi conţinutul acumulatorului sau
stivei, iar rezultatul este memorat tot în acumulator.
Documentarea programelor se face utilizând comentarii. Comentariile pot apărea pe aceeaşi linie cu
instrucţiunea sau pe o linie separată. Identificarea comentariilor se face prin caractere: fie sunt
precedate de (* şi succedate de *), fie se utilizează caracterele //, la început de comentariu.
Operatorii IL sunt împărții în mi multe grupe: operatori de transfer pentru variabile booleene (LD, ST,
=), care transferă datele de la memorie la acumulator (LD) și invers (ST, =), operatori de
setare/resetare (S-Set, R-Reset), care setează respectiv resetează operanzi, operatori logici (AND, OR,
XOR), care realizează operații logice între conținutul acumulatorului și operand, operatori pentru date
pe octet, cuvânt sau dublu cuvânt (MOV), care transferă date de la o sursă la destinație. Operatorul are
o literă suplimentară pentru specifica felul datei: B, pentru octet, W pentru cuvânt sau DW, pentru
dublu cuvânt. Instrucțiunea are doi operanzi: sursa și destinația, operatori aritmetici (ADD, SUB,
MUL, DIV), care realizează operații aritmetice între doi operanzi, operatori relaționali (GT, GE, EQ,
NE, LE, LT), care compară doi operanzi și setează acumulatorul în funcție de rezultatul comparației și
operatori de salt (JMP, CALL, RET), care provoacă salturi la etichete, proceduri sau revenirea din
proceduri.
Modificatorii sunt caractere folosite pentru negarea booleană a operatorului (N), întârzierea unei
operații (“(„), până la întâlnirea perechii sale („)”) sau realizarea unei operații de salt condiționat (C).
Etichetele sunt folosite pentru specificarea punctelor ţintă ale instrucţiunilor de salt. O instrucţiune
poate avea o etichetă, care este un identificator, urmat sau nu de caracterul :. O etichetă poate fi scrisă
şi pe o linie separată. În cazul unor variante ale limbajului IL eticheta este scrisă pe o linie separată sub
forma unui cuvânt cheie. Acest cuvânt este urmat de un număr, care este al unei instrucţiuni din
program. De exemplu la limbajul STL, pentru automatele SIEMENS, cuvântul cheie este LBL. Pentru
anumite medii de programare etichetele instrucţiunilor sunt generate automat.
Aşa cum am menţionat mai sus, diferiţii producători au adoptat variante ale limbajului IL, care nu
respectă în întregime standardul IEC. Sunt implementate instrucţiuni de cilare de tip FOR, de shiftare,
de manipulare a stringurilor, de lucru cu tabele, de lucru cu contoare şi timere etc. Utilizarea limbajului
în aceste cazuri este documentată în meniurile de ajutor și manualele de utilizare.
Modul de execuţie al programelor bazate pe text este similar cu cel al limbajelor de asamblare. CPU
execută fiecare instrucţiune în ordinea dictată de program de sus în jos. Se utilizează de asemenea stiva
pentru asigurarea controlului. În STL trebuie utilizate instrucţiuni speciale pentru controlul stivei.
Aceste instrucţiuni sunt OLD şi ALD, care execută operaţii de OR şi AND între componentele din capul
stivei. Pentru a ilustra modul cum se lucrează cu stiva vom prezenta un program STL pentru un
automat SIEMENS S7-214 şi vom prezenta şi conţinutul stivei în diferitele momente ale execuţiei
programului (Fig. II.2).
LD %I0.0
LD %I0.1
LD %I0.2
A %I0.3
OLD
47
AUTOMATE PROGRAMABILE vol. I
ALD
=%Q0.0
LD
LD %I0.0
%I0.0 LD %I0.0 LD %I0.1 LD %I0.2 AND %I0.3 OLD ALD
%I0.0
%I0.0 %I0.0 %I0.1 %I0.2 E E1 E2
%I0.0
%I0.0 %I0.0 %I0.1 %I0.1 %I0.0
%I0.0 %I0.0
48
AUTOMATE PROGRAMABILE vol. I
Automatul programabil comandă prin ieşirea C1, bobina releului intermediar KA1. Acesta, dacă există
alimentată schema de curent continuu, comandă printr-un contact al său şi nu direct bobina principală
KM1 pentru a nu solicita ieşirile automatului.
Dacă programul se realizează sub forma unei proceduri aceasta trebuie să poată fi instanţiată pentru
mai multe motoare, care au aceeaşi schemă de comandă.
Programul, în limbaj STL, va fi întocmit pentru un automat S7-300 este prezentat în fig. II.3.
Network 2 Testul inchiderii contactului in 2 s
A "C1" // Q0.0 Bobina de pornire
AN "B1" // I0.2 Contact al contactorului de pornire ND
L S5T#2S
SD T 1 // Pornirea timerului
NOP 0
NOP 0
NOP 0
A T 1
= "T_AVARIE" // Avarie de TIMER
Network 3 Generarea de avarie la apasarea ciupercii
AN "CIUP" // I0.4 Ciuperca de avarie NI
= "C_AVARIE" // M0.7 Avarie prin apasarea ciupercii
Network 4 Generarea semnalului de avarie si resetarea avariei
A(
O "T_AVARIE"
O "C_AVARIE"
)
AN "RESET_A" // M0.5 resetarea avariei
= "AVARIE"
Fig. II.3. Programul pentru comanda motorului de curent alternativ și MCC
După cum rezultă din comentarii unele variabile sunt legate la automat (variabilele care sunt de intrare
și ieșire), iar altele provin, fie de la secvență de comandă care nu este prezentată (RUN_P și STOP_O),
fie de la interfața cu utilizatorul (LP ).
49
L1 400 V F1 L1 N L+ L-
L2 1
L3 50Hz 1 2
3 4 2
3
VLC Q01
4
43 13
KM1 KA1
44 14
2 4
1 3 5 13
Q01 F2
A1 A1
PKNM0-2,5 14 H01 KB KM1 1 3
A2 A2
5
I> I> I>
13 com
2 4 6 KB
14 6 AV
13
50
KM1 C1
7 B1
1 3 5 22 14
DILM25-01
8
KM1
H1 LS
2 4 6
A1
KA1
L1
Automat Programabil
A2
AUTOMATE PROGRAMABILE vol. I
23
HS
01 1 3 5
VCS
1 7 2 LS 3 L1
2 4 6
5
6
Fig. II.4. Motor Control Center pentru acționarea unui
motor cu un singur sens. Cutie locala
M
AUTOMATE PROGRAMABILE vol. I
memorie statică) şi parametrii ai blocului (valori de variabile locale care sunt folosite pentru transferul
parametrilor actuali atunci când blocul este apelat).
Variabilele globale sunt acele variabile, care pot fi accesate în orice punct al unui program. Unele
compilatoare permit utilizarea variabilelor globale doar prin crearea unor blocuri speciale numite Data
Block.
Un program în limbajul ST poate fi compus din mai multe blocuri, care sunt subunităţi ale unui
program care se disting prin funcţia pe care o îndeplinesc, structura lor şi prin scopul pentru care sunt
create. Există blocuri de tip program principal ciclic (main), funcţii, funcţii bloc şi blocuri de date. Ca
regulă generală, un bloc apelat trebuie situat înaintea unui bloc apelant.
Structura generală a unui bloc în limbajul ST are patru părți.
Începutul blocului, care este un cuvânt cheie (de exemplu FUNCTION_BLOCK nume pentru o funcţie bloc
din limbajul SCL pentru automatele SIEMENS, PROGRAM nume pentru compilatoarele CoDeSys).
Secţiunea de declaraţii, care depinde de tipul blocului. În această secţiune se declară variabilele locale,
parametrii, constantele şi etichetele, pentru compilatoarele care le acceptă pe acestea din urmă. Unele
medii de programare au secţiunea de cod şi secţiunea de declaraţii sunt în ferestre separate. Se pot
declara:
Variabile statice sub forma:
VAR
<lista de variabile>
END_VAR
Variabile temporare sub forma:
VAR_TEMP
<lista de variabile>
END_VAR
Variabile de intrare sub forma:
VAR_INPUT
<lista de variabile>
END_VAR
Variabile de ieșire sub forma:
VAR_OUTPUT
<lista de variabile>
END_VAR
Variabile de intrare/ieșire sub forma:
VAR_IN_OUT
<lista de variabile>
END_VAR
Secţiunea de cod, care conţine instrucţiuni, care sunt executate atunci când blocul logic este apelat.
Secţiunea de cod a blocurilor de date conţine instrucţiuni pentru iniţializarea variabilelor. Regulile care
trebuie respectate pentru această secţiune au fost enunţate mai sus. În completare, vom semnala că,
unele medii de programare acceptă etichete, care trebuie declarate şi că la compilatoarele care nu au
52
AUTOMATE PROGRAMABILE vol. I
separată fereastra de instrucţiuni ce cea de declaraţii începutul secţiunii de cod se face cu un cuvânt
cheie BEGIN.
Sfârşitul de bloc, este indicat prin cuvintele cheie: END_ORGANIZATION_BLOCK, END_FUNCTION,
END_FUNCTION_BLOCK. Această secţiune este necesară atunci când ferestrele de editare şi de declaraţii
nu sunt separate.
Expresiile ST constau într-o combinaţie între operatori şi operanzi, ultimii pot fi variabile sau
constante. Operatorii au priorităţi (precedenţă). Parantezele sunt folosite pentru modificarea priorităţii
operatorilor. Pentru o expresie care constă din doi operanzi şi un operator, cei doi operanzi trebuie să
fie de acelaşi tip. La rândul ei, o expresie poate deveni operand, într-o expresie compusă.
Precedența operatorilor, în ordine descrescătoare, este: interiorul parantezelor ( … ), funcția, ridicarea
la putere **, negația, înmulțirea sau împărțirea sau modulo, adunarea sau scăderea, operatorii
relaționali (<, >, <=, >=, =, <>), AND, XOR, iar cea mai mică OR.
Expresiile sunt de mai multe feluri:
Expresii aritmetice, care sunt construite utilizând operatori aritmetici şi procesează date numerice. Este
recomandată folosirea parantezelor pentru numerele negative pentru creşterea clarităţii. Atragem
atenţia asupra faptului că utilizarea operatorului / sau DIV cu două numere întregi produce un rezultat
întreg, iar împărţirea cu un operand egal cu zero este o eroare.
Expresii de relaţionale, care compară două valori memorate la două adrese şi au ca rezultat o valoare
booleană (TRUE sau FALSE), în funcţie de îndeplinirea sau nu a condiţiei indicată de operator.
Expresii logice, care sunt construite utilizând operatori logici şi au ca rezultat o valoare booleană (TRUE
sau FALSE), în funcţie de tabelul de adevăr al operatorului logic.
O expresie este evaluată într-o anumită ordine: ţinând seama de precedenţa operatorilor, de la stânga la
dreapta şi ţinând seama de paranteze, care pot modifica precedenţa operatorilor. Rezultatul unei
expresii poate fi: atribuit unei variabile, utilizat pentru a realiza o condiţie în instrucţiunile de control
sau utilizat ca parametru actual la un apel de funcţie.
Există mai multe tipuri de instrucţiuni ST:
Instrucţiuni de atribuire.
Instrucţiuni de selecţie (IF, THEN, ELSE).
Instrucţiuni de iteraţii (FOR, WHILE…).
De control (apeluri de proceduri, reveniri).
II.3.2. INSTRUCȚIUNEA DE ATRIBUIRE
Instrucţiunea de atribuire are forma generală:
<variabilă>:=<expresie>
Prelucrarea descrisă de această instrucţiune se realizează în două etape: mai întâi se face calculul
valorii expresiei din membrul drept, iar apoi se asociază valoarea astfel obţinută variabilei din membrul
stâng.
Evident, se pune problema ca variabila şi expresia să fie de acelaşi tip sau de tipuri compatibile. Dacă
tipurile de date nu sunt compatibile sunt necesare operaţii de conversie a tipurilor de date. O astfel de
53
AUTOMATE PROGRAMABILE vol. I
54
AUTOMATE PROGRAMABILE vol. I
Exemplu: Presupunând că valoarea iniţială a variabilei Var1 este 1, la sfârşitul execuţiei buclei FOR din
programul de mai jos, valoarea variabilei Erg va fi 32.
FOR Counter:=1 TO 5 BY 1 DO
Var1:=Var1*2;
END_FOR;
Erg:=Var1;
La utilizarea buclei FOR trebuie avut în vedere următoarele limitări:
În cazul în care <Pas> este pozitiv <valoare_initiala> trebuie să fie mai mică decât
<valoare_finala> şi mai mare, în cazul în care pasul este negativ, <valoare_finala>+<Pas> trebuie
să fie mai mică decât valoarea maximă a unui întreg sau a unui întreg în dublă precizie în mediul în
care se face programarea.
II.3.3.2. INSTRUCŢIUNEA DE REPEAT
Instrucţiunea REPEAT are ca efect prelucrarea repetată a unei secvenţe de instrucţiuni până la îndeplinirea
unei condiţii. Condiţia de terminare a execuţiei este exprimată sub forma unei expresii logice şi este
evaluată la sfârşitul ciclului. În consecinţă instrucţiunile din corpul ciclului se execută cel puţin o dată.
Forma generală a instrucţiunii este:
REPEAT
<Instructiuni>
UNTIL <Expresie booleană>
END_REPEAT;
Executarea instrucţiunii se face conform cu următoarele reguli: Se execută secvenţa de instrucţiuni din
corpul ciclului, după prima execuţie se evaluează expresia logică, iar dacă condiţia este FALSE, se reia
secvenţa de instrucţiuni din corpul ciclului, iar în caz contrar se întrerupe execuţia secvenţei de
instrucţiuni.
Exemplu: Presupunând că valoarea iniţială a variabilei Var1 este 1 şi a contorului este 5, valoarea
variabilei Var1 după executarea ciclului este 32.
REPEAT
Var1 := Var1*2;
Counter := Counter-1;
UNTIL
Counter=0
END_REPEAT;
Buclele WHILE şi REPEAT sunt, într-un anumit sens, mai puternice decât bucla FOR atunci când nu se
cunoaşte numărul de execuţii ale ciclului înainte de execuţia acestuia. Trebuie tratate cu atenţie buclele
WHILE şi REPEAT deoarece se poate ajunge la repetări infinite. În cazul în care, totuşi, numărul de
repetări ale buclei este clar, o buclă FOR este de preferat, deoarece nu permite bucle fără sfârşit.
II.3.3.4. INSTRUCŢIUNEA EXIT
Instrucţiunea EXIT este utilizată pentru ieşirea din bucle (FOR, WHILE, REPEAT) în orice punct fără
îndeplinirea condiţiilor de ieşire din buclă.
Executarea instrucţiunii se face conform cu următoarele reguli: această instrucţiune are ca efect
părăsirea imediată a unei bucle. Execuţia programului va continua cu prima instrucţiune care urmează
sfârşitului ciclului.
Exemplu: În programul următor bucla FOR este părăsită imediat ce valoarea Var1[INDEX] este mai mare
decât 3 şi se va reţine valoarea indicelui din vector, care a îndeplinit această valoare.
VAR
INDEX: INT;
INDEXC: INT;
Val1 ARRAY[1..50] OF INT;
END_VAR
FOR INDEX := 1 TO 50 BY 2 DO
IF Var1[INDEX]>3 THEN
INDEX1 := INDEX;
EXIT;
END_IF;
END_FOR;
56
AUTOMATE PROGRAMABILE vol. I
57
AUTOMATE PROGRAMABILE vol. I
Codul unei funcţii bloc pentru realizarea interpolării liniare, care întoarce valoarea y este următorul:
FUNCTION_BLOCK F1
VAR_INPUT
C: ARRAY [1..2,1..10] OF REAL;
Trad: INT;
END_VAR
VAR_OUTPUT
Cant: REAL;
Error: BOOL;
END_VAR
VAR
ValT: REAL;
I: INT;
m: REAL;
END_VAR
ValT := Trad/1.0; (* Transformarea in REAL a valorii*)
Error := TRUE; (* Setarea variabilei de eroare *)
IF ValT > C[1, 1] AND ValT <C[1, 10]
THEN
Error := FALSE; (* Testul daca valoarea este falsa *)
END_IF;
FOR I := 1 TO 10 DO (* Testul incadarii intr-o zona *)
IF (ValT < C[1, I+1] AND ValT >= C[1, I])
THEN
EXIT;
END_IF;
END_FOR; (* Calculul pantei deptei de aprox.*)
m := (C[2, I+1] - C[2, I])/(C[1, I+1] -C[1, I]);
(* Determinarea cantitatii de lichid *)
Cant := C[2, I]+ m*(ValT-C[1, I]);
Fig. II.5. Programul pentru rutina de interpolare liniară
58
AUTOMATE PROGRAMABILE vol. I
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ă
59
AUTOMATE PROGRAMABILE vol. I
Startul unei reţele are loc la bara de alimentare stângă. Fiecare reţea se închide utilizând un obiect de
tip bobină. Unele editoare permit poziţionarea bobinele direct la linia de alimentare dreaptă. Se pot
realiza ieşiri paralele.
Fiecare element al limbajului are deasupra sa o variabilă de adresă directă sau simbolică.
Intrările într-un program în limbajul LAD sunt: întreruptoare, butoane, contacte ale bobinelor de ieşire,
contacte ale releelor interne. Reprezentarea tipică pe care o recomandăm pentru oricare intrare este de
tip XIC (eXamine If Closed). Pentru a lămuri reprezentarea XIC a contactelor normal deschise şi
normal închise să examinăm circuitul hardware din fig. II.8a. și programul în limbajul LAD, care dă
aceleaşi rezultate reprezentat în fig. II.7b.
C
BP BO BP BO C
a. b.
60
AUTOMATE PROGRAMABILE vol. I
Ieşiri - RT
AP Q1
ES
1 35
Q1
246
61
AUTOMATE PROGRAMABILE vol. I
Variabilă asociată
contactului
%I0.0 %I0.3
P N
a. b. c. d.
Linie de conexiune Linie de conexiune
stângă dreaptă
%Q0.0
S R
e. f. g. h.
%I0.0
TC
%I0.0
P
TC
%I0.0
N
62
AUTOMATE PROGRAMABILE vol. I
Semnal Semnal
scanat scanat
<adresa 1> <adresa 1>
POS NEG
Q Q
63
AUTOMATE PROGRAMABILE vol. I
64
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
La atingerea valorii zero, ieşirea QD va trece în 0 logic. Conţinutul contorului rămâne 0, iar ieşirea QD
rămâne 1 logic chiar dacă continuă să vină impulsuri pe CD. Dacă semnalul de intrare R devine activ,
indiferent ce se întâmplă pe celelalte intrări, conţinutul numărătorului devine 0 şi semnalul QD trece în
1 logic.
LD
CU
CV
CTUD
CU
CD QU
R QD QU
LD CV
PV QD
1 2 3 4 5 6 7 8 9 101112131415161718 timp
66
AUTOMATE PROGRAMABILE vol. I
manualul de programare. În cazul în care baza de timp este omisă atunci ea este, conform IEE 61131-3,
de o milisecundă. Un programator are la dispoziţie în toate mediile de programare de cel puțin 3 tipuri
de contoare:
Temporizatoare de tip TON (Timer ON-delay). Acesta este cel mai folosit tip de temporizator. Un
temporizator de acest tip are, în general, trei intrări: o intrare de validare (IN), o intrare pentru setarea
caracteristicii funcţiei de timp (TP) şi o intrare de resetare (R). Sunt disponibile două ieşiri, una care
reprezintă funcţia booleană de timp (Q) şi una care este o funcţie continuă (TS) şi reprezintă timpul
scurs de la validarea intrării. Simbolul acestui tip de temporizator şi diagrama de timp sunt prezentate
în fig. II.16. Din diagramă se observă că un astfel de temporizator aşteaptă TP secunde de la activarea
intrării de validare înainte de a trece în1 logic ieşirea Q. La dispariţia semnalului de validare Q devine
0.
Dacă intrarea de validare nu este în unu un timp mai mare ca TP, atunci ieşirea Q nu este trecută în 1
logic. Intrarea de reset are ca efect anularea ieşirii, indiferent de intrarea de validare. Există
implementări şi denumiri diferite ale acestui tip de temporizator pentru diferiţi furnizori de AP.
Temporizatoare de tip TOFF (Timer OFF-delay). Şi acest tip de temporizator are trei intrări: o intrare
de validare (IN), o intrare pentru setarea caracteristicii funcţiei de timp (TP) şi o intrare de resetare (R).
Sunt disponibile două ieşiri, una care reprezintă funcţia booleană de timp (Q) şi una care este o funcţie
continuă (TS) şi reprezintă timpul scurs de la validarea intrării. Simbolul acestui tip de temporizator şi
diagrama de timp sunt prezentate în fig. II.17. Din diagramă se observă că un astfel de temporizator
este exact opusul lui TON, descris mai sus. După activarea intrării de validare, se trece în unu ieşirea Q,
iar după trecerea în zero a intrării de validare aşteaptă TP secunde şi apoi anulează ieşirea Q. La
dispariţia semnalului de validare dacă nu s-a scurs timpul TP şi a apărut un nou semnal pe intrarea de
validare, Q rămâne în unu, până este îndeplinită condiţia de anulare a ieşirii, măsurată de la frontul
negativ al intrării de validare. Intrarea de reset are ca efect anularea ieşirii, indiferent de intrarea de
validare. Există implementări şi denumiri diferite ale acestui tip de temporizator pentru diferiţi furnizori
de AP. Totuşi trebuie remarcat că un astfel de temporizator este mai rar folosit.
Temporizatoare de tip TP (Timer Pulse). Şi acest tip de temporizator are, în general, trei intrări: o
intrare de validare (IN), o intrare pentru setarea caracteristicii funcţiei de timp (TP) şi o intrare de
resetare (R). Sunt disponibile două ieşiri, una care reprezintă funcţia booleană de timp (Q) şi una care
este o funcţie continuă (TS) şi reprezintă timpul scurs de la validarea intrării. Simbolul acestui tip de
temporizator şi diagrama de timp sunt prezentate în fig. II.18. Din diagramă se observă că un astfel de
temporizator îşi trece în unu ieşirea Q şi aşteaptă TP secunde de la activarea intrării de validare înainte
de a trece în zero ieşirea Q, indiferent ce se întâmplă pe intrarea de validare în acest timp. Intrarea de
reset are ca efect anularea ieşirii, indiferent de intrarea de validare. Există implementări şi denumiri
diferite ale acestui tip de temporizator pentru diferiţi furnizori de AP.
67
AUTOMATE PROGRAMABILE vol. I
IN
Q
TON
IN TP
Q TS
TP
TS TP
R
R
timp
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
68
AUTOMATE PROGRAMABILE vol. I
69
AUTOMATE PROGRAMABILE vol. I
A B C
D E
D E
F D B C
F E
exterior ale variabilelor de ieşire sunt transmise deodată în faza ciclului numită PIOT (Process Image
Output Table), dar valorile cu care se operează în interiorul fazei de procesare a programului trebuie să
ţină seama de execuţia asincronă.
După câştigarea unei experienţe programatorii încep să înţeleagă ce este o execuţie asincronă şi cum
poate fi folosită aceasta în avantajul programării.
Vom vedea, în cele ce urmează câteva secvenţe de program, care să ilustreze afirmaţia de mai sus şi
care să contribuie la o mai bună înţelegere a modului de programare în limbajul LAD.
Trebuie subliniat că ordinea reţelelor în aceste exemple este critică. Dacă reţelele sunt rearanjate într-o
altă ordine, este probabil că aceste programe nu operează corect.
Este indicat să ne concentrăm nu asupra memorării exemplelor ci mai mult asupra principiilor (cum
lucrează astfel de secvenţe de programe) şi asupra modului în care pot fi utilizate pentru rezolvarea
unor probleme de programare.
Să examinăm pentru început un oscilator, realizat în LAD. Un oscilator, în lumea programatorilor în
limbajul LAD, este o bobină (un releu intern) care îi schimbă starea (din OFF în ON şi invers) la
fiecare ciclu. Un oscilator poate fi folosit într-un program LAD sau hibrid, pentru a conduce diferite
blocuri de funcţii secvenţiale, controlate de generatoare de tact. Utilizând aceste generatoare de tact se
pot realiza programe, care să controleze automatizări complexe pe principiul proiectării automatelor
sincrone.
Să analizăm reţeaua din fig. II.21. Acest program conţine o singură reţea cu un releu intern RI1. Un
contact normal închis al acestuia alimentează bobina.
RI1 RI1
71
AUTOMATE PROGRAMABILE vol. I
RI2 RI1
RI1 RI2
RI2
RI1
72
AUTOMATE PROGRAMABILE vol. I
probleme de adaptare, puternic sprijinite de manuale de programare care însoțesc ale mediilor de
programare.
II.4.8. STUDII DE CAZ
Studiul 1. Controlul unei bariere.
Pentru o ilustrare a modului de utilizare a acestor relee să considerăm următoarea situaţie: Fie un sistem
de deschidere a unei bariere (fig. II.24) care să se deschidă atunci când cineva se apropie de aceasta din
orice parte. Bariera este acţionată de un motor electric M, acţionat de un contactor (K), pentru
deschidere şi de o contra greutate (CG) pentru închidere. I1 şi I2 sunt senzori fotoelectrici de prezență în
fața și în spatele barierei, iar I4 este un contact de validare a sistemului. Dacă I1 sau I2 şi I4 sunt 1 și
contactul de validare este activat, atunci un releu intermediar M va fi activat. Contactul lui se va
închide şi dacă bariera nu este deschisă se va alimenta contactorul K, care este legat de o variabilă de
ieşire, care va deschide bariera. Când va ajunge la limita de cursă contactorul va pierde alimentarea şi
bariera se va închide sub acţiunea contragreutăţii. Dacă în timpul închiderii se va apropia ceva de
baieră, acesta va fi din nou acţionată la deschidere. În cadrul programului se vor folosi numele
simbolice din fig. II.23, presupunându-se că variabilele sunt astfel declarate.
I1
I3
T B
K
M I2
CG
I2
M1 I3 K
73
AUTOMATE PROGRAMABILE vol. I
Când I1 se va închide se va alimenta bobina O1. Contactul normal deschis al acestei bobine va menţine
alimentarea bobinei O1 chiar dacă I1 se va deschide. Când I2 se va închide se va alimenta bobina
releului intern M1.
Aceasta are ca efect deschiderea contactului să normal închis din circuitul de blocare şi alimentarea lui
O1 va înceta
I1 O1
O1 M1
I2 M1
K K
BL RI
74
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
75
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.
76
AUTOMATE PROGRAMABILE vol. I
Blocurile standard sunt: blocuri de manipulare a datelor (se mai numesc si blocuri de asignare), blocuri
pentru operații booleene (Fig. II.31 AND, OR, XOR), blocuri aritmetice (pentru efectuarea de operații
de adunare, scădere, înmulțire și împărțire), blocuri de comparative (pentru implementarea operatorilor
logici: mai mic, mai mare etc.).
AND NAND NOT
& &
OR NOR XOR
=
B1 B2
I1 Q1
I2
Q2
I3
I4 B3
I5 Q3
I6
Q4
I7
77
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
Fig. II.34. Declararea variabilelor
78
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.
79
AUTOMATE PROGRAMABILE vol. I
T1
I1 IR1 TON OUT1
IN Q
T#0.5 s PT ET
T2 T2
OUT1 TON IR1
IN Q
T#0.5 s PT ET
I1
OUT1 .5s T
IR1 .5s
.5s
Fig. II.36. Generator de impulsuri cu TON
Studiul 3. Generator de impulsuri cu o perioadă de 1 s cu două temporizatoare TP .
Generatorul de impulsuri are două timere de tip TP (fig. II.37). Oricare din ieşirile timerelor va fi sursa
pentru generarea impulsurilor. Perioada impulsurilor va fi suma celor două temporizări care au fost
setate. Dacă ele sunt egale atunci generatorul este un generator de impulsuri dreptunghiulare cu TH şi
TL egale.
T1
Pulse1 Pulse
TP
IN Q
T#0.5s PT ET
Pulse T2
Pulse1
TP
IN Q
T#0.5s PT ET
80
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
81
AUTOMATE PROGRAMABILE vol. I
BP Out K1
K1
C1
I1 CTU
CU Out
I2 Q
R CV
20 PV
Out I2 B1
B1
I2 I3 K2
K2
I1
12
82
AUTOMATE PROGRAMABILE vol. I
C1
I1 B1 CTU
CU B1
Out Q
R CV
12 PV
C2
I1 B1 CTU
CU Out
B1 Q
R CV
6 PV
83
AUTOMATE PROGRAMABILE vol. I
84
AUTOMATE PROGRAMABILE vol. I
1 Tip Acţiune
c. Etapă iniţială
1 Condiţie
Condiție
2 Tip Acţiune
5 Tip Acţiune
Condiție
85
AUTOMATE PROGRAMABILE vol. I
Regula 2. Dacă mai multe etape se leagă la aceeaşi tranziţie, atunci arcele care vin la aceeaşi tranziţie
se regrupează cu ajutorul unei linii orizontale duble, numită convergenţă AND sau sincronizare (fig.
II.46).
4 5
4 5
5 6
86
AUTOMATE PROGRAMABILE vol. I
T1 T2
2
T3
3
T4
4
T5
11
T1
T1
22
T2
T2
33
T3
T3
T4 44
T4
T5
T5
55
87
AUTOMATE PROGRAMABILE vol. I
Regula 2. Validarea și parcurgerea unei tranziţii. O tranziţie poate fi validată, imediat ce toate etapele
care o preced devin active, în caz contrar ea este invalidată. Parcurgerea unei tranziții are loc dacă
tranziția este validată și condiția asociată tranziției este adevărată.
44 55 44 55
T6=1
T6=1
T6
T6 T6
T6
66 66
44 55 44 55
T6=1
T6=1
T6
T6 T6
T6 T6
T6 T6
T6
66 77 88 66 77 88
88
AUTOMATE PROGRAMABILE vol. I
1 1 1
C1
C1 C1 C1
2 2 2 X1 a
C1 C1 C1
X2 b
3 3 3
X3 c
a. b. c.
44 5 4 5
T6=1
T6=1
T6
T6 T6
T6
66 6
89
AUTOMATE PROGRAMABILE vol. I
x1
1 A1
A1
a.
Step 1
1 1 N A1
N A1
b. c.
.
Fig. II.56. Acțiune continuă
a.Reprezentarea în graful de specificare şi diagrama de timp; b. Reprezentarea în mediul Step7
Manager; c. Reprezentarea în mediul CoDeSys
Tipul 2. Acţiuni memorate, care la rândul lor pot fi: de setare, care realizează setarea unei variabile,
până la execuţia unei acţiuni de resetare asupra aceleiaşi variabile și de resetare, care realizează
resetarea unei variabile (fig. II.57).
x1
1 S A1
x5
A1
5 R A1
a.
Step 1
1 1 R A1
S A1
b. c.
90
AUTOMATE PROGRAMABILE vol. I
T x1
1 D A1
A1
T
a.
Step 1
1 A1 1 D T#2s A1
D
T#2s
b. c.
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.
92
AUTOMATE PROGRAMABILE vol. I
1 t/1/2s
a.
1 1
Cmp 1 Step1.t>2s
Step1.T >
T#2s
b. c.
93
AUTOMATE PROGRAMABILE vol. I
20 A20
C5
3 A3
6 A6
3 C3
C6
20
7 A7
4 C4
C7
8 A7
94
AUTOMATE PROGRAMABILE vol. I
unde:
C i este condiţia logică ataşată tranziţiei;
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).
95
AUTOMATE PROGRAMABILE vol. I
Intrări Intrări
1 1
Ieşiri Ieşiri
Fig. II.64. Reprezentarea unei etape și a unei tranziții pentru analiza unui graf
După descompunerea în elemente de bază se va verifica:
Verificarea 1. Alternanţa etape-tranziţii să fie respectată.
Verificarea 2. Acţiunile unui graf trebuie să fie variabile de ieşire sau interne.
Verificarea 3. Funcţiile de parcurgere a tranziţiilor trebuie să fie funcţii booleene.
Verificarea 4. Fiecare element (etapă sau tranziţie) să fie corect reprezentat. Reprezentarea corectă
înseamnă că, toate ieşirile unui element (etapă sau tranziţie) trebuie legate la intrările elementului de alt
tip (tranziţie sau etapă)
3 4
2 3 4 2
5 5
a. b.
Fig. II.65. Reprezentarea corectă (a și incorectă (b) a unui graf pentru analiză
II.6.10. TESTAREA PROGRAMELOR SCRISE ÎN SFC
Pentru testarea programelor scrise în SFC sunt prevăzute în mediile de programare facilităţi speciale.
Depinzând de mediu, sunt prevăzute următoarele facilităţi:
1. Setarea/resetarea parcurgerii tranziţiilor pentru a bloca trecerea la etapa următoare.
2. Activarea unei etape pentru a începe execuţia de la o anumită etapă.
3. Blocarea unor etape pentru a preveni activarea lor.
96
AUTOMATE PROGRAMABILE vol. I
4 Citirea şi modificarea unor date relevante pentru un graf, de exemplu flagurile pentru paşi sau
temporizatoarele asociate unor etape.
Cele mai multe compilatoare de limbaj SFC dispun de simulatoare unde există posibilităţi de
modificare pentru orice variabilă.
II.6.11. STUDII DE CAZ
Vom prezenta în continuare studii de caz pentru mai multe automatizări sub forma unor grafuri de
specificare. Aceste grafuri pot folosi celor interesați de a construi programe de automatizare folosind,
fie limbajul SFC, fie alte metode de transformare a unui graf de specificare într-un program în limbajul
LAD sau FBD.
Studiul 1. Automatizarea umplerii bidoanelor de ulei.
O bandă de umplere a bidoanelor cu ulei are mai multe poziţii unde pot fi plasate bidoane (fig. II:66).
Banda este alimentată manual în postul 1. Un traductor PB detectează prezenţa unui bidon în poziţia de
alimentare. De-a lungul benzii se află trei posturi active, în poziţiile 4, 5 şi 6 realizând operaţiile de: U
(Umplere), A (Astupare) şi AM (Ambutisare). Timpii pentru efectuarea celor trei operaţii sunt
respectiv TU, TA şi TAM. Banda este antrenată de motorul electric M, alimentat prin intermediul
contactorului K. Ea se deplasează sacadat, oprindu-se atunci când un traductor AV este apăsat de către
o camă C, realizându-se un avans egal cu distanţa dintre două posturi de lucru.
Se poate întâmpla ca, din când în când, alimentarea manuală să nu se realizeze, aşa că din unele locuri
pot lipsi bidoane. Se construiască graful de specificare a automatizării instalaţiei astfel încât efectuarea
celor trei operaţii să se facă simultan, cu excepţia cazului în care nu există bidon în dreptul postului de
lucru. Condiţiile iniţiale presupun că banda este goală la pornirea sistemului.
U A AM
1 2 3 4 5 6 7
PB
AV
M
K BP
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
intermediul contactoarelor MD şi MS. Banda din interiorul navetei este acţionată de un motor electric,
care asigură deplasarea într-un singur sens comandat de contactorul MN, pentru a realiza încărcarea
respectiv evacuarea pieselor. Pe navetă se află un senzor de poziţie S N, care sesizează dacă în navetă a
fost încărcată o piesă. Banda de evacuare este acţionată de un motor electric, care asigură deplasarea
într-un singur sens, comandat de un contactor MBE.
L1 L2 L3
M1 M2 M3
SE
SL1 SL2 SL3
N
MN
BR
SN
BR
S1 S2 S3
SBE
MS MD
BP
BE
99
AUTOMATE PROGRAMABILE vol. I
C1 S L1 ( x19 x 20 S L 2 S L3 x21 S L3 );
C 2 S L 2 ( x20 x 21 S L3 S L1 x19 S L1 );
C3 S L3 ( x21 x19 S L1 S L 2 x20 S L 2 ).
unde x19 , x20 şi x21 sunt etape în graful de priorităţi din fig. II.70.
1
1 BP SE SN
2 C1 7 C2 10 C3
3 MS 7 MS 9 MS
3 S1 8 S1 11 S1
M1 M2 M3
4 8 10
MBE MBE MBE
4 SN 9 SN 12 SN
5 MD 11 M1 13 M2
5 SE 13 SL1 15 SL2
6 MBE 12 14
17 SL3 19 SBE
16 18 MBE
18 SL3 20 t/18/10s
15 17
100
AUTOMATE PROGRAMABILE vol. I
19
19 x3
20
20 x7
21
21 x9
19
1
S3 Y
2 3 4
S2
S1
un jeton însemnă că în dreptul sistemului de eliminare al cutiei defecte a ajuns o cutie care trebuie
eliminată şi ca urmare sistemul va acţiona bobina distribuitorului pentru eliminarea cutiei. Acest lucru
este realizat în graful din partea dreaptă. Implementarea pentru un automat dat depinde de modul în
care este rezolvată problema prezenţei mai multor etape iniţiale în acelaşi garf. Dacă este vorba de S7
GRAF cele două grafuri sunt implementate în funcții separate. Dacă acest lucru nu este permis atunci se
vor implementa cele două grafuri în taskuri diferite cu aceeaşi prioritate, cum este cazul mediului
CoDeSys. În mediul ISaGRAPH graful de implementare nu diferă de cel de specificare.
1 5
6 ↑x4
1 ↑S1 S2 2 ↑S1
6 Y
2 1
7 S3
3 ↑S1
5
3
4 ↑S1
5 ↑S1
102
AUTOMATE PROGRAMABILE vol. I
H1 H2 H3
3 5 7
S 2 S3 S 4
Y
Pornit
LI R E C Oprit
Bandă
S1 K
M
103
AUTOMATE PROGRAMABILE vol. I
1 C (x5+x6+x7)
2 K
2 ↑S1
3 Y
3 QU
1
4
4 QU C S2 6 QU C S3 8 QU C S4
5 H1 6 H2 7 H3
4 4 4
104
AUTOMATE PROGRAMABILE vol. I
H2 TT2
+-
TN3
BP BO
A5
produs final
105
AUTOMATE PROGRAMABILE vol. I
K
14 1 11 A2
A4
13 BP BO 1 x15 10 TN2
12 K
15 2 A1 A2
14 BO 2 TN1 11 t/12/20s
3 A4 13 A5
14
3 TN2 12 TN3
1
4 A1 7 K
4 TN1 6 t/6/10s
K
5 H1 8 A2
A3
5 TT1 7 TV
K
6 9 A2
H2
8 TT2
10 K
A2
9 TRUE
11
106
AUTOMATE PROGRAMABILE vol. I
BP BO
Melc de exploatare
K1 Bandă de transport
S1 Cântar
M1
S2
107
AUTOMATE PROGRAMABILE vol. I
1 BP S1
2 K1
2 t/2/3 s
K1
3
K2
3 BO+S2
4 K1
4 t/4/5 s
L1
Y2
L2
h
5s
108
AUTOMATE PROGRAMABILE vol. I
1 R H1
1 B1
Y1
2
S H1
2 L2
3 Y1
3 t/3/5 s
Y2
4
VAL_C
4 C L2 5 C L2
1 2
109
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
111
AUTOMATE PROGRAMABILE vol. I
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
112
AUTOMATE PROGRAMABILE vol. I
Graful are două ramuri, corespunzătoare controlului lămpilor celor două semafoare, când un vehicul
soseşte la un capăt sau la celălalt capăt. Dacă sosesc în acelaşi timp vehicule pe ambele sensuri, trebuie
realizată o protecţie în sensul că se va prevedea o tratare cu prioritate a unui sens. Acest lucru se
realizează introducând la tranziţia 2 sau 7 o condiţie care să cuprindă conjuncţia cu valoarea negată de
la celălalt capăt. În acest fel sensul respectiv va fi tratat, la început, numai dacă nu sunt vehicule pe
celălalt sens.
Studiul 11. Controlul unui reactor de chimic.
În fig. II.87 este prezentat un reactor chimic. Acesta este destinat realizării unei reacţii chimice dintre
două cantităţi determinate din lichidele conţinute în rezervoarele R1 şi R2. Umplerea acestor rezervoare
cu lichid se face prin comanda electrovanelor A1 şi A2. Volumele lichidelor care trebuie să intre în
reacţie sunt fixate respectiv prin traductoarele de nivel T1 şi T2. Dacă s-a atins nivelul fixat în oricare
din cele două rezervoare trebuie să se închidă electrovana corespunzătoare. Dacă în oricare din
rezervoare s-a atins cota traductorului de nivel superior, acesta se va goli în reactorul R3 sub controlul
electrovanelor A3 sau A4. După ce conţinutul ambelor rezervoare s-a golit în reactorul R3, între cele
două lichide va avea loc o reacţie chimică, care trebuie să dureze 1 minut, în acest timp producându-se
o agitare comandată de motorul M. La sfârşitul acestei operaţii, lichidul este evacuat prin comanda
electrovanei A5. Traductoarele de nivel T3, T4 şi T5 detectează condiţia rezervor sau reactor gol.
Sistemul este completat de un buton BP de pornire a instalaţiei. Umplerea rezervoarelor se va face în
paralel până la atingerea cantităţii necesare în fiecare din ele, iar golirea în reactor se face imediat după
ce fiecare se umple. Cum acest lucru nu se va realiza, în general, simultan se va continua umplerea
celuilalt până la atingerea cantităţii necesare.
A1
A2
T1
R1 T2
R2
T3 T4
M
A3 A4
R3
T5
A5
113
AUTOMATE PROGRAMABILE vol. I
1 BP
3 A1 4 A2
2 T1 3 T2
3 A3 5 A4
4 T3 T4
6 M
5 t/6/1 min.
7 A5
6 T5
1
Fig. II.88. Graful automatizării
Studiul 12.Comanda unui sistem de evacuare piese
Fie sistemul din fig. II.89 de mai jos, care este destinat dirijării alternative a unor obiecte care vin pe
banda B1 spre benzile de evacuare B2 şi B3. Benzile B2 şi B3 se deplasează încontinuu, iar banda B1 este
oprită atunci când pistonul P1 este acţionat (nu se află la traductorul 1S0). Controlul motoarelor de
acţionare este însă realizat tot de program. Dacă banda care urmează să fie folosită pentru evacuare este
ocupată se aşteaptă eliberarea ei. O bandă este ocupată dacă după transferul obiectului pe aceasta (după
depăşirea traductorului de la intrarea pe banda) timpul este mai mic de 5 s.
Se presupune că împingerea pieselor de către pistonul P1 are loc până ce piesa va fi preluată de către
banda B2 sau B3. Această acţiune va avea loc numai dacă o piesă a fost adusă de banda B1 până la
traductorul S1. La început ambele benzi sunt disponibile aşa că trebuie ca una din benzi să aibă
prioritate. Am ales, în această rezolvare ca banda B2 să fie cea care să fie preferată. Pentru a asigura o
folosire alternativă a benzilor se va introduce o variabilă suplimentară D, care atunci când este 0 se
transferă piesa pe banda B2, iar atunci când este 1 se transferă piesa pe banda B3. Pentru mai multă
claritate, vom împărţi automatizarea în mai multe grafuri paralele (fig. II.90):
Graful1. Un graf care porneşte benzile B2 şi B3 la apăsarea butonului BP.
Graful 2. Câte un graf pentru setarea/resetarea variabilelor B1o şi B2o, care vor fi egale cu 1 atât timp cât
banda respectivă este ocupată.
114
AUTOMATE PROGRAMABILE vol. I
Graful 3Un graf pentru conducerea distribuitoarelor care transportă piesa de la banda B1 la benzile B2
sau B3.
2Y12 B1
P2 M1
2S0
3 2
1 1Y14 5 13 1Y12
5 4
2S1 4 2
2Y14
B2 P1
B3
S3 S1
M3
115
AUTOMATE PROGRAMABILE vol. I
R K2
1 3 5
R K3
1 BP 3 S2 5 S3
S K2
2 4 B2O 6 B3O
S K3
2 BP 4 t/4/5s 6 t/6/5s
1 3 5
7 K1
7 S1 B O 2 D 10 S1 BO 2 B O 3 D
8 1Y12 10 1Y12
8 1S 2 11 1S1
N 1Y14
9 11 1Y14
S D
9 1S 0 12 1S 0
7 12 2Y12
13 2S1
N 2Y14
13
S D
14 2S 0
De asemenea s-a montat la fiecare uşă câte o barieră luminoasă (LI1 pentru uşa A şi LI2 pentru uşa B).
Dacă una dintre bariere este întreruptă, atunci uşa respectivă nu are voie să se închidă sau dacă este în
procesul de închidere, ea se va deschide şi va rămâne deschisă timp de trei secunde după care se
încearcă din nou închiderea ei.
116
AUTOMATE PROGRAMABILE vol. I
Pentru siguranţa s-au amplasat în interiorul ecluzei două butoane S3 şi S4 cu ajutorul cărora se pot
deschide uşile A respectiv B dacă cineva a intrat în ecluză fără să fi apăsat pe unul din butoanele S1
respectiv S2. Acest lucru este posibil dacă a venit cineva de pe partea cealaltă şi uşa era deschisă. Dacă
în timpul închiderii unei uşi se apasă unul dintre butoanele respectivei uşi S1, S2, S3 sau S4 atunci uşa se
redeschide imediat.
Uşa A este deplasată cu ajutorul motorului electric M1 comandat de către contactoarele M1A pentru
deschidere şi M1R pentru închidere. Uşa B este deplasată cu ajutorul motorului electric M2 comandat de
către contactoarele M2A pentru deschidere şi M2R pentru închidere.
H1 S1
Uşa A
S5 M1 S6
LI1 R E M1A
S3 M1R
LI2 S4 M2R
R E M2A
S7 M2 S8
Uşa B
H2 S2
117
AUTOMATE PROGRAMABILE vol. I
1 S1 8 S1 S2
M1A M2A
2 8
H1 H2
2 S6 9 S8
3 9
3 t/3/3s 10 t/9/3s
4 M1R 10 M2R
11 LI2
LI1 40 4 S5 11 S7
0
2 5 M2A 11 M1A 8
5 S8 12 S6
6 12
6 t/6/3s 13 t/12/3s
7 M2R 13 M1R
2 1 1 11
118
AUTOMATE PROGRAMABILE vol. I
H1
S1 H2 S3
I2 I3
M1 M2
K1 I1 K3 S4 I4
K2 S2 K4
Intrare Ieşire
119
AUTOMATE PROGRAMABILE vol. I
CU CTUD
CU C
CD
CD QU
R QD
LD CV
40 PV
a.
1 5
1 I1 C 5 I3
2 K1 6 K3
2 S1 6 S3
3 7
3 I2 7 I4
CU 8 CD
4
K2 K4
4 S2 8 S4
1 5
b. c.
120
AUTOMATE PROGRAMABILE vol. I
N
C
1
B
=Y2
M
Y2
121
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
122
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.
123
AUTOMATE PROGRAMABILE vol. I
BIBLIOGRAFIE
[1] John, K.-H., Tiegelkamp M., SPS-Programmierung mit IEC 61131-3, Springer, Berlin, Heidelberg,
New York, 1999, 3rd Ed. (German), ISBN 3-540-66445-9
[2] Lewis, R. W., Programming industrial control systems using IEC 1131-3, IEE Control Engineering,
The Institution of Electrical Engineers, 1998, ISBN 0-852-96950-3
[3] Dr. Monari, Prof. Bonfatti and Dr. Sampieri, IEC 1131-3 Programming Methodology; Software
engineering methods for industrial automated systems, ISBN 2-9511585-0-5
[4] Mărgineanu, I., Utilizarea automatelor programabile în controlul proceselor, Editura Albastră,
Cluj-Napoca, 2010. ISBN 978-973-650-255-2.
[5] Gary, D., Introduction to Programmable Logic Controllers, 2nd ed., Delmar, Albany, NY, 2002.
[6] Hackworth, J., R., Hackworth, F., D. Programmable Logic Controllers: Programming Methods
and Applications, Prentice Hall, 2004, ISBN-10: 0130607188.
[7] Stenerson, J., Fundamentals of Programmable Logic Controllers, Sensors and Communication,
Prentice Hall, 1998, ISBN 10: 0-13-061890-X.
[8] Webster, G., John, Electrical Measurement, Signal Processing, and Displays, CRC Press, 2003,
ISBN: 0849317339
[9] Fraden, J., Handbook of Modern Sensors, AIP Press, Springer, 2003, ISDN 0-387-00750-04
[10] Ivănescu, M., Roboţi industriali, EUC Craiova, 1994
[11] Berger, H., Automating with SIMATIC, Publicis Corporate Publishing, 2003, ISDN 3-89578-233-8
[12] Bolton, W., Programmable Logic Controllers, Fourth Edition, Elsevier Science, 2006, ISDN 978-
0-7506-8112-4
[13] Rohner, P., Automation with Programmable Logic Controllers, Unsw Press, 1996, ISDN 0-86840-
287-4
[14] Swainston F., A System Approach to Programmable Logic Controllers, Deimar Publishers, 1992,
ISDN 0- 8273-4670-0
[15] Jones, C., T., Programmable Logic Controllers, Patrick-Turner, 1996, ISDN 1-889101-00-1
[16] Larionescu S., – Automatizarea instalaţiilor, vol. 1
https://www.scribd.com/document/111261630/Automate-Finite.
124
AUTOMATE PROGRAMABILE vol. I
Despre autor.
Ioan Mărgineanu, născut în Șeitin, jud. Arad la 24 iulie 1941, este inginer automatist la IMSAT
Cuadripol Brașov, o firmă care oferă inginerie în controlul proceselor, tehnologie de măsurare și
analiză, montaj și punere în funcțiune, precum și servicii de management de proiect.
A terminat secția de Electrotehnică la Institutul politehnic din București în anul 1964. A lucrat, având
diferite grade didactice la Universitatea din Brașov din 1965 până în 2010. A predat cursul de
Automate Programabile și Utilizarea calculatoarelor în controlul proceselor, studenților de la secția
de Automatică a Universității din Brașov timp de 30 ani. A scris. În editura Universității din Brașov și
în alte edituri mai multe cărți și îndrumare de laborator, referitoare la controlul proceselor: Utilizarea
calculatoarelor în controlul proceselor (Editura Ecran Magazin, 2014), Utilizarea Automatelor
Programabile în controlul proceselor (Editura Albastră, 2010) etc.
În prezent, la firma IMSAT Cuadripol Brașov, se ocupă elaborarea de software pentru automate
programabile și calculatoare de proces, implementarea și punerea în funcțiune a automatizărilor
industriale în diferite ramuri industriale: industria cimentului, industria constructoare de mașini,
industria chimică, industria farmaceutică etc.
Poate fi contactat pentru întrebări și sugestii pe E-mail la adresa ioan.marginenu@yahoo.com.
125