Sunteți pe pagina 1din 55

Lucrarea nr. 3.

Automatizarea unei maşini de găurire automată

Lucrarea nr. 3. Automatizarea unei maşini de


găurire automată

1. Introducere
1.1. Conectarea intrărilor şi ieşirilor unui automat programabil
Cataloagele firmelor constructoare de AP indică modul specific de legare al intrărilor şi ieşirilor
unui AP la un proces. În general conectarea unei intrări se face în funcţie de modul de realizare
a acesteia de către producător. Există două variante de intrări: intrări în curent continuu şi
intrări în curent alternativ. Modul de legare al unei intrări de curent continuu este prezentat
în fig. 1.

Fig. 1. Conectarea intrărilor automatului la o sursă de curent continuu


La automatele cu alimentare în curent alternativ se realizează variante în care alimentarea se
poate face fie direct de la sursa de curent alternativ (fig. 2), fie în curent continuu, obţinut în
automat prin redresare. În acest ultim caz pe panoul automatului se vor găsi borne de curent
continuu.

Fig. 2. Conectarea intrărilor automatului la o sursă de curent alternativ


Ieşirile automatelor programabile pot fi de două tipuri: ieşiri sub formă de tranzistor şi ieşiri sub
formă de releu (fig. 3). Există, de obicei trei borne: una la care se cuplează sursa exterioară,
borna de ieşire propriu-zisă şi borna de legătură cu pământul. Uneori borna de legătură cu sursa
exterioară este comună pentru mai multe ieşiri, legătura fiind făcută în interior. Aceasta se poate
vedea în cataloagele firmei producătoare. Activarea unei ieşiri sub formă de tranzistor are ca
efect deschiderea tranzistorului, dacă este alimentat. Sarcina ieşirii trebuie să fie alimentată ca în
fig. 3, astfel încât la activarea ieşirii să fie legată la sursa de alimentare.

Activarea unei ieşiri sub formă de releu are ca efect închiderea contactului acestuia. Sarcina
ieşirii trebuie să fie alimentată astfel încât la activarea ieşirii să fie legată la sursă.
1
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată

Fig. 3. Conectarea elementelor de execuţie (sarcinii) la ieşirile automatelor


a. ieşire sub formă de tranzistor. b. ieşire sub formă de releu

1.2. Automatul Siemens S7-200


Va fi programat în mediul Step7 Micro/WIN utilizând limbajele STL, LAD şi FBD. Se poate
folosi atât adresarea directă, cât şi cea indirectă.

Adresarea directă:
 intrări: I0.0 – I0.7, I1.0 – I1.7;
 memorie internă: poate fi adresată pe bit (V0.0 – V0.7, V1.0 – V1.7 ….), pe octet
(VB0, VB1, VB2 …), pe cuvânt (VW0 – este alcătuit din octeţii VB0 şi VB1, octetul
cel mai semnificativ fiind VB0, VW2,VW4…), sau pe dublu cuvânt (VD0 – alcătuit
din octeţii VB0, VB1, VB2 şi VB3, octetul cel mai semnificativ fiind VB0, VD4,
VD8…). În mod similar se adresează şi memoria internă cu prefixul M, diferenţa
dintre cele două fiind că memoria internă V se poate utiliza pentru pointeri;
 ieşiri: Q0.0 – Q0.7, Q1.0 – Q1.7.
Pentru adresarea indirectă variabilele trebuie declarate în Symbol Table.

Constantele pot fi de tip întreg sau reale.

Constantele de tip întreg se pot specifica în mai multe baze, de exemplu:


 constantă zecimală: 180123 sau 180_123
 constantă binară: 2#0101
 constantă octală: 8#17
 constantă hexazecimală: 16#F
 constantă ASCII: ‘Un text’
Caracterul “_” poate fi introdus pentru a facilita citirea mai uşoară a constantelor.

Constantele reale vor fi specificate folosind literele e sau E sau caracterul “.”, de exemplu: 4e2, -
3.4, 3E10.

2
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată

1.3. Automatul Siemens S7-300


Va fi programat în mediul Step 7 Manager, utilizând limbajele STL, LAD, FBD, Step7GRAPH şi
SCL. Programarea acestor automate este uşor de realizat, iar depanarea poate fi realizată şi
offline folosind simulatorul PLC Sim. Se poate folosi atât adresarea directă, cât şi cea indirectă.

Adresarea directă:
 intrări: I124.0 – I124.7, I125.0 – I125.7, I126.0 – I126.7;
 memorie internă: poate fi adresată pe bit (M0.0 – M0.7, M1.0 – M1.7 ….), pe octet
(MB0, MB1, MB2 …), pe cuvânt (MW0 – este alcătuit din octeţii MB0 şi MB1,
octetul cel mai semnificativ fiind MB0, MW2,MW4…), sau pe dublu cuvânt (MD0 –
alcătuit din octeţii MB0, MB1, MB2 şi MB3, octetul cel mai semnificativ fiind MB0,
MD4, MD8…);
 ieşiri: Q124.0 – Q124.7, Q125.0 – Q125.7.
Adresele de intrare şi de ieşire prezentate sunt cele implicite alese de sistem, ele pot fi
modificate la configurarea hardware a automatului.

Pentru adresarea indirectă, variabilele trebuie declarate fie la Symbols ca variabile globale, fie în
interiorul obiectelor (OB, FB sau FC) ca variabile locale.

Constantele pot fi de tip întreg sau reale. Constantele de tip întreg se pot specifica în mai multe
baze, de exemplu:
 constantă zecimală: 180123 sau 180_123
 constantă binară: 2#0101
 constantă octală: 8#17
 constantă hexazecimală: 16#F
 constantă ASCII: ‘Un text’
Caracterul “_” poate fi introdus pentru a facilita citirea mai uşoară a constantelor.

Constantele reale vor fi specificate folosind literele e sau E sau caracterul “.”, de exemplu: 4e2, -
3.4, 3E10.

1.4. Automatul ABB KT97


Va fi programat în mediul AC1131 (CoDeSys) utilizând limbajele IL, LAD, FBD, SFC şi ST.
Programarea acestor automate este uşor de realizat, iar depanarea poate fi realizată şi offline
folosind simulatorul. Se poate folosi atât adresarea directă, cât şi cea indirectă.

Adresarea directă:
 intrări: %IX62.0 – %IX62.15, %IX63.0 – %IX63.7;
 memorie internă: poate fi adresată pe bit (%M0.0 – %M0.7, %M1.0 – %M1.7 ….),
pe octet (%MB0.0, %MB1.0, %MB2.0 …), pe cuvânt (%MW0, %MW2, %MW4…),
sau pe dublu cuvânt (%MD0, %MD4, %MD8…);
 ieşiri: %QX62.0 – %QX62.15.
Pentru adresarea indirectă variabilele trebuie declarate la Global Variables în pagina Resources sau
în antetul fiecărui program, folosind următoarea sintaxă:

3
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată

<identificator> {AT <adresă directă>}: <tip> {:=<valoare


iniţială>};

Constantele pot fi de tip întreg sau reale.

Constantele de tip întreg se pot specifica în mai multe baze, de exemplu:


 constantă zecimală: 180123 sau 180_123
 constantă binară: 2#0101
 constantă octală: 8#17
 constantă hexazecimală: 16#F
 constantă ASCII: ‘Un text’
Caracterul “_” poate fi introdus pentru a facilita citirea mai uşoară a constantelor.

Constantele reale vor fi specificate folosind literele e sau E sau caracterul “.”, de exemplu: 4e+2,
-3.4, 3E10.

1.5. Automatul Moeller XC200


Va fi programat în mediul easy Soft CoDeSys. Programarea acestor automate este uşor de realizat,
iar depanarea poate fi realizată şi offline folosind simulatorul. Se poate folosi atât adresarea
directă, cât şi cea indirectă.

Adresarea directă:
 intrări: %IX0.0 – %IX0.7;
 memorie internă: aceasta poate fi adresată pe bit (%MX0.0 – %MX0.7, %MX1.0 –
%MX1.7 ….), pe octet (%MB0, %MB1, %MB2 …), pe cuvânt (%MW0 – este
alcătuit din octeţii %MB0 şi %MB1, octetul cel mai semnificativ fiind %MB1,
%MW2, %MW4…), sau pe dublu cuvânt (%MD0 – alcătuit din octeţii %MB0,
%MB1, %MB2 şi %MB3, octetul cel mai semnificativ fiind %MB3, MD4, MD8…);
 ieşiri: %QX0.0 – %QX0.5.
Pentru adresarea indirectă variabilele trebuie declarate la Global Variables în pagina Resources sau
în antetul fiecărui program, folosind următoarea sintaxă:

<identificator> {AT <adresă directă>}: <tip> {:=<valoare


iniţială>};

Constantele pot fi de tip întreg sau reale.

Constantele de tip întreg se pot specifica în mai multe baze, de exemplu:


 constantă zecimală: 180123 sau 180_123
 constantă binară: 2#0101
 constantă octală: 8#17
 constantă hexazecimală: 16#F
 constantă ASCII: ‘Un text’
Caracterul “_” poate fi introdus pentru a facilita citirea mai uşoară a constantelor.

Constantele reale vor fi specificate folosind literele e sau E sau caracterul “.”, de exemplu: 4e+2,
-3.4, 3E10.
4
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată

1.6. Prezentarea modului de programare în Step 7 MicroWin


Seria de automate programabile S7-200 este destinată aplicaţiilor de automatizare de mică
complexitate şi cuprinde mai multe tipuri de unităţi centrale. Pentru realizarea unui program cu
această serie sunt necesare, în afara automatului, un calculator PC, mediul de programare Step 7
MicroWIN 32 şi un cablu de comunicaţie între PC şi automat legat între portul PPI al
automatului şi portul serial al calculatorului pe care rulează programul.

Firma SIEMENS produce astăzi şi o serie nouă de automate de clasă mică S7-22x, prevăzute cu
facilităţi de comunicare pe reţea înglobate, în unitatea centrală.

Un automat S7-200 constă dintr-un modul CPU, singur sau cu mai multe extensii. Un modul
CPU este alcătuit dintr-o unitate centrală, sursă şi intrări/ieşiri, într-o structură compactă. Un
modul CPU are o serie de LED-uri de stare (RUN, STOP) şi de vizualizare a stării intrărilor şi
ieşirilor.

Step 7 MicroWIN 32 este un pachet software pentru programarea şi configurarea automatelor


din seria S7-200. Acest pachet software permite setarea parametrilor hardware, editarea,
depanarea şi încărcarea în automat a programelor elaborate.

Limbajele suportate de Step 7 MicroWIN 32 sunt:


 STL, care este un limbaj de tip text, alcătuit din instrucţiuni;
 LAD, care este un limbaj semi-grafic, alcătuit din obiecte, prin interconectarea
cărora se realizează circuite, numite reţele, care sunt asemănătoare celor realizate cu
contacte şi relee;
 FBD, care este un limbaj semi-grafic, alcătuit din obiecte, prin interconectarea
cărora se realizează circuite numite reţele, care sunt asemănătoare celor realizate cu
circuite integrate.
Atunci când se scrie un program în limbajele acceptate de acest pachet software se pot utiliza
două moduri de adresare: directă şi indirectă.

Adresarea directă specifică aria de memorie, dimensiunea şi locaţia. Se pot adresa diferite arii de
memorie: V, M-pentru locaţii din memoria internă, I-pentru locaţii reprezentând imaginile în
memoria RAM ale intrărilor automatului, Q-pentru locaţii reprezentând imaginile în memoria
RAM ale ieşirilor automatului, T-pentru temporizatoare, C-pentru contoare, HC-pentru
contoarele de mare viteză, AC-pentru acumulatoare, L-pentru variabile locale, AQ/AI-pentru
ieşirile/intrările analogice, S-pentru variabilele utilizate pentru împărţirea programului în
segmente logice şi SM-pentru locaţii speciale de memorie, adresate ca bit, octet, cuvânt sau
dublu cuvânt. Pentru aceasta se foloseşte pe lângă arie şi terminaţia B, pentru octet, W, pentru
cuvânt şi D, pentru dublu cuvânt. Locaţiile V şi M sunt de acelaşi tip. Amândouă sunt în
memoria principală la CPU200. Există mici diferenţe în unele aplicaţii, de exemplu TD200 are
nevoie de octeţi M pentru funcţiile tastelor şi de octeţi V pentru mesaje.

La adresarea pe byte, cuvânt sau dublu cuvânt se specifică byte-ul de start al adresei. La
variabilele care ocupă mai mulţi octeţi se foloseşte memorarea big-endian byte order*.

*
Big-endian byte-order înseamnă că primul octet este interpretat ca octetul cel mai semnificativ, iar
următorii octeţi sunt în ordinea e la cel mai semnificativ spre cel mai puţin semnificativ.

5
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată

Variabilele care încep cu litera T sunt variabile legate de temporizatoarele (timere) automatului.
Acestea sunt de fapt numărătoare de impulsuri, care au perioade diferite, asociate cu numărul
care urmează după litera T. Valorile perioadei sunt la CPU S7-200 egale cu 1 ms, 10 ms sau 100
ms. Fiecărui timer i se asociază două valori:
 Valoarea curentă, care este un întreg ce reprezintă timpul scurs de la validarea
intrării timerului;
 O valoare pe bit, care are o evoluţie în timp în funcţie de un parametru (valoarea
presetată) şi de tipul timerului.
Ambele valori sunt accesate utilizând aceeaşi variabilă, compusă din litera T urmată de un
număr. Accesul la una din cele două valori este funcţie de context.

Instrucţiunile cu operanzi pe bit au acces la valoarea de bit, în timp ce instrucţiunile cu operanzi


pe cuvânt accesează valoarea curentă (fig. 4).

Fig. 4. Adresarea în funcţie de context avariabilelor de tip timer


Variabilele care încep cu litera C sunt variabile legate de contoarele automatului. Acestea sunt
numărătoare de impulsuri care provin din exterior şi care trebuie asociate unei intrări. Fiecărui
contor i se asociază două valori:
 Valoarea curentă, care este un întreg ce reprezintă numărul de impulsuri numărate
de la validarea intrării contorului;
 O valoare pe bit, care are o evoluţie în timp în funcţie de un parametru (valoarea
presetată) şi de tipul contorului.
Ambele valori sunt accesate utilizând aceeaşi variabilă, compusă din literă C urmată de un
număr. Accesul la una din cele două valori este funcţie de context, la fel ca la timere.
Instrucţiunile cu operanzi pe bit au acces la valoarea de bit, în timp ce instrucţiunile cu operanzi
pe cuvânt accesează valoarea curentă.

