Documente Academic
Documente Profesional
Documente Cultură
Cuprins
I. CONCEPTUL DE LIMBAJ. 3
A. Noţiuni introductive 3
D. Concluzii 18
A. Introducere 20
B. Structuri de date 56
1
Limbaje de Programare a Robotilor Industriali
4. Operaţii geometrice 67
5. Funcţii standard 68
6. Expresii complexe cu anumite priorităţi: 69
V. INSTRUCŢIUNI 71
B. Instrucţiuni de mişcare 76
1. Instrucţiunile de mişcare implicite. 76
2. Instrucţiunile de mişcare explicite. 77
3. Precizia poziţionării. 80
4. Tipul controlului mişcării. 81
5. Instrucţiunile de mişcare care integrează şi supravegherea senzorilor. 86
N. Alte consideraţii privitoare la tratarea situaţiilor excepţionale, atribute şi stare sistemului 116
A. Blocuri cu execuţie în paralel şi organizarea programului sub forma unor task-uri 126
B. Task-uri 127
2
Limbaje de Programare a Robotilor Industriali
I. Conceptul de limbaj.
A. Noţiuni introductive
Prelucrarea
informatiei
Transmisia Receptia
informatiei informatiei
Comunicatrul Comunicatorul
X Y
Figure 1 3
Limbaje de Programare a Robotilor Industriali
4
Limbaje de Programare a Robotilor Industriali
5
Limbaje de Programare a Robotilor Industriali
f1 E1
M F1 M
f2
E2
F2
Figure 2
6
Limbaje de Programare a Robotilor Industriali
f 11 c0 , c1 , c2 c p c0 10 p c1 10 p 1 c p ; c0 , c1 , c2 c p 0,1,2,3,4,5,6,7,8,9 * ,
7
Limbaje de Programare a Robotilor Industriali
f1 f-11
N {0,1,2,3,4,5,6,7,8,9} N
f2 T2 T1
f-12
{0,1}
Figure 3
8
Limbaje de Programare a Robotilor Industriali
F1 F2 sau F2 F1 .
9
Limbaje de Programare a Robotilor Industriali
f1 f1-1
M1 F1 M1
c T1 T2
c-1
f2-1
f2
M2 F2 M2
Figure 4
10
Limbaje de Programare a Robotilor Industriali
f1 f1-1
M1 F1 M1
c T1 T2
c-1
f2-1
f2
F1 F2 F1
Figure 5
11
Limbaje de Programare a Robotilor Industriali
12
Limbaje de Programare a Robotilor Industriali
13
Limbaje de Programare a Robotilor Industriali
f
M F M
id id
f
F
Figure 6
Având în vedere ca dialogul se realizează între comunicatori formali aparţinând
clasei C. specificaţi prin L M , M F F , f : M M F şi comunicatorul maşină
f
M MF M
T T-1
FM
Figure 7
în aceste condiţii limbajul maşină va fi definit prin tripletul
L M M F , FM , T : M F FM sau mai exact L M FM , FM , id : FM FM în timp ce
diagramă:
fC
C
MC FC MC
fC/Fn
C/Fn
id1 id2
FM
Figure 8
14
Limbaje de Programare a Robotilor Industriali
15
Limbaje de Programare a Robotilor Industriali
16
Limbaje de Programare a Robotilor Industriali
{primitive - Pd i } {primitive - Po i }
{complexe - Cd i } {complexe - Co i }
Figure 9
Implementarea limbajului LP pentru comunicatorul maşină Cm specificat de LM
se înţelege diagrama de comunicaţie:
fP P
MP FP MP
h1 T1 T2
h2
m
fm
Mm Fm Mm
Figure 10
17
Limbaje de Programare a Robotilor Industriali
D. Concluzii
1. Comunicaţia pentru a se desfaşura necesită existenţa a trei elemente
principale: comunicatori, sistem de comunicaţie, informaţia sau mesajul
reprezentat sub forma: <m,fm>.
2. Se defineşte drept limbaj natural propriu comunicatorului C tripletul ordonat
L M , F, f : M F unde: M - este semantica limbajului , F - este sintaxa
limbajului, f - functia de asociere a sintaxei
3. Schimbul de informaţie între doi comunicatori se realizează în anumite
condiţii, rezultând existenţa implicită a unor noi funcţii: funcţia translator
Ti : Fi F j unde Fi este sintaxa limbajului comunicatorului emiţător, iar Fj
18
Limbaje de Programare a Robotilor Industriali
M p D date, O operatii .
19
Limbaje de Programare a Robotilor Industriali
20
Limbaje de Programare a Robotilor Industriali
21
Limbaje de Programare a Robotilor Industriali
22
Limbaje de Programare a Robotilor Industriali
23
Limbaje de Programare a Robotilor Industriali
24
Limbaje de Programare a Robotilor Industriali
25
Limbaje de Programare a Robotilor Industriali
26
Limbaje de Programare a Robotilor Industriali
27
Limbaje de Programare a Robotilor Industriali
28
Limbaje de Programare a Robotilor Industriali
29
Limbaje de Programare a Robotilor Industriali
b) Traiectorii cu restrictii
30
Limbaje de Programare a Robotilor Industriali
31
Limbaje de Programare a Robotilor Industriali
rapiditate;
permite rezolvarea anumitor situatii ( de exemplu, alegerea configuratiilor)
prin intermediul sistemului de programare.
In schimb, aprecierea situatiilor în spatiul articulatiilor este destul de
dificila cand structurile contin mai mult de trei axe si analiza se face la nivelul
sistemului de programare.
32
Limbaje de Programare a Robotilor Industriali
33
Limbaje de Programare a Robotilor Industriali
34
Limbaje de Programare a Robotilor Industriali
35
Limbaje de Programare a Robotilor Industriali
36
Limbaje de Programare a Robotilor Industriali
37
Limbaje de Programare a Robotilor Industriali
dacă primul element este Limbaj atunci al treilea element este complex sau
dificil
dacă primul element este Student atunci al treilea element este blond,
dificil sau brunet.
Se observă ca unele simboluri depind puternic de context influenţând total
semantica propoziţiei. În continuare vor fi prezentate caracteristicile limbajelor
de programare pentru sistemele de calcul cu particularităţile pe care le prezintă
în cazul roboţilor industriali.
1. Variabilele
a) Introducere
38
Limbaje de Programare a Robotilor Industriali
Un alt tip de variabile este cel al variabilelor tabelare sau tip bloc. Acest
tip, mai ales pentru limbajele de programare a roboţilor, este deosebit de des
întâlnit şi oferă o compactitate deosebită programelor, precum şi o economie de
memorie.
39
Limbaje de Programare a Robotilor Industriali
pointerul este decrementat şi apoi data este introdusă. Extragerea se face prin
citirea datei şi incrementarea pointerului - pop.
Un alt tip particular de variabilă este coada care este opusul stivei, ea fiind
o colecţie de date de tip FIFO.
BEGIN “ bloc 1 “
VAR a: INTEGER;
v: VECTOR;
.
.
.
BEGIN “ bloc 2 “
VAR c,b : INTEGER;
.
.
. c - valid
END “ bloc 2 “ b - valid
.
.
.
END “ bloc 1 “ a,v - valid
40
Limbaje de Programare a Robotilor Industriali
bloc sunt şterse la nivel de memorie alocată şi în acelaşi spaţiu de memorie, sunt
inserate variabilele altui bloc. Aceasta face ca în cazul în care nu se utilizează
algoritmi recursivi evaluarea memoriei utilizate să se poată face uşor.
2. Subrutine
GOSUB SUBROUTINE 1
GOSUB SUBROUTINE 1
3. Proceduri şi funcţii
41
Limbaje de Programare a Robotilor Industriali
4. Macroinstrucţiunile
5. Recursivitatea
Distingem două tipuri de recursivitate:
42
Limbaje de Programare a Robotilor Industriali
Procedura A Procedura A
Call A Call B
recursiv
Procedura B
Call A
Call A
Call A
Recursivitate directă Recursivitate indirectă
6. Procese şi corutine
Ín cadrul unui program pot fi controlate mai multe procese, între care
poate există o anumită relaţie temporală sau interdependentă.
Astfel un proces poate fi:
* în stare inactivă -dormant state - când procesul poate fi declanşat fie
de alt proces, fie de un eveniment extern. Acesta poate fi executat sau nu
în paralel cu alt proces sau poate aştepta terminarea altui proces.
* în stare activă când este executat;
43
Limbaje de Programare a Robotilor Industriali
Figure 11
Corutinele sunt imagini ale planificării proceselor la nivelul sistemului de
operare. Acestea pot fi declanşate în serie sau în funcţie de comenzile de
întrerupere generate.
Figure 12
44
Limbaje de Programare a Robotilor Industriali
z
Rotatie
y
x
tie
sla y
an
Tr z
x
Figure 13 45
Limbaje de Programare a Robotilor Industriali
Deplasarea robotului între două puncte se poate realiza fie direct, cu viteza
maximă cum este cazul controlului punct cu punct, fie prin puncte intermediare
care definesc fie o dreaptă sau o curbă continuă de diferite ordine.
Acest ultim caz se realizează utilizând diverse metode de interpolare: liniară,
circulară sau parabolică. La rândul ei interpolarea se poate realiza fie la nivelul
articulaţiilor robotului, fie la nivelul sistemului cartezian. Diversele modalităţi
de interpolare şi traiectoria rezultantă pentru un robot cu două articulaţii de
rotaţie sunt prezentate în figurile următoare:
46
Limbaje de Programare a Robotilor Industriali
Figure 14
47
Limbaje de Programare a Robotilor Industriali
48
Limbaje de Programare a Robotilor Industriali
2 3( Fk 2 Fk 1
F (0) 2 B3 2 Fk1 Fk 2 1.8.
t k 2 t k 2
Din egalarea celor două ecuaţii (condiţia de continuitate) rezultă:
t k 2 Fk 2(t k 2 t k 1 ) Fk1 t k 1 Fk 2
3
t k 1t k 2
t k21 ( Fk 2 Fk 1 ) t k2 2 ( Fk 1 Fk 1.9.
3 2
t 3t 4
t 3 ( F4 F3 ) t 42 ( F3 F2 )
3 2
t 4t5
t 4 ( F5 F4 ) t 5 ( F4 F3 )
2
3
t n2 2 ( Fn 1 Fn 2 ) t n21 ( Fn 2 Fn 3 ) 1.10.
t n 2 t n 1
sau simbolic [A][X]=[B] ([m][F’]=[a]) . Rezolvând ecuaţia 1.10 obţinem toate
informaţiile necesare construcţiei segmentelor spline de aproximare a
traiectoriei, cu condiţia cunoaşterii condiţiilor la limită ( la inceputul mişcării şi
la sfârşitul mişcării).
Dacă se utilizează o funcţie spline de ordinul 4 de forma:
F (t ) B1 B2 t B3 t 2 B4 t 3 B5 t 4
1.11.
având condiţiile la limită: F'1 F" 1 F' n F" n 0 1.12.
Urmând aceeaşi procedură se obţine:
49
Limbaje de Programare a Robotilor Industriali
F (0) B1 F1
F (0) B2 0
F (0) 2 B3 0 1.13.
F (t 2 ) F1 B4 t 23 B5 t 24 F2
F (t 2 ) 3B4 t 22 4 B5 t 23 F2
respectiv rezolvând acest sistem pentru determinarea lui B4 şi B5:
4 1
B4 3
( F2 F1 ) 2 F2
t2 t2
3 1 1.14.
B5 4
( F1 F2 ) 3 F2
t2 t2
Utilizând condiţiile la limită se obţine:
F (0) B1 Fn 1
F (0) B2 Fn1
F (t n ) Fn Fn 1 Fn1t n B3t n2 B4 t n3 B5 t n4 1.15.
F (t n ) 0 Fn1 2 B3 t n 3B4 t n2 4 B5 t n3
F (t n ) 0 2 B3 6 B4 t n 12 B5 t n2
Rezolvând aceste ecuaţii se determină coeficienţii:
1
B3 (6 Fn 6 Fn 1 3Fn1t n )
t n2
1
B4 (8 Fn 8 Fn 1 3Fn1t n ) 1.16.
t n3
1
B5 (3Fn 3Fn 1 Fn1t n )
t n4
Dacă se pun condiţiile de continuitate a acceleraţiei pentru primele două
segmente
6
F (t 2 ) 6 B4 t 2 12 B5 t 22 2
4( F2 F1 ) t 2 F2 122 3( F1 F2 ) t 2 F2
t2 t2
rezultă:
2 3 1 3 6
( ) F2 F3 2 ( F3 F2 ) 2 ( F2 F1 ) 1.17.
t3 t 2 t3 t3 t2
Utilizând acelaşi mecanism şi pentru sfârşitul traiectoriei:
2 3 1 3 6
( ) Fn1 Fn 2 2 ( Fn 1 Fn 2 ) 2 ( Fn Fn 1 ) 1.18.
t n 1 tn t n 1 t n 1 tn
Sintetizând aceste rezultate de-a lungul traiectoriei se poate forma o
structură compactă a sistemului care trebuie determinat sub forma 1.19 unde:
50
Limbaje de Programare a Robotilor Industriali
2 3
M 22
t3 t 2
1
M 23
t3
1 6
M n 1,n 2 a 2 ( F3 F2 ) ( F2 F1 )
t n 1 t 22
2 3 3 6
M n 1,n 1 a n 1 2
( Fn 1 Fn 2 ) ( Fn Fn 1 )
t n 1 tn t n 1 t n2
M 22 M 23 0 0 F2
t 2(t 3 t 4 ) t 3 0 F3
4
0
0
t n 1 2(t n 2 t n 1 ) t n2 Fn 2
0 0 M n 1,n 2 M n 1,n 1 Fn1
3 2
t 3t 4
t 3 ( F4 F3 ) t 42 ( F3 F2 )
3 t 2 (F F ) t 2 (F F )
t n 2 t n 1 n 2 n 1 n2 n 1 n2 n 3
a n 1
1.19.
51
Limbaje de Programare a Robotilor Industriali
END;
END_SYSTEM_SPECIFICATION
52
Limbaje de Programare a Robotilor Industriali
53
Limbaje de Programare a Robotilor Industriali
54
Limbaje de Programare a Robotilor Industriali
END;
rotmatrix = RECORD
t,o,a: vector
END;
rotation = RECORD
axis : vector;
angle : REAL;
matrix : rotmatrix
END;
frame = RECORD
rot : rotation;
transl : vector
END;
Pentru limbajele SRL, PASRO ßi AL, aceste elemente se
folosesc ca tipuri de date standard, fapt care ußureazá mult lucrul cu
acestea, nemaifiind nevoie de o construcþie a acestor tipuri:
Exemple:
SRL: directie: VECTOR;
partrotatie : ROTATION;
preluare, asteptare : FRAME;
directie:=VECTORC(0,35,0);
PASRO: directie: VECTOR;
partrotatie: ROTATION;
MAKEVECTOR (directie,0,35,0);
AL: DISTANCE VECTOR directie;
ROT partrotatie;
FRAME preluare,asteptare;
directie <- VECTOR (0,35,0) * CM;
VECTOR Identificator
Specificatii
dimensionale
TRANS
,
ROT
FRAME
55
Limbaje de Programare a Robotilor Industriali
B. Structuri de date
56
Limbaje de Programare a Robotilor Industriali
57
Limbaje de Programare a Robotilor Industriali
Figure 15
- fißierele -FILE. Aceste structuri de date sunt cele mai complexe ßi
ßi mai ample atät din punct de vedere al dimensiunii pe care o
58
Limbaje de Programare a Robotilor Industriali
59
Limbaje de Programare a Robotilor Industriali
nest1(3) 1.5
nest1(2,1) ‘element’
nest1(2,2) 1
Toate aceste structuri de date prezintá, din punctul de vedere
al alocárii memoriei, un dezavantaj major: necesitá o prealocare a
memoriei necesare stocárii datelor. Astfel dupá ce informaþia a
fost folositá, zona sa de memorie rámäne ín continuare o zoná
restrictivá ín ceea ce priveßte utilizarea sa de cátre alte date.
Acest dezavantaj poate fi eliminat prin folosirea unor variabile
dinamice, care ocupá numai strict memoria de care au nevoie,
íncepänd cu adresa disponibilá íntr-un anumit moment al compilárii
ßi execuþiei programului, urmänd ca odatá ce variabila nu mai este
folositá ßi este deci distrusá sá elibereze memoria ocupatá.
Aceste variabile dinamice poartá numele de pointeri.
Declararea unui pointer se face prin ataßarea unui caracter
suplimentar la tipul care defineßte variabila. Astfel pentru cazul
limbajelor PASRO ßi PASCAL acest caracter este ^, iar pentru
SRL este @. Pentru ínþelegerea exactá a acestor structuri de
date, extrem de utile ín cazul realizárii unui program flexibil, rapid
ßi economic se va prezenta ßi explicita un exemplu de program ín
PASRO.
60
Limbaje de Programare a Robotilor Industriali
61
Limbaje de Programare a Robotilor Industriali
Figure 16
62
Limbaje de Programare a Robotilor Industriali
Figure 17
Ín cadrul programului principal se introduc elementele care vor fi
manevrate, introducerea fácändu-se sub forma algoritmului de tip
listá LIFO. Relaþia care se stabileßte íntre elementele ín cadrul
acestei párþi de program este lipsitá de semnificaþie poziþionalá
Ín partea a doua a programului se introduc relaþiile poziþionale
dintre elemente. Fie o relaþie poziþionalá exprimatá grafic ín
Figure 18
Figure 18.
Din prima parte a programului se reaminteßte cá ultimul introdus
este elementul 4, fapt care face ca k:=boxes^.next^.next=2.
Instrucþiune affix (k^.next, k) este un apel al procedurii affix
(kky).
63
4 3 2
Limbaje de Programare a Robotilor Industriali
64
Limbaje de Programare a Robotilor Industriali
Figure 19
Ín cazul limbajului AL, programul este mai simplu existänd
instrucþiunea AFFIX cu variantele RIGIDLY (conectare rigidá,
fermá) respectiv NONRIGIDLY (aßezare relativá de elemente).
Ín prezentarea datelor ßi structurilor de date nu s-a alocat un
spaþiu separat constantelor ßi operaþiilor de atribuire, acestea
fácändu-se ín modul caracteristic limbajelor de programare uzuale.
65
Limbaje de Programare a Robotilor Industriali
1. Operaţii logice
Operatorul SRL si AL AML HELP
PASRO
Funcţia Şi b AND b s AND s i AND i expr AND expr
Funcţia b OR b s OR s i OR i expr OR expr
SAU
Funcţia NU NOT b NOT s NOT i NOT expr
Funcţia b <> b s XOR s i XOR i
SAU
exclusiv
Echivalenţă b=b s EQV s
b - data BOOLEANA; i, s - data reala sau intreaga, expr - expresie logica
2. Operaţii de comparare
Operator SRL/PASRO AL AML VAL HELP ROBEX
mai mic x<x s < s x LT x i LT i s<s LT
mai mare x>x s > s x GT x i GT i s>s GT
egal x=x s = s x EQ x i EQ i s=s EQ
mai mic sau egal x <= x s <= s x LE x i LE i LE
mai mare sau egal x >= x s >= s x GE x i GE i GE
diferit x <> x s <> s x NE x i NE i NE
i - data de tip întreg, s - scalar, x - întreg sau real
66
Limbaje de Programare a Robotilor Industriali
3. Operaţii aritmetice
Mod de reprezentare în:
Operaţie SRL şi AL AML VAL VAL II HELP SIGLA
PASRO
Adunare i+I s+s i+i i+i s+s s+s IC/i,i
r+r r+r
i+r i+r
r+I r+i
Scădere i-I s-s i-i i-i s-s s-s IC/i,-i
r-r r-r
i-r i-r
r-I r-i
Înmulţire i*I s*s i*i i*i s*s s*s abs.
r*r r*r
i*r i*r
r*I r*i
Împărţire i/I s/s i/i i/i s/s s/s abs.
r/r r/r
i/r i/r
r/I r/i
Împărţire a i DIV I s DIV s r DIV r i/i abs. abs. abs.
întregilor i IDIV
i
Modulo i MOD i s MOD s abs. i%i s MOD s abs. abs.
Ridicare la putere abs. S^s abs. abs. abs. abs. abs.
Modul ABS(i) |s| abs. abs. abs. abs. abs.
ABS(r)
Inversare semn -I -s -i -i abs. -s NE/-i
-r -r
Obs. i-întreg, r - real, s-scalar, abs - nu se poate realiza respectiva operaţie
4. Operaţii geometrice
Reprezentarea operaţiei Semnificaţia operaţiei
SRL PASRO AL
s:=VLENGTH(v) VABS(s,v) s <- |v| lungimea vectorului v
s:=r.angle s:=r.angle s <- |r| unghi de rotatie
s:=v1 DOT v2 VDOT(s,v1,v2) s <- v1.v2 produs scalar
v:=s*v VMUL(v,v,s) v <- s*v inmultire cu scalar
v:=v/s VDIV(v,v,s) v <- v/s impartire cu scalar
v:=v1+v2 VADD(v,v1,v2) v <- v1+v2 adunare de vectori
v:=v1-v2 VSUB(v,v1,v2) v <- v1-v2 scadere de vectori
v:=v1*v2 VCROSS(v,v1,v2) v <- v1*v2 produs vectorial
v:=r*v VROT(v,r,v) v <- r*v rotatia unui vector
v <- t*v ( t-matrice de
translatie) Transformari
de
v <- f*v (f matricea coordonate
67
Limbaje de Programare a Robotilor Industriali
unei
transformari
complexe)
v:=ROTAXIS(r) ROTAXIS(v,r) v <- AXIS(r) rotatia lui v, in jurul
vectorului vr, cu
unghiul
r:=r1*r2 ROTROT(r,r2,r1) r <- r1,r2 compunerea a doua
rotatii
f=f+v FRAMETRANSL f <- f+v translatia unui sistem f
(f,f,v) cu un vector v
f:=f-v f <- f-v
f:=r*f FRAMEROT(f,f,r) rotatia unui sistem f
f:=f*f TRANSFRAME f <- f*f compunerea a doua
(f,f1,f2) transformari
t:=f1 FREL f2 FRAMEREL(t,f1,f2) t <- f1 -> f2 Transformarea care
asigura trecerea de la
sistemul f1 la f2
fi:=FINV(f) FRAMEINV(fi,f) fi <- INV(f) Transformarea inversa
a lui f
s - scalar; v -vector(x,y,z); r - (vr,)=rotatie in jurul vectorului vr, cu unghiul ;
5. Funcţii standard
Funcþia PASRO SRL AL AML HELP ROBEX
sinus SIN
cosinus COS
tangentã TAN abs. abs.
arctangentã ARCTAN ATAN2 ATAN ARCT ATAN
G
arcsinus abs. ASIN abs. abs.
arccosinus abs. ACOS abs. abs.
conversie REAL
la INTREG cu :
trunchiere TRUNCH TRUNCH INT abs. abs. abs.
rotunjire ROUND ROUND
exponent EXP abs. abs. EXP
logaritm natural LN LOG abs. abs. NLOG
logaritm abs. abs. abs. abs. abs. LOG
radical SQRT
ridicare la pãtrat SQR abs. abs. abs. abs. abs.
modul ABS abs. abs. ABS
Introducerea de
date:
scalare INPUT INSCALAR ASK
booleene INPUT QUERY abs. ASKN abs.
vector vread INPUT
rotaþii rread INPUT
sistem fread INPUT
68
Limbaje de Programare a Robotilor Industriali
69
Limbaje de Programare a Robotilor Industriali
END;
- tot ca o particularitate pentru LPRI sunt instrucþiunile prin care
se poate citi poziþia ßi orientarea curentá a robotului, elemente
care pot fi folosite pentru ocolirea unor obstacole sau pentru
generarea unor comenzi sau mesaje de avertisment.
SRL. current_position:=robotframe(puma).transl;
IF robotframe(puma).transl.z > 50 THEN
WRITELN (“ Brat prea sus “)
AL: current_position <- POS(ARM);
HELP: COORD(1); se citeşte pozişia curentă, urmând ca
framef (1) := AX(1); elementele curente AX,AY,AZ,AR,AP,
AYW să fie memorate într-o matrice
framef (2) := AY(1);
framef
framef (3) := AZ(1);
framef (4) := AR(1);
framef (5) := AP(1);
framef (6) := AYW(1);
70
Limbaje de Programare a Robotilor Industriali
V. Instrucţiuni
Aceste elemente fac parte din semantica unui limbaj, ele utilizând sintaxa
declarată prin intermediul datelor, structurilor de date, cuvintelor rezervate.
Instrucţiunile în cadrul unui program-robot şi nu numai, sunt executate în
ordinea scrierii lor, excepţie făcând cazurile în care apar instrucţiunile de salt.
Încercând o sintetizare a instrucţiunilor, element care se poate dovedi
extrem de util pentru o prezentare generală, cum este cazul prezentei lucrări, se
pot defini următoarele tipuri de instrucţiuni:
1. Instrucţiuni de descriere a mediului de operare
2. Instrucţiuni de generare a mişcării
3. Instrucţiuni de comandă şi control a elementului terminal
4. Instrucţiuni specifice sistemului senzorial
5. Instrucţiuni de delimitare a blocurilor structurale ale programului
6. Instrucţiuni de oprire a mişcării robotului sau a elementului
terminal
7. Instrucţiuni de control ale programului
8. Instrucţiuni de control a stării robotului şi a sistemului de
microcontacte asociat controlului
9. Instrucţiuni de tratarea a situaţiilor excepţionale
În continuare vor fi explicate la nivel general aceste tipuri de instrucţiuni,
alături de prezentarea unor exemple elocvente în vederea înţelegerii acţiunii
respectivelor tipuri de instrucţiuni.
71
Limbaje de Programare a Robotilor Industriali
72
Limbaje de Programare a Robotilor Industriali
73
Limbaje de Programare a Robotilor Industriali
Figure 20
74
Limbaje de Programare a Robotilor Industriali
75
Limbaje de Programare a Robotilor Industriali
B. Instrucţiuni de mişcare
COPLANAR
Numele
Parametri
, Elementul 2 , suprafetei
elementului 2
, aditionali
Figure 21
76
Limbaje de Programare a Robotilor Industriali
Exemplu:
ROBEX: MOVE / cutie1, underside, Se dă comanda de a muta cutie1 cu
AGAINST, cutie2, top, EVENT, 2, faţa de jos (underside) deasupra
(top) cutie2, mişcarea care are loc
ELSE, mesaj
atâta timp cât canalul este în 1
logic. În cazul în care canalul este 0
logic, se afişează un mesaj în
paralel cu oprirea mişcării.
77
Limbaje de Programare a Robotilor Industriali
MOVE #P1
SRL: SMOVE robot TO FRAMEC (VECTORC(95,20,40),
ROTC(zaxis,90)
78
Limbaje de Programare a Robotilor Industriali
79
Limbaje de Programare a Robotilor Industriali
FEDRAT / 80
Alţi parametri care pot fi specificaţi sunt:
acceleraţia şi deceleraţia numai în AML prin:
ACCEL (0.5) mişcarea se face cu jumătate din acceleraţia maximă
durata mişcării numai în AL:
MOVE ARM TO targetframe WITH DURATION = 5 * SEC
o anumită configuraţie cinematică pentru structuri redundante (structura
PUMA)
SMOVE robot TO goalframe Argumentele care urmează după WITH pot fi:
WITH
POSTURE(1) RIGHTY – configuraţie corespunzând braţului
uman drept
LEFTY – configuraţie corespunzând braţului
uman stâng
ABOVE – “cotul” structurii PUMA este în
poziţia superioară
BELOW – “cotul” structurii PUMA este în
poziţia inferioară
3. Precizia poziţionării.
Robotul îşi poate înceta mişcarea atunci când a ajuns în punctul a cărui
coordonate au fost indicate de către argumentul instrucţiunii sau în preajma
punctului, într-o anumită vecinătate.
AL: MOVE ARM TO targetframe WITH NULLING
SRL: SMOVE robot TO - mişcare cu precizie
goalframe WITH NULLING
AML: SETTLE(OFF) - după încetarea mişcării curente
MOVE(ARM, targetframe) controlul este transferat operatorului
COARSE se fixează o toleranţă ridicată la
nivelul servocontrollerelor
FINE se cere o toleranţă redusă
NONULL mişcarea se termină fără a fi nevoie de
a primi confirmarea terminării
mişcării fiecărei axe
VAL: NULL mişcarea se termină numai în clipa
recepţiei semnalului de terminare a
mişcării fiecărei axe
INTOFF corecţia erorii în timpul integrării
traiectoriei de control este dezactivată
80
Limbaje de Programare a Robotilor Industriali
Exemple:
PASRO: pmove (goalframe) -mişcare punct cu punct
jmove (goalframe) -ca şi SYNMOVE
smove (goalframe) -similar SMOVE
VAL: MOVE targetframe -interpolare la nivel de articulaţie
MOVES targetframe -interpolare lineară
81
Limbaje de Programare a Robotilor Industriali
82
Limbaje de Programare a Robotilor Industriali
Exemple:
AL: COBEGIN
MOVE ARM TO targetframe;
OPEN HAND TO 1*cm
COEND
83
Limbaje de Programare a Robotilor Industriali
END_MOVEDEF;
MOVEDO complex_handling ;
AL: MOVE ARM TO targetframe - caracteristic acestei mişcări este faptul că în
VIA inertframe1, interframe2; cazul în care poziţiile intermediare suunt
apropiate, poate interveni o mişcare
suplimentară nu întotdeauna controlabilă
VAL: ENABLE CP -mişcarea prin punctele intermediare este
MOVES interframe1 auxiliar controlată prin sistemul de
microîntrrerupătoare (de întreruperi ON/OFF
MOVES interframe2
hard) CP
MOVES targetframe
DISABLE CP
HELP: SMOVE(1,#1,xz1,#2,yz1,#3,zz1 -limbajul HELP neavând declaraţii de puncte
,#4,rz1,#5,pz1,#6,yawz1,#7,400 intermediare de tip implicit, realizează
mişcarea liniară cu instrucţiunea SMOVE şi
);
argumentele specifice deplasării fiecărui
SMOVE(1,#1,xz2,#2,yz2,#3,zz1 motor cu un increment declarat explicit.
,#4,rz2,#5,pz2,#6,yawz2,#7,300
);
MOVE(1,#1,x,#2,y,#3,z,#4,r,#5,
p,#6,yaw);
Ca o observaţie generală, toate aceste limbaje acceptă în declararea
mişcării prin puncte intermediare şi argumente de tip viteză, respectiv durata etc.
Exemple:
SRL: SMOVE ir600 TO targetframe -mişcarea începe cu V=50cm/s, iar după
WITH V=50 atingerea lui interframe continuă cu 15cm/s
WITH VIAFRAMES ( interframe)
WITH V=15
Modul de apropiere sau depărtare poate fi deasemenea programat. Aceste
specificaţii pot controla prindereea sau desprinderea unui obiect într-un spaţiu cu
restricţii la nivel de ţintă.
Din toate limbajele prezentate până în acest moment, acest tip de
instrucţiuni sunt definite numai în SRL, AL şi VAL.
84
Limbaje de Programare a Robotilor Industriali
Figure 22
Exemple:
SRL: SMOVE rhino TO targetframe -primele argumente indică primele
WITH APRO=20 mişcări pe care le face robotul în
traiectoria de atingere a poziţiei finale
WITH DEP=10
(targetframe): mişcare în sus cu 20cm
WITH SMOOTHFAC=8; (deasupra ţintei) urmată cu o mişcare cu
10cm deasupra ţintei. Argumentul 3
indică precizia dintre mişcări
85
Limbaje de Programare a Robotilor Industriali
pentru mişcări într-un plan sau spaţiu de tip zig-zag, fără ca acest lucru să nu
poată fi posibil şi pentru celelalte limbaje, însă cu observaţia că în cazul
celorlalte limbaje, mişcarea va trebui precizată explicit.
Exemple:
SRL: SYNMOVE robo TO targetframe -se comandă o mişcare sinusoidală implicită
WITH WOBBLE
AL: MOVE ARM TO targetframe -în acest caz amplitudinea sinusoidei poate fi
WITH WOBBLE=2 programată
86
Limbaje de Programare a Robotilor Industriali
Exemple:
87
Limbaje de Programare a Robotilor Industriali
Exemple:
88
Limbaje de Programare a Robotilor Industriali
Exemple:
SMOVE (1,#3,150); -robotul este comandat pentru a se deplasa de-a lungul dreptei Z
FORCE (1,#3,60); (adică axa 3) cu 150mm, cu o forţă mai mică de 60 (din gama 0 la
255). Dacă forţa este egală sau mai mare atunci robotul se opreşte.
Continuând cu studiul acestui tip de mişcare cu limbajul SIGLA se
reaminteşte că acest limbaj este unul rudimentar la care mnemonicele nu sunt
prea bogate în semnificaţie, iar manevrarea informaţiei se face la nivel de
registru.
Exemplu:
MT/3, M5, 1 - mnemonicul MT duce la încărcarea în registrul
M5 a valorii senzorului 3
RP/2, 7, 120, 70, 3, -10, 4, 5 - instrucţiune de deplasare efectivă a 3 cu 70 de
paşi. La fiecare 7 paşi senzorul 2 este monitorizat
dacă depăşeşte valoarea de 120. Dacă da se
execută instrucţiunea cu eticheta 5, în caz contrar
instrucţiunea cu eticheta 4. –10 este un parametru
de întârziere a deciziei, a cărei valoare este
exprimată temporal.
89
Limbaje de Programare a Robotilor Industriali
Figure 23
90
Limbaje de Programare a Robotilor Industriali
91
Limbaje de Programare a Robotilor Industriali
92
Limbaje de Programare a Robotilor Industriali
93
Limbaje de Programare a Robotilor Industriali
94
Limbaje de Programare a Robotilor Industriali
95
Limbaje de Programare a Robotilor Industriali
96
Limbaje de Programare a Robotilor Industriali
97
Limbaje de Programare a Robotilor Industriali
98
Limbaje de Programare a Robotilor Industriali
99
Limbaje de Programare a Robotilor Industriali
END_DURING
DO START warning
100
Limbaje de Programare a Robotilor Industriali
101
Limbaje de Programare a Robotilor Industriali
setarea unor indicatori soft, flag-uri care să intervină în cadrul procesului sub
forma unor evenimente.
Exemplu:
SRL: WHEN - dacă timpul de mişcare a robotului spre
start_time<=SYSTIME- destinaţie, monitorizat la fiecare 20 MS a
fost depăşit (evaluarea duratei mişcării cu
durata_miscarii
funcţia SYSTIME este mai mare decât
MONITORED EVERY 20 MS durata planificată) se realizează trecerea
DURING automată la execuţia deplasării următoare
SMOVE robot TO destinaţie
END_DURING
DO START altă_deplasare
AL: MOVE ARM1 TO destinaţie - la 5 secunde de la începerea
ON DURATION >=5*sec DO deplasării lui ARM1 către destinaţie este
acţionat şi ARM2 spre centru timp de 3
BEGIN
secunde şi apoi este afişat un mesaj
MOVE ARM2 TO centru
WITH DURATION=3*SEC;
PRINT (“start proces”);
END;
I. Procese în paralel
102
Limbaje de Programare a Robotilor Industriali
Exemplu:
AML: AMOVE (ARM, - instrucţiunea specifică mişcării
framedestinaţie) asincrone urmând ca instrucţiunile
cuprinse între acesata şi WAITMOVE
.
să fie executate odată cu începerea
. mişcării, iar trecerea la instrucţiunile de
WAITMOVE după WAITMOVE să se realizeze
numai după terminarea mişcării.
Exemple:
ROBEX: ONSIG/EVENT, 3, JMP, wait - dacă semnalul de la canalul
3 este în 1 logic se realizează
saltul la eticheta wait.
HELP: IF TESTB(3) THEN - dacă senzorul 3 este TRUE
DELAY(50) atunci execuţia programului
END; este întârziată cu 1 sec
IF VALUE(1)70 THEN (50x20 msec)
MOVE(1, 1, 140, 3, 50);
PULSE(2) - dacă valoarea senzorului 1
MOVE(1, 1, 120, 2, 260, este mai mare decât 70 atunci
150) piesa este depozitată,
ELSE gripper-ul deschis şi robotul
PRINT (“Valoare mutat într-o a doua poziţie.
insuficientă”) În caz contrar se afişează un
HOLD mesaj şi se aşteaptă
END; intervenţia operatorului.
103
Limbaje de Programare a Robotilor Industriali
104
Limbaje de Programare a Robotilor Industriali
Exemple:
HERE calibrobot - prin această instrucţiune se defineşte
centrul discului în care este plasat
terminalul ca fiind sistemul de calibrare al
robotului (calibrobot)
MOVE respoint - robotul este extras din schema de
recunoaştere a obiectelor prin mutarea într-
un alt punct (restpoint)
VPICTURE - este captată imaginea de către camera
de luat vederi
VLOCATE calibcamera, 150 - dacă obiectul este recunoscut (poziţia
iniţială), elementele privitoare la orientare
şi poziţie sunt stocate în sistemul
calibcamera dacă nu salt la instrucţiunea cu
eticheta 150
INV - se calculează sistemul invers care
invcalibcamera=calibcamera corespunde transformării coordonatelor
obiectului în sistemul de coordonate al
camerei (achiziţionarea imaginii oferă date
referitoare la sistemul imagine)
SET - se calculează transformarea cameră
camerasystem=calibrobot: sistem prin compunerea transformărilor
bază-robot-cameră
invcalibcamera
105
Limbaje de Programare a Robotilor Industriali
Elemente Programu
Sistemul de vedere program utilizatoru
artificiala
Imaginea VPICTURE
captata
.
.
.
.
.
Identificarea
VLOCATE box,150
obiectului si
determinarea .
pozitiei Frame lista .
. .
. .
box .
MOVE camera system
x valoare
y valoare
z=0
Orientare
.
.
.
Figure 25
VPICTURE - este achiziţionată imaginea unui obiect
VLOCATE obiect, - se caută identificarea obiectului
150
MOVE camera - utilizând orientarea şi poziţia
system:obiect obiectului compusă cu transformarea
camerasystem se poate defini sistemul în care
este nevoie ca robotul să se poziţioneze.
106
Limbaje de Programare a Robotilor Industriali
107
Limbaje de Programare a Robotilor Industriali
108
Limbaje de Programare a Robotilor Industriali
109
Limbaje de Programare a Robotilor Industriali
110
Limbaje de Programare a Robotilor Industriali
Case 1
Case test
Case 2
CASE
Structura
blocului 1
Structura
Case n
blocului 2
Case1 Case 2 Case n
. . . . . Structura
BLOC 1 BLOC 2 BLOC n
blocului n
Exemple:
AML: HELP:
BRANCH (IF N GE 1 AND N LE IF case 0.5 THEN caseend END;
4 THEN GO TO (case, case1, …. , casen);
CASE1, CASE2, CASE3, GO TO caseend
CASE4 (N) case1: instrucţiuni
ELSE ERROR_CASE GO TO caseend
CASE1: case2: instrucţiuni
GO TO caseend
BRANCH (CASE_END);
CASE2: casen: instrucţiuni
caseend:
BRANCH (CASE_END);
CASE4:
BRANCH (CASE_END);
ERROR CASE:
CASE_END
111
Limbaje de Programare a Robotilor Industriali
având o structură logică WHILE expresie logică DO bloc mai precis atâta timp
cât expresia logică este TRUE se execută bloc.
112
Limbaje de Programare a Robotilor Industriali
113
Limbaje de Programare a Robotilor Industriali
True x >= a
False
x >=b
True False
True x <= b False
PRINT ' Prea mic ' x<=b PRINT "
True False Prea mic"
x=(a+b)/2 PRINT "
PRINT ' Prea mare ' True False Prea
x =(a+b)/2
mare "
PRINT " corect Continua
True False "
114
Limbaje de Programare a Robotilor Industriali
115
Limbaje de Programare a Robotilor Industriali
116
Limbaje de Programare a Robotilor Industriali
117
Limbaje de Programare a Robotilor Industriali
118
Limbaje de Programare a Robotilor Industriali
cazurilor, iar la activarea unei chei speciale valorile curente să fie atribuite
simbolului întâlnit. Această procedură impune o alocare corespunzătoare
de memorie, în paralel cu dezavantajul generat de instrucţiunile
condiţionale de tip IF, respectiv CASE la care o primă rulare va duce la
definirea evoluţiei corespunzătoare condiţiei îndeplinite, pentru ca în
cazul altei evoluţii condiţionale robotul să se oprească din nou şi să fie
nevoie completarea variabilelor simbolice.
Programator
Sistem de programare
online avand
componente
Sistem de programare interactive
offline ( editoare si
compilatoare )
Program executabil
Sistem interpretor si
de comanda a
controllerelor
Robot
Figure 26
119
Limbaje de Programare a Robotilor Industriali
120
Limbaje de Programare a Robotilor Industriali
121
Limbaje de Programare a Robotilor Industriali
122
Limbaje de Programare a Robotilor Industriali
RETURN
123
Limbaje de Programare a Robotilor Industriali
124
Limbaje de Programare a Robotilor Industriali
FORWARD
125
Limbaje de Programare a Robotilor Industriali
126
Limbaje de Programare a Robotilor Industriali
B. Task-uri
În cadrul acestor structuri secvenţe funcţionale sunt rulate şi executate în paralel
sau cvasi-paralel, implicând astfel câteva caracteristici specifice task-urilor:
fiecare task are un suport local de date
un task poate fi oprit, pus în aşteptare, continuat sau terminat din exterior printr-
o comandă sistem sau alt task sau se pot opri sau termina prin evoluţie proprie.
anumite sisteme pot permite apeluri multiple ale unor task-uri specifice
între task-uri este posibilă o comunicaţie la nivel de date intertasking.
În continuare este prezentat un exemplu de multitasking destinat deservirii unui
număr de 10 magazii:
SYSTEM_SPECIFICATION END_SYSTEM_SPECICICATION
ROBOT: rip = ROBOT (1) PROGRAM monitorizare (INFILE,
EFFECTOR: degete = GRIPPER(0) OF rip OUTFILE)
SENSOR:detector = CHANNEL(5) .
STRUCTURE detector = RECORD .
Contact: BOOLEAN; SECTION distribuţie
Lungime: REAL; VAR
END; Magazin_list: ARRAY [1 9] OF FRAME
INTERRUPT: emty FROM Get_pos: FRAME
CHANNEL(7); Nr_magazie_curentă: INTEGER
127
Limbaje de Programare a Robotilor Industriali
128
Limbaje de Programare a Robotilor Industriali
logice, când după afişarea locului unde a avut loc evenimentul este activată logic
variabila set exit. Secţiunea distributie asigură comanda robotlui pentru
asigurarea alimentării cu piese a unor magazii precum şi apelul la alte secţiuni în
clipa apariţiei unor evenimente. Se observă modul în care secţiunile distribuţie,
break şi system specification interacţionează sau sunt executate în paralel
(distribuşie cu break)
Limbajul HELP care permite de asemenea regimul multitasking priveşte fiecare
task drept un program aparte, individual, identificat printr-o eticheta. Activarea
respectivului program se face printr-o comandă de tip ACTIVE (număr task,
număr task, …), pentru ca în prealabil fiecare task să fi avut definită o etichetă
identificatoare: ASSIGN (număr, REF tabel de referinţe).
129
Limbaje de Programare a Robotilor Industriali
VIII.Bibliografie şi referinţe
[1.] A Manufacturing Language - Concepts and User’s Guide. IBM Corporation,
Boca Raton, Florida
[2.] AML/Entry, Version 4, User’s Guide. IBM Corporation, Boca Raton, Florida
[3.] Bernorio, M. Programming an Industrial Robot, 7th ISIR Tokyo
[4.] Blume C, A Structured Way of Implementating the High Level Programming
Language AL on a Mini and Microcomputer Configuration - Proceedings of
11th ISIR, Tokyo .
[5.] Brockett Robotic manipulator and the product of exponentials formula,
Mathematical Theory of Networks and Systems, 120-129, 1984
[6.] Brockett, A.Stokes, F.C. Park; A geometrical formulation of the dynamical
equations describing kinematic chain, IEEE International Conference on
Robotics and Automatics,637-642,1993
[7.] Christian Blume, Wilfrid Jakob, Programming Languages for Industrial
Robots
[8.] Coiffet , Teleoperation and Robotics, Robot Technology Hermes Publishing
[9.] Djikstra, P. J. , GOTO - Statement Considered Harmful, Communications of
the ACM 11
[10.] F.C.Park, Computational aspects of the product-of-exponentials formula for
robot kinematics,IEEE Transactions on Automatic Control,1994
[11.] Guide to Help - Language . Digital Electronic Automation, Turin
[12.] Ivănescu,M., Roboti industriali -Algoritmi si sisteme de conducere, Editura
Universitara, Craiova, 1994.
[13.] J.Denavit, R.S. Hartenberg A kinematic notation for lower-pair mechanisms
based on matrices- Journal of Applied Mechanics,215-221, 1955.
[14.] Murray R. W. and al. A Mathematical Introduction to Robotic Manipulation,
CRC Press, Boca Raton, Florida
[15.] Paden B., Kinematics abd Control Manipulators, PhD Thesis, Department of
Electrical Engineering and Computers Sciences, University of California,
Berkley
[16.] Paul, R.P., Robot Manipulators: Mathematics, Programming and Control, MIT
[17.] Pragma A 3000 - Operating and Programming Manual. Digital Electronic
Automation, Turin
[18.] RAIL Reference Manual. AUTOVISION, Automatix Inc. Burlington,
Massachusetts
[19.] Ranky, P. G. Robot Modelling - Control and applications with software,
Spring-Verlag
[20.] Robotica - colecţie 1990 -1998
[21.] Rohlfing, H., SIMULA. Mannheim Wien Zurich
[22.] Seling, J.M., Geometrical Methods in Robotics, Spring-Verlag
[23.] SIGLA - The Olivetti Sigma Robot Programming Language, 8th ISIR, Stuttgard
[24.] User Guide to VAL. A Robot Programming and Control System.Unimation
Robotics Inc.Connectticut
[25.] User’s Guide to VAL II - A Robot Programming and Control System.
Unimation Inc. Danbury, Connetticut
[26.] Weck M., Zuhlke D, Short Reference Manual of the ROBEX - Language
130