- 3 lucrari

32
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 STL 2 Comenzi standard utilizate în STL 2.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 temporizatoarelor 4 Utilizarea temporizatoarelor 4.1 Introducere 4.2 Utilizarea funcţiei Help 4.3 Inserarea temporizatorului în proiect Utilizarea numărătoarelor 5 Utilizarea numărătoarelor 5.1 Introducere 5.2 Utilizarea funcţiei de numărare 1

Upload: rocsy-rocsana

Post on 08-Jul-2016

226 views

Category:

Documents


0 download

DESCRIPTION

Festo

TRANSCRIPT

Page 1: - 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

Page 2: - 3 Lucrari

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

Page 3: - 3 Lucrari

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

Page 4: - 3 Lucrari

(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

Page 5: - 3 Lucrari

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

Page 6: - 3 Lucrari

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

Page 7: - 3 Lucrari

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

Page 8: - 3 Lucrari

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

Page 9: - 3 Lucrari

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

Page 10: - 3 Lucrari

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

Page 11: - 3 Lucrari

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

Page 12: - 3 Lucrari

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

Page 13: - 3 Lucrari

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

Page 14: - 3 Lucrari

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

Page 15: - 3 Lucrari

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

Page 16: - 3 Lucrari

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)

Page 17: - 3 Lucrari

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ă………

Page 18: - 3 Lucrari

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

Page 19: - 3 Lucrari

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

……..

Page 20: - 3 Lucrari

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

Page 21: - 3 Lucrari

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

Page 22: - 3 Lucrari

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

Page 23: - 3 Lucrari

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

Page 24: - 3 Lucrari

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

Page 25: - 3 Lucrari

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

Page 26: - 3 Lucrari

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