Sunteți pe pagina 1din 10

PROGRAMAREA CONTROLERULUI SPC200 PENTRU COMANDA UNUI SISTEM PNEUMATIC DE POZIIONARE FESTO

Scopul lucrrii Scopul acestei lucrri este nelegerea modului de funcionare a sistemului pneumatic de poziionare Festo i nsuirea unor noiuni de programare a controlerului SPC200 pentru comanda celor dou axe de translaie i a efectorului final din componena sistemului pneumatic. 1. Generaliti Standul pneumatic Festo (figura 1) conine un calculator de proces (1) dou axe pneumatice de translaie, una orizontal (axa X 3)) i una vertical (axa Y 2), un gripper pneumatic (5) conectat n partea inferioar a axei Y, un controler tip SPC200 (4) alimentat de la o sursa de curent continuu (7) i un sistem de oprire de urgen (6).

Figura 1. Standul pneumatic Festo

Programarea controlerului SPC200 se realizeaz cu ajutorul aplicaiei WinPISA 4.41. Aplicaia permite crearea unor proiecte/programe noi, editarea unor programe existente, editarea listei cu poziii predefinite (position list), compilarea proiectelor/programelor, ncrcarea i descrcarea programelor n/din memoria controlerului. Programele pentru controlerul SPC200 se realizeaz n cod G, limbaj de programare folosit n programarea mainilor unelte cu comand numeric. 2. Crearea unui proiect nou Un proiect nou se creeaz apelnd funcia New Project din meniul File. Datele necesare pentru noul proiect sunt numele fiierului (.prj), titlul proiectului i descrierea proiectului (opional). Fereastra proiect (figura 2) asigur o uoar gestionare a programelor pentru controler. Programele i lista cu poziii predefinite (figura 3) se gsesc n directorul Software. Controlerul permite utilizarea a 100 de programe (numerotate de la 0 la 99). Lista cu poziii 2

predefinite este unic pentru fiecare proiect i este creat automat mpreun cu proiectul. Astfel, lista poate fi modificat dar nu poate fi recreat sau tears.

Figura 2. Fereastra Proiect

Figura 3. Lista cu poziii predefinite

Paii pentru crearea unui program nou sunt urmtorii: Se selecteaz directorul Software; Din meniul Edit se apeleaz funcia Insert object; Se completeaz cmpurile Title i Description din fereastra nou deschis; Se apeleaz butonul Ok pentru confirmare. Structura unui program este prezentat n figura 4.
1 - Numr de nregistrare 2 - Comand (cod G) 3 - Parametri comand 4 - Comentarii

Figura 4. Structura unui program

Pentru editarea unui program nou sunt necesare caracteristicile hardware ale axelor i controlerului. Caracteristicile hardware se obin astfel: - Se pornete sursa de alimentare a controlerului (figura 1, (7)); - Din meniul Online se apeleaz funcia Online mode; - Din meniul Online->Upload se apeleaz funcia Hardware. Caracteristicile axelor de translaie ale standului sunt prezentate n figura 5.

Figura 5. Caracteristicile axelor de translaie

Un program pentru controlerul SPC200 este valid doar dac fiecare linie are un numr de nregistrare. Atribuirea numrului de nregistrare se poate face manual sau automat. Controlerul permite ncrcarea a maxim 100 de programe avnd n total maxim 2000 de linii de cod. Un program poate conine maxim 1000 de linii de cod. Numerotarea liniilor de cod se face ncepnd de la 0 (N000) pn la 999 (N999), fiecare linie avnd un numr de nregistrare unic. Pentru numerotare automat a liniilor se va apela funcia Start numbering din meniul Edit. 3. Comenzi pentru controlerul SPC200 G00 Sintax: G00 [G90 | G91] [X | Y]<poziie> unde <poziie>: [40-390] pentru axa X i [40-190] pentru axa Y sau <poziie>: X@n Y@n (unde n simbolul poziiei din lista de poziii) Descriere: - poziioneaz efectorul final n coordonatele definite de <poziie>, cu vitez maxim, absolut sau relativ la poziia curent (G90 sau G91) Exemplu: poziioneaz gripperul la 100mm n sens pozitiv pe N000 G00 G91 X100
axa X cu vitez maxim

