Documente Academic
Documente Profesional
Documente Cultură
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.
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ă
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 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ă
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.
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ă
Constantele reale vor fi specificate folosind literele e sau E sau caracterul “.”, de exemplu: 4e+2,
-3.4, 3E10.
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ă:
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ă
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.
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.
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.
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.
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.
Î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.
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.
8
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată
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ă
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ă
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).
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.
12
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată
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.
13
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată
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
//
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.
Î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.
Toate modificările făcute în fereastra System Block devin operaţionale după încărcarea acestuia în
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.
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ă
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.
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.
Î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.
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ă.
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.
21
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată
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).
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.
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.
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.
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:
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.
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.
Vom prezenta în tabelul ce urmează tipurile de acţiuni care sunt disponibile în Step 7 Manager.
De exemplu:
Î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.
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.
Î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.
Î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.
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.
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 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)
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.
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.
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.
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.
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).
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.
40
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată
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.
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.
41
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată
42
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată
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.
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:
O funcţie este un POU, care întoarce o singură valoare. Aceasta poate fi alcătuită din mai multe
câmpuri ale unei structuri.
43
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată
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 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.
45
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată
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.
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.
Î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.
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).
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.
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.
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;
52
Lucrarea nr. 3. Automatizarea unei maşini de găurire automată
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ă
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