Contoarele de mare viteză au de asemenea un mod de adresare direct, care se realizează prin
folosirea literelor HC, urmate de numărul contorului. Contoarele de mare viteză sunt folosite
pentru evenimente rapide, care nu pot fi controlate în cadrul ciclurilor automatului, adică a
acelora care au schimbări de stare aşa de rapide încât pot fi pierdute dacă sunt legate de intrările
obişnuite ale automatului. La CPU S7-200 sunt disponibile trei contoare de mare viteză al căror
conţinut, pe patru octeţi, poate fi accesat direct, utilizând variabilele HC0, HC1 şi HC2.

Intrările acestor contoare sunt de obicei legate la traductoare incrementale, care dau un număr
de impulsuri pe rotaţie şi un impuls de reset la fiecare rotaţie.

HC0 este un contor UP/DOWN, care acceptă o singură intrare de ceas cu frecvenţa de
maximum 2 KHz. Intrarea de numărare este legată la I0.0, iar direcţia de numărare este setată

6
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată

prin intermediul unui bit special de memorie SM37.1 (Dacă este 0, contorul numără direct şi
dacă este 1 contorul numără invers).

Contoarele HC1 şi HC2 sunt contoare de mare viteză, foarte flexibile care pot fi configurate să
funcţioneze în 12 moduri. Configuraţiile posibile sunt: contoare bidirecţionale cu control intern
al direcţiei de numărare, contoare bidirecţionale cu control extern al direcţiei de numărare,
contoare UP/DOWN cu intrări diferite din exterior pentru numărare directă şi inversă şi
contoare de impulsuri în cuadratură.

Înainte de a fi utilizat, un contor de mare viteză, trebuie realizată setarea unor biţi din categoria
biţilor speciali de memorie, legaţi de contor. Aceşti biţi stabilesc nivelul de activare, al resetării şi
startului. Ei sunt SM47.0, pentru HC1 şi SM57.0, pentru HC2, pentru reset respectiv SM47.1 şi
SM57.1 pentru start. După setarea acestor biţi contorul trebuie configurat şi validat.
Configurarea se realizează prin alegerea unuia din cele 12 moduri de lucru posibile. Se utilizează
pentru aceasta instrucţiuni din setul de instrucţiuni al automatului.

Diagramele de semnale şi alte indicaţii în legătură cu modul de utilizare al contoarelor de mare


viteză se găsesc în manualele firmei producătoare.

Acumulatorii sunt dispozitive care pot fi utilizate ca memorii. Aceştia se pot utiliza pentru
transferul datelor către proceduri. La CPU S7-200 există patru acumulatori (AC0, AC1, AC2,
AC3). Un acumulator poate fi adresat şi setat ca octet, cuvânt sau dublu cuvânt, în funcţie de
instrucţiunea utilizată.

Variabilele care încep cu literele SM sunt asociate biţilor speciali de memorie. Aceştia sunt un
mijloc de comunicare între CPU şi program, fiind utilizaţi pentru selectarea şi controlul unor
funcţii speciale:
 Biţi de stare care sunt actualizaţi de unitatea centrală la fiecare ciclu;
 Biţi de stare a rezultatelor unor operaţii aritmetice;
 Biţi de identificare a tipului CPU şi a prezenţei modulelor de externe.
Pentru mai multe detalii se poate consulta help-ul programului Step 7 MicroWIN 32 sau
manualele firmei.

Bitul special de memorie SM0.1 este 1 în primul ciclu şi 0 în celelalte cicluri. El este utilizat la
pentru introducerea marcajului iniţial. În cadrul unui program în Ladder Diagram (LAD),
introducerea marcajului iniţial se va face ca în fig. 5.

Se observă că transferul marcajului iniţial în locaţiile corespunzătoare (aici MB0) se face numai
în primul ciclu, deoarece validarea blocului de transfer în memorie a vectorului I0 este realizată
numai în primul ciclu.

Fig. 5. Introducerea marcajului iniţial


La automatul S7-200 este posibilă adresarea prin intermediul pointerilor care se numeşte adresare
indirectă. Acest lucru este posibil pentru ariile de memorie de tip I, Q, M, V, T, C. Valorile pe bit
sau analogice nu pot fi adresate indirect.

7
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată

Pentru a adresa o locaţie în mod indirect trebuie creat mai întâi un pointer către acea locaţie. La
CPU S7-200, pointerii sunt locaţii de memorie pe dublu cuvânt, care conţin adrese ale altei
locaţii de memorie. Pentru pointeri se pot folosi doar locaţiile de tip V şi acumulatorii. Un
pointer se creează mutând adresa unei locaţii de memorie într-o altă locaţie. La mutare,
operandul care va reprezenta pointerul este precedat de caracterul &. În cazul în care se doreşte
accesarea unei valori specificate printr-un pointer se foloseşte caracterul * în faţa operandului.
Utilizarea adresării indirecte este ilustrată în exemplul din fig. 6.

Fig. 6. Lucrul cu pointeri în Step7 MicroWin


Asupra pointerilor se pot efectua operaţii aritmetice. Dacă, în programul de mai sus, se
intercalează instrucţiunea +D +4, AC1, atunci programul de mai sus va conduce la
transferul în AC0 a datelor de la adresa VB104.

În continuare vom descrie modul de lucru cu versiunea 4.0 a programului de consolă STEP 7
MicroWIN 32. Această versiune are o serie de îmbunătăţiri faţă de versiunile anterioare printre
care amintim: posibilitatea configurării aplicaţiilor cu noile tipuri de automate din seria 22x,
posibilitatea configurării unor reţele Modbus, ASi şi Ethernet, posibilitatea utilizării unor vrăjitori
(Wizard) pentru configurare etc.

În acest paragraf nu ne propunem să prezentăm numai modul de realizare a unui program,


utilizând cea mai simplă legătură, realizată printr-un cablu cu convertor de reţea serială. Vom
presupune deci, că programul este instalat şi că un anumit tip de automat din seria S7-200 este
legat prin intermediul unui cablu cu convertor de la RS-232 la RS-485 la interfaţa serială a
calculatorului.

La pornirea programului pe ecran va apare interfaţa din fig. 7. Fereastra conţine diferite
componente ale mediului. Cea mai mare parte a spaţiului de lucru este rezervată ferestrei de
editare, a arborelui de instrucţiuni şi ferestrei de navigare. Fereastra de ieşire în care se afişează o
serie de informaţii asupra operaţiilor pe care le execută programul şi eventualele erori de
compilare. Fereastra de instrucţiuni mai conţine şi fereastra arborelui proiectului. Aceasta
permite schimbarea în fereastra de editare a editorului de program, a editorului tabelei de
simboluri, a editorului tabelei de stare, a editorului de blocuri de date. Aceste ferestre se pot
maximiza, minimiza sau cascada. Lansarea diferitelor editoare este posibilă şi din fereastra de
navigare.

Fereastra editorului de program este o fereastră de editor de semigrafic sau text în funcţie de
tipul editorului lansat şi de limbajul ales pentru editare.

Primul lucru care trebuie făcut este setarea comunicaţiei între program şi automat. Înainte de a
seta comunicaţia cu programul de consolă se va avea în vedere realizarea prin intermediul
comutatoarelor de pe convertor a vitezei de transmisie dorite.

Pentru a ajunge în fereastra de setare a comunicaţiei, există mai multe căi:


 Selectarea din meniul programului a opţiunii PLC→ Type→ Communication;

8
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată

 Apăsarea butonului Communication din fereastra de navigare.


La oricare cale aleasă va apare fereastra Communication. Aceasta arată ca în fig. 8. Dacă se apasă
butonul Set PG/PC Interface, în care se poate alege interfaţa adecvată (în cazul nostru PC/PPI
cable), iar prin apăsarea butonului Properties se pot seta proprietăţi pentru interfaţa selectată.
Aceste proprietăţi trebuie să coincidă cu cele ale cablului de legătură şi portului la care este
conectat acesta.

Fig. 7. Interfaţa cu utilizatorul a programului STEP 7-MicroWin 32

Fig. 8. Fereastra Communication

9
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată

După realizarea setărilor dorite, la revenirea în fereastra din fig. 8 parametrii de comunicaţie vor
fi modificaţi corespunzător, iar prin efectuarea unui dublu clic în fereastră se va realiza şi
vizualiza legătura cu automatul. Cu aceasta faza de setare a comunicaţiei se consideră încheiată

1.6.1. Componentele unui proiect


Un proiect are următoarele componente:
 Blocul de program. Acesta cuprinde codul programului principal (MAIN), al
subrutinelor şi al rutinelor de întrerupere;
 Tabela de simboluri (Symbol Table). Aceasta conţine un tabel de asociere a variabilelor
din memorie cu nume simbolice alese de programator;
 Tabela de stări (Status Chart). Aceasta conţine unul sau mai multe tabele unde se poate
urmări starea intrărilor, ieşirilor şi a variabilelor programului;
 Blocul de date (Data Block). Acesta conţine date care reprezintă valori iniţiale ale unor
locaţii de memorie, constante şi comentarii;
 Blocul sistem (System Block). Acesta conţine date care se pot încărca în automat şi care
se referă la adresa automatului, parametrii comunicaţiei, definirea zonelor de
memorie care vor fi folosite la memorarea unor date la căderea tensiunii, setarea
unor ieşiri de siguranţă la trecerea din RUN în STOP a automatului, setarea unor
parametri ai filtrelor de pe intrările automatului etc.;
 Tabela de referinţe încrucişate (Cross References). Aceasta poate conţine un tabel unde
se află o listă cu operanzii utilizaţi în program, locul şi contextul în care sunt utilizaţi.
1.6.2. Editorul de programe
Dacă se apasă butonul Program Block, în fereastra de navigare se deschide editorul de programe.
Un program în STEP 7 MicroWin are trei tipuri de unităţi de organizare (POU - Program
Organization Unit ):
 Programul principal (OB1);
 Subrutine;
 Rutine de întrerupere.
Se poate realiza o editare a programului într-unul din limbajele STL, LAD sau FBD. Comutarea
între acestea este posibilă chiar în timpul editării din meniul View. Deoarece scrierea unui
program în LAD este mai comodă decât în limbajul STL, vom descrie în cele ce urmează numai
programarea în LAD şi vom face numai unele precizări asupra programării în FDB, care a
devenit mai bine implementată în această versiune.

Un program în LAD este alcătuit din una sau mai multe reţele. Fereastra editorului LAD este
împărţită în celule. În fiecare celulă poate fi plasată o instrucţiune, poate fi scris un operand al
instrucţiunii (parametru) sau poate fi plasată o linie de legătură orizontală sau verticală.

Linia de alimentare stângă este prezentă în fiecare reţea, iar linia de alimentare dreaptă nu există.

Construirea unei reţele se face prin plasarea în celulele din suprafaţa editorului a unui obiect al
limbajului. Plasarea se poate face în mai multe moduri. Cel mai comod este alegerea obiectului
din arborele de instrucţiuni şi realizarea unui dublu clic pe acesta.

Orice obiect plasat are unul sau mai mulţi parametri pe care programatorul trebuie să-i seteze
înainte de compilarea programului. Recomandat este ca parametrizarea să se realizeze imediat
după plasarea obiectului. Pentru a realiza parametrizarea se utilizează tastatura, după ce în
prealabil se selectează celula pentru parametru. Orice parametrizare trebuie realizată în
10
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată

concordanţă cu valorile acceptate de obiectul respectiv. O parametrizare incorectă conduce la


erori de compilare. Ea este semnalată încă din faza de editare prin sublinierea cu o linie roşie a
parametrului incorect. În afara obiectelor limbajului, o reţea are un titlu şi un comentariu, care
pot fi folosite pentru documentarea programului. Regulile cele mai importante care trebuie
respectate la scrierea unui program în LAD sunt următoarele:
 Fiecare reţea trebuie să înceapă cu un contact, în timp ce o reţea nu se poate termina
cu un contact. Această regulă poate fi ocolită utilizând un contact legat la o variabilă
care este întotdeauna egală cu unu. Bitul special de memorie SM0.0 poate fi folosit
pentru acest scop;
 O reţea poate avea mai multe contacte plasate în serie sau în paralel;
 O bobină nu poate fi plasată la începutul unei reţele, aceasta fiind posibil de utilizat
la sfârşitul reţelei;
 Bobinele nu pot fi legate în serie, dar pot fi legate în paralel în orice punct al reţelei;
 Mai multe obiecte ale limbajului pot fi legate în serie utilizând ieşirea ENO, dacă
utilizarea acestei ieşiri este suportată de automatul cu care se lucrează. Seria 22x
acceptă acest mod de legare în cadrul reţelei;
 Numărul de celule pe orizontală sau pe verticală nu poate depăşi 32 în aceeaşi reţea;
 În această versiune nu este necesară plasarea instrucţiunilor END, RET şi RETI, ele
fiind înserate automat de către compilator.
Utilizarea subrutinelor într-un program este utilă pentru împărţirea acestuia în mai multe părţi
mai mici, mai uşor de gestionat şi documentat. În acest fel se obţin performanţe mai bune în
programare. Iniţial un program are în componenţă o subrutină (SUBR_0) şi o rutină de
întrerupere (INT_0). Pentru scrierea instrucţiunilor acestora se selectează ferestrele
corespunzătoare din editorul de program.

Pentru a crea o nouă subrutină se poate realiza un clic dreapta în fereastra de editare şi apoi se
alege Insert →Subroutine.

Întreruperile sunt generate de evenimente. Înaintea apelului unei rutine de întrerupere trebuie
stabilită o asociere între eveniment şi segmentul de program, care se execută atunci când
evenimentul apare. Pentru aceasta se foloseşte instrucţiunea ATCH (fig. 9).

Fig. 9. Instrucţiunea de ataşare a unui eveniment unei rutine de întrerupere


Invalidarea acestei asocieri se realizează cu instrucţiunea DTCH (fig. 10), care realizează
dezactivarea întreruperii. Pentru a crea o nouă rutină de întrerupere se poate realiza un clic
dreapta în fereastra de editare şi apoi se alege Insert →Interrupt. Numărul evenimentului asociat
unei întreruperi este funcţie de tipul automatului folosit. În help-ul programului Step 7
MicroWin se găsesc tabele de asociere a evenimentelor cu numere. De asemenea sunt precizate
în aceste tabele şi priorităţile asociate acestor întreruperi.

Fig. 10. Instrucţiune de dezactivare a unei întreruperi.


11
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată

Servirea cererilor de întrerupere multiple se face în tehnica LIFO şi în funcţie de priorităţi. Stiva
LIFO are 128 locaţii. Din momentul în care începe execuţia unei rutine de întrerupere ea nu mai
poate fi întreruptă decât de o întrerupere cu prioritate mai mare.