Not: n cazul n care nu se folosete una din opiunile G90 sau G91 poziionarea va fi absolut. G01 Sintax: G01 [G90 | G91] [X | Y]<poziie> F<X|Y><viteza> unde <poziie>: [40-390] pentru axa X i [40-190] pentru axa Y sau <poziie>: X@n Y@n (unde n simbolul poziiei din lista de poziii) <vitez>: reprezint procent din viteza maxim [0..99] unde (0=100%,, 99 = 99%) Descriere: - poziioneaz efectorul final n coordonatele definite de <poziie>, cu viteza definit de <vitez>, absolut sau relativ la poziia curent (G90 sau G91) Exemplu: poziioneaz gripperul pe axa X la 100mm cu N000 G01 X100 FX20 Y150 FY30
viteza 20% din viteza maxim, pe axa Y la 150mm cu viteza 30% din viteza maxim

Not: n cazul n care nu se folosete una din opiunile G90 sau G91 poziionarea va fi absolut. G04 Sintax: G04 <timp> unde <timp>: timp de staionare (timp*10ms) Descriere: - oprete funcionarea sistemului timp de <timp>*10ms. Exemplu: Oprete sistemul timp de 2.5 secunde. N000 G04 250

G08 Sintax: G08 [X | Y]<acceleraie> unde <acceleraie>: reprezint procent din acceleraia maxim [0..99] unde (0=100%,, 99 = 99%) Descriere: - seteaz acceleraia axei X i/sau Y pentru apropierea de un punct de coordonate. Exemplu: Axa X este accelerat cu 50% din acceleraia N000 G08 X50 maxim n apropierea punctului X 80mm. N001 G01 X80 FX50 Acceleraia este setat la 100% dup poziionarea N002 G08 X0 n punctul X 80mm.

G09 Sintax: G09 [X | Y]<acceleraie> unde <acceleraie>: reprezint procent din acceleraia maxim [0..99] unde (0=100%,, 99 = 99%) Descriere: - seteaz acceleraia de frnare a axei X i/sau Y. Exemplu: Acceleraia de frnare este 50% din acceleraia N000 G09 X50 nainte de atingerea punctului X 80mm. maxim N001 G01 X80 FX50 G90 Sintax: G90 [X | Y]<poziie> unde <poziie>: [40-390] pentru axa X i [40-190] pentru axa Y sau <poziie>: X@n Y@n (unde n simbolul poziiei din lista de poziii) Descriere: - poziioneaz efectorul final n coordonatele absolute (relative fa de sistemul de referin 0) definite de <poziie. Exemplu: poziioneaz gripperul pe axa X la 200mm fa de N000 G00 G90 X200
0, cu vitez maxim

