Download - - 3 Lucrari
Programarea în Statement List 1 Programarea în Statement List 1.1 Introducere
1.2 Elemente STL
1.2.1 Paşi (Step)
1.2.2 Propoziţii
1.3 Instrucţiunea STEP
1.4 Propoziţie simplă într-un pas
1.5 Propoziţii multiple într-un pas
1.6 Execuţia unui pas cu instrucţiunea OTHRW (Otherwise)
1.7 Utilizarea comenzii ELSE în loc de comanda OTHRW
Comenzi standard utilizate în STL2 Comenzi standard utilizate în STL2.1 Introducere
2.2 Lista de cuvinte cheie
2.2.1 Instrucţiuni de transfer în STL
2.2.2 Instrucţiuni logice în STL
Proiectul “Dispozitiv de ridicare”3 Proiectul “Dispozitiv de ridicare”4.1 Prezentarea problemei
4.2 Soluţia problemei şi modul de lucru pentru verificarea soluţiei
FESTO1
Utilizarea temporizatoarelor4 Utilizarea temporizatoarelor4.1 Introducere
4.2 Utilizarea funcţiei Help
4.3 Inserarea temporizatorului în proiect
Utilizarea numărătoarelor5 Utilizarea numărătoarelor5.1 Introducere
5.2 Utilizarea funcţiei de numărare
5.3 Inserarea numărătorului în proiect FESTO2
Multitasking6 Multitasking6.1 Introducere
6.2 Termeni asociaţi cu Multitasking
1
6.2.1 CFM – Call Function Module
6.2.2 CMP – Call Module Program
6.2.3 Apelarea modulelor de program
6.2.4 Apelarea programelor
6.3 Utilizarea Flag-urilor
6.4 Utilizarea modulului de pâlpâire
6.5 Cerinţe pentru operaţii de comandă iniţiale
6.5.1 Lista de alocare
6.6 Structura proiectului şi programelor
6.6.1 Arborele proiectului
6.6.2 Programul de principal organizare
6.6.3 Programul secvenţial
6.7 Cerinţe pentru operaţii de comandă suplimentare
6.7.1 Lista de alocare
6.8 Structura proiectului şi programelor
6.8.1 Arborele proiectului
6.8.2 Programul principal de organizare
6.8.3 Programul secvenţial
6.8.4 Programul de pâlpâire FESTO3
Comunicaţii în reţea7 Comunicaţii în reţea7.1 Introducere
7.2 Verificarea adresei din calculator
7.3 Verificarea adresei IP libere pentru controler
7.4 Modificarea adresei IP a controlerului
7.4.1 Configurarea IO
7.4.2 Setarea controlerului
7.4.3 Descărcarea proiectelor şi driverelor în controler
7.5 Conectarea cablurilor bifilare
7.6 Verificarea comunicării
7.7 Comunicarea cu controlerul
Utilizarea Ethernet8 Utilizarea Ethernet8.1 Introducere
8.2 Programarea via Ethernet
8.2.1 Importarea modulelor
8.2.2 Modulul IP_TABLE
2
8.2.3 Modulul EASY_R
8.2.4 Modulul EASY_S
8.3 Exemplu de utilizare Ethernet pentru un program simplu
8.3.1 Operaţii de comandă
8.3.2 Componente ale staţiei A
8.3.3 Componente ale staţiei B
8.3.4 Transfer de date
8.3.5 Lista de alocare
8.3.6 Editarea programului pentru staţia A
8.3.7 Program principal pentru staţia A
8.3.8 Program secvenţial pentru staţia A
8.3.9 Program de pâlpâire (Blinking) pentru staţia A
8.3.10 Editarea unui program pentru staţia B
8.3.11 Program principal pentru staţia B
8.3.12 Program secvenţial pentru staţia B
8.3.13 Program de pâlpâire(Blinking) pentru staţia B
1 Programarea în limbajul Statement List 1.1 Introducere
Limbajul STL permite programatorului să rezolve sarcini de comandă, utilizând instrucţiuni simple, care descriu operaţia de executat a controlerului.
Caracteristica modulară a programării în acest limbaj permite utilizatorului să rezolve sarcini complexe într-un mod eficient şi simplu.
Operanzii STL sunt identificatori ai controlerului FEC (Front End Controller, produs de firma Festo), aceştia pot fi intrări, ieşiri, temporizatoare, numărătoare, flag-uri, programe şi reprezintă numele acestor resurse. Utilizarea unor operanzi în program reprezintă modul de accesare a resurselor din controler pe care le reprezintă operanzii.
Operanzii pot fi de un bit (single bit) sau mai mulţi biţi (multibiţi), în general 16, care formează un cuvânt.
Operanzii de un bit pot fi adevăraţi sau falşi (1 sau 0 logic), pot fi evaluaţi (interogaţi) şi li se poate modifica valoarea. Corespunzător fiecărui operand de un bit există un registru al procesorului (Single Bit Accumulator) în care se încarcă operandul, în timpul evaluării sau modificării acestuia.
Operanzii multibiţi sunt resurse accesate prin 8 biţi (octet) sau cuvânt (16 biţi). Operaţiile cu operanzi multibiţi pot fi: compararea cu valori constante sau alţi operanzi multibiţi, atribuirea de valori constante sau de valori a altor operanzi, incrementarea/decrementarea cu o unitate a valorii sale, manipularea valorii operandului prin operanzi multibiţi aritmetici sau logici. Corespunzător fiecărui operand multibit, în momentul modificării valorii acestuia, se încarcă un registru special al procesorului, numit Multibit Accumulator.
Operatorii sunt simboluri utilizate în programarea STL, care modifică sau folosesc valoarea numerică sau logică a operanzilor. Aceştia pot fi: N (negaţie), V (valoare zecimală), V$
3
(valoare hexazecimală), V% (valoare binară), operaţii +, -, *, /, <, >, =, <>, <=, >= , (...) paranteze pentru stabilirea priorităţii în evaluarea unor expresii complexe.
1.2 Elemente STL Step
Propoziţii - Părţi condiţionale
- Părţi de execuţie
1.2.1 Step
Cu toate că utilizarea cuvântului cheie STEP este optională, multe programe STL utilizează instrucţiunea STEP.
Instrucţiunea STEP marchează începutul unui bloc logic în codul programului.
Fiecare program STL poate conţine până la 255 paşi discreţi.
Fiecare STEP poate să conţină una sau mai multe propoziţii.
Fiecărui STEP i se poate atribui un nume opţional sau o etichetă.
Eticheta unui STEP este necesară numai dacă acelui pas i se atribuie mai târziu destinaţia unei instrucţiuni de salt (jump)
.
1.2.2 Propoziţii
Propoziţia constituie elementul de organizare de bază al programului.
Fiecare propoziţie conţine o parte condiţională şi o parte executivă
.
a. Partea condiţională
Partea condiţională serveşte la declararea uneia sau mai multor condiţii care urmează să fie evaluate, la rularea programului, ca fiind adevărate sau false.
Această parte începe uzual cu cuvântul cheie IF şi continuă cu una sau mai multe linii care descriu condiţiile ce urmează a fi evaluate.
Dacă condiţiile sunt evaluate ca adevărate, atunci se vor executa toate instrucţiunile din partea executivă.
De exemplu:
o IF I0.1
o IF I0.2 AND I0.3
b. Partea executivă
Aceasta este secţiunea din propoziţie unde sunt activate ieşirile, dacă partea condiţională este evaluată ca adevărată.
De exemplu:
o THEN SET Y1
o THEN RESET Y2
o THEN JMP TO START
1.3 Instrucţiunea STEP
4
In forma sa cea mai simplă, un STEP include cel puţin o propoziţie.
STEP (Label) - etichetele pentru STEP pot conţine până la 8 caractere alfanumerice
IF I0.0 - dacă Input 0.0 este activ
THEN SET O0.3 - atunci activează Output 0.3 şi treci la pasul următor
Este important să se înţeleagă că programul VA AŞTEPTA la acest pas până când condiţiile sunt/devin adevărate, moment în care acţiunile din partea executivă se vor executa.
Numai după aceea programul va trece la pasul următor.
1.4 Propoziţie simplă cu un pasSTEP Start
IF I0.0 - Parte condiţionalăTHEN SET O0.0 - Parte executivă
STEP Stop
IF I0.1THEN RESET O0.0
Programul va porni cu primul pas, STEP Start.
Dacă condiţia I0.0 este adevărată, atunci se va executa partea executivă (Set O0.0) şi se va trece la pasul următor, STEP Stop.
Dacă condiţia este falsă, programul va aştepta la pasul Start.
1.5 Propoziţii multiple într-un pas Dacă partea condiţională din prima propoziţie este adevărată, atunci se va
executa partea executivă şi se va trece la a doua propoziţie. Dacă nu este adevărată, se va trece la a doua propoziţie FĂRĂ NICI o execuţie. Nu se va aştepta la prima propoziţie.
STEP Start
IF I0.0 prima propoziţieTHEN SET O0.0
IF I0.1 a doua propoziţieTHEN SET O0.1
IF I0.2 a treia propoziţieTHEN SET O0.2
STEP Stop
IF I0.1THEN RESET O0.0
RESET O0.1
5
RESET O0.2
Dacă partea condiţională din a doua propoziţie este adevărată, atunci se va executa partea executivă şi se va trece la a treia propoziţie. Dacă nu este adevărată, se va trece la a treia propoziţie FĂRĂ NICI o execuţie. Nu se va aştepta la a doua propoziţie.
Dacă partea condiţională din a treia propoziţie este adevărată, atunci se va executa partea executivă şi se va trece la URMĂTORUL PAS. Dacă nu este adevărată, se va trece la a prima propoziţie, la a doua propoziţie şi la a treia propoziţie şi se vor executa bucle de evaluare a condiţiilor din propoziţii, în interiorul pasului curent.
În general, numai când ultima propoziţie din STEP este adevărată, se va trece la pasul următor.
1.6 Execuţia unui pas cu instrucţiunea OTHRW (Otherwise) STEP Start
IF I0.0THEN SET O0.0OTHRW RESET O0.0 - Partea executivă
STEP Stop
IF I0.1THEN RESET O0.0
Programul va executa primul pas, STEP Start.
Dacă condiţia I0.0 este adevărată, atunci se va executa partea executivă (Set O0.0) şi se va trece la pasul următor, STEP Stop. Altfel , (Otherwise) dacă condiţia nu este adevărată, se va executa RESET O0.0 şi se va trece la pasul următor, STEP Stop.
În acest caz, nu se va mai aştepta la pasul STEP Start, ori se va executa SET O0.0 ori RESET O0.0 şi se va trece la pasul următor.
1.7 Utilizarea comenzii ELSE în loc de comanda OTHRW FST 4 oferă posibilitatea de a utiliza comanda “ELSE” în loc de “OTHRW”.
Unii dintre programatori sunt mai familiarizaţi cu comanda “ELSE”, pentru că se utilizează în mod curent în limbajele de programare.
Pentru a utiliza comanda “ELSE”, trebuie să se schimbe preferinţele.
Click pe “Extras”, “Preferences” şi “STL Editor”
Activează “Use ELSE instead of OTHRW”. Click “OK”.
6
2 Comenzi standard utilizate în STL2.1 Introducere
Cuvintele următoare din figura alăturată sunt câteva dintre comenzile cele mai utilizate în STL.
2.2 Lista de cuvinte cheie
2.2.1 Instrucţiuni de transfer în STL
Instrucţiuni Descriere
STEP Instrucţiunea STEP este utilizată pentru a marca începutul unui bloc logic în codul programului.
IF Cuvânt cheie ce marchează începutul părţii condiţionale a propoziţiei.
THEN Cuvânt cheie ce marchează începutul părţii executive a propoziţiei.
SET Instrucţiunea Set este utilizată pentru a schimba operandul de un bit în starea logică “1”.
RESET Instrucţiunea Reset este utilizată pentru a schimba operandul de un bit în starea logică “0”.
JMP TO Step label Programul îşi continuă execuţia la pasul specificat în etichetă (Step label).
NOP Instrucţiune specială care este întotdeauna adevărată în partea condiţională. În partea executivă, ea este echivalentă cu “nu face nimic”.
OTHRW Asigură abilitatea de a continua execuţia programului dacă partea condiţională a propoziţiei este falsă.
2.2.2 Instrucţiuni logice în STL
7
Instrucţiuni Descriere
AND Realizează operaţia logică ŞI la operanzi de un bit sau multibiţi şi constante.
AND N Realizează operaţia logică ŞI NU la operanzi de un bit sau multibiţi şi constante.
OR Realizează operaţia logică SAU la operanzi de un bit sau multibiţi şi constante.
OR N Realizează operaţia logică SAU NU la operanzi de un bit sau multibiţi şi constante.
LOAD Permite încărcarea operanzilor (de un bit sau multibiţi) specificaţi şi a constantelor la un acumulator de un bit sau multibiţi. Este instrucţiunea echivalentă cu “=”.
DEC Decrementează un operand multibiţi/acumulator
INC Incrementează un operand multibiţi/acumulator
N Este o negare. Permite să se inverseze o condiţie de input.
3 Proiectul “Dispozitiv de ridicare” 3.1 Prezentarea problemeiDispozitivul de ridicare din figură are un cilindru pneumatic cu simplă acţiune 1A care ridică/coboară platforma. Când platforma este în poziţia superioară, cilindrul 2A va împinge cutia. Pistonul cilindrului 2A se va retrage, după care platforma va coborâ, datorită retragerii pistonului cilindrului 1A.
8
Lista de alocare este:
Simbol Absolut ComentariiSB I0.0 Buton Start
B1 I0.1 Cilindrul 1A retras
B2 I0.2 Cilindrul 1A extins
B3 I0.3 Cilindrul 2A retras
B4 I0.4 Cilindrul 2A extins
Y1 O0.0 Solenoidul pentru Cilindrul 1A
Y2 O0.1 Solenoidul pentru Cilindrul 2A
3.2 Soluţia problemei şi modul de lucru pentru verificarea soluţiei Crează un nou proiect cu numele “ridicare1” şi apoi un nou program.
Se alege FEC pentru modulul corect IO, la setarea configuraţiei IO.
Se declară variabilele din tabelul de mai sus în “Lista de alocare”.
Pentru scrierea codului de program, se iau în considerare secvenţele descrise mai sus. Programarea va fi secvenţială, fiecare pas va aştepta execuţia pasului anterior pentru a începe.
9
STEP 10
IF SB ‘Buton de start AND B1 ‘Cilindrul 1A retrasAND B3 ‘Cilindrul 2A retras
THEN SET Y1 ‘Solenoid pentru cilindrul 1A
STEP 20
IF B2 ‘Cilindrul 1A extinsTHEN SET Y2 ‘Solenoid pentru cilindrul 2A
STEP 30
IF B4 ‘Cilindrul 2A extinsTHEN RESET Y2 ‘Solenoid pentru cilindrul 2A
STEP 40
IF B3 ‘Cilindrul 2A retrasTHEN RESET Y1 ‘Solenoid pentru Cilindrul 1A
JMP TO 10
După editarea programului, trebuie verificat proiectul.
Click pe icoana “Compile Active Module” şi verifică erorile. Click pe icoana “Make Project”. Se compilează astfel toate modificările făcute în proiect.
Prin click pe “Rebuild Project”, se reconstruieşte întreg proiectul.
Înainte de descărcarea programului, trebuie verificate setările de comunicaţii între FEC şi calculator. Se deschide “Preferences” box din mediu prin click pe [Extra] , [Preferences]
Alege “Communications Port”
Alege portul corect COM şi “Baudrate” la 9600.
După construcţia proiectului şi setarea comunicaţiilor, se poate descărca programul.
Click pe icoana “Download Project” sau apasă [F5].
Se poate apela modul “Online” pentru a vizualiza rularea programului sau a monitoriza operanzii.
FESTO1
4 Utilizarea temporizatoarelor4.1 IntroducereSe pot utiliza temporizatoarele încorporate în FEC. În aplicaţia “Dispozitiv de ridicare”, după ce cilindrul 2A s-a retras, ca măsură de protecţie, cilindrul 1A trebuie să aştepte 5 sec înainte de retragere.
4.2 Utilizarea funcţiei Help Click pe “Help”
Click pe “Help Topics”
Click pe “Index” tab şi scrie “Timers”
10
Conţinutul documentaţiei despre Timers este afişat în dreapta.
În
controlerul FEC se admit operanzii pentru temporizatorul “x”:
o Tx - Timer “x”, operand de un bit care reprezintă starea temporizatorului. Poate avea valoarea 1 sau 0 şi poate să-şi schimbe valoarea prin SET Tx sau RESET Tx.
o TPx - Temporizator presetat pentru Timer “x”, este un operand multibit de un cuvânt (16 biţi) care reprezintă valoarea dată de programator prin: LOAD V200 TO TPx. Se încarcă valoarea de 2 sec la TPx. Valoarea maximă a temporizatorului presetat este de 65535, adică 655 sec.
o TWx - Timer word “x” este un operand multibit de un cuvânt care reprezintă valoarea curentă a temporizatorului x. La activarea temporizatorului (SET Tx) se încarcă valoarea lui TPx în TWx, după care numărul este decrementat la fiecare impuls de ceas al controlerului. Când TWx ajunge la 0, Tx este resetat automat şi temporizatorul este dezactivat.
Formatul uzual al temporizatoarelor este:
Sunt 256 temporizatoare în FEC declarate ca T0 până la T255.
4.3 Inserarea temporizatorului în proiectÎn programul de mai sus al proiectului, se modifică STEP 40 şi apare STEP 50, astfel:
11
STEP 10
IF I0.1 ‘Input 0.1THEN SET O0.2 ‘Lampă
SET T1 ‘Temporizator 1with 5s
STEP 20
IF N T1 ‘Temporizator 1THEN RESET O0.2 ‘Lampă
JMP TO 10
După ce cilindrul 2A s-a retras, temporizatorul va fi activat pentru 5 sec şi după care cilindrul 1A se va retrage.
Reconstruieşte proiectul şi testează funcţionalitatea programului.
5 Utilizarea numărătoarelor5.1 IntroducerePrin introducerea funcţiei de numărare, proiectul prezentat mai sus se va modifica astfel încât după ce se realizează 10 cicluri de funcţionare a dispozitivului, acesta să se oprească.
5.2 Utilizarea funcţiei de numărare Numărătoarele sunt structuri de date formate din 3 operanzi, de exemplu pentru
numărătorul X:
o CX - Numărator X, operand de un bit, care memorează starea număratorului X. Se activează/dezactivează cu SET CX, RESET CX.
o CPX - Numărător presetat pentru număratorul X, este un operand multibiţi de un cuvânt care încarcă valoarea introdusă de către utilizator. Aceasta poate fi o constantă sau un operand cuvânt (IW, OW, FW, ..)
o CWX - Numărător multibiţi de un cuvânt pentru numărătorul X, care memorează valoarea curentă a numărătorului. Modificarea valorii numărătorului cu o unitate se face prin INC CWX.
Sunt disponibile 2 metode de utilizare a numărătoarelor. Prima utilizează comanda SET CX prin care bitul CX este 1 logic şi se încarcă în CWX valoarea 0. Se încarcă o valoare la operandul CPX. La fiecare execuţie a instrucţiunii INC CWX , se măreşte cu o unitate valoarea acestui operand. Când CWX=CPX, atunci CX=0, în mod automat. A doua metodă nu utilizează CPX, ci doar CWX a cărei valoare o iniţializează, o incrementează şi apoi o compară cu o constantă.
Prima metodă:
12
STEP 10IF SB ‘Buton Start
AND B1 ‘Cilindru 1A retrasAND B3 ‘Cilindru 2A retras
THEN SET Y1 ‘Solenoid pentru cilindrul 1A
STEP 20IF B2 ‘Cilindru 1A extinsTHEN SET Y2 ‘Solenoid pentru cilindru 2A
STEP 30IF B4 ‘Cilindru 2A extinsTHEN RESET Y2 ‘Solenoid pentru cilindru 2A
STEP 40IF B3 ‘Cilindru 2A retrasTHEN SET T1 ‘Temporizator 1
with 5s
STEP 50IF N T1 ‘Temporizator 1THEN RESET Y1 ‘Solenoid pentru cilindru 1A
JMP TO 10
A doua metodă:
Se pot declara 256 numărătoare în FEC de la C0 la C255.
5.3 Inserarea numărătorului în proiectTrebuie modificat programul cu temporizator pentru a i se adăuga funcţia de numărare.
Noul proces va fi:
La apăsarea butonului de Start va începe ciclul de funcţionare al dispozitivului.
Ciclul se va opri numai dacă au fost transportate 10 piese.
Se aplică întârzierea la retragerea pistonului cilindrului 1A.
13
STEP 10IF NOPTHEN LOAD V10
TO CP0SET C0 ‘Numărător 0RESET Y1 ‘Solenoid 1
STEP 20IF B1 ‘Senzor 1THEN INC CW0 ‘Numărător 0
STEP 30IF N B1 ‘Senzor 1THEN NOP
STEP 40IF N C0 ‘Numărător 0THEN JMP TO 50OTHRW JMP TO 20
STEP 50
THEN SET Y1 ‘Solenoid 1JMP TO 10
STEP 10IF NOPTHEN LOAD V0
TO CW0RESET Y1 ‘Solenoid 1
STEP 20IF B1 ‘Senzor 1THEN INC CW0 ‘Numărător 0
STEP 30IF CW0 ‘Numărător 0
= V10THEN JMP TO 40OTHRW JMP TO 20
STEP 40THEN SET Y1 ‘Solenoid 1
JMP TO 10
Lista de alocare va include:
C0 - Numărător 0 CP0 - Numărător presetat 0 CW0 - Cuvânt de numărător 0Prima metodă
A doua metodă:
14
STEP 10IF SB ‘Buton de start
AND B1 ‘Cilindru 1A retrasAND B3 ‘Cilindru 2A retras
THEN SET Y1 ‘Solenoid pentru cilindrul 1ALOAD V10TO CPO ‘Numărător cuvântSET C0 ‘Numărător 0
STEP 20IF B2 ‘Cilindru 1A extinsTHEN SET Y2 ‘Solenoid pentru cilindrul 2A
STEP 30IF B4 ‘Cilindrul 2A extinsTHEN RESET Y2 ‘Solenoid pentru cilindrul 2A
STEP 40IF B3 ‘Cilindrul 2A retrasTHEN SET T1 ‘Temporizator 1
with 5s
STEP 10IF SB ‘Buton start
AND B1 ‘Cilindrul 1A retrasAND B3 ‘Cilindrul 2A retras
THEN SET Y1 ‘Solenoid pentru cilindrul 1ALOAD V0TO CWO ‘Cuvânt de numărător 0
STEP 20IF B2 ‘Cilindrul 1A extinsTHEN SET Y2 ‘Solenoid pentru cilindrul 2A
STEP 30IF B4 ‘Cilindrul 2A extinsTHEN RESET Y2 ‘Solenoid pentru cilindrul 2A
STEP 40IF B3 ‘Cilindrul 2A retrasTHEN SET T1 ‘Temporizator 1
with 5s
STEP 50IF N T1 ‘Temporizator 1THEN RESET Y1 ‘Solenoid pentru cilindrul 1A
INC CW0 ‘Cuvânt de numărător
STEP 60IF CWO ‘Cuvânt de numărător 0
= V10THEN JMP TO 10OTHRW NOP
STEP 70IF B1 ‘Cilindrul 1A retras
AND B3 ‘Cilindrul 2A retrasTHEN SET Y1 ‘Solenoid pentru cilindrul 1A
JMP TO 20
continuareSTEP 50IF N T1 ‘Temporizator 1THEN RESET Y1 ‘Solenoid pentru cilindrul 1A
INC CW0 ‘Numărător 0
STEP 60IF N CO ‘Numărător 0THEN JMP TO 10OTHRW NOP
STEP 70
Modifică proiectul şi verifică funcţionalitatea acestuia succesiv pentru cele două variante de contorizare.
FESTO2
6 Multitasking6.1 IntroducereMultitasking este termenul utilizat pentru execuţia SIMULTANĂ a unui număr de sarcini diferite în PLC.
Această funcţie organizează secţiunile de program prin utilizarea tehnicilor de programare modulare. Programul din PLC poate să conţină mai multe părţi, fiecare parte fiind un program propriu-zis, cu funcţii diferite.
Avantajele multitasking-ului sunt: o structură arborescentă de programe mai clară şi timpi de ciclu mai scurţi.
Prin această metodă este mai uşor să programezi diferite moduri de operare ale echipamentului şi să le apelezi oricând să ruleze în paralel cu programul principal.
6.2 Termeni asociaţi cu MultitaskingÎn Multitasking, se pot utiliza mai multe programe în proiect. Acestea pot rula în paralel cu programul principal, când sunt apelate şi sunt numerotate cu P1, P2, etc.
Pe lângă programe, se pot utiliza şi module. Acestea sunt în general subrutine. Există două tipuri diferite de module:
CFM - Apelare modul funcţie
CMP - Apelare modul program
15
P1
P2
P63
CMP 0
CMP 49
CMP 99
CFM 0
CFM 49
CFM 99
P0Program principal care este
activat oricând PLC-ul
este alimentat
6.2.1 CFM – Apelare modul funcţieInstrucţiunea Call Function Module (CFM) este utilizată pentru a cere execuţia unei rutine de program externe. Modulele funcţie pot fi considerate ca apelări de funcţii speciale.
Când se apelează CFM, funcţia respectivă va fi activată şi va rula în paralel cu programul principal.
Aceste CFM sunt disponibile în programul FST, trebuie căutat în “Help” pentru a găsi modul de editare a CFM.
Pentru inserarea unui modul:
Click dreapta pe CFM în “Project Tree”;
Click “Import”;
Se deschide o cutie de dialog cu modulele predefinite;
Alege modulul dorit; Click “OK";
16
Program Modul de program Modul funcţie(Multitasking) (subrutină) (predefinite de Festo)
Modulul ales va fi în proiect.6.2.2 CMP – Apelare modul programInstrucţiunea Call Module Program (CMP) este utilizată pentru a cere execuţia unei rutine de program exterioare. Modulele de program sunt considerate similare cu subrutinele.
Când se apelează CMP, programul principal se opreşte şi va sta la un pas (STEP) şi subprogramul va fi activat. Numai când subprogramul este executat complet, se va sări înapoi la programul principal în punctul unde l-a părăsit.
6.2.3 Apelarea modulelor
Pentru a apela modulele, se adaugă “THEN CFM x” sau “THEN CMP x” unde “x” este numărul modulului.
De exemplu, crează un program de pâlpâire “Blinking”. Acesta poate fi fie CFM sau CMP.
Se poate apoi utiliza FW10 (cuvânt de flag-uri 10) în program.
sau
6.2.4 Apelarea programelorProgramul principal trebuie să fie “Program 0”, toate celelalte subprograme vor avea numele “Program 1, Program 2, etc”.
In programul principal se pot apela mai multe module de program, prin setarea numelui programului, de exemplu SET P1, SET P2, etc. şi când vrei să opreşti programul, se resetează acesta RESET P1, RESET P2, etc.
Când se apelează un subprogram, acesta rulează în paralel cu programul principal.
17
STEP BlinkTHEN CFM 0 ‘Modul Blink
LOAD FU32TO FW10JMP TO Blink
STEP InitialTHEN SET P2 ‘Program de pâlpâire
STEP StartIF FBlink1 ‘0.25s pâlpâiri THEN SET Lamp ‘LampăOTHRW RESET Lamp ‘Lampă
IF Start ‘Buton Start THEN SET P1 ‘Program Secvenţial
SET Lamp ‘Lampă………
STEP Initial
THEN SET P2 ‘Program de pâlpâire
STEP Start
THEN LOAD FBlink1 ‘0.25s pâlpâiri TO Lamp ‘Lampă
IF Start ‘Buton Start THEN SET P1 ‘Program Secvenţial
SET Lamp ‘Lampă………
6.3 Utilizarea Flag-urilorPână aici, în programe s-au utilizat numai intrările şi ieşirile din FEC. Flag-urile sunt aşa numitele memorii sau marcaje sau relee interne, etc.
Flag-urile sunt esenţiale când lucrăm cu multitask-ing şi se doreşte legarea mai multor programe diferite. Operandul absolut pentru flag este atribuit diferitelor echipamente pe care le utilizăm.
De exemplu:
F0.0 … F0.15 până la F999.0 … F999.15
Ar trebui utilizaţi operanzi simbolici care să fie corelaţi cu sarcinile de comandă. De exemplu: “Start_Flag”, “Stop_Flag”, etc.
6.4 Utilizarea modulului de pâlpâire (Blink)În multe programe trebuie să aprindem şi să stingem leduri (lămpi). Pentru asta utilizăm “Blink Module”. Acest modul este utilizat pentru ieşiri cu iluminare intermitentă. De exemplu, dacă trebuie ca lampa butonului de start să ilumineze intermitent înainte de pornirea programului, putem folosi acest modul.
Pentru a avea funcţia de iluminare intermitentă, importăm “Blink Module” în CFM.
Click dreapta pe “CFM”
Click pe “Import”
Se deschide o fereastră de dialog.
Alege “Blink”
Modulul Blink Module va fi inserat în CFM.
Cu acest modul importat, trebuie scris un program pentru alocarea ledurilor cu iluminare intermitentă la flag-uri.
Click drepta pe “Programs”
Click pe “Insert Program”
Scrie numele programului
Alege numele corect al programului
Alege versiunea corectă
Adaugă comentarii.
18
Scrie un program scurt.
Compilează şi salvează programul.
Acest program va încărca modurile de iluminare intermitentă în cuvântul de flag 10.
Trebuie să declari aceste moduri de iluminare în “Lista de alocare”
Absolut Simbol ComentariiF10.1 FBlink1 0.25s Blink
F10.2 FBlink2 0.5s Blink
F10.3 FBlink3 1s Blink
F10.4 FBlink4 2s Blink
FW10 Cuvânt de flag sau moduri de iluminare
19
STEP BlinkTHEN CFM 0 ‘Modul Blink
LOAD FU32TO FW10 ‘Cuvânt de flag pentru moduri de iluminare
Intermitentă (pâlpâire)JMP TO Blink
STEP InitialTHEN SET P2 ‘program pâlpâire
STEP StartIF FBlink2 ‘pâlpâire 0.5sTHEN SET oStart ‘Lampa StartOTHRW RESET oStart ‘Lampa Start
IF iStart ‘Buton Start AND B1 ‘Ridicare cilindru
THEN SET P1 ‘Program Secvenţial SET oStart ‘Lampa Start
……..
Se pot utiliza aceste flag-uri în program.
De exemplu, dacă butonul de start trebuie să pâlpâie la intervale de 0,5 sec, se poate adăuga acest pas în program.
În pasul Start, lampa de start va pâlpâi când programul porneşte.
Când butonul de start este apăsat, lampa nu va mai pâlpâi şi va rămăne aprinsă.
6.5 Cerinţe pentru operaţii de comandă iniţiale În programele propuse anterior, sarcina (operarea dispozitivului) a fost executată pentru un ciclu, de fiecare dată ce se apăsa pe butonul de start. La majoritatea maşinilor, funcţionarea acestora necesită existenţa unor butoane pentru realizarea unui ciclu, pentru ciclu automat, pentru resetarea programului şi pentru oprire de urgenţă.
Acestea pretind utilizarea multitasking.
Operaţiile de comandă iniţiale ar trebui să permită operatorului să aleagă între funcţionarea ciclu cu ciclu sau în cicluri continue.
Programul care corespunde acestor cerinţe va conţine:
Program principal de organizare
Program secvenţial
6.5.1 Lista de alocare
Absolut Simbol ComentariiI0.0 iStart Buton Start
I0.1 B1 Cilindrul 1A retras
I0.2 B2 Cilindrul 1A extins
I0.3 B3 Cilindrul 2A retras
I0.4 B4 Cilindrul 2A extins
I0.5 AutoMan Comutator Auto/Manual
I0.6 iStop Buton Stop
O0.0 Y1 Solenoid pentru cilindrul 1A
O0.1 Y2 Solenoid pentru cilindrul 2A
F11.0 FCStop Stop ciclu
P1 Program secvenţial
6.6 Structura proiectului şi a programelor6.6.1 Arborele proiectuluiArborele proiectului este acel meniu în care se inserează programele şi subprogramele. În acest proiect există două programe.
Pentru că proiectul are cerinţe diferite, este necesar să se realizeze programe multitask. Acestea sunt:
20
Programul de organizare principal
Programul secvenţial
Programul de organizare principal este acel program care coordonează proiectul. În acest program toate celelalte programe şi module sunt activate sau dezactivate. Programul secvenţial este programul care rulează continuu
şi determină funcţionarea continuă a dispozitivului până butonul de stop este apăsat.
6.6.2 Programul principal de organizare
6.6.3 Programul secvenţialAcesta este un program pentru funcţionarea secvenţială a dispozitivului de ridicare. Pentru funcţionare în ciclu continuu, programul secvenţial va rula continuu şi se va opri numai când se apasă butonul de stop. Pentru funcţionare într-un singur ciclu, se va rula programul secvenţial numai o dată. Aceste moduri de rulare ale programului secvenţial sunt comandate de programul principal de organizare.
21
STEP Start
IF iStart ‘Buton start AND B1 ‘Cilindrul 1A retrasAND B3 ‘Cilindrul 2A retras
THEN SET P1 ‘Program secvenţial
STEP Stop
IF iStop ‘ButonStopTHEN SET FCStop ‘Ciclu Stop
IF N P1 ‘Program secvenţialTHEN RESET FCStop ‘Ciclu Stop
JMP TO Start
STEP Aplus
IF B1 ‘Cilindru 1A retrasTHEN SET Y1 ‘Solenoid pentru cilindrul 1A
STEP BPlus
IF B2 ‘Cilindru 1A extinsTHEN SET Y2 ‘Solenoid pentru cilindrul 2A
STEP BMinus
IF B4 ‘Cilindru 2A extinsTHEN RESET Y2 ‘Solenoid pentru cilindrul 2A
STEP AMinus
IF B3 ‘Cilindru 2A retrasTHEN RESET Y1 ‘Solenoid pentru cilindrul 1A
STEP Check
IF FCStop ‘Stop cicluTHEN JMP TO End
IF AutoMan ‘Comutator Automatic/Manual THEN JMP TO AplusOTHRW NOP
STEP End
THEN NOP
6.7 Cerinţe de operaţii suplimentare de comandă
Se va extinde programul principal, care a fost scris pentru cerinţe de comandă iniţiale, cu noi cerinţe de comandă pentru operatorul dispozitivului.
Noile operaţii de comandă permit operatorului, pe lângă alegerea între funcţionarea într-un ciclu sau în ciclu automat, şi activarea unui Stop de urgenţă (Emergency Stop) şi a unui buton de Reset.
Se vor include şi câţiva indicatori vizuali pentru butoanele de “Start”, “Stop” şi “Reset” şi, de asemenea, pâlpâirea lămpilor.
În concluzie, organizarea programului principal va include următoarele:
Selectarea modului Automat sau Manual prin comutator.
Modul Automat înseamnă funcţionarea în ciclu continuu.
Modul Manual înseamnă funcţionarea cu un singur ciclu.
Odată pornit programul secvenţial, lampa de Start trebuie stinsă.
Când programul secvenţial rulează, lampa de Stop trebuie să pâlpâie.
Când se apasă butonul de Stop de urgenţă, programul secvenţial trebuie să se oprească indiferent dacă este selectat modul manual sau automat.
Cilindrii se vor retrage şi lampa de reset va pâlpâi.
Dacă se apasă butonul de reset, lampa de reset se va stinge.
Proiectul va conţine următoarele programe:
Program principal de organizare
22
Program secvenţial
Program de pâlpâire
6.7.1 Lista de alocare
Absolut Simbol ComentariiI0.0 iStart Buton Start
I0.1 B1 Cilindrul 1A retras
I0.2 B2 Cilindrul 1A extins
I0.3 B3 Cilindrul 2A retras
I0.4 B4 Cilindrul 2A extins
I0.5 AutoMan Comutator Auto/Manual
I0.6 iStop Buton Stop
I0.7 iReset Buton Reset
I1.0 iEStop Buton Emergency Stop
O0.0 Y1 Solenoid pentru cilindrul 1A
O0.1 Y2 Solenoid pentru cilindrul 2A
O0.2 oStart Lampa Start
O0.3 oStop Lampa Stop
O0.4 oReset Lampa Reset
F10.0 FBlink1 Pâlpâire 0.25s
F10.1 FBlink2 Pâlpâire 0.5s
F10.2 FBlink3 Pâlpâire 1s
F10.3 FBlink4 Pâlpâire 2s
F11.0 FCStop Stop Ciclu
FU32
P1 Program Secvenţial
P2 Program de pâlpâire
6.8 Structura proiectului şi programelor6.8.1 Arborele proiectuluiSe vor insera programele şi subprogramele în arborele proiectului. Vom avea 3 programe şi un modul de program.
În programul principal de organizare, prin care se va comanda proiectul, se vor activa/dezactiva alte programe şi module de program.
23
6.8.2 Programul principal de organizareSTEP InitialTHEN SET P2 ‘Program de pâlpâire
STEP StartIF iEStop ‘Buton de Emergency Stop THEN JMP TO Emergency
IF FBlink1 ‘Pâlpâire 0.25s THEN SET oStart ‘Lampa Start OTHRW RESET oStart ‘Lampa Start
IF iStart ‘Buton Start AND B1 ‘Cilindrul 1A retrasAND B3 ‘Cilindrul 2A retras
THEN SET P1 ‘Program SecvenţialRESET oStart ‘Lampa Start
STEP Stop
F iEStop ‘Buton Emergency Stop THEN JMP TO Emergency
IF FBlink2 ‘Pâlpâire 0.5s THEN SET oStop ‘Lampa Stop OTHRW RESET oStop ‘Lampa Stop
IF iStop ‘Buton Stop THEN SET FCStop ‘Stop Ciclu
IF N P1 ‘Program Secvenţial THEN RESET FCStop ‘Stop Ciclu
RESET oStop ‘Lampa Stop JMP TO Start
STEP Emergency
IF NOPTHEN RESET Y1 ‘Solenoid pentru cilindru 1A
RESET Y2 ‘Solenoid pentru cilindru 2ARESET P1 ‘Program Secvenţial RESET oStart ‘Lampa Start RESET oStop ‘Lampa Stop
IF N iEStop ‘Buton Emergency Stop THEN NOP
24
STEP Reset
IF iEStop ‘Buton Emergency Stop THEN JMP TO Emergency
IF FBlink3 ‘Pâlpâire 1s THEN SET oReset ‘Lampa Reset OTHRW RESET oReset ‘Lampa Reset
IF iReset ‘Buton Reset THEN RESET oReset ‘Lampa Reset
JMP TO Start
6.8.3 Programul secvenţialAcesta este programul pentru operarea secvenţială a dispozitivului de ridicare. Pentru ciclu continuu, dispozitivul se va opri numai când se apasă butonul de Stop. Pentru un singur ciclu, se va executa secvenţa numai o dată. Programul secvenţial este comandat de programul principal de organizare.
25
STEP Check
IF FCStop ‘Stop Ciclu THEN JMP TO End
IF AutoMan ‘Comutator Automat/Manual THEN JMP TO AplusOTHRW NOP
STEP End
THEN NOP
STEP Aplus
IF B1 ‘Cilindru 1A retrasTHEN SET Y1 ‘Solenoid pentru cilindrul 1A
STEP BPlus
IF B2 ‘Cilindru 1A extinsTHEN SET Y2 ‘Solenoid pentru cilindru 2A
STEP BMinus
IF B4 ‘Cilindru 2A extinsTHEN RESET Y2 ‘Solenoid pentru cilindru 2A
STEP AMinus
IF B3 ‘Cilindru 2A retrasTHEN RESET Y1 ‘Solenoid pentru cilindru 1A
6.8.4 Program de pâlpâireAcest program apelează modulul de pâlpâire.
FESTO3
26
STEP Blink
THEN CFM 0 ‘Modul de pâlpâireLOAD FU32TO FW10JMP TOBlink