Sunteți pe pagina 1din 8

Comanda automat cu ajutorul automatelor programabile a proceselor din construcii

Robert Pcsi, UTCB, Facultatea de Utilaj Tehnologic


e-mail: robert.pecsi@gmail.com
Abstract The Programmable Logic Controllers play a vital role in automation and process control. Graphical
programming may be used in order to divide the process to be automated in elementary sequences that can be easily
implemented. Each sequence represents a step that has their specific associated actions. The programming task is
simplified by using a set of subroutines that are used in several steps. The paper presents the implementation of a
sequential control of eight processes that must follow one after the other at a user-specified time-interval. Examples for
debug and malfunction determination and online program modification will be also presented.

1.

Introducere

Un automat programabil (PLC) are mai multe intrri, prin intermediul crora interpreteaz stri logice
nalte, respectiv joase, stri transmise de senzori i comutatoare. De asemenea, exist mai muli
terminali de ieire, prin intermediul crora dispozitivul transmite semnale nalte sau joase ctre
contactoare, motoare, lmpi, sau orice alte dispozitive ce pot fi controlate prin intermediul semnalelor de tip
nchis/deschis.
Adevrata utilitate a PLC-ului o putem vedea atunci cnd dorim modificarea comportamentului unui sistem
de control. Din moment ce PLC-ul este un dispozitiv programabil, comportamentul acestuia poate fi
modificat prin schimbarea comenzilor. Nu este nevoie de o reconfigurare a componentelor electrice
conectate la intrarea i ieirea acestuia. Un mare avantaj al automatelor programabile, avantaj ce nu poate fi
duplicat cu ajutorul releelor electromecanice, const n posibilitatea supravegherii i controlului la distana a
dispozitivelor prin intermediul reelelor de calculatoare.
Logica circuitului este stabilit n interiorul PLC-ului prin intermediul unui program software. Acest
program decide care ieiri sunt energizate i sub ce condiii de intrare. Programul este introdus i vizualizat
prin intermediul unui PC conectat la portul PLC-ului (programming port).Automatele programabile
funcioneaz scannd (executnd) continuu un program. Putem spune c un ciclu de scanare are trei pai
importani (De fapt sunt mai mult de trei pai. Mai are loc verificarea sistemului i actualizarea valorilor
curente ale ceasului i ale numrtorului intern):

Pasul 1- TESTAREA INTRRILOR


PLC-ul cerceteaz starea intrrilor (activ/inactiv n cazul intrrilor numerice sau valoarea unei intrri
analogice) i o copiaz, n form binar, n anumii regitri asociai intrrilor,

Pasul 2 - EXECUTAREA PROGRAMULUI


PLC-ul execut programul instruciune cu instruciune. n funcie de starea intrrilor i de logica
programului, schimb configuraia regitrilor de ieire, n form binar.

Pasul 3- ACTUALIZAREA IEIRILOR


n final PLC-ul actualizeaz i starea ieirilor fizice pe baza strii ieirilor rezultate din pasul
anterior. Dup cel de-al treilea pas, PLC-ul revine la pasul 1 i reia ciclul. Un ciclu de scanare este
definit ca timpul n care se execut cei trei pai de mai sus.
2.

Limbajele de programare a automatelor programabile

Exist mai multe variante de programare a unui automat programabil, dintre care pot fi amintite:

Programarea cu ajutorul limbajelor grafice, de tip (Grafcet sau Isagraf)


Programarea prin diagrama Ladder
Programarea in limbaje de nivel nalt (C, Pascal)

La programarea prin utilizarea listei de instruciuni structura unei instruciuni este urmtoarea:
Eticheta (label) Operator ul Operandul Observaii
L1:
LD
%I0.0.0.0.1 (*ncrcarea valorii de la o intrare n registrul de lucru*)
unde diferitele pri componente ale structurii instruciunii au urmtoarele semnificaii:
Eticheta
Identific o instruciune printr-o etichet la care se poate face un salt. Este opional.
Operatorul Este partea central a instruciunii care definete ce instruciune se efectueaz.
Operandul Denumirea variabilei, care poate fi numele simbolic al variabilei sau adresa sa fizic.
De exemplu %I0.0.0.0.
Observaia Observaiile furnizeaz informaii mai detaliate la respectiva instruciune.
Ca regul de programare, este bine s avem n vedere c ntotdeauna o secven de instruciuni ncepe cu o
comand de ncrcare n registrul de lucru (LD sau LDN) care este valabil pn la o nou ncrcare.
Printre cele mai des utilizate limbaje de programare grafice amintim limbajul Ladder Diagram i Function
Block Diagram. Diagramele ladder sunt diagrame speciale, folosite de obicei n sistemele logice de control
industrial. Denumirea de ladder (din englez: scar) vine de la asemnarea acestora cu o scar: dou linii
verticale desemnnd sursa de putere, i linii orizontale reprezentnd circuitele de comand. Diagramele de
tip bloc funcional copiaz excelent de bine structura schemelor de comand prin pori logice.
3.