G91 Sintax: G91 [X | Y]<poziie> unde <poziie>: [40-390] pentru axa X i [40-190] pentru axa Y sau <poziie>: X@n i/sau Y@n (unde n simbolul poziiei din lista de poziii Descriere: - poziioneaz efectorul final n coordonatele relative fa de poziia curent definite de <poziie>, n sens pozitiv sau negativ. Exemplu: poziioneaz gripperul pe axa X la X+200mm fa N000 G00 G91 X200 de punctul curent, cu vitez maxim; poziioneaz N001 G00 G91 X-100
gripperul pe axa X la X-100mm fa de punctul X+200, cu vitez maxim

M00 Sintax: M00 Descriere: Oprete execuia unui program. Exemplu: N000 G01 X100 FX50 N001 M00 M02 Sintax: M02 Descriere: Oprete execuia unui sub-program. Exemplu: N000 G01 X100 FX50 N001 M02 M30 Sintax: M30 Descriere: Repet un program. Exemplu: N000 G01 X100 FX50 N001 M30

poziioneaz gripperul pe axa X la 100mm fa de 0, cu 50% din viteza maxim; oprete execuia programului

poziioneaz gripperul pe axa X la 100mm fa de 0, cu 50% din viteza maxim; oprete execuia sub-programului

poziioneaz gripperul pe axa X la 100mm fa de 0, cu 50% din viteza maxim; repet execuia programului

L Sintax: L<n> unde <n>: numrul programului din memoria controlerului; Descriere: Lanseaz n execuie un sub-program. Exemplu: poziioneaz gripperul pe axa X la 100mm fa de N000 G01 X100 FX50 0, cu 50% din viteza maxim; lanseaz n execuie N001 L1
sub-programul 1.

#SQ Sintax: #SQ<n.n> unde <n.n>: port de ieire (de la 0.0 la 13.15); Descriere: Seteaz bitul unui port de ieire. Exemplu: Seteaz bitul portului 0.0 (semnal 1 logic). N000 #SQ0.0

#RQ Sintax: #RQ<n.n> unde <n.n>: numrul portului (de la 0.0 la 13.15); Descriere: Reseteaz bitul unui port de ieire. Exemplu: Reseteaz bitul portului 0.0 (semnal 0 logic). N000 #RQ0.0 E05 Sintax: E <numr de nregistrare> Descriere: Execut un salt necondiionat la linia <numr de nregistrare> din program. Exemplu: Poziioneaz axa X la 10mm n sens pozitiv fa de N010 G00 G91 X10 punctul curent; N012 E05 030 Execut un salt necondiionat la linia 030; Poziioneaz axa X la 100m fa de 0. N030 G00 G90 X100 #T Sintax: #T<I | Q><n.n> <numr de nregistrare> unde I : port de intrare; Q: port de ieire; <n.n>: numrul portului (de la 0.0 la 13.15); Descriere: Testeaz valoarea unui port (intrare sau ieire). Dac valoarea este 1 logic trece la linia <numr de nregistrare>. Dac valoarea este 0 logic, execut linia urmtoare. Exemplu: Testeaz bitul portului de intrare 0.0 pentru N010 #TI0.0 12 valoarea 1 logic. Trece la linia 012 dac bitul N011 E05 10 este 1. Re-execut linia 010 dac bitul este 0 N012 G01 Y100 FY50 logic. #TN Sintax: #TN<I | Q><n.n> <numr de nregistrare> unde I : port de intrare; Q: port de ieire; <n.n>: numrul portului (de la 0.0 la 13.15); Descriere: Testeaz valoarea unui port (intrare sau ieire). Dac valoarea este 0 logic trece la linia <numr de nregistrare>. Dac valoarea este 1 logic, execut linia urmtoare. Exemplu: Testeaz bitul portului de intrare 0.0 pentru N010 #TNI0.0 12 valoarea 0 logic. Trece la linia 012 dac bitul N011 E05 10 este 0. Re-execut linia 010 dac bitul este 1 N012 G01 Y100 FY50 logic.

#LR Sintax: #LR<Registru> = <valoare> unde <Registru>: numrul registrului (ntre 0 i 99); <valoare>: valoare ntreag ntre -32768 i 32767 Descriere: Salveaz o valoare ntreag <valoare> n registrul <Registru> . Exemplu: Salveaz valoarea 0 n registrul 0. N010 #LR0=0 #AR Sintax: #AR<Registru> = <valoare> unde <Registru>: numrul registrului (ntre 0 i 99); <valoare>: valoare ntreag ntre -32768 i 32767 Descriere: Incrementeaz valoarea salvat n registrul <Registru> cu valoarea ntreag <valoare>. Exemplu: Salveaz valoarea 0 n registrul 0. Incrementeaz N010 #LR0=0 cu 1 valoarea registrului 0. N011 #AR0=1 #TR Sintax: #TR<Registru> = <valoare> <numr de nregistrare> unde <Registru>: numrul registrului (ntre 0 i 99); <valoare>: valoare ntreag ntre -32768 i 32767 Descriere: Testeaz valoarea salvat n registrul <Registru>. Dac valoarea este egal <valoare>, execut un salt la linia <numr de nregistrare>. Dac nu, execut linia urmtoare. Exemplu: Salveaz valoarea 0 n registrul 0; Execut subN009 #LR0=0 programul 1. Incrementeaz cu 1 valoarea N010 L1 registrului 0. Dac valoarea registrului este 4, N011 #AR0=1 execut linia 014. Dac nu, execut un salt N012 #TR0=4 14 necondiionat la linia 010. N013 E010 N014 G01 X100 FX20

4. Compilarea i execuia programelor Programele din cadrul unui proiect se compileaz cu ajutorul funciei Project din meniul Compile. Dup compilare, aplicaia WinPISA va afia ntr-o fereastr rezultatul compilrii. n cazul n care exist erori de compilare, acestea vor fi afiate indicndu-se liniile din program n care apar erorile. Paii pentru salvarea unui proiect n memoria controlerului sunt urmtorii: - Se salveaz toate programele din cadrul proiectului; - Se pornete sursa de alimentare a controlerului (figura 1, (7)); - Se activeaz modul Online cu ajutorul funciei Online mode din meniul Online; - Se apeleaz funcia Project din meniul Online->Download.

Pentru lansarea n execuie a unui program se apeleaz funcia Control axes din meniul Online (n mod online). WinPISA va deschide o fereastr cu programele existente n memoria controlerului. Se va selecta programul dorit pentru lansare n execuie. IMPORTANT !!! nainte de lansarea n execuie a oricrui program, se va pune n funciune standul, astfel: - Se va porni compresorul i se va atepta pn ce manometrul acestuia indic presiunea de 6 [bar]. - Se va deschide foarte ncet robinetul de siguran (de culoare roie) de pe filtrul de la alimentarea cu presiune a standului, prin rotire n sens orar pn ce butonul robinetului se afl n poziie orizontal (deschis). La deschiderea robinetului, axa Y se va deplasa automat n poziia maxim. - Se va lansa n execuie programul dorit. - n cazul constatrii unei funcionri necorespunztoare a standului, se va aciona butonul pentru oprire de siguran (figura 1 (6)).

5. Exerciii propuse 1) S se realizeze un proiect care s conin programul din figura 6.