Versiunea 4.0 a programului are un editor FBD mai bine pus la punct decât versiunile
anterioare. La fel ca şi editorul LAD, editorul FBD este semi-grafic bazat pe reţele şi celule în
care se pot introduce blocuri şi parametri. Nu mai există linii de alimentare şi legarea blocurilor
se face automat sau manual, în acest ultim caz utilizându-se Line Down, Line Up, Line Right şi
Line Left de pe bara de scule. Legarea manuală este destul de greoaie.

Pentru a putea utiliza bistabilele R-S şi S-R trebuie ca în Tools→Options→General să fie selectat
Programming Mode: IEC 1131-3 şi Mnemonic Set→International, ca în fig. 11.

Fig. 11. Fereastra Options


1.6.3. Tabela de variabile globale şi tabela de variabile locale
Variabilele globale sunt variabilele care au domeniul de vizibilitate extins la toate unităţile dintr-
un proiect. Ele asociază nume simbolice adreselor de memorie ale automatului sau intrărilor şi
ieşirilor. Numele simbolice trebuie să înceapă cu o literă. Dacă se utilizează modul de
programare SIMATIC, variabilele simbolice se definesc în Symbol Table, iar dacă se utilizează
modul de programare IEC 1131-3 acestea se definesc în Global Variable Table.

Fig. 12. Tabela variabilelor globale


În fig. 12 este prezentată o tabelă de variabile globale, iar în fig. 13 modul în care această tabelă
este reflectată în programul MAIN.

12
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată

Fig. 13. Reflectarea în unitatea de program a variabilelor globale


Fiecare unitate de program (POU) a unui proiect are propria sa tabelă de variabile locale de 64
octeţi de tip L. Această tabelă defineşte variabile cu domeniu de vizibilitate restrâns la unitatea
de program respectivă. Utilizarea variabilelor locale este recomandată atunci când se doreşte
elaborarea unor subrutine generale, utilizabile şi în alte programe.

Dacă este vorba de subrutine atunci variabilele locale pot fi de mai multe tipuri:
 IN reprezintă un parametru provenit din apelarea POU;
 OUT reprezintă un parametru returnat în programul apelant;
 IN_OUT reprezintă un parametru înlocuit la apelare, modificat în cursul execuţiei
subrutinei şi returnat în programul apelant;
 TEMP reprezintă valori care sunt salvate temporar în stiva variabilelor locale şi care
după ce subrutina s-a executat sunt distruse.

1.6.4. Status Chart


Termenul status se referă la informaţii asupra valorilor curente ale operanzilor atunci când
programul este executat în automat. Aceste informaţii se pot vizualiza într-o tabelă completată
de utilizator numită Status Chart şi/sau direct în program dacă se selectează Debug→Status Chart
şi/sau Debug→Program Status. În fig. 15 sunt prezentate informaţiile de stare din program, iar în
fig. 16 informaţiile din Status Chart.

Fig. 15. Informaţii de stare într-un program STEP 7 MicroWin

13
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată

Fig. 16. Informaţii de stare în Status Chart din STEP 7 MicroWin


Informaţiile de stare sunt disponibile dacă sunt îndeplinite următoarele condiţii:
 Programul a fost compilat şi încărcat în automat;
 Comunicaţia cu automatul este stabilită;
 S-a selectat Debug→Status Chart şi/sau Debug→ Program Status.

1.6.5. Data Block


Fereastra Data Block (Data Initialize) permite iniţializarea valorilor unor variabile de tip V.
Editorul din fereastra blocului de iniţializare este un editor de text liber, neavând zone definite
pentru introducerea informaţiilor. Un spaţiu sau TAB constituie separator de câmpuri, iar o
singură linie conţine maximum 255 caractere.

O linie din blocul de iniţializare conţine adresa de start pentru una sau mai multe valori aflate
într-o listă şi un comentariu, care trebuie precedat de caracterele //. Prima linie trebuie să aibă o
adresă explicită. Următoarele linii pot să nu conţină adrese explicite, caz în care adresele care
vor fi iniţializate urmează adresei explicite anterioare şi este de aceeaşi formă cu ea.

După ce o linie este introdusă şi se apasă tasta ENTER se realizează în mod automat aranjarea
liniei pe câmpuri. Se poate omite specificarea tipului variabilei. În acest caz se atribuie valoarea
unei locaţii de memorie în concordanţă cu lungimea datei. În fig. 17 este prezentat un bloc valid
de iniţializare.
//
//Comentariu la un bloc de date
//

VB0 1 // Atribuirea valorii 1 lui VB0


VB1 255, 233 // Atribuire multipla: 255 lui VB1 si 233 lui VB2

Fig. 17. Iniţializarea de date


Erorile care pot apare la scrierea unui bloc de iniţializare sunt::
 Specificarea unui alt tip de zona de memorie decât cel de tip V;
 Specificarea unei constante mai mari decât zona de memorie;
 Nerespectarea condiţiei ca zona de memorie să preceadă data;
 Specificarea unei adrese de mai multe ori.
14
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată

La compilare sunt specificate erorile şi din Data Block. Dacă în fereastra de ieşire se realizează un
dublu clic pe eroare, se deschide fereastra şi cursorul este poziţionat pe acea eroare.

Dacă se alege PLC Create Data Block from RAM, valorile curente din RAM sunt introduse în
blocul de date. Pentru aceasta trebuie ca automatul să fie conectat la PC şi să fie în modul
STOP.

1.6.6. System Block


La apăsarea butonului System Block va apare fereastra din fig. 18 cu mai multe pagini, în cadrul
cărora se pot realiza setări importante ale automatului. În pagina Output Table se poate realiza
setarea stării unor ieşiri ale automatului la trecerea din RUN în STOP. Se poate realiza de
asemenea o îngheţare a ieşirilor. Aceste setări sunt importante pentru realizarea unor modificări
ON-LINE ale unor programe şi anumite ieşiri sunt legate la elemente de acţionare, care trebuie
să se afle în stări date la oprirea automatului. O astfel de ieşire este, de exemplu, ieşirea legată la
electromagnetul de acţionare a frânei unui lift.

Fig. 18. Fereastra System Block (pagina Output Table)


În pagina Input Filters se pot realiza parametrizări ale filtrelor digitale de pe intrările automatului.
Parametrizarea unui filtru digital înseamnă stabilirea timpului cât un semnal de intrare trebuie să
rămână activ pentru a fi acceptat ca valid. În felul acesta, un astfel de filtru rejecteză zgomotele
care apar pe linii de intrare impunând condiţia ca acestea să rămână stabile un timp înainte da a
fi acceptate de automat.

În pagina Analogue Input Filters, dacă automatul are module de intrări analogice, se poate seta o
filtrare software a anumitor intrări. Filtrarea software se realizează prin medierea unui număr de
eşantioane de pe intrarea analogică.
15
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată

Filtrul realizează modificarea unei intrări analogice la ultima valoare de intrare, dacă aceasta
depăşeşte o valoare numită bandă moartă (dead band), faţă de valoarea medie. Numărul de
eşantioane şi banda moartă se stabileşte pentru toate intrările care se bifează în pagină.

În pagina Pulse Catch Bits se poate realiza gestionarea impulsurilor scurte de pe intrările
automatului. Pe intrările automatului pot apare impulsuri scurte a căror schimbare de stare şi
revenirea în starea iniţială nu poate fi sesizată de automat deoarece au loc într-un timp mai scurt
decât durata ciclului automatului. Modelele CPU-22x permit prin aceste setări prelungirea
impulsului până la ciclul următor, astfel încât să fie citite în faza PIIT (Process Image Input Table) a
noului ciclu. În pagină trebuie efectuată bifarea intrărilor care să realizeze prelungirea
impulsului. Acest lucru nu poate fi realizat la modelele CPU-21x.

În pagina Communication Port(s) se poate realiza schimbarea adresei automatului şi a vitezei de


comunicaţie. Valorile implicite ale adresei şi vitezei sunt 2 respectiv 9600 bps.

Toate modificările făcute în fereastra System Block devin operaţionale după încărcarea acestuia în
automat.

1.6.7. Cross References


Fereastra Cross References are trei pagini: Cross References, Byte Usage şi Bit Usage. Această fereastră
permite cunoaşterea modului de utilizare a variabilelor în cadrul programului. Se pot evidenţia
numele variabilei, blocul în care este utilizată, locul şi contextul. Se mai pot evidenţia care octet
şi bit din care arie este utilizat în cadrul programului.

1.6.8. Realizarea unui program în STEP 7 MicroWIN


Pentru a realiza şi încărca un program, utilizând STEP 7-MicroWIN 32 trebuie realizaţi
următorii paşi:
 Instalarea programului STEP 7-MicroWIN 32 pe un PC;
 Conectarea cablului de legătură dintre PC şi automat;
 Conectarea automatului la sursa de alimentare;
 Setarea comunicaţiei dintre PC şi automat;
 Analiza caietului de sarcini şi întocmirea grafului automatizării;
 Realizarea programului pentru automat, utilizând una din metodele expuse în
capitolele anterioare;
 Crearea programului în mediul de programare;
 Încărcarea programului în automat;
 Testarea programului, utilizând simulatoare de proces şi facilităţile oferite de meniul
Debug Program Status şi/sau Debug Status Chart.
Presupunând că primii paşi au fost efectuaţi în conformitate cu cele expuse în paragraful
anterior, vom descrie modul de realizare a programului pornind de la caietul de sarcini.

1.7. Prezentarea modului de programare în Step 7 Manager

1.7.1. Particularităţi hardware şi software ale AP din seria S7-300


Seria de automate programabile S7-300 este destinată aplicaţiilor de automatizare de
complexitate medie care cer memorie şi viteză de execuţie mai mare, un număr mai mare de
intrări/ieşiri şi posibilităţi de programare şi comunicaţie cu alte automate mai extinse. Seria
16
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată

cuprinde mai multe tipuri de unităţi centrale. Pentru realizarea unui program cu această serie
sunt necesare, în afara automatului, de un calculator PC, de mediul de programare Step 7
Manager şi un cablu de comunicaţie între PC şi automat.

Un automat S7-300 constă dintr-un modul CPU, singur sau cu mai multe extensii. Un modul
CPU este alcătuit dintr-o unitate centrală, sursă şi intrări/ieşiri, într-o structură compactă. Un
modul CPU are o serie de LED-uri de stare (RUN, STOP) şi de vizualizare a stării intrărilor şi
ieşirilor.

Step 7 Manager este un pachet software pentru programarea şi configurarea automatelor


programabile din seria SIEMENS S7-300 şi S7-400, crearea şi depanarea programelor şi
configurarea şi conectarea în reţea a automatelor. Acest program de consolă ţine seama de
particularităţile hardware şi software ale automatelor din această clasă. Aceste particularităţi vor
fi analizate în cele ce urmează.

Pe un automat programabil S7-300, ca de altfel toate automatele, se execută două tipuri de


programe:
 Sistemul de operare;
 Programele utilizator.
Specific acestor automate este modul cum sunt organizate programele utilizator. Automatul din
clasa S7-300, are un sistem de operare care conţine toate funcţiile şi secvenţele care nu sunt
asociate cu un program de control specific. Sarcinile sistemului de operare, la automatele din
clasa S7-300, sunt:
 Conduce repornirea completă (Complete restart) şi repornirea sistemului (Restart);
 Apelează programul utilizator;
 Detectează întreruperile şi apelează blocurile de servire a întreruperii;
 Detectează şi semnalează erorile;
 Gestionează ariile de memorie;
 Gestionează comunicaţia cu modulele şi cu alţi parteneri.
Programul utilizator este creat cu scopul rezolvării unor sarcini specifice ale unei automatizări.
În STEP 7 se poate realiza structurarea unui program utilizator, prin împărţirea lui în părţi de
sine stătătoare numite blocuri. Acest lucru favorizează înţelegerea uşoară a programelor şi
realizarea cu uşurinţă a modificărilor. Programul utilizator este alcătuit din blocuri, instrucţiuni
şi adrese. Înainte ca un bloc să fie procesat el trebuie apelat. Apelarea blocurilor de tip OB se
face de către sistemul de operare, iar apelarea celorlalte tipuri se face din interiorul blocurilor
scrise de utilizator, în mod asemănător cu apelarea unei rutine. Principalele blocuri ale unui
program sunt următoarele:

OB (Organization Block) este interfaţa între sistemul de operare şi programul utilizator. Acest
bloc este apelat de către SO ca urmare a generării unei întreruperi ciclice sau a altor tipuri de
întreruperi, cum este, de exemplu, întreruperea generată la pornirea automatului. De asemenea
blocurile OB gestionează răspunsul la erori. De cele mai multe ori tipul predominant de
program executat de automat este cel ciclic (blocul OB1). Aceasta înseamnă că SO apelează în
mod ciclic blocul OB1 pentru fiecare execuţie a programului scris de utilizator. Programul ciclic
poate fi întrerupt de evenimente (întreruperi). Dacă un astfel de eveniment are loc, blocul care
se execută este întrerupt, la terminarea comenzii care se executa, şi un alt OB, acela care este
desemnat pentru întreruperea respectivă, este apelat. Lista blocurilor de tip OB, şi a
întreruperilor care le apelează, pentru automatele din clasa S7-300 este dată în Tab. 1. Nu toate
automatele acceptă toate întreruperile din această listă.
17
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată

Tab. 1. Lista blocurilor OB


NUMELE PROGRAMULUI NUMELE BLOCULUI PRIORITATEA
Programul ciclic OB1 1
Întreruperi de tip Time of day OB10-OB17 2
Întreruperi de timp OB20-OB23 3-6
Întreruperi ciclice (1 ms-1min) OB30-OB38 7-15
Întreruperi hardware OB40-OB47 16-23
Erori asincrone OB80 Eroare de timp 26
OB81 Eroare de sursă 28
OB82 Diagnostic
OB83 Inserare modul
OB84 Hardware
OB85 Prioritate
OB86 Rack
OB87 Comunicare
Ciclu background OB90 29
Pornire sau trecerea comutatorului OB100 27
Din START în STOP OB101 27
Pentru informaţii asupra blocurilor care pot fi folosite pentru un automat dat se utilizează în
STEP 7 Manager opţiunea Properties, aşa cum se va prezenta mai jos. De asemenea trebuie
precizat că priorităţile pentru automatele din clasa S7-300 sunt fixe, ele pot fi modificate doar
pentru clasa S7-400. Fiecare bloc OB primeşte informaţii de start într-un câmp de 20 octeţi,
care sunt transferaţi către el de către SO. Aceste informaţii specifică: evenimentul care a pornit
blocul, data şi ora la care a pornit, eroarea care a avut loc şi altele (de exemplu la o întrerupere
hardware se specifică adresa modulului care a generat întreruperea).