Comanda secvenial a proceselor din construcii exemplu practic de implementare

Autorul a folosit n cadrul muncii sale de cercetare automatul programabil Moeller-Eaton PS-4 care vine cu
propriul su mediul de programare - Sucusoft. Procesele pe care urmeaz s le comandm n mod succesiv
la o frecven predeterminat le vom identifica n programul de automatizare cu leduri, avnd n mod
constant n vedere c fiecare led n parte poate reprezenta comanda unui anumit proces. Pentru nceput ne
propunem ca trecerea de la un led la altul (de la comanda unui proces la altul) s se realizeze la o frecven
de 2 Hz. Efectul secvenial va ncepe automat cnd se pornete controlerul i va continua pn la
ntreruperea programului de la un semnal exterior. Nu sunt prevzute elemente de comand care s
influeneze procesul, aadar nu este necesar scanarea intrrilor automatului. Dup punerea n funciune se
va modifica programul inversndu-se sensul de aprindere a ledurilor i modificndu-se frecvena la 1 Hz.
Cele dou elemente importante care este necesar s fie programate pentru aceast tem de automatizare
sunt:
durata semnalului de aprindere a fiecrui led,
n scopul definirii duratei semnalului se poate utiliza un bloc funcional pus la dispoziie de
productor n cadrul grupei de temporizatoare (timere). ntruct nu sunt necesare resetri sau etape
similare, cea mai simpl soluie const n folosirea blocului funcional TimePulse (TP).
trecerea de la un led la urmtorul.
Se va scrie un bloc funcional general de comutare a ledurilor care s poat fi utilizat ulterior pentru
alte sarcini similare. Astfel, adresa cuvntului de ieire i valoarea dorit pentru durata semnalului
vor fi transferate ctre blocul funcional din exterior, adic de la unitatea de apelant. Aadar blocul