Figura 6. Program demonstrativ

- S se identifice rolul fiecrei linii din program. - S se identifice secvenele de cod utilizate pentru deschiderea i nchiderea gripperului. 2) S se realizeze un program care poziioneaz gripperul sistemului de poziionare n urmtoarele puncte: Poziie pe axa X Poziie pe axa Y Viteza axei X Viteza axei Y [mm] [mm] [m/s] [m/s] 120 80 0.30 0.50 1 120 130 0.30 2.00 2 330 130 1.00 2.00 3 330 60 1.00 1.00 4 3) S se realizeze un program pentru o aplicaie de paletizare tiind c: piesele prelucrate sunt de dou tipuri iar prelucrarea lor se face alternativ la fiecare 20 de secunde. magazia cu piese are coordonatele (x,y) = (360,50);

paleii pentru cele dou tipuri de piese au coordonatele (x,y)=(70,60) respectiv (x,y) = (100,60); n zona de deplasare exist un obstacol dreptunghiular de lungime 150mm (de la X=150mm pn la X=300mm) i nlime 50mm (de la Y=80mm pn la Y=130mm); viteza de deplasare nu poate fi mai mare de 1 m/s (pentru ambele axe); acceleraia la oprire n punctele de deschidere i nchidere a gripperului nu poate depi 0.5 m/s2 pe axa Y; numrul de piese prelucrate este de 6 (cte 3 din fiecare tip); proiectul trebuie s conin un program principal care numr piesele prelucrate i dou sub-programe apelate din programul principal (cte unul pentru fiecare palet); punctele prin care va trece efectorul final (inclusiv punctele de ncrcare/descrcare a pieselor) trebuie definite i preluate din lista de poziii (figura 3).

10