La pornirea automatului, după execuţia blocului de pornire fără erori, se va executa blocul OB1.
Programul executat cuprinde: pornirea monitorizării timpului de ciclu, citirea intrărilor şi
actualizarea PIIT (Process Image Input Table), procesarea instrucţiunilor din program (instrucţiuni
conţinute în OB1 şi alte blocuri apelate de el), scrierea la ieşiri a valorilor din PIOT (Process Image
Output Table), sarcini ale sistemului de operare (primirea şi transmiterea datelor globale etc.)

Programul ciclic OB1 poate fi întrerupt de: o altă întrerupere, comanda de STOP, căderea
alimentării, apariţia unei erori. Se poate realiza o configurare a tipurilor de OB care întrerup
ciclul OB1, fie prin intermediul lui STEP 7, fie prin apelarea unei funcţii de sistem.

Primul ciclu al unui automat începe cu OB100, aşa cum se vede în fig. 19. Blocul OB100 poate fi
folosit de către programatori pentru realizarea unor operaţii unice, cum este operaţia de
introducere a marcajului iniţial în cazul în care se utilizează metoda activării şi dezactivării
sincrone pentru proiectarea programului.

Fig. 19. Primul ciclu al unui automat din clasa S7-300


Timpul de ciclu (scan time) este timpul necesar sistemului de operare pentru execuţia programului
ciclic şi a tuturor blocurilor care întrerup programul ciclic. Aşa cum se vede în fig. 20 timpul de
ciclu nu este acelaşi la fiecare ciclu.

18
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată

Dacă utilizatorul a specificat un timp minim pentru ciclu (Tmin) şi acesta este mai mare decât
timpul necesar procesării instrucţiunilor, restul de timp va fi utilizat pentru executarea unui bloc
special de fond (background) numit OB90 (fig. 21). Acesta are o caracteristică specială si anume
aceea că timpul său de execuţie nu este monitorizat de sistemul de operare, aşa că nu se pot
programa bucle de lungime mare în acest bloc.

Fig. 20. Cicluri de diferite lungimi

Fig. 21. Prelungirea unui ciclu cu un bloc de fond


Partea din programele utilizator care nu se execută ciclic va fi plasată în blocuri care nu se
execută decât în anumite condiţii. Aceste blocuri pot fi activate de diferite evenimente:
evenimente care au loc la o anumită dată şi oră (time of day interrupt), evenimente care au loc cu o
întârziere setabilă sau evenimente ciclice.

În STEP 7 Manager sunt opt blocuri de tip Time-of-day interrupt. Blocurile au numere de la OB10
la OB17. Utilizatorul poate programa aceste blocuri pentru a fi procesate: o singură dată, la
fiecare minut, la fiecare oră, o dată pe zi, o dată pe săptămână, o dată pe lună sau o dată pe an.
Pentru pornirea întreruperilor de acest tip trebuie mai întâi ca acestea să fie setate, iar apoi să fie
activate. Există trei opţiuni pentru pornire:
 Pornirea automată a acestora. Acest lucru are loc dacă se setează şi se activează
întreruperile time-of-day din STEP 7 Manager. Se pot alege una din următoarele
opţiuni: Non (în acest caz nici un bloc OB nu este procesat, chiar dacă este încărcat
în automat), activated once (în acest caz întreruperile time-of-day sunt dezactivate după
procesarea lor o singură dată) sau activate o dată pe minut, oră, zi, lună, an;
 Setarea din STEP 7 Manager şi activarea prin apelul funcţiei de sistem SFC30
(ACT_TINT) din programul utilizator;
 Setarea prin apelarea funcţiei de sistem SFC28 (SET_TINT) şi activarea prin apelul
funcţiei de sistem SFC30 (ACT_TINT) din programul utilizator.
În Step 7 Manager sunt patru blocuri de tip time-delay interrupt (OB20 la OB23), fiecare din ele
fiind procesat după o întârziere care poate fi setată. Blocurile sunt pornite prin apelul funcţiei de
sistem SFC32 (SRT_DINT), timpul de întârziere fiind un parametru al funcţiei. Atunci când se
apelează SFC32, trebuie precizat numărul blocului OB, timpul în milisecunde şi un identificator
specific dat de utilizator.

19
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată

În afara apelului funcţiei SFC32, utilizatorul mai trebuie să scrie blocul corespunzător (OB20 –
OB23) şi să-l încarce ca parte a programului său. Aceste întreruperi sunt procesate doar în
modul RUN. Se poate realiza o anulare a întreruperii, dacă ea nu a fost procesată, prin apelul
funcţiei SFC33 (CAN_DINT). Utilizând funcţia SFC34 (QRY_DINT) se poate afla starea
întreruperii. Utilizatorul poate dezactiva sau întârzia întreruperile de acest tip prin apelul
funcţiilor SFC39 şi SFC42. În Step 7 Manager sunt nouă întreruperi ciclice prin intermediul
cărora se poate realiza pornirea unor programe la intervale de timp echidistante şi predefinite.
Aceste intervale de timp pot fi modificate. În Step 7 Manager sunt cel mult opt întreruperi
hardware independente una de alta fiecare din ele având propriul bloc OB. Prin intermediul lui
STEP 7 Manager se furnizează următoarele informaţii pentru fiecare semnal care este considerat
generator de întrerupere:
 Ce canal va fi triggerat şi în ce condiţii;
 Care bloc OB va fi ataşat fiecărui canal individual.
Dacă apare o întrerupere hardware, sistemul de operare identifică întreruperea determinând care
bloc OB este asociat întreruperii, iar în cazul în care nici o întrerupere de prioritate mai mare nu
este activă, îl activează. Confirmarea executării întreruperii are loc după procesarea blocului.
Utilizatorul poate dezactiva sau întârzia întreruperile de acest tip prin apelul funcţiilor SFC39 şi
SFC42.

Trebuie ca utilizatorul să se asigure că fiecare OB ciclic rulează un timp mai mic decât intervalul de timp la care
apare altă întrerupere ciclică. Dacă procesarea blocului nu este completă şi s-a scurs un timp, astfel încât blocul
trebuie din nou apelat, se apelează blocul de eroare OB80.

1.7.2. Crearea unui proiect în Step7 Manager


La pornirea programului pe ecran va apare interfaţa din fig. 22. Fereastra conţine diferite
componente ale mediului. Cea mai mare parte a spaţiului de lucru este rezervată ferestrei
proiectului.

Fig. 22. Fereastra programului Step7 Manager


20
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată

Programul de consolă STEP 7 Manager ţine seama de particularităţile hardware şi software ale
acestor automate. Se va descrie modul de lucru cu versiunea 5.4 a acestui program. Ne
propunem, ca mai sus, să analizăm modul de realizare a unui program, utilizând o legătură cu
cablu cu convertor între automat şi PC-ul unde rulează STEP 7 Manager. Vom presupune că
programul este instalat şi că pe reţeaua serială este legat un automat.

În STEP 7 Manager proiectul este utilizat pentru memorarea datelor şi programelor care
realizează o automatizare. Acestea se memorează într-un proiect sub formă de obiecte, care sunt
aranjate sub formă arborescentă, într-un mod asemănător cu cel din Windows Explorer. Singura
deosebire este că icoanele obiectelor au o formă diferită.

Proiectul este structurat pe mai multe nivele:


 Nivelul 1: Proiect;
 Nivelul 2: Subreţele, staţii sau programe;
 Nivelul 3: Depinde de obiectele de la nivelul 2.
Un exemplu de proiect cu mai multe nivele este prezentat în fig. 23.

Fig. 23. Proiect în STEP 7 Manager


Obiectul Project este entitatea care conţine toate datele despre o soluţie de automatizare. Acesta
conţine la rândul lui obiectele prezentate în fig.22.

Obiectul Station cuprinde la rândul său obiectele Hardware şi Programmable Module. Obiectul
Hardware permite introducerea într-un rack a automatului folosit, împreună cu modulele de
extensie şi eventual configurarea unei reţele având în componenţă automatul care urmează a fi
programat. Obiectul Programmable Module este în acelaşi timp un obiect, la nivelul Station şi un
fişier-obiect, la nivelul Programmable Module. Obiectul Programmable Module conţine obiectul S7
Program (M7 Program), care la rândul său conţine obiectele Source File şi Blocks.

A realiza un proiect în STEP 7 Manager înseamnă a crea obiectele, a le seta proprietăţile dorite
şi a scrie programele pentru blocurile componente.

Există două căi pentru realizarea unui proiect:

21
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată

 Utilizarea unui Wizard, care porneşte automat la lansarea programului STEP 7


Manager, cu setările implicite;
 Crearea manuală a proiectului.
Vom descrie în continuare modul manual de creare a unui proiect. Crearea manuală a
proiectului presupune alegerea File→New de unde se ajunge în fereastra din fig. 24, unde se dă
un nume proiectului şi se alege directorul în care va fi memorat proiectul.

Fig. 24. Fereastra New Project


La apăsarea butonului OK se revine în fereastra principală, unde se adaugă din meniu prin Insert
→Station→Simatic S300 Station şi se ajunge în fereastra din fig. 25, unde se realizează un dublu
clic pe Hardware ceea ce are ca efect activarea unei ferestre în care se alege mai întâi un rack din
listă şi ca urmare va apare fereastra din fig. 26.

Fig. 25. Fereastra my_proj după înserarea staţiei


22
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată

Fig. 26. Fereastra HW Config după introducerea unui rack

Apoi se introduce în slotul 2 al acestuia automatul care trebuie programat prin dublu clic pe acel
automat, după ce a fost selectat slotul. După introducerea automatului în rack se pot vedea o
serie de informaţii despre automatul selectat cum ar fi: adresele hardware implicite ale tuturor
intrărilor, ieşirilor şi a altor module ale automatului setate de producător (fig. 27).

Fig. 27. Fereastra HW Config după introducerea automatului

23
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată

Această setare poate fi schimbată de utilizator numai dacă se lucrează ONLINE cu automatul.
Se salvează această alegere şi se revine în fereastra principală. Proiectul este acum gata, având în
componenţa automatul ales şi un singur bloc, blocul OB1.

Fig. 28. Fereastra proiectului după introducerea automatului


Introducerea altor blocuri şi funcţii se poate face din meniu prin alegerea opţiunii Insert. Prin
dublu clic asupra unui OB, FB, FC sau a altui element se deschide editorul pentru acel bloc şi se
pot realiza programe. Nu există deosebiri importante între editoarele din STEP 7 Manager şi
cele din Step 7 MicroWIN.

Dacă în fereastra de configurare din fig. 27 se selectează automatul ales şi se realizează un clic
dreapta alegându-se Object Properties; va apare o fereastră în care se pot realiza o serie de setări ale
unor parametri ai blocurilor de întreruperi de tip Time-of-Day, Cyclic Interrupts, Hardware Interrupts
precum şi alte setări privind comunicaţia sau memoriile retentive.

Pentru tipul de automat ales sunt active numai acele elemente care sunt implementate în
sistemul de operare al automatului respectiv. Celelalte valori, care nu se pot modifica sunt
invalidate. Se vede că în cazul automatului

Se pot realiza de asemenea şi schimbări ale adreselor variabilelor de intrare şi ieşire ale
automatului. Pentru a efectua o astfel de schimbare trebuie selectat slotul în care este montat
modulul respectiv, se realizează un clic dreapta şi se alege Object Properties... In fereastra care
apare (fig. 29) se pot schimba adresele implicite pentru variabilele de intrare/ieşire. În prealabil
trebuie realizată o deselectare a casetei System Default.

După efectuarea oricăror modificări, care se fac OFF-LINE acestea trebuie salvate în proiect şi
apoi încărcate sub forma unor date de sistem în automat odată cu încărcarea programului.

24
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată

Fig. 29. Fereastra de schimbare a adreselor implicite pentru un modul al unui modul
Blocurile de tip FB sunt situate ierarhic sub blocurile OB. Ele conţin acea parte a programului
care poate fi apelată de mai multe ori în OB1. Parametrii formali şi statici ai unui bloc FB sunt
salvaţi în blocuri de date DB separate.

Crearea unui bloc FB se face din fereastra principală prin alegerea opţiunii Insert→S7 Block→
Function Block, după care în fereastra din fig. 30 se introduce numele funcţiei, limbajul în care va
fi scrisă funcţia şi dacă este prevăzută cu posibilităţi de apelare cu mai multe instanţe.

Fig. 30. Fereastra Properties pentru introducerea unui FB

25
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată

După crearea blocului se execută dublu clic pe bloc, ceea ce deschide editorul blocului.
Fereastra editorului conţine, în partea de sus un tabel pentru declararea variabilelor locale şi în
partea de jos porţiunea pentru scrierea codului. Înainte de a putea fi apelat un bloc FB, acestuia
trebuie să i se definească şi să introducă parametrii în tabelul variabilelor locale. Toţi parametrii
de intrare/ieşire specifici ai blocului trebuie transferaţi din/în programul apelant.

Parametrii unui bloc FB sunt de cinci feluri: IN - în care caz reprezintă intrări ale blocului, OUT
- în care caz reprezintă ieşiri ale blocului, IN_OUT - în care caz sunt parametrii de
intrare/ieşire, STAT - în care caz sunt parametri statici şi TEMP - în care caz sunt parametrii
temporari.

În timpul introducerii variabilelor va fi rezervat un spaţiu în stiva locală, pentru variabilele


temporare, iar pentru variabilele de intrare/ieşire şi statice în instanţa blocului de date cu care
blocul va fi asociat ulterior.

După stabilirea variabilelor se poate trece la scrierea codului, care se poate face în oricare din
limbajele suportate de mediu. Evident că scrierea codului unei funcţii trebuie precedată de o
analiză a caietului de sarcini al automatizării.

Un bloc este apelat în mai multe instanţe. O instanţă a unui bloc este considerată structura
compusă din blocul FB şi blocul DB asociat lui.

Dacă limbajul selectat este GRAPH atunci se va utiliza un editor special Step7 GRAPH, care
implementează limbajul SFC pe care îl vom prezenta în detaliu mai jos. Funcţiile create cu acest
editor nu pot avea mai multe instanţe. Apelarea lor se va face cu parametrii specifici acestui tip
de programare.

Pentru a crea o instanţă a unui bloc trebuie creat şi asociat acestuia, blocul de date. Blocul de
date este generat automat de către compilator la introducerea apelului de funcţie, numele
acestuia trebuie stabilit de către programator. În cadrul unei instanţe a blocului de date se
stabilesc valori iniţiale diferite pentru parametrii blocului.

