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 57
1
Limbaje de Programare a Robotilor Industriali
4. Operaţii geometrice 68
5. Funcţii standard 69
6. Expresii complexe cu anumite priorităţi: 70
V. INSTRUCŢIUNI 73
B. Instrucţiuni de mişcare 78
1. Instrucţiunile de mişcare implicite. 78
2. Instrucţiunile de mişcare explicite. 79
3. Precizia poziţionării. 82
4. Tipul controlului mişcării. 83
5. Instrucţiunile de mişcare care integrează şi supravegherea senzorilor. 88
N. Alte consideraţii privitoare la tratarea situaţiilor excepţionale, atribute şi stare sistemului 119
A. Blocuri cu execuţie în paralel şi organizarea programului sub forma unor task-uri 129
B. Task-uri 130
2
Limbaje de Programare a Robotilor Industriali
I. Conceptul de limbaj.
A. Noţiuni introductive
Prelucrarea
informatiei
Transmisia Receptia
informatiei informatiei
Comunicatrul Comunicatorul
3
X Y
Figure 1
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
reprezentarea binară.
În aceste condiţii poate fi construită functia inversă
f 11 c0 , c1 , c2 c p c0 10 p c1 10 p1 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
9
Limbaje de Programare a Robotilor Industriali
f1 f 1-1
M1 F1 M1
c T1 T2
c-1
f 2-1
f2
M2 F2 M2
Figure 4
10
Limbaje de Programare a Robotilor Industriali
f1 f 1-1
M1 F1 M1
c T1 T2
c-1
f 2-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
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
fC
C
MC FC MC
f C/F n
C
/F n
id1 id2
FM
Figure 8
14
Limbaje de Programare a Robotilor Industriali
diagramă:
Problemele ridicate de accesibilitatea limbajului de programare au complicat în
mod necesa funcţia de translator T: FP FM fapt ce a dus la mărirea timpului
necesar translatării pe de-o parte, respectiv la pierderea naturaleţii limbajului pe
de altă parte.
Pentru o mai bună exploatare şi înţelegere a limbajelor de programare se
remarcă faptul că indiferent de clasa comunicatorilor, schimbul de informaţie se
referă la obiecte statice , ce vor primi numele de date, precum şi la acţiuni ce
trebuie exectutate asupra datelor sau asupra actor acţiuni ce vor primi numele de
operaţii. Generalizând MP este un sistem formal în limbajul natural al clasei
comunicatorilor cărora li se oferă limbajul de comunicare, sistem definit ca o
pereche: M p D date, O operatii .
15
Limbaje de Programare a Robotilor Industriali
16
Limbaje de Programare a Robotilor Industriali
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 Fj unde Fi este sintaxa limbajului comunicatorului emiţător, iar Fj
18
Limbaje de Programare a Robotilor Industriali
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
J q
dx dq
dt dt
35
Limbaje de Programare a Robotilor Industriali
36
Limbaje de Programare a Robotilor Industriali
programarea întârzierilor
bucle de program simple
programe simple cu ramificaţii depinzând de întreruperi, semnale primite
de la senzori
funcţii speciale
Cum s-a prezentat în capitolul I, un limbaj de programare trebuie să dispună de
un univers natural propriu.Astfel pentru programarea teach-in va trebui să existe
date de tip numeric precum şi un set minimal de tip text. Fiecare funcţie poate fi
introdusă prin intermediul unei chei speciale, taste care pot fi reprezentate
printr-un şir de caractere care alcătuiesc un simbol. Simbolurile utilizate de un
limbaj de programare alcătuiesc vocabularul limbajului, regulile gramaticale
care permit combinaţii între elementele vocabularului alcătuiesc sintacsa, iar
semnificaţia simbolurilor şi a combinaşiei acestora alcătuieşte semantica
limbajului. Organizarea limbajului poartă numele de pragmatică.
Exemplu: Fie un vocabular format din următoarele simboluri:
V={limbaj,student,este,complex,blond,brunet,dificil}.
Regulile de sintaxă sunt:
a) trei elemente ale vocabularului alcătuiesc o propoziţie
b) primul element al propoziţiei trebuie să fie Limbaj sau Student
c) al doilea element al propoziţiei trebuie să fie este
d) al treilea element al propoziţiei este unul dintre simbolurile: complex, blond,
brunet,dificil.
Utilizând aceste reguli propoziţiile posibile sunt:
complex complex
dificil dificil
Limbajul este . respectiv Studentul este . Datorită semnificaţiei
blond blond
brunet brunet
37
Limbaje de Programare a Robotilor Industriali
38
Limbaje de Programare a Robotilor Industriali
1. Variabilele
a) Introducere
39
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.
40
Limbaje de Programare a Robotilor Industriali
un program poate să conţină variabile generale a căror definire are sens de-a
lungul întregului program, cät şi variabile locale care au sens numai între
începutul (begin) şi sfärşitul (end) unui bloc component al întregului program.
Cum după părerea autorului, o explicaţie grafică este mult mai clară, figura
următoare, exemplifică cele afirmate în cadrul acestui subcapitol.
BEGIN “ bloc 1 “
VAR a: INTEGER;
v: VECTOR;
.
.
.
BEGIN “ bloc 2 “
VAR c,b : INTEGER;
.
.
. c - valid
END “ bloc 2 “ b - valid
.
.
.
a,v - valid
END “ bloc 1 “
2. Subrutine
41
Limbaje de Programare a Robotilor Industriali
GOSUB SUBROUTINE 1
GOSUB SUBROUTINE 1
3. Proceduri şi funcţii
42
Limbaje de Programare a Robotilor Industriali
4. Macroinstrucţiunile
5. Recursivitatea
Distingem două tipuri de recursivitate:
* recursivitate directă - când are loc autoapelarea procedurii
* recursivitatea indirectă - când o procedură apelează o altă procedură
în
timpul execuţiei sale, procedură care la rândul
său o apelează pe prima.
În robotică nu se apelează prea des la acest tip de algoritm, însă folosirea
acestei metode duce la realizarea unor programe mult mai compacte.
Exemple:
43
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;
* în stare ready - starea premergătoare stării active şi post active;
* în stare de aşteptare a unui eveniment - waiting
Figure 11
44
Limbaje de Programare a Robotilor Industriali
45
Limbaje de Programare a Robotilor Industriali
Figure 13
46
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:
47
Limbaje de Programare a Robotilor Industriali
Figure 14
48
Limbaje de Programare a Robotilor Industriali
49
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 B3t 2 B4 t 3 B5t 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:
50
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 B3t 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 )
t n3 1.16.
1
B5 (3Fn 3Fn 1 Fn1t n )
t n4
Dacă se pun condiţiile de continuitate a acceleraţiei pentru primele două
segmente
F (t 2 ) 6 B4 t 2 12 B5 t 22
6
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 )
t3 t 2 t3 t3 t2 1.17.
Utilizând acelaşi mecanism şi pentru sfârşitul traiectoriei:
2 3 1 3 6
( ) Fn1 Fn2 2 ( Fn1 Fn 2 ) 2 ( Fn Fn1 )
t n1 tn t n1 t n1 1.18. 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:
51
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.
52
Limbaje de Programare a Robotilor Industriali
END;
END_SYSTEM_SPECIFICATION
53
Limbaje de Programare a Robotilor Industriali
54
Limbaje de Programare a Robotilor Industriali
55
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
56
Limbaje de Programare a Robotilor Industriali
B. Structuri de date
57
Limbaje de Programare a Robotilor Industriali
58
Limbaje de Programare a Robotilor Industriali
Figure 15
- fißierele -FILE. Aceste structuri de date sunt cele mai complexe
ßi mai ample atät din punct de vedere al dimensiunii pe care o
59
Limbaje de Programare a Robotilor Industriali
60
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.
61
Limbaje de Programare a Robotilor Industriali
62
Limbaje de Programare a Robotilor Industriali
Figure 16
63
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).
64
Limbaje de Programare a Robotilor Industriali
65
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.
66
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
67
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
unei
68
Limbaje de Programare a Robotilor Industriali
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,v) f 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 zecimal 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
69
Limbaje de Programare a Robotilor Industriali
70
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);
71
Limbaje de Programare a Robotilor Industriali
72
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.
73
Limbaje de Programare a Robotilor Industriali
74
Limbaje de Programare a Robotilor Industriali
75
Limbaje de Programare a Robotilor Industriali
Figure 20
76
Limbaje de Programare a Robotilor Industriali
77
Limbaje de Programare a Robotilor Industriali
B. Instrucţiuni de mişcare
C OPLA N A R
N um ele
Par a me tr i
, Ele me ntul 2 , s upr afe te i
e le me ntului 2
, a ditiona li
Figure 21
78
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.
79
Limbaje de Programare a Robotilor Industriali
MOVE #P1
SRL: SMOVE robot TO FRAMEC (VECTORC(95,20,40),
ROTC(zaxis,90)
80
Limbaje de Programare a Robotilor Industriali
81
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
82
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
83
Limbaje de Programare a Robotilor Industriali
84
Limbaje de Programare a Robotilor Industriali
Exemple:
AL: COBEGIN
MOVE ARM TO targetframe;
OPEN HAND TO 1*cm
COEND
85
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.
86
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
AL: MOVE ARM TO targetframe -explicaţia este similară celei anterioare,
WITH APPROACH=FRAME( rotation, cu deosebirea că aici modul de apropiere
este mai complex specificat: prin poziţia
vector)
şi orientarea asociată
87
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ă
88
Limbaje de Programare a Robotilor Industriali
Exemple:
89
Limbaje de Programare a Robotilor Industriali
Exemple:
90
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, - instrucţiune de deplasare efectivă a 3 cu 70 de
5 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.
91
Limbaje de Programare a Robotilor Industriali
Figure 23
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
100
Limbaje de Programare a Robotilor Industriali
101
Limbaje de Programare a Robotilor Industriali
Instrucţiune de mißcare
END_DURING
DO START warning
102
Limbaje de Programare a Robotilor Industriali
103
Limbaje de Programare a Robotilor Industriali
I. Procese în paralel
104
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
150) atunci 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.
105
Limbaje de Programare a Robotilor Industriali
106
Limbaje de Programare a Robotilor Industriali
Exemple:
Figure 24
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
107
Limbaje de Programare a Robotilor Industriali
Elemente Programul
Sistemul de vedere program utilizatorului
artificiala
Imaginea VPICTURE
captata
.
.
.
.
.
Identificarea
VLOCATE box,150
obiectului si
determinarea .
pozitiei Frame lista .
. .
. .
box .
MOVE camer a system:box
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.
108
Limbaje de Programare a Robotilor Industriali
109
Limbaje de Programare a Robotilor Industriali
este numărul 2
110
Limbaje de Programare a Robotilor Industriali
111
Limbaje de Programare a Robotilor Industriali
112
Limbaje de Programare a Robotilor Industriali
C as e 1
Ca se tes t
C as e 2
CASE
Struc tura
blocului 1
Struc tura
C as e n
blocului 2
C ase1 C ase 2 C ase n
. . . . . Struc tura
BLOC 1 BLOC 2 BLOC n
blocului n
113
Limbaje de Programare a Robotilor Industriali
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
CONDITIE
True False
BLOC 1 BLOC 2 THEN ELSE
BLOC 1 BLOC 2
114
Limbaje de Programare a Robotilor Industriali
True False
THEN CONTINUA
FALSE
BLOC 1 BLOC1
115
Limbaje de Programare a Robotilor Industriali
116
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
PRINT " corect Continua mare "
True False "
117
Limbaje de Programare a Robotilor Industriali
118
Limbaje de Programare a Robotilor Industriali
119
Limbaje de Programare a Robotilor Industriali
120
Limbaje de Programare a Robotilor Industriali
121
Limbaje de Programare a Robotilor Industriali
Programator
Robot
Figure 26
122
Limbaje de Programare a Robotilor Industriali
123
Limbaje de Programare a Robotilor Industriali
124
Limbaje de Programare a Robotilor Industriali
125
Limbaje de Programare a Robotilor Industriali
RETURN
126
Limbaje de Programare a Robotilor Industriali
127
Limbaje de Programare a Robotilor Industriali
N U ME LISTA B LOC D E
PROCEDURA PR OC ED U R A PA R A METR ILOR ; IN STRU C TIU N I
FOR WA R D
128
Limbaje de Programare a Robotilor Industriali
129
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
130
Limbaje de Programare a Robotilor Industriali
131
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).
132
Limbaje de Programare a Robotilor Industriali
VIII.Bibliografie şi referinţe
133