Documente Academic
Documente Profesional
Documente Cultură
Se va scrie un program pentru comanda unui efect luminos cu opt leduri conectate la ieirile
digitale, astfel nct fiecare led s se aprind succesiv. Trecerea de la un led la altul ne propunem
s se realizeze la o frecven de 2 Hz. Efectul luminos de deplasare 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 inversnduse 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 POU 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 POU program atunci cnd acesta l apeleaz.
Blocul funcional care aprinde ledurile
Efectul de lumin care fuge 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 un POU program de nivel
mai nalt. Se va utiliza urmtorul bloc de declarare:
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:
Condiia iniial
Setarea valorii timpului
Starea binar a timerului
Valoarea curent a timpului
n seciunea de declarare a POU-lui apelant 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:
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
POU 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
Pulse_duration
Time_running
Current_time
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:
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:
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:
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 urmtoarele:
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:
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.
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.
POU program EXP_PS4
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.
Se declar mai nti blocul funcional. Se aloc denumirea de instan Light_sequence n
cadrul seciunii de declarare a variabilelor din POU EXP_PS4:
Viteza de rulare va fi definit cu ajutorul unei variabile de tip TIME care se iniializeaz cu
1
Variabila Display (afiaj) este folosit pentru a furniza la o anumit ieire semnalul de comand a
ledului. Se declar ca o variabil local, reprezentat direct. Declararea variabilei specific
adresa ieirii automatului, n acest caz cuvntul de ieire 0. dup o pornire la rece, variabila
Display se va iniializa la valoarea 1 logic, dup cum urmeaz:
Este necesar pur i simplu s se apeleze blocul funcional LIGHT (cu denumirea declarat de
Light_sequence) n cadrul seciunii de instruciuni al POU EXP_PS4. Vom utiliza prima metod
pentru transferul parametrilor:
Meniul contextual
nti se declar blocul funcional LIGHT care va fi apelat de acest POU. n acest scop se
introduce denumirea Light_sequence ca denumirea a variabilei.
Cnd se salveaz blocul funcional LIGHT, acesta a fost automat adugat la lista blocurilor
funcionale definite de utilizator. Astfel poate fi selectat dintr-o list, aa cum a fost cu blocul
funcional definit de productor mai sus. Din nou se selecteaz tipul dnd click dreapta cu
cursorul pe celula Type i deschiznd meniul contextual sau folosind meniul Insert/Data
types. Se deschide fereastra blocurilor funcionale definite de productor / utilizator, se
selecteaz tabul corespunztor celor definite de utilizator (User) i se selecteaz blocul
funcional LIGHT creat anterior. Se d click pe butonul Accept.
Se declar variabila local Running_speed. Se introduce denumirea i tipul variabilei i
valoarea de t#500ms n rubrica Initial Value i se d acceptare.
Se declar variabila local Display. Se introduce denumirea i tipul variabilei i valoarea de 1
n rubrica Initial Value i %QB0.0.0.0 la rubrica de adrese i se d acceptare.
Meniul contextual
Se selecteaz Local conform tipului de variabil pentru a se deschide feresastra Insert
Variable: Local selection.
Se selecteaz blocurile funcionale definite de utilizator.
Se finalizeaz apelarea blocului funcional prin alocarea variabilelor care conin valoarea curent
a timpului (Running_speed) i a matricii de bii a ledului cu lumin curgtoare (Display) la
operanzii blocului funcional Pulse_duration i Light_strip.
Se d dublu-click pe EXP_PS4 [EXP_PS4] n fereastra din partea stng pentru a se afia blocul
funcional subordonat LIGHT.
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.
Pentru a anula actualizarea continu a strii variabilelor, se alege din nou comanda sau butonul
Status Display. Aceasta determin pstrarea pe ecran a valorilor anterior actualizate.
Editorul Online permite modificarea listei de instruciuni n timpul rulrii programului. Astfel se
economisete timp, nefiind necesar modificarea programului n editorul POU i apoi generarea
din nou a codului. Fiecare modificare este automat actualizat n POU, n fiierul cod i n
automat.