Spre deosebire de FB, funcţiile FC sunt funcţii care nu au memorie proprie, parametrii actuali
sunt salvaţi în stiva proprie. Crearea unui bloc FC se face în mod asemănător cu crearea unui
bloc FB. Spre deosebire de FB, funcţiile FC nu pot fi create în limbajul SFC.

Blocurile de date sunt utilizate pentru memorarea unor date ale programului utilizator. Spre
deosebire de variabilele locale, care sunt memorate în stiva locală, datele din DB nu sunt şterse
atunci când blocul este închis (după ce blocul a fost executat).

Există două tipuri de blocuri de date: blocuri de date de tip instanţă şi blocuri de date partajate.
Crearea unui bloc de date se face cu opţiunea: Insert→S7 Block →Data Block. Ca urmare a
alegerii acestei opţiuni se deschide o fereastra, în care se poate alege numele blocului şi tipul
acestuia.

Blocurile de date din STEP 7 Manager nu pot conţine instrucţiuni. Ele conţin doar secţiunea de
declarare a variabilelor. Fiecare FB, FC sau OB poate citi sau scrie date în DB partajate.

Deschiderea unui bloc de date se poate face în două moduri: Declaration View şi Data View.
Modul Declaration View este utilizat pentru determinarea structurii blocului de date, iar modul
Data View, pentru modificarea datelor. Un bloc de date de tip instanţă este asociat fiecărui apel
de FB. Parametrii actuali şi datele statice sunt salvaţi într-o instanţă a blocului de date. Înainte
de a crea un bloc de date de tip instanţă trebuie creat blocul FB corespunzător. Dacă acest lucru
nu se întâmplă STEP 7 Manager îl creează în mod automat.
26
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată

Blocurile de date partajate pot fi utilizate de toate blocurile unui program. Valorile iniţiale ale
variabilelor dintr-un bloc de date sunt valorile care sunt încărcate în automat la încărcarea
blocului şi la prima modificare, sunt alterate. La o nouă pornire a automatului nu se revine la
valoarea iniţială a variabilei. Acest lucru se întâmplă numai dacă se reîncarcă blocul de date.
Blocurile de date de tip partajat conţin structuri care pot fi definite de programator la crearea
blocului. Aceste structuri pot conţine tipuri de date elementare (bool, byte, word etc.) sau tipuri
complexe (DATE_AND_TIME, STRING, ARRAY, STRUCT) sau tipuri de date definite de
utilizator). Adresarea unei variabile dintr-un bloc de date partajat se face cu regulile adresării
elementelor unei structuri, numele structurii fiind numele blocului de date. Blocurile de date de
tip instanţă conţin variabile simple care reprezintă parametrii actuali ai blocurilor de tip FB şi
variabilele statice ale acestora.

Observaţie:

Tehnica de programare încurajată de acest mod de organizare a sistemului de operare a


programului Step7 Manager este bazată pe împărţirea automatizării în taskuri individule.
La rândul lor aceste taskuri pot fi împărţite în sub-taskuri. Tehnica de programare se
bazează pe identificarea relaţiilor şi interblocărilor între acestea, ceea ce conduce la
complicaţii greu de depăşit pentru programatorii începători, cerând multă experienţă.

Programul Step7 Manager permite utilizarea metodelor structurate de programare,


pornind de la graful automatizării, care sunt mai indicată pentru programatorii cu mai
puţină experienţă.

1.7.3. Programarea în Step7 GRAPH


Pentru a putea elabora un program în limbajul SFC pentru automatul programabil S7-300
trebuie să se creeze mai întâi un proiect nou. Blocul de bază al fiecărui proiect este OB1, care
poate fi editat doar în limbajele LAD, FBD sau STL. De aceea, în mediul Step 7 Manager
programele în limbajul SFC se introduc sub forma unor funcţii bloc. Pentru a crea un graf
trebuie să se selecteze obiectul Blocks din arborele proiectului şi apoi opţiunea Insert →S7 Block
→ Function Block. În fereastra care apare (fig. 31.) trebuie apoi ales numele funcţiei bloc (aici
FB3) şi limbajul în care se va programa blocul ( în cazul de faţă GRAPH). Apăsând butonul OK,
funcţia bloc va fi creată şi aceasta poate fi apoi programată efectuând dublu-clic pe aceasta.

Fig. 31. Crearea unei funcţii bloc în limbajul GRAPH

27
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată

În fereastra care se deschide, va apărea un graf format dintr-o singură etapă (etapa iniţială) şi o
tranziţie (fig. 32.).

Fig. 32. Iniţial funcţia bloc conţine o etapă (S1 – Step1) şi o tranziţie (T1)
Există trei moduri în care poate fi vizualizată funcţia bloc, acestea pot fi selectate din meniul
View, şi anume:
 Sequencer : se vizualizează întreg graful;
 Single Step: se vizualizează fiecare etapă separat;
 Permanent instructions : se vizualizează instrucţiunile permanente care se execută fie
înainte, fie după execuţia grafului.
Funcţiile de parcurgere a tranziţiilor pot fi programate în limbajele LAD sau FBD. Acest aspect
poate fi setat folosind opţiunea Options → Application Settings…(fig. 33.). La pagina General poate
fi setată această opţiune (în zona Conditions in New Blocks). O altă opţiune importantă se găseşte
la pagina Compile/Save, unde poate fi setată varianta în care va fi introdusă funcţia bloc atunci
când aceasta este apelată. Deoarece un graf este o funcţie bloc şi nu un program (bloc
organizaţional – OB), pentru ca acesta să se execute, el trebuie mai întâi apelat (iniţializat). De
aceea funcţia bloc corespunzătoare grafului trebuie apelată într-un bloc organizaţional (de obicei
OB1) şi numai apoi graful va evolua conform regulilor generale de evoluţie a unui graf. Dacă la
apelarea funcţiei bloc, nu se doreşte decât iniţializarea grafului, atunci la pagina Compile/Save,
secţiunea FB Parameters trebuie aleasă opţiunea Minimum. În acest fel la apelare, funcţia bloc va
avea o singură intrare şi nici o ieşire (pe lângă intrarea EN şi ieşirea ENO). Acestei intrări
(denumită INIT_SQ) trebuie să i se transmită valoarea 1 logic atunci când se doreşte
iniţializarea grafului.

Fig. 33. Fereastra Application Settings


28
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată

1.7.3.1. Construirea grafului


După ce toate aceste opţiuni au fost setate, se poate trece la construirea grafului (regulile de
construire a unui graf sunt aceleaşi cu cele din recomandările IEC). Comenzile necesare
construirii grafului se găsesc în meniul din stânga ferestrei. În tabelul următor vom prezenta
opţiunile împreună cu semnificaţiile lor şi cu condiţiile în care pot fi selectate.

Simbol Semnificaţie Condiţie în care poate fi selectat


Introducerea unei eta- Se selectează etapa sau tranziţia după care se
pe şi a unei tranziţii doreşte introducerea perechii etapă + tranziţie
Introducerea unui salt Se selectează o tranziţie (după care nu urmează
nici o etapă). Trebuie specificată etapa câtre care
se efectuează saltul (Si)
Terminarea ramurii Se selectează o tranziţie (după care nu urmează
actuale nici o etapă)
Introducerea unei ra- Se selectează etapa dinaintea divergenţei OR
muri alternative (diver-
genţă OR)
Încheierea unei ramuri Se selectează ultima tranziţie dinaintea
alternative (conver- convergenţei OR a ramurii din dreapta
genţă OR)
Introducerea unei Se selectează tranziţia dinaintea divergenţei
ramuri paralele (diver- AND (cu condiţia ca după acea tranziţie să mai
genţă AND) existe cel puţin o etapă)
Încheierea unei ramuri Se selectează ultima etapă dinaintea convergenţei
paralele (convergenţă AND a ramurii din dreapta
AND)

1.7.3.2. Programarea condiţiilor de parcurgere a tranziţiilor


După ce s-a construit graful, se poate trece la programarea condiţiilor de parcurgere a
tranziţiilor. Elementele care se vor folosi în acest caz se găsesc tot în meniul din stânga şi sunt
prezentate în următorul tabel (pentru cazul în care se alege programarea în limbajul LAD).
Simbol Semnificaţie
Contact normal deschis
Contact normal închis
Deschiderea unei ramuri paralele (pentru realizarea unei condiţii OR)
Închiderea unei ramuri paralele
Comparator
Comparator între timpul de activitate al etapei (timpul scurs de la ultima
activare a etapei) şi un interval de timp oarecare. Se foloseşte operandul
Stepi.T.
Comparator între timpul de activitate al etapei (timpul scurs de la ultima
activare a etapei, respectiv de la ultima perturbaţie apărută) şi un interval de
timp oarecare. Se foloseşte operandul Stepi.U.

29
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată

Obs.: Ultimele două comparatoare pot fi realizate şi folosind comparatorul simplu, diferenţa
fiind că în cazul ultimelor două comparatoare parametrii sunt introduşi automat. În figura
următoare se prezintă modul în care se introduce o condiţie de parcurgere a unei tranziţii pentru
cazul în care tranziţia trebuie parcursă la un anumit timp de la ultima activare a etapei
anterioare.

Fig. 34. Parcurgerea unei tranziţii la 100ms după activarea etapei 4


Se observă faptul că timpul scurs de la ultima activare a unei etape poate fi adresat prin
operandul Stepi.T unde i reprezintă numărul etapei. Se poate de asemenea folosi operandul
Stepi.U care reprezintă acelaşi lucru ca şi Stepi.T doar că în cazul apariţiei unei perturbaţii (eroare
de supervizare sau de interblocare), cronometrarea este reluată de la 0. Un al treilea operand
foarte important, utilizat des în condiţiile de parcurgere a tranziţiilor este Stepi.X care reprezintă
variabila booleană asociată etapei i (care este 1 logic dacă etapa este activă şi 0 logic dacă etapa
este inactivă). Ultimul operand de acest gen este Transi.TT. Acest operand boolean este 1 logic
atunci când tranziţia i are atât condiţia de validare cât şi cea de parcurgere adevărată, respectiv
când tranziţia este parcursă. În cazul contactelor, operanzii pot fi adrese de intrare, de ieşire sau
de memorie internă, sau variabile definite în Symbol Table. În cazul comparatorului se poate
folosi orice operator logic dintre următorii: >,<,==,>=,<=,<>.
1.7.3.3. Specificarea acţiunilor
În continuare vom descrie modul în care se pot asocia una sau mai multe acţiuni unei etape şi
tipurile acţiunilor. Pentru a se asocia o acţiune unei etape, se va selecta dreptunghiul de lângă
etapă care conţine şi numele etapei (de exemplu în figura 32 Step 1). Se efectuează clic-dreapta şi
se alege Insert New Element→Action. Ca urmare vor apărea dedesubt două dreptunghiuri, ca în
figura 35.

Fig. 35. Căsuţa cu acţiuni după adăugarea unei noi acţiuni


În dreptunghiul din stânga se va introduce tipul acţiunii, iar în cel din dreapta acţiunea propriu-
zisă.

Vom prezenta în tabelul ce urmează tipurile de acţiuni care sunt disponibile în Step 7 Manager.

Tipul acţiunii Semnificaţie


N Acţiune nememorată, se execută atât timp cât etapa este activă
S Acţiune memorată (de setare), se va executa până când se realizează o
resetare
R Acţiune memorată (de resetare), acţiunea va rămâne resetată până se
realizează o setare
D Acţiune întârziată, se execută dacă etapa este activă, dar numai la un anumit
timp de la activarea etapei
L Acţiune limitată, se execută dacă etapa este activă, dar numai un anumit timp
de la activarea etapei
30
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată

CALL Apelarea unei proceduri (FB, FC, SFB, SFC)


S1 Acţiune executată o singură dată la activarea unei etape
S0 Acţiune executată o singură dată la dezactivarea unei etape
Acţiunea propriu-zisă poate fi o zonă de memorie de intrare, ieşire, memorie internă sau o
variabilă declarată în Symbol Table.

În cazul acţiunilor întârziate şi limitate, trebuie specificat şi un timp sub forma


T#xHxxMxxSxxxMS.

De exemplu:

Fig.36. Acţiune întârziată


În acest caz, ieşirea Q124.0 va deveni 1 logic la două secunde de la activarea etapei 1.

În continuare vom prezenta modul în care se utilizează un contor în cadrul unui graf. În acest
caz avem patru tipuri de acţiuni speciale, care sunt prezentate în următorul tabel.

Tipul acţiunii Semnificaţie


CS Contorul este încărcat cu valoarea iniţială
CU Valoarea contorului este incrementată
CD Valoarea contorului este decrementată
CR Contorul este încărcat cu valoarea zero
Fiecare dintre aceste acţiuni se va executa fie la activarea fie la dezactivarea unei etape, ceea ce
înseamnă că ele trebuie precedate fie de S1, respectiv de S0.

De exemplu:

Fig. 37. Introducerea unei acţiuni de încărcare cu o anumită valoare (aici 0) a unui contor
În acest caz, contorul C1 este încărcat cu valoarea 0 (C#0). Apoi dacă se doreşte parcurgerea
unei tranziţii în funcţie de valoarea unui contor, este necesar să se compare valoarea contorului
cu o valoare oarecare.
1.7.3.4. Specificaţii suplimentare
În cazul în care un program este alcătuit din mai multe grafuri interdependente (de exemplu în
cazul în care condiţiile de parcurgere a tranziţiilor unui graf implică variabilele booleene asociate
etapelor celuilalt graf), atunci cele două grafuri trebuie incluse în cadrul aceleiaşi funcţii bloc.
Pentru aceasta se efectuează clic-dreapta în spaţiul de lucru şi se alege opţiunea Insert New
Element → Sequencer. În acest fel se pot introduce oricâte grafuri paralele.

În cazul în care un graf trebuie să conţină mai multe etape iniţiale, se va proceda în felul
următor: se selectează etapa care trebuie să devină etapă iniţială, se efectuează clic-dreapta şi se
alege opţiunea Object Properties, iar aici se bifează opţiunea Initial step. În acest fel oricâte etape ale
unui graf pot deveni etape iniţiale.

31
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată

De asemenea în Step 7 Manager se pot specifica o serie de instrucţiuni permanente (în LAD sau
FBD) care să se execute înaintea sau după executarea grafului. Instrucţiunile permanente sunt
executate o dată la fiecare ciclu, indiferent de starea grafului. Aceste instrucţiuni permanente
sunt de două tipuri: condiţii sau apeluri de proceduri. Condiţiile sunt de fapt reţele în limbajul
LAD. Pentru a introduce instrucţiuni permanente, trebuie să se selecteze în organizatorul de
obiecte pagina Graphic şi apoi una din opţiunile:
 Permanent instructions before sequencer;
 Permanent instructions after sequencer.

Fig. 38. Exemplu de instrucţiune permanentă


Apoi în fereastra de lucru, în cadrul dreptunghiului intitulat Permanent instructions before/after
sequencer se efectuează clic-dreapta şi se alege opţiunea Insert New Element → Permanent Instruction
→ Condition respectiv Call.

În final funcţia bloc trebuie salvată, astfel se va realiza automat şi compilarea, şi se va genera şi
obiectul DB corespunzător dacă în urma compilării nu au rezultat erori.

Rămâne doar ca funcţia bloc, respectiv graful sau grafurile (în cazul în care funcţia bloc conţine
mai multe grafuri paralele), să fie iniţializat. Pentru aceasta se va apela funcţia bloc în blocul
OB1.

Fig. 39. Apelarea unei funcţii bloc (editată în limbajul GRAPH) în OB1
Observaţie: Variabila ini este o variabilă care trebuie să devină 1 logic atunci când se doreşte
aducerea grafului în starea iniţială (etapele iniţiale ale grafului să devină active). Aceasta se
întâmplă fie la pornirea sistemului, fie după apariţia unei avarii.

1.8. Prezentarea modului de programare în AC1131


1.8.1. Crearea unui proiect în AC1131
Cunoscuta firmă ABB produce mai multe serii de unităţi centrale: seria 40, seria 50, seria 70 şi
seria 90. Seriile 40 şi 50 sunt destinate aplicaţiilor de mică şi medie complexitate cu până la 110
intrări/ieşiri. Seria 90 este destinată aplicaţiilor de mare complexitate cu peste 1000 intrări/ieşiri.

În cele ce urmează ne vom referi la seria 90 de AP, în special la modelul 07 KT 97. Mediul de
programare necesar este AC 1131 şi este în concordanţă cu recomandările IEC 61131.
Limbajele suportate de acest mediu reprezintă toată gama de limbaje recomandate de IEC: IL,
LD, FBD, SFC şi ST. Programarea acestor automate este uşor de realizat şi depanat, mai ales
din cauza simulatorului OFF-LINE.
32
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată

Vom descrie în cele ce urmează modul de lucru cu versiunea 4.3.1 a programului. Vom
presupune că programul este instalat pe un calculator şi că există o legătură serială între AP şi
PC prin cablul furnizat de firma ABB.

La lansarea programului AC 1131 apare fereastra programului (fig. 40) care conţine următoarele
elemente:
 Bara de meniu (Menu bar), localizată în partea de sus care conţine toate comenzile;
 Bara de unelte (Tool bar), care se află sub bara de meniu şi care conţine butoane
pentru selectarea rapidă a comenzilor;
 Organizatorul de obiecte (Object organizer), care este în partea stângă şi care conţine în
partea de jos patru posibilităţi de selectare a obiectelor unui program;
 Spaţiul de lucru (Work space) în care se deschid diferitele editoare ale mediului şi
managerul de bibliotecă;
 Fereastra de mesaje (Message windows), în care apar mesajele mediului de programare,
din care cele mai importante sunt erorile şi atenţionările de la compilare;
 Bara de stare (Status bar) care conţine informaţii despre starea curentă a programului.

Fig. 40. Elementele ferestrei a programului AC 1131


Pentru realizarea unui program care să poată fi încărcat într-un automat ABB este necesar să se
creeze în mediul de programare un proiect.

Proiectul conţine următoarele obiecte necesare unui program:


 POU (Program Organization Unit);
 Tipuri de date (Data Type);
33
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată

 Vizualizări (Visualization);
 Resurse (Resources).
Funcţiile, blocurile de funcţii şi programele sunt POU. Fiecare din ele conţine o parte de
declaraţii şi corpul propriu-zis. Toate variabilele care se utilizează într-un POU sunt declarate în
zona de declaraţii sub forma prezentată mai sus.

Corpul unui POU poate fi scris în oricare din limbajele acceptate de mediu. Un program poate
apela alt program sau o funcţie, dar nu este permisă apelarea unui program dintr-o funcţie. Dacă
un program cheamă un alt program şi în acest mod variabilele din acesta se schimbă, atunci
aceste valori sunt memorate până la un nou apel al programului chiar dacă va fi apelat de un alt
POU.

În cadrul programelor există unul predefinit care are numele PLC_PRG. Fiecare proiect trebuie
să conţină acest program special. El este apelat de către sistemul de operare al automatului la
fiecare ciclu. Ştergerea acestui program se poate face numai atunci când se realizează o
configurare de taskuri, în cazul în care se adoptă o strategie multitasking de elaborare a
aplicaţiei. Vom preciza aceste lucruri mai jos.

O funcţie este un POU, care întoarce o singură dată. Aceasta poate fi alcătuită din mai multe
câmpuri ale unei structuri. Declararea unei funcţii înseamnă asocierea cu un nume şi un tip.
Numele funcţiei este chiar valoarea întoarsă de funcţie. Declaraţia unei funcţii are următoarea
sintaxă:
FUNCTION <nume>:<tip>
<corpul funcţiei>
END_FUNCTION
Valorile transmise funcţiei trebuie declarate în partea de declaraţii a unei funcţii. Pentru o
funcţie nu se pot prevedea valori de ieşire.

Un Function Block este un POU, care furnizează una sau mai multe valori sub forma parametrilor
de ieşire. Atunci când se declară un Function Block, trebuie să i se precizeze numele, iar valorile
de intrare şi de ieşire trebuie precizate în partea de declaraţii a acestuia.

Etapele pentru crearea şi încărcarea în AP unui proiect sunt următoarele:


 Crearea unui proiect se face în fereastra principală, alegând în Object Organizer pagina
POU. Apoi se alege File→New, din meniul principal. După alegerea acestei opţiuni
se va deschide fereastra Select CPU (fig. 41). În această fereastră trebuie să se aleagă
tipul de automat din lista automatelor ABB posibil să fie programate cu mediul de
programare AC 1131. După ce se selectează automatul şi se apasă butonul OK, va
apare o altă fereastră New POU (fig. 42). În această fereastră se lasă nemodificat
PLC_PRG, dar se alege limbajul în care acesta va fi scris;
 După înserarea blocului PLC_PRG se pot vedea următoarele obiecte globale, în
fişierul Global variables din pagina Resources:
o Obiectul Systemkonstanten, care conţine variabilele sistem. Aceste variabile sunt
folosite pentru setarea bufferelor de transmisie şi recepţie, în cazul funcţionării
în reţea a automatului, monitorizarea taskurilor, monitorizarea funcţiilor pentru
lucrul în virgulă mobilă, configurarea intrărilor şi ieşirilor analogice, configurarea
modului de funcţionare a contoarelor de mare viteză. Valorile acestora sunt
iniţializate cu valori date. Pentru a schimba configurarea, trebuie modificate
aceste valori, în conformitate cu documentaţia pusă la dispoziţie de firmă;
o Obiectul Fehlermerker conţine flagurile erorilor de sistem;
34
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată

o Obiectul Auslastung conţine flaguri care reflectă utilizarea automatului;


o Obiectul Global_Variables este un obiect gol, în care se pot introduce variabilele
globale ale programului. În cadrul paginii de resurse se selectează
Global_Variables şi se selectează din meniu Project Import. Se alege fişierul de
importat, care în cazul lui 07 KT 97 va fi K97_onb.exp. Acest fişier conţine
declaraţiile pentru toate intrările şi ieşirile automatului. Deschizând cu dublu clic
acest fişier, se pot vedea numele simbolice care pot fi folosite pentru intrări şi
ieşiri;

Fig. 41. Fereastra Select CPU


 Proiectul creat conţine şi o bibliotecă IEC_S90_V41.lib. În această bibliotecă se
găsesc o serie de obiecte: bistabile, contoare, funcţii pentru manipularea stringurilor,
timere şi triggere. Pentru a putea folosi şi alte obiecte se pot încărca biblioteci
disponibile în cadrul programului de consolă. Acest lucru se poate face utilizând
Insert→ Additional Library. Conţinutul fiecărei biblioteci se poate vedea imediat după
încărcare în Library Manager. Tot aici se găsesc informaţii despre utilizarea
obiectelor componente.

Fig. 42. Fereastra New POU


 Se revine în pagina POU şi se trece la editarea programului PLC_PRG. Editarea
acestuia se face prin lansarea automată a editorului corespunzător limbajului pentru
care s-a optat la crearea programului.
1.8.2. Editoarele mediului AC1131
Editorul de text

Editorul de text va fi folosit pentru toate limbajele de programare. El prezintă principalele


facilităţi ale editoarelor de text din Windows. În plus prezintă facilitatea Syntax Colouring, adică
35
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată

diferite elemente ale limbajului sunt prezentate în culori diferite. Culorile folosite implicit sunt
următoarele:
 Albastru, pentru cuvinte cheie;
 Verde pentru comentarii în partea de declarare;
 Gri, pentru comentarii în editor (în LD şi FBD) ;
 Roz, pentru adrese;
 Roşu, pentru erori;
 Negru, pentru variabile, operatori de asignare etc.
Principalele comenzi ale editorului se găsesc într-un meniu contextual, care poate fi afişat la
apăsarea butonului drept al mouse-ului.

Comentariile sunt incluse în secvenţe speciale “(*” si “*)”.

Exemplu: (*Acesta este un comentariu.*)

Comentariile sunt permise în toate editoarele de text, în orice loc se doreşte, adică în toate
declaraţiile din limbajele IL, ST precum şi în tipurile de date definite de utilizator. În limbajele
FBD şi LD se pot introduce comentarii pentru fiecare reţea. Pentru a realiza acest lucru trebuie
selectată reţeaua căreia i se va ataşa comentariul şi apoi se alege comanda Insert → Comment din
bara de meniuri.

Constantele se identifică prin cuvântul cheie CONSTANT şi se pot declara local sau global în
felul următor:
VAR CONSTANT
<Identifier>:<Type>:=<initialization>;
END_VAR
Exemplu:
VAR CONSTANT
c1 : REAL :=2.86; (* 1. Constant*)
END_VAR
Editoarele pentru limbajele LD şi FBD

Aceste editoare sunt editoare semi-grafice, programele fiind alcătuite din reţele. La deschiderea
editorului, pe ecran apare o singură reţea. Se pot adăuga noi reţele prin alegerea uneia dintre
opţiunile Insert→Network (before) sau Insert→Network (after). Zona activă din cadrul unei reţele
este marcată printr-un dreptunghi cu linie punctată. La introducerea unui obiect, acesta se va
plasa în zona marcată.

Editorul SFC

Un POU scris în SFC este alcătuit dintr-o serie de etape, conectate între ele prin arce şi tranziţii,
cu respectarea regulilor din IEC1131. La deschiderea editorului SFC apare automat o etapă
iniţială şi o tranziţie. Etapele sunt de două feluri:
 Etape simple, care au asociată o acţiune şi un flag. Acesta din urmă indică dacă etapa
este activă. Acţiunile unei etape simple pot fi implementate în orice limbaj, prin
realizarea unui dublu clic pe etapă. Dacă acţiunea unei etape simple a fost
implementată atunci va apare un triunghi în colţul din dreapta sus al etapei;
 Etape IEC, care au asociate una sau mai multe acţiuni şi un flag care indică starea
etapei. O etapă IEC are o acţiune ataşată, care se găseşte într-un dreptunghi la
36
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată

dreapta etapei. Se pot adăuga mai multe acţiuni utilizând Extras Associate→Action. În
cadrul unei etape acţiunile pot avea mai multe atribute, care apar într-un dreptunghi
din stânga acţiunii::
o N – acţiune nememorată sau booleană, care este activă atât timp cât etapa este
activă;
o S – acţiune de setare, care acţiune memorată. O astfel de acţiune rămâne activă
până la o acţiune de resetare;
o R – acţiune de resetare;
o L – acţiune limitată în timp. O astfel de acţiune este activată o perioadă limitată
în timp, dacă etapa este activă;
o D – acţiune întârziată în timp. O astfel de acţiune devine activă după trecerea
unui timp dat după activarea etapei;
o P – acţiune în impuls. O astfel de acţiune este executată o singură dată la
activarea etapei, sub forma unui puls care durează un singur ciclu;
o SD – acţiune memorată şi întârziată în timp. O astfel de acţiune este întârziată
cu valoarea parametrului SD şi va rămâne activă până la efectuarea unei acţiuni
de resetare. Setarea acţiuni are loc, după întârzierea dată, chiar dacă etapa de care
este legată nu mai este activă;
o SL – acţiune memorată şi limitată în timp. O astfel de acţiune este activată la un
anumit interval de timp de la activarea etapei şi este şi limitată în timp.
Atributele L, D, SD, SL au nevoie de o valoare ataşată care este de forma unei constante de
timp. Aceasta se introduce în dreptunghiul destinat atributului lăsând un spaţiu între atribut şi
constantă (fig. 43)

Fig. 43. Declararea atributelor unei etape

Pentru etapele IEC se mai pot adăuga acţiuni de intrare şi de ieşire. O acţiune de intrare se execută
o singură dată la activarea etapei, iar o acţiune de ieşire se execută o singură dată la dezactivarea
etapei.

Adăugarea unei etape de intrare se face selectând etapa şi alegând din meniu opţiunea
Insert→Add Entry-Action. După adăugarea unei acţiuni de intrare în colţul din stânga jos al etapei
apare un dreptunghi cu litera E. Adăugarea unei etape de ieşire se face selectând etapa şi alegând
din meniu opţiunea Insert→Add Exit-Action. După adăugarea unei acţiuni de ieşire în colţul din
dreapta jos al etapei apare un dreptunghi cu litera X. O acţiune de intrare sau ieşire poate fi
scrisă în orice limbaj. Pentru a edita o acţiune de intrare sau de ieşire se execută un dublu clic pe
colţul corespunzător. Un exemplu de etapă cu acţiuni de intrare şi ieşire este prezentat în fig. 44.

Fig. 44. Exemplu de etapă cu acţiuni de intrare şi ieşire


În SFC sunt declarate implicit trei variabile: <nume etapa>.x, <nume etapa>.t şi <nume
actiune>.x. Variabila <nume etapa>.x este o variabilă booleană care are valoarea TRUE,
dacă etapa este activă şi FALSE, în caz contrar. În varianta SFC, fără atributul IEC această
variabilă implicită are numele <nume etapa>. Variabila <nume etapa>.t este o variabilă
37
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată

de tip TIME şi reprezintă timpul scurs de la activarea etapei. Variabila <nume actiune>.x
oferă posibilitatea de a vedea dacă o acţiune este activă sau nu, ea având valoarea TRUE dacă
acţiunea este activă. Dacă o etapă este activă un număr de indicatori sunt setaţi. Aceştia sunt în
acelaşi timp şi variabile care pot fi setate cu scopul de a controla fluxul într-un program SFC.
Pentru utilizarea acestora, trebuie declarate în cadrul programului, ca variabile globale sau locale,
de intrare sau ieşire. Cele mai importante flaguri sunt:
 SFCInit, variabilă de tip BOOL. Atunci când această variabilă este setată în TRUE se
trece automat în etapa iniţială şi celelalte flaguri sunt resetate. Etapa iniţială este
activă dar nu se execută;
 SFCPause, variabilă de tip BOOL. Atunci când această variabilă devine TRUE
execuţia diagramei SFC este oprită. Pentru repornire trebuie trecută în FALSE;
 SCFCurrentStep, variabilă de tip string. În această variabilă este memorat numele
etapei curente;
 SFCErrorPOU, variabilă de tip string. Această variabilă conţine numele blocului în
care apare o eroare.
Intr-un program SFC se pot realiza una sau mai multe ramuri paralele sau simultane. Ele poartă
în AC 1131 denumirea de Alternative Branch şi Parallel Branch.

Pentru editarea unei ramuri paralele trebuie selectată tranziţia la care se doreşte realizarea unei
ramuri paralele. Apoi se alege opţiunea Insert→Alternative Branch. Această opţiune va introduce
în paralel cu tranziţia selectată o altă tranziţie. Dezvoltarea ulterioară a fiecărei ramuri paralele se
face prin Insert→Step-Transition.

Pentru editarea unei ramuri simultane trebuie selectată etapa pentru care se doreşte realizarea
unei ramuri simultane. Apoi se alege opţiunea Insert→Parallel Branch. Această opţiune va
introduce în paralel cu etapa selectată o altă etapă. Dezvoltarea ulterioară a fiecărei ramuri
simultane se face prin Insert→Step-Transition.

Se vede că, pentru evitarea greşelilor, inserarea elementelor etapă şi tranziţie se face simultan.
De asemenea ştergerea unui singur element nu este permisă. Se poate realiza o ştergere doar
dacă se selectează elemente pereche (etapă-tranziţie) sau dacă prin ştergere nu se încalcă regulile
de construcţie GRAFCET.

1.8.3. Definirea sarcinilor (taskurilor)


În mod normal derularea unui program pe un automat programabil este de tip sincron, adică
există un singur fir reprezentat de programul ciclic. Acesta poartă diferite nume: OB1, în cazul
automatelor firmei SIEMENS, Main, în cazul automatelor OMRON, PLC_PRG, în cazul
automatelor ABB.

La automatele ABB există posibilitatea realizării mai multor fire (taskuri) de execuţie utilizând
Task Configuration, care este un obiect în cadrul pagina Resources, din Object Organizer.

Pentru a putea utiliza un task, acesta trebuie declarat. Prin declararea unui task se înţelege
setarea unor atribute ale acestuia:
 Atribuirea unui nume;
 Stabilirea unei priorităţi;
 Stabilirea intervalului de activare ciclică a taskului;
 Stabilirea unei variabile globale pe a cărui front crescător este activat taskul.

38
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată

Aceste atribute pot fi declarate într-o fereastră care se deschide atunci când se alege opţiunea
Insert→Append Task. În fereastra Taskattributes, care se deschide (fig. 45) se pot seta atributele de
mai sus.

Fig. 45. Fereastra Taskattributes


Numele taskului este un identificator şi este numele programului care reprezintă taskul. Pentru
fiecare task trebuie să se ataşeze cel puţin un program, care este apelat atunci când taskul este
activ. Prioritatea taskului este un număr cuprins între 0 şi 31. Prioritatea cea mai mare dintre
două taskuri cu numere diferite o are acela a cărui număr este mai mic. Intervalul se introduce
sub forma unei constante de tip TIME. În caseta Single se introduce variabila pe al cărei front
crescător se va activa taskul. Dacă se introduce la un task atât o variabilă de activare cât şi un
interval de activare, atunci numai intervalul de activare va fi luat în considerare.

Regulile de execuţie a mai multor taskuri sunt:


 Se execută acel task care are condiţia îndeplinită: fie s-a scurs timpul de activare, fie
variabila stabilită pentru activare a avut un front crescător;
 Dacă două taskuri au condiţii de activare simultane atunci mai întâi se execută taskul
cu prioritatea cea mai mare;
 Dacă două taskuri au condiţii de activare simultane şi aceeaşi prioritate, atunci se
execută taskul care a stat mai mult în coada de aşteptare, ceea ce însemnă că
priorităţile sunt dinamice şi bazate pe vârstă.
Facilitatea de a putea avea mai multe taskuri este deosebit de utilă mai ales pentru realizarea
acţiunilor la avarii a unui sistem condus de automatul programabil.

Un alt mod de utilizare a taskurilor, activate pe fronturi crescătoare ale unor variabile este acela
în care se doreşte realizarea unor programe care să conţină părţi de reglare a condiţiilor de
funcţionare sau un mod de lucru manual al sistemului.

1.8.4. Finalizarea proiectului


După ce întreg programul a fost redactat, acesta trebuie compilat prin alegerea opţiunii Project→
Build din bara de meniuri. După ce compilarea a avut loc, se va afişa un mesaj în fereastra de
mesaje situată în partea de jos a ecranului. Dacă în urma compilării au fost găsite erori, acestea
vor fi enumerate în fereastra de mesaje împreună cu numele POU şi numărul rândului unde a
apărut fiecare eroare.

Odată ce toate erorile au fost eliminate, proiectul poate fi încărcat pe automatul programabil.
Pentru aceasta trebuie stabilită în prealabil o conexiune cu AP prin legătură serială.

Se vor seta apoi parametrii de comunicare prin opţiunea Online→ Communication Parameters…(fig.
46), de unde se alege comanda New, iar în fereastra care apare se va alege opţiunea Serial(RS232).

39
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată

Se vor specifica de asemenea portul (COM1, COM2, etc.) şi viteza de transmisie (în acest caz
19200).

Fig. 46. Specificarea parametrilor de comunicare


Încărcarea are loc prin alegerea opţiunii Online→Login şi apoi Online→Download din bara de
meniuri. În continuare se poate realiza o monitorizare on-line a programului, putându-se chiar
modifica starea variabilelor.

Este indicat însă, ca înaintea încărcării unui proiect pe automat să se realizeze simularea offline a
acestuia, procedându-se în felul următor: în meniul Online se alege Simulation Mode, apoi în
acelaşi meniu se selectează Login şi apoi Run pentru a porni simularea (fig. 47).

Pentru a schimba starea unei variabile de intrare sau internă din TRUE în FALSE sau invers se
efectuează dublu clic pe variabila respectivă şi apoi se apasă CTRL+F7 (astfel modificarea
devine definitivă). În figura următoare se observă că una dintre intrări fiind în starea TRUE la
rândul ei ieşirea devine TRUE.

Fig. 47. Modul de simulare a unui proiect

40
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată

1.9. Prezentarea modului de programare în easy Soft CoDeSys


1.9.1. Introducere în mediul de programare CoDeSys
Easy Soft CoDeSys (Controlled Development System) este un mediu de programare pentru automatele
programabile ale firmei Moeller.

Folosind acest mediu, se pot dezvolta programe pentru automatizarea celor mai complexe
sarcini din toate ramurile industriei.

Limbajele suportate de acest mediu reprezintă toată gama de limbaje recomandate de IEC: IL,
LD, FBD, SFC şi ST, având în plus şi limbajul CFC.

Tipurile de variabile disponibile în mediul de programare CoDeSys sunt cele din standardul
IEC: BOOL, BYTE, DATE, DINT, DWORD, INT, LREAL, REAL, SINT, STRING, TIME,
UDINT, USINT, WORD.

1.9.2. Crearea unui proiect


Pentru a crea un nou proiect se va proceda în felul următor:
 Se alege File→New, din meniul principal;
 Apoi se va deschide automat fereastra Target Settings (Fig. 48). În această fereastră
trebuie să se aleagă tipul de automat din lista automatelor Moeller care pot fi
programate cu soft-ul CoDeSys. După ce se selectează automatul şi se apasă butonul
OK, fereastra Target Settings (Fig. 49) se va extinde şi se vor putea seta diferite
opţiuni, ca de exemplu: Target Platform, Memory Layout, General, Network Functionality şi
Visualization. În cadrul acestui proiect se va dori de asemenea realizarea unei
comunicări cu un panou operator al firmei MicroInnovation. Pentru a putea realiza
acest lucru trebuie bifată opţiunea Download Symbol file de la pagina General. După
selectarea opţiunilor dorite se apasă butonul OK;
 Astfel va apărea fereastra New POU (Fig. 50), unde trebuie specificat numele POU-
ului.
În cazul în care se va lăsa nemodificat numele POU-ului (PLC_PRG), proiectul va conţine un
singur POU care se va executa ciclic nemaifiind necesară o configurare a task-urilor

În cazul în care se modifica numele POU-ului va fi necesară o configurare a task-urilor.

După specificarea numelui POU-ului se va alege tipul acestuia (Program, Function Block sau
Function) şi limbajul în care va fi scris acesta (IL, LD, FBD, SFC, ST sau CFC). După ce au fost
selectate şi aceste opţiuni se apasă din nou OK.

Fig. 48. Alegerea tipului de automat

41
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată

Fig. 49. Setarea diferitelor opţiuni referitoare la automatul selectat

Fig. 50. Fereastra New POU


Un proiect este format din următoarele patru componente:
 POU (Program Organization Block);
 Tipuri de date (Data Type);
 Vizualizări (Visualization);
 Resurse (Resources).
Comutarea între cele patru componente se va realiza cu ajutorul organizatorului de obiecte
descris mai sus, fiecărei componente corespunzându-i un tab. În continuare prin POU vom face
referire la funcţii, funcţii bloc şi programe propriu-zise. Fiecare din ele conţine o parte de
declaraţii (header) şi corpul propriu-zis. Toate variabilele locale care se utilizează într-un POU
sunt declarate în zona de declaraţii sub forma prezentată în paragraful anterior. Fiecare dintre
POU-uri poate fi scris în oricare din limbajele acceptate de mediu.

42
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată

POU de tip program

Un program poate apela alt program sau o funcţie, dar nu este permisă apelarea unui program
dintr-o funcţie. În cazul în care un program apelează un alt program şi în acest mod variabilele
locale ale acestuia se schimbă, atunci aceste valori sunt memorate până la un nou apel al acelui
program chiar dacă va fi apelat de un alt POU.

La crearea unui nou proiect se va genera în mod automat un POU de tip program intitulat
PLC_PRG. Fiecare proiect trebuie să conţină un POU de tip program cu acest nume, el fiind
apelat de către sistemul de operare al automatului la fiecare ciclu. Ştergerea acestui program se
poate face numai atunci când se realizează o configurare de sarcini (task-uri), aceasta fiind
impusă în cazul în care se adoptă o strategie multitasking de elaborare a aplicaţiei. Aspectele
legate de task-uri sunt prezentate în subcapitolul 1.9.5.

POU de tip funcţie bloc

O funcţie bloc este un POU, care furnizează una sau mai multe valori prin intermediul
variabilelor de ieşire. Atunci când se declară o funcţie bloc, trebuie să i se precizeze numele, iar
variabilele de intrare şi de ieşire trebuie precizate în partea de declaraţii a acesteia. Definirea unei
funcţii bloc începe cu cuvântul cheie FUNCTION_BLOCK. Pentru a apela o funcţie bloc
trebuie creată o instanţă a acesteia.

Obs: pentru a asigura funcţionarea corectă a contoarelor este necesar ca acestea să fie prevăzute
pe intrarea de numărare cu un bloc de sesizare a frontului crescător (Fig. 51).

Exemplu:

Fig. 51. Modul de utilizare a unui contor în limbaj LD


În acest caz funcţia bloc predefinită CTD (contor de tip Count Down) a fost instanţiată cu
numele contor.

POU de tip funcţie

O funcţie este un POU, care întoarce o singură valoare. Aceasta poate fi alcătuită din mai multe
câmpuri ale unei structuri.

Valoarea întoarsă de funcţie este reprezentată chiar de numele funcţiei.

1.9.3. Definirea variabilelor globale


Fiecare proiect va conţine şi o lista de variabile globale, care vor putea fi folosite de toate
obiectele de tip POU. Avantajul utilizării acestor variabile este acela că pot fi transferate valori
foarte uşor între diferite POU-uri. Variabilele globale vor fi declarate într-o listă specială
denumită Global_Variables (Fig. 52).

Pentru a accesa această lista se va proceda în felul următor:

43
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată

 Se alege pagina Resources;


 Se efectuează dublu clic pe ramura Global Variables a fişierului Global Variables.

Fig. 52. Modul de declarare a variabilelor globale


În cadrul acestei liste, variabilele se vor defini conform prototipului precizat mai sus.

1.9.4. Editoarele mediului CoDeSys


Editorul de text

Editorul de text va fi folosit pentru toate limbajele de programare. El prezintă principalele


facilităţi ale editoarelor de text din Windows. În plus prezintă facilitatea Syntax Coloring, adică
diferite elemente ale limbajului sunt prezentate în culori diferite. Culorile folosite implicit sunt
următoarele:
 Albastru, pentru cuvinte cheie;
 Verde pentru comentarii în partea de declarare;
 Gri, pentru comentarii în editor (în LD şi FBD) ;
 Roz, pentru adrese;
 Roşu, pentru erori;
 Negru, pentru variabile, operatori de asignare etc.
Principalele comenzi ale editorului se găsesc într-un meniu contextual, care poate fi afişat la
apăsarea butonului drept al mouse-ului.

Comentariile sunt incluse în secvenţe speciale “(*” si “*)”.

Exemplu: (*Acesta este un comentariu.*)

Comentariile sunt permise în toate editoarele de text, în orice loc se doreşte, adică în toate
declaraţiile din limbajele IL, ST precum şi în tipurile de date definite de utilizator. În limbajele
FBD şi LD se pot introduce comentarii pentru fiecare reţea. Pentru a realiza acest lucru trebuie
selectată reţeaua căreia i se va ataşa comentariul şi apoi se alege comanda Insert → Comment din
bara de meniuri.

În plus comentariile pot fi adăugate oriunde sunt inserate nume de variabile.

În LD un comentariu poate fi adăugat fiecărui contact şi fiecărei bobine prin alegerea opţiunilor
Extras → Options din bara de meniuri (fig. 53).

44
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată

Fig. 53. Adăugarea unui comentariu unui contact sau unei bobine
Constantele se identifică prin cuvântul cheie CONSTANT şi se pot declara local sau global în
felul următor:
VAR CONSTANT
<Identifier>:<Type>:=<initialization>;
END_VAR
Exemplu:
VAR CONSTANT
c1 : REAL :=2.86; (* 1. Constant*)
END_VAR
Editoarele pentru limbajele LD şi FBD

Aceste editoare sunt editoare grafice, programele fiind alcătuite din reţele. La deschiderea
editorului, pe ecran apare o singură reţea. Se pot adăuga noi reţele prin alegerea uneia dintre
opţiunile Insert→Network (before) sau Insert→Network (after). Zona activă din cadrul unei reţele
este marcată printr-un dreptunghi cu linie punctată. La introducerea unui obiect, acesta se va
plasa în zona marcată.

Editorul SFC

Un POU scris în SFC este alcătuit dintr-o serie de etape, conectate între ele prin arce şi tranziţii,
cu respectarea regulilor enunţate la prezentarea generală a limbajului. La deschiderea editorului
SFC apare automat o etapă iniţială şi o tranziţie. Regulile de construcţie şi de evoluţie ale unui
graf sunt identice cu cele din standardul internaţional.

Compilarea, simularea sau încărcarea în automat a unui program în limbajul SFC este permisă
numai dacă se încarcă biblioteca iecsfc.lib. Procedura de încărcare a unei biblioteci în mediul de
programare CoDesys este următoarea:

În pagina Resouces al mediului de programare se executa dublu clic pe Library manager, apoi
Insert→Additional Library. În fereastra, care va apare se va alege din directorul Lib_Common
biblioteca iecsfc.lib.

1.9.5. Definirea sarcinilor (task-urilor)


În mod normal derularea unui program pe un automat programabil este de tip sincron, adică
există un singur fir reprezentat de programul ciclic. Acesta poartă diferite nume: OB1, în cazul

45
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată

automatelor SIEMENS, Main, în cazul automatelor OMRON, PLC_PRG, în cazul automatelor


ABB şi Moeller.

La automatele Moeller există posibilitatea realizării mai multor fire (taskuri) de execuţie utilizând
Task Configuration, care este un obiect în cadrul paginaui Resources. Pentru a putea utiliza un task,
acesta trebuie mai întâi declarat. Prin declararea unui task se înţelege definirea următoarelor
aspecte:
 Nume;
 Prioritate;
 Intervalul de activare ciclică a task-ului sau variabila globală pe a cărei front
crescător este activat task-ul;
 POU-urile de tip program care aparţin task-ului.

Fig. 54. Fereastra Taskattributes


Aspectele amintite vor fi declarate într-o fereastră care se deschide după ce s-a efectuat dublu
clic pe obiectul Task Configuration. În fereastra care se deschide, se efectuează clic dreapta pe
obiectul System events şi se apasă Insert Task. Ca urmare se va deschide o nouă fereastra, numită
Taskattributes (Fig. 54), unde se pot seta primele trei elemente din cele amintite mai sus.

Numele taskului reprezintă un identificator asemănător celor ce reprezintă variabile. Fiecărui


task trebuie să i se ataşeze cel puţin un program care este apelat atunci când task-ul este activ.
Prioritatea taskului este un număr cuprins între 0 şi 31, prioritatea cea mai mare având-o task-
urile cu numere mici de prioritate. Intervalul de timp se introduce sub forma unei constante de
tip TIME (de ex: t#200ms). Dacă la tip se alege opţiunea triggered by event, atunci în câmpul event
trebuie specificată variabila pe al cărei front crescător se va activa task-ul.

Astfel, sunt definite următoarele reguli de execuţie a mai multor taskuri:


 Se execută acel task care are condiţia îndeplinită: s-a scurs timpul de activare sau
variabila stabilită pentru activare a avut un front crescător;
 Dacă două taskuri au condiţii de activare simultane atunci mai întâi se execută task-
ul cu prioritatea cea mai mare;
46
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată

 Dacă două taskuri au condiţii de activare simultane şi aceeaşi prioritate, atunci se


execută taskul care a stat mai mult în coada de aşteptare, ceea ce înseamnă că
priorităţile sunt dinamice şi bazate pe vârstă;
 În cadrul unui task, POU-urile de tip program se vor executa în ordinea în care au
fost introduse în lista de programe a acelui task.
În continuare trebuie specificate POU-urile de tip program, care să fie executate în cadrul task-
ului. Acest lucru se realizează efectuând clic dreapta pe numele task-ului definit şi selectând
opţiunea Append→Program Call. Va apărea fereastra Program Call (fig. 55) în care se va selecta
numele POU-ului.

În cadrul unui task se pot executa oricâte POU-uri.

Fig. 55. Asocierea unui POU la un task


Acest aspect al proiectării, şi anume facilitatea de a putea avea mai multe taskuri, este deosebit
de util mai ales pentru realizarea acţiunilor la avarii ale unui sistem condus de automatul
programabil.

Un alt mod de utilizare a taskurilor, activate pe fronturi crescătoare ale unor variabile este acela
în care se doreşte realizarea unor programe care să conţină părţi de reglare a condiţiilor de
funcţionare sau un mod de lucru manual al sistemului.

1.9.6. Realizarea configuraţiei automatului


Configuraţia automatului se realizează selectând opţiunea Ressources din organizatorul de obiecte
(fig. 56), iar în cadrul acesteia se selectează PLC Configuration. Ca urmare va apărea următoarea
fereastră:

Fig. 56. PLC Configuration


47
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată

În cadrul acestei ferestre se pot observa adresele de intrare şi de ieşire ale automatului precum şi
biţii speciali de intrare şi de ieşire. De asemenea aici trebuie specificate modulele suplimentare,
care sunt ataşate automatului. După cum se observă, ultimele şapte poziţii sunt goale (Empty
Slot), ceea ce înseamnă că se pot ataşa în total şapte module.

Pentru ataşarea unui modul suplimentar se efectuează clic dreapta pe prima locaţie intitulată
Empty Slot (poziţie liberă) şi se selectează Replace Element (înlocuire a elementului). Va apărea o
listă care cuprinde toate modulele care se pot ataşa automatului. Se va selecta de aici modulul
amintit mai sus şi vom observa că acesta apare în loc de Empty Slot. Apăsând pe semnul plus de
dinaintea numelui modulului, va apărea o listă cu adresele modulului. Selectând una din adrese,
în partea dreaptă va apărea fereastra Base parameters care conţine proprietăţile intrării sau ieşirii
respective.

1.9.7. Finalizarea proiectului


După ce întreg programul a fost redactat, acesta trebuie compilat prin alegerea opţiunii Project→
Build din bara de meniuri . După ce compilarea a avut loc, se va afişa un mesaj în fereastra de
mesaje situată în partea de jos a ecranului. Dacă în urma compilării au fost găsite erori, acestea
vor fi enumerate în fereastra de mesaje împreună cu numele POU-ului şi numărul rândului unde
a apărut fiecare eroare.

Odată ce toate erorile au fost eliminate, proiectul poate fi încărcat pe automatul programabil.
Pentru aceasta trebuie stabilită în prealabil o conexiune cu AP fie prin legătură serială, fie prin
Ethernet.

Încărcarea are loc prin alegerea opţiunii Online → Login şi apoi Online → Download din bara de
meniuri. În prealabil trebuie setaţi parametrii de comunicare alegând opţiunea Online →
Communication Parameters…. Există două variante: Serial (RS232) - în acest caz trebuie specificată
viteza de transmisie (9600, 19200, 38400…) şi portul (COM1, COM2…) – sau Tcp/Ip – în
acest caz trebuie specificat IP-ul automatului (192.168.119.200) şi portul (1200).

În continuare se poate realiza o monitorizare online a programului, putându-se chiar modifica


starea variabilelor.

Este indicat însă, ca înaintea încărcării unui proiect pe automat să se realizeze simularea offline a
acestuia, procedându-se în felul următor: în meniul Online se alege Simulation Mode, apoi în
acelaşi meniu se selectează Login şi apoi Run pentru a porni simularea.

Pentru a schimba starea unei variabile de intrare sau internă din TRUE în FALSE sau invers se
efectuează dublu clic pe variabila respectivă şi apoi se apasă CTRL+F7 (astfel modificarea
devine definitivă). În fig. 57 se observă că una dintre intrări fiind în starea TRUE la rândul ei
ieşirea devine TRUE.

Fig. 57. Modul de simulare a unui proiect

48
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată

2. Caietul de sarcini
În figura 58 este prezentată o maşina de găurit împreună cu schema electrică care trebuie
realizată pentru a putea efectua un ciclu automat de găurire. Iniţial trebuie poziţionată piesa, fapt
semnalat de traductorul PP, iar apoi la apăsarea de către operatorul uman a butonului de pornire
BP se declanşează ciclul automat de găurire.

Mai întâi are loc deplasarea cu avans rapid a capului de găurire între traductoarele R1 şi R2
(pentru aceasta se alimentează contactoarele K2 şi K3). Apoi are loc o deplasare cu avans lent a
capului de găurire între traductoarele R2 şi R3 (se alimentează doar contactorul K2). Urmează
retragerea capului de găurire cu avans rapid, până la atingerea traductorului R1 (prin alimentarea
contactorului K1). O nouă gaură va fi efectuată după trecerea a două secunde, până când s-au
făcut cinci găuri succesive.

Se va prevedea şi alimentarea motorului electric de antrenare a pompei hidraulice care asigură


presiunea pentru circuitul hidraulic prin intermediul contactorului C1.

Butonul de pornire şi senzorul de poziţionare a piesei vor fi simulate printr-un întrerupător.

La începutul fiecărui ciclu, capul de găurire trebuie adus în poziţia retras dacă nu se afla deja
acolo, iar abia apoi se realizează cele cinci găuri.

Un nou ciclu va putea fi efectuat abia după ce s-a poziţionat o noua piesa şi după ce s-a apăsat
din nou butonul de pornire.
Observaţie.
1. Obţinerea vitezei de avans rapid se face utilizând un regulator unidirecţional de debit (RDU). Dacă se
alimentează V2 de la distribuitorul D1, există două căi de întoarcere pentru lichidul din pistonul P: una care
trece prin RDU si alta care trece prin distribuitorul D2, dacă se alimentează bobina V3. Pe prima cale se
poate regla debitul de lichid astfel ca viteza să fie mai mică decât aceea care se obţine pe cea de-a doua cale.
Pentru cazul in care este alimentată bobina V1 a distribuitorului, RDU este prevăzut cu o supapă care nu
opune rezistenţă trecerii lichidului şi în consecinţă viteza pistonului este maximă.
2. Traductoarele de proximitate R2 şi R3 au logică negativă.

49
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată

50
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată

3. Modul de lucru
3.1. Automatul S7-200
Se procedează în felul următor:
 Se porneşte mediul de programare Step7MicroWin şi se întocmeşte Symbol Table,
conform legăturilor dintre automat şi reactor prezentate în fig. 59;
 Se realizează graful automatizării conform caietului de sarcini;
 Se alcătuieşte programul cu una din metodele:
o Activarea şi dezactivarea sincronă;
o Utilizarea variabilelor SCR.
 Se execută montajul din fig. 59, folosind modelul de reactor de etilare. Se vor face
numai legăturile punctate;

Fig. 59. Legăturile dintre automatul S7-215 şi Maşina automată de găurit


 Se încarcă programul în automat;
 Se verifică funcţionarea automatizării conform caietului de sarcini.
3.2. Automatul S7-300
Se procedează în felul următor:
 Se porneşte mediul de programare Step7 Manager şi se introduc variabilele în
obiectul Symbols, conform legăturilor dintre automat şi reactor prezentate în fig. 60;
 Se realizează graful automatizării conform caietului de sarcini;
51
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată

 Se alcătuieşte programul cu una din metodele:


o Activarea şi dezactivarea sincronă;
o Utilizarea limbajului SFC (folosind o funcţie bloc editată în limbajul GRAPH).
 Se execută montajul din fig. 60, folosind modelul de reactor de etilare. Se vor face
numai legăturile punctate;

Fig. 60. Legăturile dintre automatul S7-314C-2DP şi Maşina automată de găurit


 Se încarcă programul în automat;
 Se verifică funcţionarea automatizării conform caietului de sarcini.

52
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată

3.3. Automatul ABB

Fig. 61. Legăturile dintre automatul ABB 07KT97 şi Maşina automată de găurit
53
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată

Se procedează în felul următor:


 Se porneşte mediul de programare AC1131 şi se introduc variabilele în obiectul
Global Variables din tab-ul Resources, conform legăturilor dintre automat şi reactor
prezentate în fig. 61;
 Se realizează graful automatizării conform caietului de sarcini;
 Se alcătuieşte programul cu una din metodele:
o Activarea şi dezactivarea sincronă;
o Utilizarea limbajului SFC (Pentru ca graful să poată fi editat în standardul
internaţional trebuie adăugată o bibliotecă specială alegând opţiunea Window →
Library Manager din bara de meniuri. Apare o fereastră nouă iar în lista
bibliotecilor deja adăugate – care conţine iniţial o singură bibliotecă – se
efectuează clic-dreapta şi se alege opţiunea Additional Library…. Din lista
bibliotecilor afişate se alege biblioteca IECSFC_S90_V41.lib).
 Se execută montajul din fig. 61, folosind modelul de reactor de etilare. Se vor face
numai legăturile punctate;
 Se încarcă programul în automat;
 Se verifică funcţionarea automatizării conform caietului de sarcini.

3.2. Automatul XC200


Se procedează în felul următor:
 Se porneşte mediul de programare easy Soft CoDeSys şi se introduc variabilele în
obiectul Global Variables din tab-ul Resources, conform legăturilor dintre automat şi
reactor prezentate în fig. 62;
 Se realizează graful automatizării conform caietului de sarcini;
 Se alcătuieşte programul cu una din metodele:
o Activarea şi dezactivarea sincronă;
o Utilizarea limbajului SFC.
 Se execută montajul din fig. 62, folosind modelul de reactor de etilare. Se vor face
numai legăturile punctate;
 Se încarcă programul în automat;
 Se verifică funcţionarea automatizării conform caietului de sarcini.

54
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată

Fig. 62. Legăturile dintre automatul Moeller XC200 şi Maşina automată de găurit

55

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