funcional va putea fi apelat de mai multe ori n cadrul aceluiai program i astfel va fi posibil
comanda chiar a mai multor seturi de 8 leduri de la acelai program.
Se va crea un bloc funcional prin care sunt aprinse i stinse ledurile i este apelat blocul funcional pus la
dispoziie de productor TP pentru definirea duratei semnalului. Vom da acestui bloc funcional denumirea
LIGHT. Blocul funcional LIGHT va fi apelat din programul principal care va fi denumit EXP-PS4. Adresa
cuvntului de ieire i valoarea duratei semnalului vor fi transferate blocului funcional LIGHT de ctre
unitatea de program atunci cnd acesta l apeleaz.
Efectul de secveniere poate fi obinut prin setarea unui singur bit pentru a ncrca o matrice de bii ntr-un
registru la intervale regulate, deplasnd aceast matrice de bii cu un bit i apoi returnnd-o. Matricea de
bii se transfer sub forma unei variabile. Sucusoft permite citirea unei variabile ca o variabil de intrare i
scrierea sa ca o variabil de ieire simultan, variabila respectiv se va defini ca o variabil de intrare/ieire.
O vom declara cu denumirea Light_strip i cu tipul de date Byte. Cuvntul cheie folosit pentru variabilele de
intrare/ieire este VAR_IN_OUT, iar tagul de sfrit al declarrii este END_VAR. Adresa fizic nu va fi
transferat pn ce variabila nu este apelat de o unitate de program de nivel mai nalt. Se va utiliza
urmtorul bloc de declarare:
(1)
Pentru deplasarea matricei de bii se poate utiliza sau o instruciune de deplasare sau una de rotaie, sau ctre
dreapta sau ctre stnga. Utilizarea unei instruciuni de deplasare necesit ncrcarea unui 1 logic dup
fiecare opt pai de deplasare. Astfel, este mai avantajos i vom alege s folosim comanda de rotaie. Liniile
de instruciuni pe care le vom folos n acest sens sunt:
(2)
Pentru definirea duratei semnalului vom utiliza blocul funcional pus la dispoziie de productor TP
(TimePulse). Timerul pornete cu un vrf de cretere pe intrarea IN i menine starea de 1 pe ieirea
boolean Q pe durata valorii de timp predefinite PT. Ieirea ET indic valoarea curent a timpului. n timpul
care se deruleaz starea de 1 logic de la ieirea Q se pstreaz indiferent de starea intrrii IN. Operanzii IN
i Q sunt operanzi binari. Operanzii PT i ET sunt de tipul de date standard TIME (avnd valoarea implicit
T#0s).

Fig. 1: Prototipul blocului funcional TP

Legend figura 1:
IN
Condiia iniial
PT
Setarea valorii timpului
Q
Starea binar a timerului
ET
Valoarea curent a timpului

Fig. 2: Diagrama de temporizare pentru TP

n seciunea de declarare a unitii de program apelante se va crea o copie a fiecrui bloc funcional. n acest
scop se aloc blocului funcional o denumire la liber alegere care trebuie s fie declarat ca o variabil
local. Blocul funcional TP va fi apelat din blocul funcional LIGHT, astfel c TP va fi declarat n seciunea
de declarare din LIGHT. Se va aloca o variabil PULSE acestui bloc funcional TP prin:
(3)
La apelarea unui bloc funcional, valorile de procesat sunt transferate ctre intrrile sale, iar rezultatele sunt
returnate prin variabilele de ieire. Astfel sunt necesare variabile suplimentare n unitatea de apelant pentru
transferul parametrilor i preluarea rezultatelor. Denumirile variabilelor se pot selecta la libera alegere. S
zicem c declarm urmtoarele variabile ce vor utilizate de blocul funcional TP i sunt declarate n blocul
funcional LIGHT:

Start
Condiia de start care se transfer ctre operandul IN

Pulse_duration
Setarea valorii timp pentru PT

Time_running
Starea logic a timerului pus la ieire prin operandul Q

Current_time
Momentul de timp actual transferat la ieire prin operandul ET
Variabila durat a impulsurilor Pulse_duration se declar ca o variabil de intrare astfel nct s i se poat
transfera oricnd valoarea ctre operandul PT al blocului TP la apelarea blocului LIGHT. Celelalte variabile
pot fi declarate ca variabile locale deoarece ele sunt valabile numai n cadrul blocului LIGHT, nu i n
programul apelant EXP_PS4. Iat declararea:

(4)
Blocul funcional este apelat prin instruciunea CAL urmat de denumirea instanei ce definete adresa
blocului funcional. n exemplul nostru CAL Pulse.
Sunt trei metode disponibile pentru transferul parametrilor, din care vom descrie aici doar dou:
n cazul primei metode parametri se transfer direct prin apelarea blocului funcional. Ei se introduc
ntre paranteze, separate ntre ele prin virgule. Caracterul I este scris ntre parametrii de intrare i
cei de ieire:

(5)

n cazul celei de a doua metode parametrii de intrare sunt ncrcai individual cu ajutorul comenzii
LD i apoi transferate ctre operanzii blocului funcional folosind instruciunea ST, nainte de
apelarea blocului funcional. Operanzii de ieire sunt scanai dup apelarea blocului funcional.
Sintaxa
de
specificare
a
operanzilor
blocului
funcional
este:
urmtoarea:
Denumirea_instanei.operand. n acest caz codul corespunztor apelrii blocului funcional este
urmtorul:

(6)
Oricare dintre aceste metode se poate alege, dup preferine. Unicul avantaj al celei de a doua metode este
acela c este o metod standard IEC de apelare a blocurilor funcionale i astfel permite reutilizabilitatea n
alte sisteme IEC. Prima metod mult mai compact specificarea parametrilor de ieire dup acel caracter I
este specific sistemelor Moeller-Eaton. n exemplul de mai jos vom apela blocul TP folosind cea de a doua
metod din cele 2 prezentate.
Generatorul de impulsuri se creeaz prin returnarea valorii negate a lui Q la intrarea IN:
(7)
Ieirea Q are starea logic 1 att timp, ct funcioneaz generatorul de impulsuri. Starea de 0 logic care
cauzeaz repornirea timerului este activ pe durata unui ciclu program. Durata ciclului programului este
aproximativ egal ca valoarea lui PT, putndu-se neglija impreciziile, abaterile de durat ale unui ciclu
program. Liniile de instruciune pentru programarea duratei semnalului sunt aadar urmtoarele:

(8)
Acum se poate simplifica programul. Putem porni timerul direct cu starea negat a ieirii Q. Variabilele Start
i Time_running nu mai sunt necesare. Definirea sarcinii de automatizare nu necesit interogarea valorii
curente a timpului; dar variabila Current_time rmne pentru a permite afiarea duratei de timp scurse n
timpul testrii pe viu. Programul devine:

(9)

Pentru a structura blocul funcional LIGHT, este necesar deplasarea cu o poziie a matricii de bii dup ce
s-a scurs timpul PT. Aceasta se va implementa cu ajutorul unei etichete de salt care permite s se sar peste
operaiunea de rotire atta timp ct generatorul de impulsuri ruleaz. Matricea de bii a variabilei Light_strip
se va deplasa atunci cnd a trecut timpul adic la starea de 0 logic a ieirii Q. Saltul condiional se poate
programa cu ajutorul comenzii JMPC. Saltul se efectueaz dac n registrul de lucru avem valoarea de 1
logic. Denumirea etichetei de salt se poate selecta liber, n acest caz vom alege not_shift:

(10)
Acum se poate optimiza programul, adic l putem scurta cu cteva modificri. Instruciunea LDN
Pulse.Q care furnizeaz starea de pornire pentru generatorul de impulsuri poate fi utilizat simultan i ca o
condiie pentru eticheta de salt. Astfel vom nlocui comanda JMPC cu JMPCN, care determin efectuarea
saltului cnd rezultatul curent este 0 logic.

(11)

Seciunea de program prin care se deplaseaz biii matricei variabilei Light_strip se proceseaz numai atunci
cnd tocmai a trecut timpul n timerul TP. Apoi timerul se repornete din nou i din nou sunt srite
instruciunile de rotire a biilor. Blocul funcional LIGHT va fi apelat din programul EXP_PS4. Cnd se
apeleaz blocul funcional este necesar transferul urmtorilor doi parametri: valoarea timpului pentru
definirea vitezei de rulare a adresei fizice la care se indic lumina curgtoare. Programul EXP_PS4 arat n
felul urmtor:

(12)
4.

Testarea i modificarea programului

Fiecare dintre unitile de program poate fi afiat i modificat dac este necesar n timpul rulrii sale n
automat. Vom vedea cum se poate modifica sensul de curgere a luminii prin leduri i, respectiv, viteza
(frecvena) de alternare a aprinderii ledurilor. n acest scop este necesar s fie deschis fereastra Program, i
fie selectat unitatea de LIGHT i s fie afiat seciunea de instruciuni corespunztoare. n fereastra
Connection list se d click pe butonul unitatea de Editor online pentru a deschide fereastra Program. La
nceput se observ numai RESOURCE pe nivelul structural cel mai de sus din fereastra din partea stng.
Nivelele mai de jos ale ntregului program pot fi afiate dnd dublu-click pe RESOURCE n fereastra din
partea stng. Dac un program este supraluminat n fereastra din partea stng, se afieaz componentele
de program ale nivelului inferior urmtor. Astfel, se d dublu-click pe RESOURCE pentru a se afia numele
programului unitatea de EXP_PS4 n fereastra din partea stng, se d dublu-click pe EXP_PS4 [EXP_PS4]
n fereastra din partea stng pentru a se afia blocul funcional subordonat LIGHT i se d dublu-click pe
Light_sequence [LIGHT] n fereastra din partea stng pentru a se afia blocul funcional TP, care reprezint
cel mai de jos nivel, n fereastra din partea dreapt.

Figura 3: Fereastra program folosit pentru modificarea aplicaiei

Se selecteaz blocul funcional LIGHT_SEQUENCE [LIGHT] i se d click pe butonul Display/Change


PO. Se deschide IL Online Editor care va ilustra seciunea de declarare i de instruciuni a blocului
funcional. Starea variabilelor se poate afia n aceast fereastr, aspect foarte util pentru depanare. Se
selecteaz n acest sens Status Display. Editorul Online permite modificarea listei de instruciuni n timpul
rulrii programului. Astfel se economisete timp, nefiind necesar modificarea programului n editorul
unitatea de i apoi generarea din nou a codului. Fiecare modificare este automat actualizat n unitatea de, n
fiierul cod i n automat. Modificarea sensului de curgere a luminii prin leduri se poate realiza prin
nlocuirea comenzii ROR (rotire dreapta) cu comanda ROL (rotire stnga). Viteza de curgere a luminii se
poate modifica prin redefinirea valorii timpului pentru blocul funcional TP la 1 secund, corespunztor noii
frecvene de 1 Hz.
5.

Concluzii

n acest scurt exemplu practic de implementare a unei funcii de comand automat secvenial autorul a
dorit s ilustreze modul deosebit de avantajos de lucru i de realizarea, respectiv modificare a unor structuri
de automatizare, mod pe care automatele programabile l fac posibil. Articolul reprezint doar un prim pas
n cadrul prezentrii multiplelor posibiliti pe care ni le pune la dispoziie utilizarea noii generaii de
automate programabile.
BIBLIOGRAFIE
[1]
Ionescu C., Larionescu S., Automatizari. Sisteme automate discrete logice, UTCB, Bucuresti, 1997.
[2] Jack H., Automating Manufacturing System, http://claymore.engineer.gvsu.edu/, 2005
[3]
Kirrmann H., Industrial Automation, ABB Research Center, Baden, Switzerland, 2005
[4]
Popescu D., Automate programabile, Matrix Rom, Bucuresti, 2005.
[5]
Taconet B., Chollot B., Programmation du Grafcet sur automate a langage logique, a
[6]
relais ou booleen, Automatisme, feb., 1979.
[7] Toulotte J. M., Reseaux de Petri et automate programmables, Automatisme, aug. 1978.

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