Sunteți pe pagina 1din 133

^ Limbaje de Programare a Robotilor Industriali

1
Cuprins
I. CONCEPTUL DE LIMBAJ. 3
A. Noiuni introductive 3
B. Exemple de comunicatori i sisteme de comunicaie. 8
C. Ierarhizarea sistemelor comunicaionale 15
D. Concluzii 18
II. ELEMENTE SPECIFICE ROBOILOR INDUSTRIALI. 20
A. Introducere 20
B. Utilizarea roboilor industriali n aplicaii industriale - Robotizarea unor aplicaii 21
C. Utilizarea informatiilor senzoriale n programarea robotilor industriali 23
D. Sistemele de programare si sistemele de comanda ale roboilor industriali 26
E. Descrierea sarcinilor pe care trebuie s le realizeze roboii industriali 28
1. Descrierea la nivelul actionarilor 29
2. Descrierea n spatiul sarcinilor 32
3. Evolutia pozititei si orientarii efectorului 32
III. ELEMENTE DE BAZ ALE LIMBAJELOR DE PROGRAMARE A
ROBOILOR INDUSTRIALI 36
A. Introducere n tematica limbajelor de programare a roboilor industriali 36
B. Elemente caracteristice limbajelor de programare destinate structurilor de calcul 39
1. Variabilele 39
2. Subrutine 41
3. Proceduri i funcii 42
4. Macroinstruciunile 43
5. Recursivitatea 43
6. Procese i corutine 44
C. Conceptele specifice Limbajului Robot 45
1. Sistem de referin - Frame 46
2. Controlul micrii robotului 47
IV. DATE I STRUCTURI DE DATE UTILIZATE N CADRUL
LIMBAJELOR DE PROGRAMARE A ROBOILOR INDUSTRIALI 53
A. Date utilizate de limbaje de programare a robotilor 53
B. Structuri de date 57
C. Moduri de manipulare a datelor 67
1. Operaii logice 67
2. Operaii de comparare 67
3. Operaii aritmetice 68
^ Limbaje de Programare a Robotilor Industriali

2
4. Operaii geometrice 68
5. Funcii standard 69
6. Expresii complexe cu anumite prioriti: 70
V. INSTRUCIUNI 73
A. Instruciuni de descriere a mediului de operare 73
B. Instruciuni de micare 78
1. Instruciunile de micare implicite. 78
2. Instruciunile de micare explicite. 79
3. Precizia poziionrii. 82
4. Tipul controlului micrii. 83
5. Instruciunile de micare care integreaz i supravegherea senzorilor. 88
C. Instruciuni de micare cu specificaii tehnologice. 91
D. Instruciuni de micare cu monitorizarea unor evenimente. 92
E. Instruciuni de comand i control a end-effectorului 94
1. Instruciuni de acionare a terminalelor cu parametrii 97
2. Instruciuni de comand a terminalului cu monitorizarea senzorilor asociai 98
F. Instruciuni dedicate lucrului cu sistemul exterioceptor 100
G. Instruciuni de configurare a sistemului senzorial 101
H. Instruciuni de micare cu controlul duratei micrii 103
I. Procese n paralel 104
J. Instruciuni destinate lucrului cu sisteme de vedere artificiale 105
K. Delimitarea programului prin intermediul blocurilor 110
L. Instruciuni de control al parcurgerii programului 111
1. Instruciuni de salt necondiionat 112
2. Instruciuni de execuie condiionat 112
3. Instruciuni cu execuii condiionate 113
4. Instruciuni cu salt condiionat 114
M. Instruciuni de sincronizare i de temporizare condiionat 118
N. Alte consideraii privitoare la tratarea situaiilor excepionale, atribute i stare sistemului 119
VI. INTEGRAREA N PROGRAM A PROGRAMRII PRIN INSTRUIRE 121
VII. SUBRUTINE, PROCEDURI I FUNCII 126
A. Blocuri cu execuie n paralel i organizarea programului sub forma unor task-uri 129
B. Task-uri 130
VIII. BIBLIOGRAFIE I REFERINE 133
^ Limbaje de Programare a Robotilor Industriali

3

I . Conceptul de limbaj.
A. Noiuni introductive

Rolul esenial pe care l joac comunicarea impune o abordare sintetic
care s permit aplicarea formalismului matematic. Astfel comunicarea conine
n esen trei tipuri de elemente fundamentale:
- comunicatorul - ca element receptor, transformator i emitor de informaie
- sistemul de comunicaie - ca structur determinat avnd ca suport clase date
de comunicatori
- informaia ca suport primar material al comunicaiei
Prin mesaj se definete mijlocul general prin care este transmis
informaia din lumea real ntre comunicatori. Mesajul are n general dou
laturi:
- latur obiectiv sau semnificaia mesajului, independent de comunicatorul
de la care pleac mesajul, respectiv de comunicatorul la care ajunge mesajul
- latur ce poart numele de obiectul sau semnificaia mesajului - notat cu
m
- o latur reprezentaional sau simbolic care depinde direct de comunicatorii
care intervin n comunicaie: receptor, respectiv transmitor - forma
mesajului - notat fm.
n concluzie mesajele vor fi notate sub forma unei perechi < m, fm >.
Comunicatorul va fi considerat pentru nceput o entitate informal care exist
Comunicatrul
X
Comunicatorul
Y
Prelucrarea
informatiei
Transmi si a
informatiei
Receptia
informatiei

Figure 1
^ Limbaje de Programare a Robotilor Industriali

4
ntr-un cadru real dat i care se caracterizeazprin faptul c este capabil s
recepioneze, s prelucreze i s transmit informaie. Spre simplificare vom
reprezenta comunicatorul prin aceste caracteristici ale sale sub forma unui graf
orientat:
Mediul real al comunicatorului C
i
( se va nota sub aceast forma
comunicatorul) este universul care poate fi afectat de C
i
sau poate afecta pe C
i
la
nivel informaional, desigur, motiv pentru care acesta va fi notat cu UN(C) -
Universul Natural al lui C sau mai simplu UN. Obiectele cu care C nu intr n
contact vor fi deci considerate a fi n afara lui UN.
n cadrul universului natural se disting la rndul lor alte dou categorii
de clase:
1. clasa obiectelor care au sens pentru comunicatorul C , adic obiectele pe care
C le recunoate dupa forma asociat ca reprezentare pentru C - notat cu M -
mesaj pe care C l poate recepiona, prelucra sau transmite
{ ( ) M m m UN C = e , iar m f
m
, este un mesaj care pote fi recepionat sau
transmis de } C
2. clasa obiectelor care nu au sens pentru C, nefiind recunoscute dup forma de
reprezentare simbolic asociat, cel putin n momentul curent.
Ca o observaie deosebit de important este faptul ca prin nvare prima
clasa poate fi extins prin asimilarea unor obiecte aparinnd celei de-a doua
clase. ncercnd introducerea formalismului matematic vom putea considera ca
fm - sensul, semantica mesajului m, se poate fi privit ca o funcie parial f
definit pe UN( C ) cu domeniul n M - clasa obiectelor cu sens pentru C i
codomeniul n F, unde F este sintaxa sau forma de reprezentare a obiectelor
din M pentru comunicatorul C. Procesul de extindere al funciei f, mai precis al
codomeniului F poart numele de nvare, funcie ce se explic prin asocierea
pentru un mesaj m din M inclus n UN( C ) a unui sens pentru C, a unui nume
^ Limbaje de Programare a Robotilor Industriali

5
simbolic care duce la extinderea lui F (nume care va purta, n continuare,
numele de reprezentarea sau semntura lui m pentru C).
Astfel pentru comunicatorul C, se va defini 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
Limbajul, ca mijloc de comunicaie, se realizeaz prin parcurgerea
urmtoarelor etape:
1) identificarea obiectelor limbajului printr-un proces de nvare
2) asocierea reprezentrilor simbolice pentru obiectele specificate la 1 sau
specificarea sintaxei limbajului
3) integrarea funciei de nvare prin identificarea obiectelor specificate la 1
cu reprezentrile lor alese la 2.
Prin prisma celor prezentate anterior se poate considera a fi perfect
determinat de universul sau natural i de limbajul su, mai precis
L M F f M F = , , : care are o anumit dinamic.
Comunicaia impune existena a cel puin 2 comunicatori C
1
-
L M F f M F
1 1 1 1 1 1
= , , : , respectiv C
2
- L M F f M F
2 2 2 2 2 2
= , , : , motiv pentru
care n continuare se vor defini condiiile ca schimbul de mesaje s aib loc:
1) comunicatorii trebuie sa aib sens unul pentru altul:
( ) ( )
C M C M
f C F f C F
1 2 2 1
2 1 2 1 2 1
e e
e e


2) comunicarea s poat s se fac prin mesaje ce pot fi nelese:
( ) ( ) UN C UN C
1 2
=
Detalierea condiiilor necesare pentru ca schimbul de mesaje s aib loc
se realizeaz prin completarea condiiilor anterioare cu urmtoarele condiii de
transformare a mesajelor m:
1) f F f F
m m
1
1
2
2
e e - semantica primului comunicator sa fie transformat intr-
o semantic ce poate fi neleas de cel de-al doilea
^ Limbaje de Programare a Robotilor Industriali

6
2) f F m M
m
2
2
e e semantica celui de-al doilea comunicator s poat reface
informaia perceput iniial de primul comunicator.
Aceste ultime dou cerine impun definirea a dou noi funcii:
- funcia translator T
i
a crui domeniul de definiie este sintaxa F
i
a limbajului
comunicatorului emiator, iar domeniul valorilor este sintaxa F
j
a limbajului
comunicatorului receptor: T F F
i i j
:
- funcia de evaluare E
i
definita pe sintaxa F
i
si domeniul valorilor M:
E F M
i i
: .
Relaional funciile definite pn n acest moment pot fi descrise prin
urmtoarea schem:

M F
1
F
2
M
E
2
E
1 f
1
f
2

Figure 2
^ Limbaje de Programare a Robotilor Industriali

7
Relaiile dintre funciile descrise anterior sunt:
f T E f E f T E f E
f T f f T f
f E id f E id
M M
1 1 2 2 2 2 2 1 1 1
1 1 2 2 2 1
2 2 1 1



= =
= =
= =
;
;
;

Concluzionnd o pereche de comunicatori C
1
, C
2
formeaz un sistem de
comunicaie dac sunt ndeplinite urmatoarele condiii:
1) C
1
si C
2
au acelai univers natural : UN(C
1
)=UN(C
2
)
2) f
1
i f
2
sunt funcii injective, iar f f
1
1
2
1
, sunt inversele lor
3) exist o pereche de funcii T F F
1 1 2
: i T F F
2 2 1
: care asigur
comutativitatea diagramei.
Un exemplu edificator n acest sens va fi ilustrat n cele ce urmeaz:
Fie doi comunicatori C
1
i C
2
specificai prin urmtoarele universe
naturale: { } { } L N f N
1 1
012 3 4 5 6 7 8 9 012 3 4 5 6 7 8 9 = , , , , , , , , , , *, : , , , , , , , , , * - acest limbaj
asociaz numerelor naturale reprezentarea zecimal
{ } { } L N f N
2 2
01 01 = , , *, : , * - acest limbaj asociaz numerelor naturale
reprezentarea binar.
n aceste condiii poate fi construit functia invers
( )
f c c c c c c c
p
p p
p 1
1
0 1 2 0 1
1
10 10

= + + + , , ; { } c c c c
p 0 1 2
012 3 4 5 6 7 8 9 , , , , , , , , , , , * e ,
respectiv
( )
f c c c c c c
q
q q
q 2
1
0 1 0 1
1
2 2

= + + + , , unde { } c c c
q 0 1
01 , , , * e . Funciile
translatoare se obin rapid, T
1
fiind reprezentarea binara a numrului zecimal (
se va aplica algoritmul de mpriri repetate pentru schimbarea bazei zecimale
n baz binar), iar T
2
fiind de fapt
( )
f c c c c c c
q
q q
q 2
1
0 1 0 1
1
2 2

= + + + , . Schema
comunicaiei ntre cele dou limbaje devine:
^ Limbaje de Programare a Robotilor Industriali

8
B. Exemple de comunicatori i sisteme de comunicaie.
Pentru nelegerea formalismului introdus anterior n continuare vor fi
prezentate cteva exemple de comunicatori si reprezentri schematice ale
sistemelor de comunicaie:
Comunicatorul uman - universul natural al acestui comunicator l
constituie universul real uman. Formele de reprezentare a acestui univers depind
de canalele senzoriale care recepioneaz realitatea. Odat receptionat
informaia, mesajul, obiectul din universul natural, aceasta este transformat n
sintax specific uman, sintax care poate permite prelucrarea dup procesul de
nvare al mesajului. Aceast operaie de nvare va permite ulterior
manipularea informaiei la nivel abstract, semantic, realizndu-se astfel
prelucrri si transformri ale informaiei, fr ca realul s mai fie prezent
efectiv. Procesul de nvare poate fi privit ca fiind realizat dup urmtoarele
etape:
1. etapa receptoare n care obiectul real este perceput pe o cale senzorial de
ctre comunicator(i)
2. etapa de transformare semantic n care comunicatorul/comunicatorii
transform informaia obinuta n prima etap n cunoatere sau mai exact
atribuie un nume sau mai exact anumite proprietai informaiei obinute n
etapa 1. Acest nume sau proprieti senzoriale permit comunicatorului sa
disting clar informaia acumulat de aceast ultim mesaj.
N
{0,1}
N
f
-1
2
f
-1
1
T
2
T
1
f
2
f
1
{0,1,2,3,4,5,6,7,8,9}

Figure 3
^ Limbaje de Programare a Robotilor Industriali

9
3. etapa de fixare a semanticii i indirect a informaiei, cnd sintaxa general
a comunicatorului este imbogit cu noua informaie. Aceast etap va
permite comunicatorului ca de acum nainte semantica dat informaiei s
fie suficient pentru transformri la nivel abstract care vor conine mesaje de
tipul celei asimilate. Aceast ultim etap poate fi reluat n cazul n care
fixarea nu are loc.
Schematic comunicarea uman poate fi structurat utiliznd urmtoarele funcii:
Pentru comunicatorul C
1
: L M F f M F
1 1 1 1 1 1
= , , : ; iar pentru comunicatorul C
2

L M F f M F
2 2 2 2 2 2
= , , : caracteristic fiind faptul ca M
1
= M
2
. Sigur c n
realitate relaia nu este general valabil, relaii de tipul M M
1 2
c sau
M M
1 2
fiind mult mai generale. Din considerente de simetrie va mai fi
introdus o funcie parial inversabil , funcie de coresponden c M M :
1 2
care
leag cele dou universuri naturale ale comunicatorilor.
Ca o caracteristic interesant referitoare la functiile de translatare i
evaluare , pentru comunicatorii umani pot apare mai multe situaii sau clase:
- Clasa comunicatorilor umani care vorbesc aceeai limb: n acest caz dac
se impune ca F
1
=F
2
, nu neaaprat i T
1
= T
2
, din motive lesne de neles,
printre care cel mai simplu este deat de existena sinonimelor, chiar pentru
comunicatori cu acceeai profesie i pregtire.
- Clasa comunicatorilor care vorbesc limbi diferite: F F
1 2
= . Caracteristic
ns procesului de comunicare uman este c contactul ntre comunicatori
duce la o situaie aparent paradoxal care dezvluie ins concomitent i
relaia : F F
1 2
= C. Acesta este cazul general, n particular relaiile sunt de
tipul: F F
1 2
sau F F
2 1
.
- Clasa comunicatorilor care aparin aceluiai domeniu sau subdomeniu al
cunoaterii umane: Aceast clas are caracteristicile ambelor clase
anterioare, avnd n plus caracteristic faptul c nivelul de abstractizare al
^ Limbaje de Programare a Robotilor Industriali

10
informaiei schimbate sau prelucrate poate fi superior realitii
senzoriale.(aa cum este cazul specialitilor n matematic,
fizic,informatic, mecanic cuantic,etc).
n aceste condiii relaia comunicaional uman poate fi reprezentat sub
forma:
M
1
M
1
M
2
M
2
F
1
F
2
f
1
f
1
-1
f
2
-1
f
2
c
c
-1
T
1
T
2

Figure 4
^ Limbaje de Programare a Robotilor Industriali

11
Comunicatorul main - comunicator uman. Sigur c acest tip de
comunicaie poate fi privit i sub aspectul main-main-comunicator uman,
datorit existenei sistemelor ierarhizate de maini, dar cum comunicaia main
nu are sens fr comunicatorul uman, vom considera cazul general de tip
comunicator masin, n care comunicatorul uman va fi subneles.
Caracteristic acestui tip de comunicaie este faptul ca universul natural al
mainii devine datorit necesarului uman ca maina sa fie o extensie a gndirii
umane, chiar elementele de semantic uman, n timp ce funcia de
coresponden c introdus anterior este o funcie proprie constructorului
mainii. Aceasta reprezint modul n care constructorul mainii (fie maina la
nivel hard, fie maina la nivel logic) a construit universul natural al mainii. De
asemenea funcia de evaluare nu mai poate fi privit n mod simplist ca o
invers a unei funcii, deoarece dac introducerea informaiei se realizeaz pe
anumite canale, emiterea informaiei dup prelucrare se realizeaz de regul pe
alte canale senzoriale. Meninnd funciile cu semnificaiile detaliate n cadrul
comunicatorului uman, schema de comunicare devine:
M
1
M
1
F
1
F
1
F
1
F
2
f
1
f
1
-1
f
2
-1
f
2
c
c
-1
T
1
T
2

Figure 5
^ Limbaje de Programare a Robotilor Industriali

12
De remarcat c n ciuda formalismului evident rezultat din analiza Figure 5,
prin care T
1
are aceeai structur cu f
2
, acestea sunt diferite intre ele: f
2
este o
funcie de transformare, n timp ce T
1
este o funcie de reprezentare.
Pentru specificarea comunicatorilor de tip main, n acelai univers natural
UN se procedeaz astfel:
- se consider o clas de comunicatori naturali specificai cu ajutorul unui
limbaj comunicator: L M F f M F
C
= , , : i se alege o structur din F
numit sistem formal asociat comunicatorului maina, astfel nct: M F
F
_ .
n funcie de posibilitile de reprezentare a obiectelor dim M
F
cu ajutorul
elementelor fizice asociate comunicatorului main se construiete sistemul
formal F
M
, care va reprezenta obiectele clasei M
F
- se definete funcia f M F
M F M
: prin care fiecrui obiect din M
F
i se
asociaz un simbol din F
M
prin intermediul funciei f
M
, considerat funcia de
reprezentare.
n aceste condiii se poate considera ca L M F f M F
M F M M F M
= , , : este
comunicatorul main.
Deoarece n construcia limbajului se ncearc extragerea unui algoritm se
propune urmtoarea procedur:
- se caut o metod de specificare a clasei tuturor obiectelor reale M pe care
comunicatorul le poate recunoate i mnui la nivel simbolic - se
construiete emantica limbajului
- se caut sintetizarea, chiar i la nivel logic, a unui dispozitiv care s genereze
clasa tuturor formelor sau semnturilor simbolice a obiectelor din M - se
construiete sintaxa
- se stabilete o regul prin care fiecarui obiect semantic i corspunde un
element sintactic - se construiete funcia: f M F
m
: , astfel ca m f
m
, s fie
un mesaj.
^ Limbaje de Programare a Robotilor Industriali

13
Cum n acest lucrare accentul se pune pe comunicarea main se va insista n
cele ce urmeaz asupra algoritmului specific limbajului main:
1) specificarea semnaticii M
F
a limbajului se reduce la specificarea unui sistem
formal care poate fi recepionat corect de comunicatorul main prin
dispozitivele de intrare de care acesta dispune. Este evident ca intre sintaxa
comunicatorului uman F si semantica comunicatorului main M
F
exista
relaia: M F
F
_ . n aceste condiii se impun dou reguli:
I. mesajele comunicatorului uman m f
m
, s fie compatibile la nivel
comunicaional cu sistemul receptor al mainii f M
m F
e .
II. semantica main s fie un sistem suficient de larg astfel ca acei
comunicatori care lucreaz cu limbajul LM s poat s i exprime
mesajele n mod natural. Se remarc c n cazul limbajelor evoluate,
comunicatorii umani aparin unor clase largi de comunicatori. n
esena se urmrte ca semantica s fie heterogen n ceea ce privete
comunicatorii umani utilizatori: se caut un simbolism S care s
serveasc drept mijloc de comunicare cu maina oricare ar fi
comunicatorul natural al unei clase C.
2) sintaxa main F
M
depinde numai de structura fizic a mainii capabil s
nmagazineze i s stocheze informaia, precum i de arhitectura sistemului
main.
3) specificarea funciei de asociere devine elementul cel mai dificil n aceast
construcie. Se reamintesc elementele definitorii ale celor dou limbaje
L M F f M F = , , : i L M F f M F
M F M M F M
= , , : precum si condiia
suplimentar M F
F
_ . Denumind ca funcie de utilizare funcia
:: F M condiiile pe care aceasta mpreun cu f trebuie s le ndeplineasc
sunt: f f
M F
= = 1 1 , funcia id este denumit funcie translatoare iar o
reprezentare grafic este:
^ Limbaje de Programare a Robotilor Industriali

14
Avnd n vedere ca dialogul se realizeaz ntre comunicatori formali
aparinnd clasei C. specificai prin L M M F f M M
F F
= _ , , : i
comunicatorul main L M F T M F
M F M F M
= , , : , diagrama de comunicaie va
avea structura:
n aceste condiii limbajul main va fi definit prin tripletul
L M F T M F
M F M F M
= , , : sau mai exact L F F id F F
M M M M M
= , , : n timp ce
tripletul L M M F f M M
P F F F
= _ , , : va purta numele de limbaj de
programare.
M F
F
M
id id
f
f
|
|

Figure 6
M M
F
F
M
M
T
-1
T
f
|

Figure 7
M
C
F
C
F
M
M
C
id
2
id
1
f
C
C
|
C
/F
n
| f
C
/F
n

Figure 8
^ Limbaje de Programare a Robotilor Industriali

15
Pentru a completa aceast discuie este normal s fie prezentat i legtura
dintre limbajul main i limbajul constructorului mainii
L M F f M F
C C C C C C
= , , : . Este evident c F F
M C
_ precum i urmtoarea
diagram:
Problemele ridicate de accesibilitatea limbajului de programare au complicat n
mod necesa funcia de translator T F F
P M
: fapt ce a dus la mrirea timpului
necesar translatrii pe de-o parte, respectiv la pierderea naturaleii limbajului pe
de alt parte.
Pentru o mai bun exploatare i nelegere a limbajelor de programare se
remarc faptul c indiferent de clasa comunicatorilor, schimbul de informaie se
refer la obiecte statice , ce vor primi numele de date, precum i la aciuni ce
trebuie exectutate asupra datelor sau asupra actor aciuni ce vor primi numele de
operaii. Generaliznd M
P
este un sistem formal n limbajul natural al clasei
comunicatorilor crora li se ofer limbajul de comunicare, sistem definit ca o
pereche: M D date O operatii
p
= , .
C. Ierarhizarea sistemelor comunicaionale
Att datele ct i operaiile pot fi considerate structurate pe dou nivele dup
urmtoarele reguli:
- Pentru date - D :
E1.exist o clas de date elementare sau primitive care au proprietatea de
afi definite prin ele nsele pentru clasa de utilizatori la care se refer
limbajul
E2.celelalte date din D sunt construcii care se aplic datelor primitive
i/sau asupra datelor neprimitive ( construcii deja realizate )
- Pentru operaii - O :
O1.exist o clas de operaii primitive care relativ la abilitatea
utilizatorului de a executa aciuni asupra datelor sunt aciuni simple
^ Limbaje de Programare a Robotilor Industriali

16
O2.celelalte operaii din O sunt construcii obinute prin compunerea
operaiilor primitive.
n cadrul limbajelor de programare, limbajelor main i nu n ultimul rnd i
n cazul limbajelor naturale se impune o structur ierarhizat, o ierarhie
exterioar a limbajelor. Pentru detalierea acestui concept, vom presupune c
sisrtemul comunicaional conine cel puin dou elemente de baz:
- un sistem iniial de nivel ierarhic zero - 0 - sistem care poate fi reprezentat
chiar de sistemul de calcul asociat comunicatorulu main
- lege prin care pornind de la un sistem de calcul dat de nivel ierarhic i se
poate trece la un sistem de calcul nou, ierarhic superior i+1.
Algoritmul ce este utilizat pentru stabilirea ierarhiei comunicaiei este
urmtorul:
- oricare ar fi un limbaj de programare dat, L M F f M F
P P P P P P
= , , : , n care
este un sistem de calcul specific unei clase de utilizatori , un limbaj de calcul
superior lui L
P
se obine acceptnd c M
P
este baz pentru un nou sistem de
calcul M
P
utiliznd legea de generare:
- datele D ale sistemului M
P
se aleg ca date primitive pentru sistemul M
P

- operaiile O ale sistemului M
P
se aleg ca operaii primitive pentru sistemul
M
P

- se formeaz un set de operaii de compunere asupra datelor sistemului M
P
.
Acestea devin operaii primitive pentru noul sistem M
P

- se formeaz un set de operaii de compunere asupra operaiilor sistemului
M
P
. Acestea devin operaii primitive asupra operaiilor pentru noul sistem
M
P

Reprezentarea grafic a aceastei ierarhizri este prezentat n figura 9.
ntre date i operaii de pe diferite nivele exist urmtoarele relaii:
Cd Pd
i i
_
+1
; Co Po
i i
_
+1
= i n 0,
^ Limbaje de Programare a Robotilor Industriali

17
Concluzionnd asupra conceptelor comunicaionale care prezint interes pentru
subiectul abordat n aceast lucrare se poate defini mediul comunicaional prin
intermediul urmtoarelor elemente:
L M F f M F
P P P P P P
= , , : - limbajul de programare asociat unei clase de
utilizatori
L M F f M F
M m m m m m
= , , : - limbajul natural al unui comunicator main dat.
Implementarea limbajului L
P
pentru comunicatorul main C
m
specificat de L
M

se nelege diagrama de comunicaie:
Sistem de nivel
i
Operatii Date
{primitive - Po
i
}
{primitive - Pd
i
}
{complexe - Cd
i
} {complexe - Co
i
}
Sistem de nivel
i+1
Operatii Date
{primitive - Po
i+1
}
{primitive - Pd
i+1
}
{complexe - Cd
i+1
} {complexe - Co
i+1
}

Figure 9
M
P
M
P
M
m
M
m
F
P
F
m
f
P
|
P
|
m
f
m
h
1
h
2
T
1
T
2

Figure 10
^ Limbaje de Programare a Robotilor Industriali

18
unde T
1
i T
2
sunt funciile reprezentare integrate n structura asociat lui F
m
,
utilizate pentru precizarea ierarhiei interne.
D. Concluzii
1. Comunicaia pentru a se desfaura necesit existena a trei elemente
principale: comunicatori, sistem de comunicaie, informaia sau mesajul
reprezentat sub forma: <m,fm>.
2. Se definete 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 informaie ntre doi comunicatori se realizeaz n anumite
condiii, rezultnd existena implicit a unor noi funcii: funcia translator
T F F
i i j
: unde F
i
este sintaxa limbajului comunicatorului emitor, iar F
j

este sintaxa a limbajului comunicatorului receptor, precum i funcia de
evaluare E F M
i i
: .
4. Comunicarea om-main are o serie de caracteristici:
- ntre sintaxa comunicatorului uman F si semantica comunicatorului
main M
F
exista relaia: M F
F
_ .
- n cadrul comunicaiei apar o serie de limbaje ntre care exist
legturi ierarhice. Ierarhia acestora este:
a) L M F f M F
M m m m m m
= , , : - limbaj main
b) L M F f M F
C C C C C C
= , , : - limbajul constructorului mainii,
relaia dintre limbajul main i limbajul constructorului cea
mai important fiind F F
m C
_
c) L M F f M F
P P P P P P
= , , : - limbajul de programare asociat unei
clase de utilizatori, unde M
P
este un sistem formal n limbajul
^ Limbaje de Programare a Robotilor Industriali

19
natural al clasei comunicatorilor crora li se ofer limbajul de
comunicare, sistem definit ca o pereche:
M D date O operatii
p
= , .
^ Limbaje de Programare a Robotilor Industriali

20
I I . Elemente specifice Roboilor Industriali.
A. I ntroducere
Principala caracteristica a robotilor este versalitatea; ei pot fi utilizati n
multe scopuri cu eforturi minime. Aceasta versalitate deriva din avantajele
oferite de structura lor fizica si de control, dar ea poate fi exploatata numai daca
robotul poate fi programat cu usurinta. n unelecazuri, lipsa unor unelte de
programare adecvate poate duce la imposibilitatea rezolvarii anumitor
probleme. n alte cazuri, costul programarii poate fi o parte semnificativa din
costul total al aplicatiei.. Din aceste motive, programarea si sistemele de
programare ale robotilor joaca un rol important n dezvoltarea roboticii.
Rolul progrmarii robotilor este diversificat si n mare masura depinde de
utilizatori. El poate fi privit din mai multe puncte de vedere:
a) al operarii robotului n ansamblu:robotul trebuie sa fie sigur si usor
de operat. Operarea usoara poate proveni n mare masura din uneltele de control
oferite de programare. Siguranta n functionarea robotului este foarte importanta
si poate fi realizata si prin intermediul sistemului de programare;
b) al aplicatiei robotului: prin intermediul programarii trebuie sa se
obtina acele elemente, acele unelte specifice sarcinilor pe care va
trebui sa le realizeze robotul n cadrul aplicatiilor n care se utilizeaza
( descrierea intr-o maniera corespunzatoare unei aplicatii date a
traiectoriilor de miscare, a functiilor pe care trebuie sa le realizeze).
c) al productivitatii: prin intermediul programarii, sistemul robot
trebuie sa devinacat mai eficient ( prin reprogramare robotul va
executa diverse sarcini, ceea ce face ca acelesi robot sa poata fi utilizat
n multe aplicatii).
^ Limbaje de Programare a Robotilor Industriali

21
B. Utilizarea roboilor industriali n aplicaii industriale -
Robotizarea unor aplicaii
Robotizarea unei aplicatii cauta sa inlocuiasca munca operatorului uman
n realizarea unor sarcini repetitive, obositoare si plictisitoare pentru cresterea
productivitatii.
Prin programarea unei aplicatii robotizate se intelege procesul de
elaborare (editare, verificare, transfer) a unui ansamblu de instructiuni
corespunzatoare atat aplicatiei respective,cat si sistemului de programare
al robotului.
Controlul poate fi executat direct de sistemul de conducere alrobotului
sau, mai general, de un sistem de conducere aflat pe un nivel ierarhic superior;
acesta coordoneaza activitatea tuturor echipamentelor din celula robotizata de
productie urmarind paralelismul si sincronizarea tuturor operatiilor efectuate.
n vederea unei clarificri a problematicii abordate, n continure, va fi
abordat i explicat n detaliu o aplicaie: preluarea unor semifabricate care pot
sosi intr-o pozitie oarecare, prelucrarea si apoi ambalarea lor.
Structura celulei robotizate care va efectua toate aceste operatii este
urmatoarea:
In cadrul acestei celule se vor executa urmatoarele operatii:
- pozitia oarecare n care sosesc semifabricatele pe banda transportoare
este determinata prin inspectie vizuala cu camera TV (in paralel se pot verifica
si detwermina eventualele defecte ale semifabricatelor );
- n functie de datele inspectiei vizuale, robotul 1 va fi adus intr-o
anumita pozitie si cu o anumita orientare corespunzatoare preluarii
semifabricatelor;
- urmeaza operatia de inchidere a dispozitivului de apucare a robotului cu
o forta adaptata la greutatea semifabricatului;
- plasarea semifabricatului n universalul masinii-unelte;
^ Limbaje de Programare a Robotilor Industriali

22
- piesele prelucrate sunt preluate de robotul 2 si depuse n cutii unde are
loc ambalarea.
Desi nu exista o metodologie unica de robotizare a unei aplicatii pot fi
totusi puse n evidenta cateva etape mai importante:
1. Analiza operatiilor care trebuie executate , stabilirea celor care pot
fi robotizate si determinarea structurii celulei robotizate( avand n vedere
datele aplicatiei s-a ajuns la concluzia ca sunt necesari doi roboti , o masina-
unealta cu comanda numerica si o banda transportoare).
2. Alegerea robotilor n functie de diferite criterii:
numarul de grade de libertate impus de complexitatea miscarilor ce trebuie
executate;
dimensiunile volumului de operare;
performantele referitoare la precizii, viteze si acceleratii, forte de strangere,
e.t.c.;
modul de programare si limbajul utilizat care trebuie sa fie cat mai simple
dar sa corespunda totusi operatiilor ce trebuie executate;
pretul de cost, amortizarea , e.t.c.;
3. Definirea si stabilirea modului de amplasare al utilajelor ( roboti,
masini-unelte, banda) care are n vedere :
- accesibilitatea efectuarii miscarilor impuse robotilor;
- spatiul liber si minimizarea riscului de coliziuni intre elementele aflate
n miscare n celula robotizata;
4. Definirea necesarului si apoi a mijloacelor de comunicare dintre
sistemele de conducere ale echipamentelor din celula; se urmareste:
- natura si modul de distributie al mesajelor;
- oportunitatea unei retele locale de comunicatie;
- posibilitatea integrarii intr-un flux informational la nivelul sectiei sau al
intreprinderii.
^ Limbaje de Programare a Robotilor Industriali

23
5. Programarea robotilor si a masinilor-unelte. Sarcinile pot fi descrise
prin relatii geometrice intre elementele terminale ale robotilir si pozitia
anumitor puncte de lucru , prin elemente geometrice(puncte, drepte, plane). n
principal, descrierea sarcinilor trebuie sa contina:
- puncte: descrise fie n spatiul coordonatelor operationale, fie n spatiul
coordonatelor articulatiilor robotului;
- traiectorii: vor fi multimi de puncte ce trebuie atinse succesiv n
miscarea robotului;
- miscari: se obtinprin asocierea traiectoriilor la diferite momente de timp;
- interactiuni cu mediul( efectuarea operatiilor de apucare cu o anumita
forta, efectuarea operatiei de ambalare).
Fiecare din etapele enumerate mai sus pot fi realizate n diferite feluri
ceea ce arata ca modul de robotizare al unei aplicatii nu este unic. De exemplu,
structura celulei de lucru poate fi alta,amplasarea utilajelor, maniera n care sunt
definite sarcinile si n care se alcatuiesc programele poate fi diferita.
Alta posibilitate de robotizare a unei aplicatii o reprezinta utilizarea
sistemelor CAD, care , prin intermediul unor elemente specifice de modelare,
analiza si optimizare , permit:
- definirea si organizarea elementelor dintr-o sectie de productie;
- implementarea si compararea diferitelor modele de roboti pentru
realizarea unor sarcini date ( modele disponibile intr-o biblioteca);
- programarea practica a miscarilor si verificarea prin simulare a
comportamentului robotilor, determinarea interferentelor co mediul respectand
restrctiile geometrice, cinematice, si dinamice,evolutia n timp.
C. Utilizarea informatiilor senzoriale n programarea
robotilor industriali
n aplicatia prezentata n capitolul 1.2 pot fi puse n evidenta mai multe
tipuri de senzori prin intermediul carora robotii isi pot desfasura activitatea:
^ Limbaje de Programare a Robotilor Industriali

24
1. Senzori de pozitie: sunt situati n articulatii si prin intermediul
informatiilor lor se pot determina n orice moment pozitiile structurii mecanice
a robotului;
2. Senzori de vedere: cu ajutorul informatiilor provenite de la camera
TV se determina pozitia si calitatea obiectelor de lucru;
3. Senzori tactili si/sau senzori de forta: sunt dispusi n incheietura
terminalului sau pe bacurile terminaluluisi permit efectuarea operatiei de
apucare sau de depunere.
Integrarea informatiilor senzoriale n buclele de comanda ale robotilor
permit efectuarea unor sarcini n universul partal cunoscut sau bine cunoscut n
care exista impotante incertitudini. Unele din aceste informatii pot fi utilizate
direct de sistemul de comanda al robotului, dar i majoritatea cazurilor, ele sunt
interpretate prin intermediul sistemului de programare caruia i se impun, din
acest punct de vedere, doua mari cerinte:
- sistemul de programare trebuie sa dispuna de "mecanisme" speciale de
intrare/iesire pentru achizitionarea datelor de la senzori; acest lucru este
rezolvat simplu n cazul limbajelor de programare de nivel inalt care au incluse
instructiuni speciale pentru lucrul cu senzori.
- sistemul de programare trebuie sa dispuna de "mecanism" de control
versatile, cum ar fi controlul fortei, pentru utilizaea informatiei senzoriale n
vederea determinarii miscarii robotului. Nevoia de specificare a parametrilor
pentru miscarile bazate pe senzori reprezinta o puternica motivatie pentru
utilizarea unor limbaje complexe de programare.
Dupa cum s-a aratat mai sus, senzorii sunt utilizati n diferite scopuri n
programarea robotilor, fiecare scop conducand la anumite cerinte impuse
proiectarii sistemelor de programare.
Exista cateva tipuri de "mecanisme senzoriale" care ar trebui incluse n
sistemele de programare:
^ Limbaje de Programare a Robotilor Industriali

25
1. initierea sau terminarea unei miscari.Multe sisteme de programare
dispun de instructiuni pentru asteptarea unui semnal binar extern inainte de
lansarea n executie a unei proceduri. Aceasta facilitate este utilizata pentru
sincronizarea robotilor cu alte utilaje.
Exemple: - preluarea unor obiecte de pe banda transportoare se face n
momentul n care acestea au ajuns n dreptul unui anumit limitator;
- nchiderea dispozitivului de apucare se face pana n momentul
n care un micro ntrerupator este "facut", ceea ce ndica realizarea contactului
dinte terminal si obiectul de lucru.
2. Alegerea ntre diferite actiuni. Daca pozitiile n care trebuie sa
ajunga robotul pentru a desfasura operatiile impuse sunt bine precizate la
nivelul programulu, strategia( prin care se intelege modul n care se executa
deplasarile avand n vedere interactiunile cu mediul ) rezulta din evaluarea
informatiilor senzoriale percepute.
Exemplu: - efectuarea operatiei de plasare a unui oboect intr-un orificiu:
terminarea operatiei depinde de rezultatele evaluarii erorilor de la senzorii de forta amplasati
la incheietura dispozitivului de apucare.
Rezulta ca sistemul de programare trebuie sa dispuna de mecanisme de
achizitie a datelor de la diferite sisiteme senzoriale( forta, pozitie, vedere) sa
execute calcule si sa ia decizii n functie de rezultate.
3. Identificarea, pozitionarea si determinarea anumitor trasaturi ale
obiectelor de lucru, ceea ce presupune utilizarea unor sisteme de vedere.
Exemplu: - cu ajtorul camerei TV se poate determina pozitia obiectului
de lucru functie de care se executa pozitia si orientarea terminalului robotului
pentru apucare.
La nivelul sistemului de programare trebuie sa existe acele facilitati, acele
mecanisme care, pe baza informatiilor de vedere, sa fie capabile sa determine
distante, pozitii.
^ Limbaje de Programare a Robotilor Industriali

26
Identificarea obiectului presupune compararea informatiei provenite de la
senzorii de vedere cuo baza de date. Aceasta identificare se poate face la nivelul
robotului sau la alt nivel, ceea ce presupune includerea n sistemul de
programare a unpr posibilitati de comunicatie cu alte calculatoare unde se afla
baza de date.
4. Miscarea adaptiva sau controlul continuu pe baza informatiei
senzoriale achizitionate de asemenea continuu.
Miscarile si eventual secventierea lor sunt deduse:
- prin interactiunea directa dintre robot si mediu ca n cazul miscarilor
complexe sau ale miscarilor coordonate ale mai multor roboti;
- prin tratarea complexa a informatiilor proximetrice multidimensionale.
Concluzionnd, putem spune ca integrarea informaiilor senzoriale
permite determinarea prin mijloace de complexitate medie sau crescuta a:
- conditiilor de executie;
- situatiilor de asteptare;
- drumurilor sau traiectotiilor ce trebuie parcurse;
- secventelor de miscari ce trebuie realizate.
D. Sistemele de programare si sistemele de comanda ale
roboilor industriali
Una dintre tendintele actuale care se refera la proiectarea si realizarea R.I.
o reprezinta disocierea operatiilor de programare a sarcinilor care trebuie sa fie
executate, de operatiile de comanda si control ale structurii mecanice care
realizeaza aceste sarcini. n acest sens, putem pune n evidenta urmtoarea
structur:
Din punct de vedere funcionare, sistemul de comand poate fi mprit pe
urmtoarele nivele:
^ Limbaje de Programare a Robotilor Industriali

27
1. Nivelul de baz: coordoneaza activitatea la nivelul articulatiilor fiind
cel care realizeaza traiectoriile de miscare si care interpreteaza informatiile de
pozitie si de viteza;
2. Nivelul al doilea este cel la care se fac transformari de coordonate si se
stabilesc acele informatii necesare generarii traiectoriilor, informatii care sunt
apoi furnizate nivelului 1.
3. Nivelul al treilea, cel mai inalt, este cel la caresarcinile ce trebuie
executate de robot trebuie impartite n miscari distincte care trebuie executate
la nivelul 1 de fiecare axa; tot la acest nivel , se efectueaza calcule matematice,
se implementeaza algoritmi, se realizeaza teste, se asigura sincronizarea
miscarilor intre ele sau cu alte canale de intrare, se realizeaza interfata cu
sistemul de intrare/iesire.
Se cauta tot mai mult obtinerea unei autonomii sporite a sistemului de
comanda fata de sarcinile referitoare la planificarea miscrilor, la corectarea
anumitor erori de miscare. n paralel cu aceasta autonomie, pentru a fi
competitive din punct de vedere al preului, multe din sistemele actuale au doar
primele doua sisteme functionale si uneori numai primul nivel. Pentru a fi
compatibile si cu toate aceste sisteme de comanda , sistemele de programare
(S.P) trebuie sa permita descrierea sarcinilor fie la nivelul articulatiilor, fie la
nivelul coordonatelor operationale, fie chiar la nivel de obiect sau obiectiv.
Legatura dintre sistemul de programare si cel de comanda se realizeaza prin
intermediul unei informatii codate care poate fi implicita, cand se refera la
generatorul de traiectorii, sau explicita cand, de exemplu, se dau anumite
pozitii, anumite forte de strangere.
Concluzii:
Aceasta tendinta de separare a sarcinilor si de utilizare a doua sisteme,
unul de programare si unul de comanda, conduce laurmatoarele avantaje:
^ Limbaje de Programare a Robotilor Industriali

28
- efectuarea operatiilor de programare se poate executa n paralel cu
miscarea robotului; dupa ce un anumit program de lucru a fost definitivat si
transferat n sistemul de comanda, n sistemul de progreamare se poate edita si
definitiva un nou program pentru sarcinile ulterioare;
- Acelasi S.P. poate fi utilizat pentru mai multi roboti, pentru transferul
programului n cadrul mai multor sisteme de comanda. Utilizarea unui S.P. la
mai multe tipuri de sisteme de comanda este posibila datorita uniformizarii
codului de transfer al informatiei;
- Avand ca obiect doar definitivarea programului, S.P. poate dispunede o
structura mai complexa - exista astfel S.P. care dispun de simulatoare grafice
pentru verificarea si corectarea miscarilor robotilor prin optimizare care
urmarescindeplinirea anumitor indicatori de performanta( timpi de executie,
consum de enegie).
- La nivelul S.P. au fost implementate limbaje de programare de nivel tot
mai ridicat, care, utilizand elemente de inteligenta artificiala , rezolva sarcini tot
mai complexe cum ar fi asamblarea automata, conducerea adaptiva, lucrul n
acelasi spatiu de operare a mai multor roboti cu evitarea sarcinilor si
coordonarea miscarilor, e.t.c.
E. Descrierea sarcinilor pe care trebuie s le realizeze
roboii industriali
Descriera unei sarcini ( task ) poate fi exprimata n termenii actiunii robotului
asupra mediului n care opereaza si determina evolutia n timp:
- daca aceasta evolutie este cunoscuta apriori se va descrie o succesiune
de actiuni. Realizarea acestor actiuni (deplasari, operatii cu obiecte ) poate fi
analizata n termenii "succesului" sau "esecului". Daca se ia n consideratie si
esecul(detectia unui obstacol, pierderea unui obiect transportat) trebuie inclus n
descrierea de solutii alternante , adaptive. Daca nu, toate actiuniletrebuie sa
serealizeze cu succes;
^ Limbaje de Programare a Robotilor Industriali

29
- n caz contrar, va fi un S.P. care va determina actiunile care vor trebui
executate de robot pentru a realiza sarcinile impuse.
Practic, pot fi puse n evidenta doua tipuri de descriere a sarcinilor:
1. Descrierea spatio-temporala, numita si descriere la nivelul manipularii
unde se pot identifica doua subnivele de programare:
- programare la nivelul actionarii ( articulatiei );
- programare la nivelul efortului ( n spatiul sarcinilor);
2. Descrierea fractionala, numita si descrierea la nivelul sarcinii unde, de
asemenea exista doua subnivele:
- programare la nivelul obiectului (actiuni simbolice cu obiecte);
- programare la nivelul obiectivului(ajungerea n anumite stari dorite);
In continuare vor fi analizate caracteristicile descrierilor sarcinilor pentru
fiecare din cele patru nivele de programare.
1. Descrierea la nivelul actionarilor

Coordonatele generalizate q
i
(sau coordonatele interne generalizate) ale
unui robot, sunt deplasarile liniare sau unghiulare care se realizeaza la nivelul
articulatiilor i din structura mecanica a robotului.
q Q
i
n
e unde
n- numarul articulatiilor dintr-o structura;
Q- spatiul coordonatelor interne sau spatiul manipulatorului;
In spatiul Q
n
o traiectorie C este apecificata printr-o suita ordonata de "p"
vectori de coordonate interne q
i
:
C=( q
1
q
2
,...,q
p
)
Fiecarui segment Aq q q
i i i
=
+1
ii este asociata o viteza (deplasarea C(t))
care este n general un procent din viteza maxima articulara:
a axelor care se deplaseaza simultan (cnd micrile manipulatorului sunt
coordonate);
^ Limbaje de Programare a Robotilor Industriali

30
a axei comandate ( cand miscarea se face succesiv pe fiecare axa ).
Legea de comanda - daca exista- permite determinarea perioadei de timp
n care se parcurge un segment tinand cont de restrictiile cinematice de viteza si
acceleratie ( ,
max max
q q ).
a) Traiectoria punct cu punct

Traiectoria manipulatorului intre extremitatile segmentului trebuie
determinata astfel incat sa se obtina anumite variatii de viteza si acceleratie n
punctele de plecare si de oprire. De asemenea, pentru comanda si realizarea
deplasarii intre punctele q
i
si q
i+1
se face o impartire a intregului segment n
distante comparabile cu deplasarile maxim admisibile oq
i
de la nivelul
articulatiilor intr-o perioada de esantionare dt a sistemului de conducere. n
acest caz, pentru ajungerea la o anumita cota, se va introduce o frnare prin
diminuarea deplasarilor oq
i
n aproprierea punctului final.
Pentru controlul evolutiei variabileleor q si q exista mai multe metode
care utilizeaza modele analitice de evolutie q(t) si care se realizeaza n principal
prin interpolare poinomiala sau trigonometrica.
b) Traiectorii cu restrictii

Daca configuratiile q
i
si q
i+1
sunt apropiate, traiectoria urmata de robot
este n general robusta din punct de vedere al variatiilor de viteza sau de sarcini
transportate. Pe de alta parte, introducerea de puncte intermediare devine
indispensabila atunci cand ne referim la deplasari mari sau cand intervin diverse
perturbatii, cum ar fi cele de origine dinamica; acestea se numesc traiectorii cu
restrictii.
Aceste puncte de trecere cu viteza diferita de zero sunt introduse prin
programare. Prin ele se realizeaza, de exemplu, esantionarea traiectoriilor
carteziene cand descrierea sarcinilor sunt transferate la nivelul actionarii.
^ Limbaje de Programare a Robotilor Industriali

31
Din punct de vedere al programarii, este important sa se cunoasca cum
sunt interpretate aceste ordine, acele puncte, de catre generatorul de traiectorii
al controlerului. De exemplu, daca se alege drept criteriu de performanta
minimizarea timpului de parcurs, atunci:
- traiectoria generala trebuie sa treaca exact prin aceste puncte
intermediare introduse;
- continuitatea vitezelor q
.
i
si a acceleratiilor q
..
i
n aceste puncte este
asigurata prin cmanda ( desi mecanismele de transmitere a miscarii actioneaza
ca niste filtre naturale, ele nu sunt suficiente pentru a obtine un raspuns
amortizat convenabil).
Pentru generarea traiectoriilor se pot utiliza:
1. Metoda prin care se determina un polinom de grad minim care trece
prin toate punctele traiectoriei si respecta, verifica, conditiile de viteze si
acceleratii. Aceasta metoda numita si interpolare globala sre doua dezavantaje
mari:
- gradul polinomului necesar creste cu numarul configuratiilor;
- introducerea unui nou punct sau modificarea unei configuratii impune
determinarea unui nou polinom( lucru dificil cand aceste modificari se fac on-
line).
2. Metoda interpolarii pe tronsoane la care se determina cate un polinom (
de grad maxim 4 ) pentru fiecare pereche de puncte.
3. Metoda lui Paul, de ordinul II , care utilizeaza interpolarea liniara si
tranzactii parabolice si care este cel mai frecvent utilizata.
Reprezentarea sarcinilor n spatiul articulatiilor prezinta cateva avantaje
cu privire la generarea traiectoriilor:
nu sunt depasiri ale restrictiilor de viteze si acceleratii;
se cunosc exact limitele articulatiilor ;
nu sunt singularitati care trebuie transformate;
^ Limbaje de Programare a Robotilor Industriali

32
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.
2. Descrierea n spatiul sarcinilor
n general se cauta sa se realizeze o descriere a miscarii robotului n
spatiul operatoinal R
m
deoarece:
- descrierea spatiului si a pozitiei obiectelor n vederea manipularii lor
este mult mai simpla n acest spatiu decat n Q
n
( de exemplu, pozitia unui
punct n sistemul cartezian R
3
este data doar de trei coordonate);
- spatiul R
m
este un spatiu afin euclidian ceea ce semnifica faptul ca
evolutia poate fi descrisa intr-o maniera unica si continua;
- sarcinile sunt descrise intr-un sistem de referinta care nu este legat de
robot. Sarcina la nivelul efectorului este portabila , ceea ce insemna ca ea poate
fi efectuata si de alti roboti sau ca robotul poate fi deplasat fara sa existe
consecinte n expresia sarcinii;
- informatiile provenite de la sistemul exterioreceptiv ( camere TV,
senzori de forte, e.t.c.) solidar cu spatiul de operare, sunt mereu exprimate n
termenii unor distante, proiectii sau componente n R
m
. Doar senzorii
proprioreceptivi , legati de articulatii, dau informatii simple n Q
n
.
In schimb, este destul de dificil a defini o metoda care tine explicit cont
de redundanta robotului n raport cu o anumita sarcina.
3. Evolutia pozititei si orientarii efectorului
Obs.: n loc de pozitie si orientare se utilizeaza des termenul de situatie.
^ Limbaje de Programare a Robotilor Industriali

33
Programarea deplasarilor n spatiul situatiilor necesita o descriere
geometrica a traiectoriei C=(p
1
, p
2
, ..., p
n
); (vom vorbi de traiectoria
operationala a efectorului). Aceasta descriere poate fi completata cu o lege
functie de timp sau cu restrictii cinematice ale punctelor intermediare p
i
. De
asemenea , daca parametrul timp este specificat explicit, se poate defini
miscarea operationala sub forma :
C(t)=(p
1
(t), p
2
(t), ... , p
n
(t))
a) Utilizarea legaturilor mecanice
Utilizarea legaturilor mecanice permite definirea relatiilor ce se stabilesc
intre sistemul de referinta asociat terminalului robotului si entitatile geometrice
ce caracterizeaza spatiul de operare. Acestea vor permite reprezentarea
restrictionarii gradelor de libertate ale situatiei atinse( pozitiv, de exemplu).
b) Descrierea traiectoriilor operationale
Daca nici o restrictie cinematica nu este atasata descrierii geometrice a
sarcinii, legea de miscare rezultanta este obtinuta aposteoric n functie de
metodele de generare ale traiectoriilor utilizate de sistemul de comanda. n acest
caz, daca esteexecutabila, traiectoria va fi parcursa n timp minim , singurele
restrictii fiind limitele maxime ale vitezelor q
.
max
si acceleratiilor q
..
max
din
articulatii:
(1) Traiectorii libere

Traiectoria C este numita libera sau punct cu punct, daca descrierea se
rezuma la o situatie ce trebuie atinsa. Traiectoriile libere sunt utilizate n cazul
miscarilor grosiere, de mare amplitudine , sau cand se cauta optimizarea
timpului de parcurs.
^ Limbaje de Programare a Robotilor Industriali

34
(2) Traiectorii cu restrictii

In majoritatea cazurilor se cauta controlarea traiectoriei efectorului n
mod continuu (traiectorii analitice) sau punctual (puncte de trecere). Aceasta va
permite :
1) Limitarea riscului de ciocnire :
daca exista cai comtinue, n spatiul Q
n
, libere de coliziuni;
daca toate gradele de libertate ale robotului sunt fixate prin pozitita si
orientarea efectorului;
daca este posibil ,in cazul descrierii sarcinii , sa se impuna o anumita
configuratie a manipulatorului , dintre mai multe posibile;
Atunci este posibil sa se descrie un drum liber printr-o traiectorie continua n
R
m
.
2) Realizarea unor miscari care sa raspunda precis restrictiilor de pozitie
si/sau orientare de-a lungul parcursului efectuat.
Descrierea traiectoriilor cu restrictii se poate face :
1) Prin specificarea punctelor de trecere n spatiul operational;
2) Prin specificarea interpolarii liniare sau circulare a situatiei n care
traiectoria este esantionata:
- fie prin incrementi constanti (Ax
p
, Ax
0
); (pozitie si orientare) intre
situatia initiala si cea finala;
- fie prin metoda liniarizarii lui R. Taylor care presupune divizarea
repetat a segmentului rectiliniu ce trebuie parcurs , pana este satisfacut un
anumit criteriu cum ar fi abaterea de la traiectorie; se cauta astfel ca numarul
punctelor de trecere sa fie crescut numai n zonele n care mici variatii Aq
conduc la variatii imprtante Ax.
^ Limbaje de Programare a Robotilor Industriali

35
Concluzia: - daca traiectoria este exprimata analitic , atunci sistemul de
programare trebuie sa o transforme numeric n elemente de deplasare admise de
sistemul de control ( puncte de trecere sau segmente interpolate).
c) Miscari n spatiul operational
Se poate face o analogie intre traiectoriile si miscarile din spatiul
operational (spatiul sarcinilor pe care trebuie sa le realizeze robotul) cu ceea ce
a fost prezentatmai sus pentru spatiul ariculatiilor:
O deplasare C(t) rezulta prin asocierea unei legi de timp la o traiectorie C,
punct cu punct sau cu restrictii. Generarea unei traiectorii n spatiul operational
presupune definirea unor parametri de viteza si acceleratie n spatiu, maxim
admisi , liniari si unghiulari legati de sistemul de referinta asociat terminalului.
Controlul evolutiei vitezei instantanee , atat liniare cat si unghiulare, se
realizeaza cu modelul variational ( diferential):
( )
dx
dt
J q
dq
dt
= -
unde J(q) reprezinta Jacobianul structurii mecanice.
Observatie - deoarece legatura dintre incrementul Dx al situatiei si
traiectoriei este ( ) x x C t t + = + A A , rezulta ca valabilitatea modelului de mai
sus este legata direct de perioada de eantionare.
^ Limbaje de Programare a Robotilor Industriali

36
I I I . Elemente de baz ale l imbajelor de programare a
roboilor industriali
A. I ntroducere n tematica limbajelor de programare a
roboilor industriali
Dup cum s-a observat din problematica abordat n capitolele anterioare
limbajele de programare prezint o serie de particulariti, care aplicate n
cadrul structurilor robotice se concretizeaz n limbaje de sine stattoare care
nglobeaz elementele definitorii ale ambelor domenii: limbajele de programare
destinate structurilor de calcul, respectiv structurile mechatronice de tip roboi
industriali.
Programarea roboilor se poate realiza prin mai multe metode care s nu implice
obligatoriu utilizarea unui limbaj de programare. Dintre acestea se amintesc:
a) programarea manual - n care se precizeaz succesiunea micrilor prin
intermediul unor elemente senzoriale care definesc momentul opririi
deplasrii
b) programarea prin instruire - robotul este deplasat n punctele dorite de
ctre programator fr acionarea motoarelor structurii robotice
c) programare secvenial - este o programare prin instruire realizat cu
acionarea motoarelor structurii robotice.
d) programarea master-slave - este o programare prin instruire care utilizeaz
un model ce este nvat traiectoria, pentru ca apoi programul s fie
transferat master-ului
Singura procedur de programare care implic utilizarea unui limbaj de
programare dedicat este procedura de programare prin nvare - teach in
procedure. Avantajele acestei metode sunt materializate prin opiuni privind:
- viteza de micare
- durata micrii
^ Limbaje de Programare a Robotilor Industriali

37
- programarea ntrzierilor
- bucle de program simple
- programe simple cu ramificaii depinznd de ntreruperi, semnale primite
de la senzori
- funcii 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 funcie poate fi
introdus prin intermediul unei chei speciale, taste care pot fi reprezentate
printr-un ir de caractere care alctuiesc un simbol. Simbolurile utilizate de un
limbaj de programare alctuiesc vocabularul limbajului, regulile gramaticale
care permit combinaii ntre elementele vocabularului alctuiesc sintacsa, iar
semnificaia simbolurilor i a combinaiei acestora alctuiete semantica
limbajului. Organizarea limbajului poart numele de pragmatic.
Exemplu: Fie un vocabular format din urmtoarele simboluri:
V={limbaj,student,este,complex,blond,brunet,dificil}.
Regulile de sintax sunt:
a) trei elemente ale vocabularului alctuiesc o propoziie
b) primul element al propoziiei trebuie s fie Limbaj sau Student
c) al doilea element al propoziiei trebuie s fie este
d) al treilea element al propoziiei este unul dintre simbolurile: complex, blond,
brunet,dificil.
Utiliznd aceste reguli propoziiile posibile sunt:
Limbajul este
complex
dificil
blond
brunet
. respectiv Studentul este
complex
dificil
blond
brunet
. Datorit semnificaiei
n limba romn se observ, eliminnd sensurile indirecte, c ultima regul
trebuie prelucrat sub forma:
^ Limbaje de Programare a Robotilor Industriali

38
d) al treilea simbol al propoziiei este:
- 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 influennd total
semantica propoziiei. n continuare vor fi prezentate caracteristicile limbajelor
de programare pentru sistemele de calcul cu particularitile pe care le prezint
n cazul roboilor industriali.
^ Limbaje de Programare a Robotilor Industriali

39
B. Elemente caracteristice limbajelor de programare
destinate structurilor de calcul

n cadrul limbajelor de programare se disting clar cteva categorii de
elemente care intr n alctuirea limbajului. Dintre acestea se pot aminti:
* simbolurile limbajului
* cuvintele simbol
* date de tip obiect ( care au o anumit semnificaie n funcie de
context)
* structurile de date
* operaiile asupra datelor
* algoritmul.
Dac aceast clasificare este cuprinztoare din punct de vedere
funcional, n cele ce urmeaz se vor prezenta elementele unui limbaj clasic de
programare , din punctul de vedere al utilizatorului, sau mai corect din punct de
vedere conceptual:
1. Variabilele
a) Introducere

Acest concept s-a impus n robotic, n special, datorit informaiilor
preluate de ctre senzori (realizndu-se astfel achiziia informaiei de mediu,
oferit de ctre senzori), respectiv datorit informaiilor prelucrate de ctre
arhitectura de comand i control a robotului.
O variabil este deci identificat printr-un nume i aparine unui
anumit tip simplu, implicit limbajului de programare (logic, aritmetic, cuvnt)
sau unui tip compus definit de programator. Ca orice dat folosit de un
calculator o variabil dispune de o adres a variabilei i coninutul acesteia.
Din punct de vedere al rapiditii de execuie a programului se
prefer pentru adresare, adresarea relativ, generndu-se un tabel de simboluri
^ Limbaje de Programare a Robotilor Industriali

40
n care intr numele variabilelor i adresele relative ale acestora. Contorizarea
acestora se face pe baza unui numrtor care este incrementat la fiecare
introducere a unei noi variabile cu numrul de bii necesari memorrii variabilei
de tipul respectiv.
Exemple:
Instruciune Lungime
instruciune
Nume Adres relativ
unu, p1: INTEGER; 2 byti unu 0
total, pozitie: REAL; 14 byti p1 2
total 4
poziii 8

Un alt tip de variabile este cel al variabilelor tabelare sau tip bloc. Acest
tip, mai ales pentru limbajele de programare a roboilor, este deosebit de des
ntlnit i ofer o compactitate deosebit programelor, precum i o economie de
memorie.

Exemple: MOVE (63, 56.5, 33.8, 26,45,5) sau
VAR P1: FRAME (structuri de 6 valori)
MOVE P1

O structur particular de variabile este stiva. Aceasta este
constituit dintr-un masiv de memorie n care datele sunt nscrise dup
procedura LIFO (Last in, first out). Dac o dat este introdus (push) n stiv,
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 colecie de date de tip FIFO.
b) Evoluia variabilelor de-a lungul programului

Datorit programrii structurate, care este utilizat i n robotic se
pune problema valabilitii, vieii, variabilelor de-a lungul programului. Astfel
^ Limbaje de Programare a Robotilor Industriali

41
un program poate s conin variabile generale a cror definire are sens de-a
lungul ntregului program, ct i variabile locale care au sens numai ntre
nceputul (begin) i sfritul (end) unui bloc component al ntregului program.
Cum dup prerea autorului, o explicaie grafic este mult mai clar, figura
urmtoare, exemplific cele afirmate n cadrul acestui subcapitol.

BEGIN bloc 1
VAR a: INTEGER;
v: VECTOR;
.
.
.

BEGIN bloc 2
VAR c,b : INTEGER;
.
.
.
END bloc 2

.
.
.
END bloc 1



Un alt avantaj al programrii structurate este datorat alocrii
dinamice de memorie prin separarea programului n blocuri componente. Astfel,
dac este apelat blocul 1, la terminarea operaiilor specifice, variabilele din
acest bloc sunt terse la nivel de memorie alocat i n acelai spaiu 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
uor.
2. Subrutine

Dac un program prezint anumite zone care se repet, eventual cu
ali parametrii, se poate utiliza o structur de tip subrutin. Aceasta poate fi
a,v - valid
c - valid
b - valid
^ Limbaje de Programare a Robotilor Industriali

42
chemat din orice punct al programului, urmnd ca ntoarcerea dup execuia
subrutinei s se fac la instruciunea imediat urmtoare apelului subrutinei.
Aceast adres, adresa de ntoarcere este salvat ntr-o structur de tip stiv,
alocarea memoriei fiind de asemenea o alocare dinamic.

Program main program
declaraii
SUBROUTINE 1;

RETURN intoarcerea din prima subrutina


GOSUB SUBROUTINE 1

GOSUB SUBROUTINE 1



Un caz particular de autoapelare a subrutinei este cazul
recursivitii.
3. Proceduri i funcii

n esen o procedur sau o funcie sunt o extensie a conceptului de
subrutin, acestea fiind de fapt subrutine cu parametri de intrare i/sau de ieire.
Procedura dispune deci de un nume, de parametru de intrare i/sau ieire care
pot fi transmii ctre programul principal i un corp al procedurii n care se
efectueaz operaii aritmetico-logice. n corpul procedurii pot fi utilizate i alte
variabile interne care la ieirea din procedur vor fi piedute. O caracteristic
important este dat de faptul c la definirea procedurii, parametrii de
intrare/ieire sunt parametri formali urmnd ca la nlocuirea lor cu cei din apel
^ Limbaje de Programare a Robotilor Industriali

43
s devin parametri efectivi. Apelul procedurilor i funciilor difer de cel al
subrutinelor n timp ce revenirea este identic.
n cazul procedurilor, modul n care sunt furnizai parametrii de
ieire trebuie s fie studiat cu atenie. Dac ns operaiile asupra datelor de
intrare nu sunt prea complexe, iar ieirea se face pe o variabil se apeleaz la
conceptul de tip funcie.
4. Macroinstruciunile

n general acest tip de pseudoprocedur definete substituirea unor texte
sau tablouri. Structura standard cuprinde o definiie a macro-ului, mai precis
alocarea unui nume setului care va fi substituit i un corp al macro-ului ce
definete o secven de caractere sau apelul la alte ,,macro-uri. Apelul unei
macroinstruciuni se face prin numele ataat care are ca efect nlocuirea acestuia
cu corpul macroinstruciunii.
Exemple:
DEFINE inch = # * 2.54 * cm # ;
distance := base + 35 inch; { echivalent cu distance:=base + 35 * 2.54
cm;}
5. Recursivitatea
Distingem dou tipuri de recursivitate:
* recursivitate direct - cnd are loc autoapelarea procedurii
* recursivitatea indirect - cnd o procedur apeleaz o alt procedur
n
timpul execuiei sale, procedur care la rndul
su 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:
^ Limbaje de Programare a Robotilor Industriali

44

Procedura A

Call A
recursiv
Procedura A

Call B







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 relaie temporal sau interdependent.
Astfel un proces poate fi:
* n stare inactiv -dormant state - cnd procesul poate fi declanat fie
de alt proces, fie de un eveniment extern. Acesta poate fi executat sau nu
n paralel cu alt proces sau poate atepta terminarea altui proces.
* n stare activ cnd este executat;
* n stare ready - starea premergtoare strii active i post active;
* n stare de ateptare a unui eveniment - waiting

Figure 11
Figure 12
^ Limbaje de Programare a Robotilor Industriali

45
Corutinele sunt imagini ale planificrii proceselor la nivelul sistemului de
operare. Acestea pot fi declanate n serie sau n funcie de comenzile de
ntrerupere generate.
Datorit acestora, ct i a modului n care procesele trebuie
s aib loc apare termenul de sincronizare i implicit de variabile de
sincronizare. Acestea prin aprinderea (activarea) lor (mai poart numele
de steaguri-flag sau semafor) sesizeaz unui alt proces faptul c procesul
urmrit de respectiva variabil s-a terminat sau a nceput, urmnd ca alt
proces s fie iniializat, pus n stare de ateptare sau terminat.
C. Conceptele specifice Limbajului Robot

Robotica s-a impus i se impune ca un domeniu aparte n tiin situndu-se
la grania dintre mai multe discipline: mecanic, electronic, automatic,
programare. Aceast poziie implic revendicarea unor termeni specifici care s
permit:
1. o mai uoar operare i programare pentru operator;
2. o apropiere ct mai strns cu programarea clasic;
3. reducerea complexitii n cazul dezvoltrii sistemului.
Specificul limbajelor de programare a roboilor este acela c obiectele cu care
acesta opereaz se afl ntr-o lume real, n care distanele, poziiile i
orientarea sunt elemente de baz. Aceste cerine au implicat o serie de
particulariti i termeni specifici.
^ Limbaje de Programare a Robotilor Industriali

46
1. Sistem de referin - Frame

Figure 13
^ Limbaje de Programare a Robotilor Industriali

47
Orientarea i poziia end-effectorului i a ntregii arhitecturi robotice este
definit ca fiind poziia robotului respectiv orientarea acestuia. Acestea sunt
definite n funcie de un sistem referenial de baz
Cum robotul sau anumite elemente ale arhitecturii acestuia sunt n micare, se
pot ataa sisteme de referin fiecri element, orientarea i poziia acestuia
putnd fi exprimat fie relativ la baz, fie la elementul inferior. Desigur ca cea
de-a doua form duce la o exprimare relativ, care prin compunere o poate
genera pe cea referitoare la baza sistemului.
Algoritmul Denavit-Hartenberg, transformrile relative de baz, operatorul
omogen i cteva exemple ale folosirii acestora sunt prezentate n [12,13,14,15].
Din punctul de vedere al poziionrii robotului, modul de definire al
punctului int (dorit) nu are prea mult relevan, deoarece comanda robotului
se face la nivel de articulaie. Pentru astfel de comand este necesar
determinarea corelaiei care trebuie s existe ntre coordonatele robot ce
trebuiesc alocate fiecrei articulaii i poziia i orientarea final. Aceast
corelaie poart numele de cinematic invers i este prezentat i exemplificat
n [15,16,19].
2. Controlul micrii robotului

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 utiliznd diverse metode de interpolare: liniar,
circular sau parabolic. La rndul ei interpolarea se poate realiza fie la nivelul
articulaiilor robotului, fie la nivelul sistemului cartezian. Diversele modaliti
de interpolare i traiectoria rezultant pentru un robot cu dou articulaii de
rotaie sunt prezentate n figurile urmtoare:
^ Limbaje de Programare a Robotilor Industriali

48



Figure 14
^ Limbaje de Programare a Robotilor Industriali

49
Datorit faptului c acest aspect, al interpolrii, i gsete o larg
aplicabilitate n cadrul programrii roboilor n continuare va fi detaliat
utilizarea spline function utiliznd metoda Ho i Cook:
Ecuaia unui segment spline (de ordin 3) care trece prin dou puncte
intermediare F
k
i F
k+1
(2<k<n-2) pentru o traiectorie care conine n puncte (i
este aproximat prin n-1 segmente spline) este:
3
4
2
3 2 1
) ( t B t B t B B t F + + + =
1.
1.

unde F(t) reprezint poziia articulaiei exprimat ca funcie de timp.
Dac t variaz ntre 0 i t
k+1
se pot exprima condiiile la limit sub forma:
1 1
1 1
) ( ) 0 (
) ( ) 0 (
+ +
+ +
' = ' ' = '
= =
k k k
k k k
F t F F F
F t F F F

1.
2.

unde F
k
, F
k+1
reprezint viteza articulaiei n respectivul punct (F
k
i
F
k+1
).
nlocuind 1.2 n 1.1 se obine:
1
2
1 4 1 3 2 1
1
3
1 4
2
1 3 1 2 1 1
2
1
3 2 ) (
) (
) 0 (
) 0 (
+ + + +
+ + + + +
' = + + = '
= + + + =
' = = '
= =
k k k k
k k k k k
k
k
F t B t B B t F
F t B t B t B B t F
F B F
F B F

1.
3.

Rezolvnd aceste ecuaii n vederea determinrii lui B
3
i B
4
, utiliznd
apoi forma lui B
1
i B
2
obinem:
(

' + ' +

=
(

' '

=
+
+
+
+
+
+
+
+
1
1
1
2
1
4
1
1
1
1
3
) ( 2 1
2
) ( 3 1
k k
k
k k
k
k k
k
k k
k
F F
t
F F
t
B
F F
t
F F
t
B

1.
4.

sau mai compact:
(
(
(
(
(
(
(

'
'
(
(
(
(
(
(


=
(
(
(
(
(
(

+
+
+ + + +
+ + + +
1
1
2
1
2
1
3
1
3
1
1 1
2
1
2
1
4
3
2
1
1 1 2 2
1 2 3 3
0 1 0 0
0 0 0 1
k
k
k
k
k k k k
k k k k
F
F
F
F
t t t t
t t t t
B
B
B
B

1.
5.

Pentru calcularea coeficienilor spline, vor trebui determinate iniial valorile F
k

, F
k+1
la momentul t
k+1
.Vom considera , pentru simplificare, ca t
k+1
va fi o
valoare msurat n uniti temporale, calculat sub forma:
2
1
1
2
, 1 , 1
) (
(

=

=
+ +
m
i
k i k i k
q q t

1.
6.

^ Limbaje de Programare a Robotilor Industriali

50
Utiliznd 3 puncte intermediare t, tk+1 i tk+2 se pot determina vitezele
utiliznd i condiiile de continuitate a acceleraiilor la sfritul primului
segment spline (1.7), respectiv la nceputul celui de-al doilea segment
spline(1.8):
(

' '

+
(

' + ' +

=
+ = ' '
+
+
+
+
+
+
+
+
+ +
1
1
1
1
1
1
1
1
1 4 3 1
2
) ( 3 2 ) ( 2 6
6 2 ) (
k k
k
k k
k
k k
k
k k
k
k k
F F
t
F F
t
F F
t
F F
t
t B B t F

1.
7.


(

' '

= = ' '
+ +
+
+ +
+
2 1
2
1 2
2
3
2
( 3 2
2 ) 0 (
k k
k
k k
k
F F
t
F F
t
B F

1.
8.

Din egalarea celor dou ecuaii (condiia de continuitate) rezult:
| |
k k k k k k
k k
k k k k k k k
F F t F F t
t t
F t F t t F t + = ' + ' + + '
+ + + + +
+ +
+ + + + + + 1
2
2 1 2
2
1
2 1
2 1 1 1 2 2
( ) (
3
) ( 2

1.
9.

Exprimnd aceast ecuaie pentru
2 3 s s k n
se obine:
| |
| |
| |
(
(
(
(
(
(
(
(
(
(
(

+
+
=
(
(
(
(
(
(
(
(

'

'
'
(
(
(
(
(
(
(
(

+



+
+



) ( ) (
3
) ( ) (
3
) ( ) (
3
) ( 2 0 0
0 ) ( 2 0
0 0 ) ( 2
3 2
2
1 2 1
2
2
1 2
3 4
2
5 4 5
2
4
5 4
2 3
2
4 3 4
2
3
4 3
1
3
2
2 1 2 1
4 5 4 5
3 4 3 4
n n n n n n
n n
n n n n n
F F t F F t
t t
F F t F F t
t t
F F t F F t
t t
F
F
F
t t t t
t t t t
t t t t

1.
10.

sau simbolic [A][X]=[B] ([m][F]=[a]) . Rezolvnd ecuaia 1.10 obinem toate
informaiile necesare construciei segmentelor spline de aproximare a
traiectoriei, cu condiia cunoaterii condiiilor la limit ( la inceputul micrii i
la sfritul micrii).
Dac se utilizeaz o funcie spline de ordinul 4 de forma:
4
5
3
4
2
3 2 1
) ( t B t B t B t B B t F + + + + =

1.
11.

avnd condiiile la limit: F F F F
n n
' " ' "
1 1
0 = = = =

1.
12.

Urmnd aceeai procedur se obine:
^ Limbaje de Programare a Robotilor Industriali

51
2
3
2 5
2
2 4 2
2
4
2 5
3
2 4 1 2
3
2
1 1
4 3 ) (
) (
0 2 ) 0 (
0 ) 0 (
) 0 (
F t B t B t F
F t B t B F t F
B F
B F
F B F
' = + = '
= + + =
= = ' '
= = '
= =

1.
13.

respectiv rezolvnd acest sistem pentru determinarea lui B
4
i B
5
:
2
3
2
2 1
4
2
5
2
2
2
1 2
3
2
4
1
) (
3
1
) (
4
F
t
F F
t
B
F
t
F F
t
B
' + =
' =

1.
14.

Utiliznd condiiile la limit se obine:
2
5 4 3
3
5
2
4 3 1
4
5
3
4
2
3 1 1
1 2
1 1
12 6 2 0 ) (
4 3 2 0 ) (
) (
) 0 (
) 0 (
n n n
n n n n n
n n n n n n n n
n
n
t B t B B t F
t B t B t B F t F
t B t B t B t F F F t F
F B F
F B F
+ + = = ' '
+ + + ' = = '
+ + + ' + = =
' = = '
= =


1.
15.

Rezolvnd aceste ecuaii se determin coeficienii:
) 3 3 (
1
) 3 8 8 (
1
) 3 6 6 (
1
1 1
4
5
1 1
3
4
1 1
2
3
n n n n
n
n n n n
n
n n n n
n
t F F F
t
B
t F F F
t
B
t F F F
t
B



' =
' + + =
' =

1.
16.

Dac se pun condiiile de continuitate a acceleraiei pentru primele dou
segmente
| | | |
2 2 2 1
2
2
2 2 1 2
2
2
2
2 5 2 4 2
) ( 3
12
) ( 4
6
12 6 ) ( F t F F
t
F t F F
t
t B t B t F ' + + ' = + = ' '
rezult:
) (
6
) (
3 1
)
3 2
(
1 2
2
2
2 3
2
3
3
3
2
2 3
F F
t
F F
t
F
t
F
t t
+ = ' + ' +

1.
17.

Utiliznd acelai mecanism i pentru sfritul traiectoriei:
) (
6
) (
3 1
)
3 2
(
1
2
2 1
2
1
2
1
1
1

+ = ' + ' +
n n
n
n n
n
n
n
n
n n
F F
t
F F
t
F
t
F
t t

1.
18.

Sintetiznd aceste rezultate de-a lungul traiectoriei se poate forma o
structur compact a sistemului care trebuie determinat sub forma 1.19 unde:
^ Limbaje de Programare a Robotilor Industriali

52
) (
6
) (
3 3 2
) (
6
) (
1
1
3 2
1
2
2 1
2
1
1
1
1 , 1
1 2
2
2
2 3 2
1
2 , 1
3
23
2 3
22


+ = + =
+ = =
=
+ =
n n
n
n n
n
n
n n
n n
n
n n
F F
t
F F
t
a
t t
M
F F
t
F F a
t
M
t
M
t t
M

| |
| |
(
(
(
(
(
(
(
(
(

+
=
(
(
(
(
(
(
(
(

'
'

'
'
(
(
(
(
(
(
(
(


+


+



1
3 2
2
1 2 1
2
2
1 2
2 3
2
4 3 4
2
3
4 3
1
2
3
2
1 , 1 2 , 1
2 1 2 1
3 4 3 4
23 22
) ( ) (
3
) ( ) (
3
0 0
) ( 2
0
0
0 ) ( 2
0 0
n
n n n n n n
n n
n
n
n n n n
n n n n
a
F F t F F t
t t
F F t F F t
t t
F
F
F
F
M M
t t t t
t t t t
M M

1.
19.


^ Limbaje de Programare a Robotilor Industriali

53
I V. Date i structuri de date utilizate n cadrul limbajelor
de programare a roboilor industriali(LPRI)

A. Date utilizate de limbaje de programare a robotilor
Aceast categorie de elemente constituite ale unui limbaj de
programare alctuiete baza limbajului. Se poate spune c un limbaj
robot este mai evoluat sau mai puternic dac se pot realiza arhitecturi
de date care s permit utilizatorului o folosire compact a limbajului s
natural, fr ns a elimina rigozitatea pe care o cere arhitectura
robotului. Un prim exemplu n ntrirea acestei afirmaii este zona de
specificare a elementelor sistemului, n limbajul SRL.
Exemple:
SRL: SYSTEM_SPECIFICATION
ROBOT:
puma600=ROBOT(0);
jhrobot =ROBOT(1);
EFFECTOR:
ringgrip=GRIPPER(0) OF puma600;
pargrip =GRIPPER(1) OF jhrobot;
SENSOR:
visioninfo=CHANNEL(1);
STRUCTURE visioninfo=RECORD
pantno:INTEGER;
x,
y:INTEGER

END;
END_SYSTEM_SPECIFICATION

n acest prim exemplu se observ c n definirea elementelor
sistemului supervizat prin programul scns n SRL (supervizarea se face
de fapt de ctre structura de control care compileaz i ruleaz
respectivul program) se realizeaz definirea roboilor puma 600 i
jhrobot, precum i ataarea gripperelor celor doi roboi: gripperul
ringgrip deschis(0) lui puma 600 i pargrip nchis lui jhrobot. De
^ Limbaje de Programare a Robotilor Industriali

54
asemenea este definit sensorul visioninfo ca fiind canalul (1) i o
structur specificat sub forma unui RECORD.
Un exemplu de folosire a acestui sensor poate fi sub forma:
SRL: INPUT (visioninfo);
IF visioninfo.part=3 THEN
SMOVE puma60 TO depit;
Datele specifice unui limbaj de programare sunt specificate
printr-un nume i printr-un tip cruia data aparine. n funcie de
limbajul la care se face referire, numele asociat unei date poate conine
caractere alfa numerice, litere mari sau litere mici, respectiv un numr
finit de caractere care vor fi interpretate sau un numr teoretic infinit.
n toate cazurile ns, caracterul blanc nu este admis n definirea
unei date, acesta fiind nlocuit n cele mai multe cazuri prin caracterul _
. O alt caracteristic universal a numelui unei date este faptul c
acesta chiar dac poate conine i caractere numerice trebuie s
nceap cu o liter. Pentru completarea acestor informaii n tabelul
urmtor sunt prezentate spre exemplificare numrul de caractere
semnificative i numrul de caractere permise pentru limbajele cele mai
cunoscute.
Limbaj Litere
mari
Litere
mici
Numar caractere
interpretabile
Numar caractere
permise
SRL * * nelimitat nelimitat
AL * * 30 nelimitat
PASRO * * 8 sau mai multe nelimitat
VAL * nelimitat nelimitat
AML * nelimitat nelimitat
HELP * 6 nelimitat
SIGLA adrese speciale I1..I16, P1..P16 respectiv M1..M1023
ROBEX * 6 6

n ceea ce privete tipul datelor din cadrul unui limbaj de
programare al roboilor industriali se poate face o separare n sensul
definirii implicite a tipurilor consacrate: INTEGER, CHARACTER, REAL,
BOOLEAN alturi de STRING - un ir predefinit de caractere sau o
^ Limbaje de Programare a Robotilor Industriali

55
secven liniar de caractere; respectiv EVENT - numrtoare pentru
contorizarea unor evenimente, folosite mai ales pentru asigurarea
sincronizrii programelor.
n tabelul urmtor vor fi prezentate tipurile standard de date
pentru diferite limbaje:
PASRO SRL AL AML VAL VAL II HELP SIGLA
INTEGER INTEGER SCALAR INT Integer Scalar Scalar Counter
REAL REAL SCALAR REAL Scalar Scalar
BOOLEAN BOOLEAN SCALAR - - -
CHARACTE
R
CHAR CHAR - - -
STRING STRING - STRIN
G
- -
SEMAPHOR
INTERRUPT
EVENT Semapho
re
Flags
iar domeniul valorilor acestor tipuri de baz este prezentat n
urmtorul tabel:
Tipul de data Numar de byti Domeniul
INTEGER 2 -32768 ... + 32767
REAL 4 0.15224277E-39 ...
0.17014111E+38
BOOLEAN cel putin unul FALSE, TRUE
CHARACTER cel putin unul caractere ASCII
EVENT 2 -32768 ... + 32767
n afara acestor tipuri de baz pentru programarea pur
(implicnd date numerice folosite n calcule interne) apar i datele
specifice roboilor industriali care vor fi enumerate n continuare:
-VECTOR - n general vectori tri-dimensionali;
-ROTATION - rotaia cu un unghi n jurul unei axe;
-ORIENTATION - rotaia definit prin trei unghiuri;
-FRAME - definit prin rotaii i vector;
-TRANS - transformare definit direct ca un FRAME.
Un exemplu de construcie a acestui tip de date, pentru
PASRO se poate construi sub forma urmtoare :
PASRO TYPE
vector = RECORD
x, y, z : REAL
^ Limbaje de Programare a Robotilor Industriali

56
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 uureaz mult lucrul cu
acestea, nemaifiind nevoie de o construcie 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
Specificatii
dimensionale
Identificator
TRANS
,
ROT
FRAME

Aceast definire implicit este acceptat i de AML, ns de
aceast dat ansamblul de mai multe date definesc: un vector dac
ansamblul de date conine 3 date: CONV:NEW 3 OF 0.0 0.0 0.0 0.0

PARTR:NEW<90,0.0,45>; 90 0.0 45
x y z
x y z
PARTR
^ Limbaje de Programare a Robotilor Industriali

57
Respectiv frame pentru cazul n care ansamblul cuprinde 7
date:
PICKUP:NEW 7 OF 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0

Pentru limbajul VAL elementele geometrice sunt specificate
de cuvntul cheie POINT care are 6 componente: coordonatele x,y,z i
unghiurile Euler.
POINT basis 300, 500, 250, 0, 0, 0
POINT transform 0, 0, 150, 0, 0, 0
MOVE basis:transform
n cazul limbajelor apropiate de comenzile numerice, cum
este cazul limbajului ROBEX datele geometrice sunt specificate utiliznd
o serie de cuvinte cheie cum ar fi: POINT, LINE, CIRCLE, PATTERN,
PLANE, BEAM, CYLNDR, SPHERE, CONE, BODY, PARF.
B. Structuri de date

Datorit diversitii datelor necesare controlului unui robot i mai
ales volumului mare de informaie care poate fi nglobat ntr-o categorie
de date pe care operatorul trebuie s o furnizeze robotului, iar pe de alt
parte robotul trebuie s o furnizeze operatorului, este impetuos necesar
ca aceste informaii s fie grupate ntr-un cadru mai larg cum ar fi
structurile de date.
Pe lng structurile caracteristice limbajelor clasice de
programare, n cazul limbajelor pentru roboi apare o nou structur
heterogen din punctul de vedere al tipului datelor ce intr n alctuirea
acestui tip, structur care poart numele de colecie (sau n literatura
englez de specialitate-aggregates). n continuare se vor descrie pe
scurt, prin exemple, structurile de date utilizate:
- tablourile - ARRAY. Acestea pot fi unidimensionale: SCALAR
ARRAY Y[1:3] sau multidimensionale. Aceste structuri au
x y z roll pitch yaw deschidere
gripper
PICKUP-frame
^ Limbaje de Programare a Robotilor Industriali

58
caracteristic faptul c odat cu declararea dimensionalitii lor,
arhitectura de control aloc memoria necesar stocrii informaiei.
Chiar dac dimensionalitatea tabloului poate fi dat de o variabil,
unitatea de control aloc o memorie corespunztoare dimensiunii
variabilei n momentul declarrii.
Unitatea de control sesizeaz n timpul compilrii eventualele
greeli dimensionale, operatorul fiind scutit n mod direct de
aceast verificare, fr ns ca unitatea de control s realizeze o
corecie a respectrii erorii, dar sesiznd-o prin ntreruperea
compilrii i afiarea unui mesaj de eroare.
Dimensionalitatea tablourilor poate fi declarat fie direct, fie prin
constante, variabile sau chiar expresii aritmetice, totul depinznd
de limbajul folosit. n continuare sunt prezentate cteva exemple
de tablouri pentru limbajul PASRO, alturi de observaia potrivit
creia n mod asemntor se realizeaz declararea tablourilor n
SRL, AL i HELP n timp ce pentru limbajele VAL, SIGLA i
ROBEX aceste tipuri de structuri de date nu sunt valabile. SRL,
PASRO i AL accept chiar i indici, cu observaia c indicele
superior trebuie s fie mai mare dect indicele inferior, n timp ce
HELP accept declararea dimensiunii numai prin constante
numerice, iar indicele inferior trebuie s fie minim 1.
Exemple:
AL: sistem_ref : ARRAY [1:4,-10:-5]
FRAME ARRAY orificii [1:numar_total] - la definirea unui sir se pot
folosi chiar variabile
PASCAL: vector = ARRAY [1..3] OF REAL;
rotmatrix = ARRAY [1..3,1..3] OF REAL;

- nregistrri -RECORDS. Aceste structuri de date, s-ar putea
afirma, sunt pe o treapt ierarhic superioar tablourilor, n sensul
n care pot grupa tipuri diferite de date sau chiar tablouri. Astfel
^ Limbaje de Programare a Robotilor Industriali

59
innd cont de tablourile definite anterior se pot defini, pentru
continuarea exemplului, i urmtoarele nregistrri.
Exemple:
PASRO: vectortype = ARRAY [1..3] OF REAL;
rotatietype = RECORD
axis : vectortype;
angle : REAL
END;
transformaretype = RECORD
orientare : rotatietype;
pos : vectortype;
END;
sistemtype = transformaretype;
obiecttype = RECORD
coordobiect: sistemtype;
xlung, ylung, zlung : REAL;
grippozitie : sistemtype;
plin : BOOLEAN
END;
Accesul la componentele nregistrrilor se face prin specificarea
numelui nregistrrii alturi de componenta care se dorete a fi
utilizat.
VAR box: obiecttype;
IF box.plin SMOVE (goal)
. . . . . . . . . . . . . . . . . . . .
diagonala=SQRT(SQR(xlung)+SQR(ylung))/2
- fiierele -FILE. Aceste structuri de date sunt cele mai complexe
i mai ample att din punct de vedere al dimensiunii pe care o

Figure 15
^ Limbaje de Programare a Robotilor Industriali

60
necesit pentru a fi stocate, ct i din punctul de vedere al tipului
de date cuprinse. n general se disting fiiere de date care
furnizeaz argumentele unui program (cum ar fi poziiile unei
reele care trebuie prelucrate de robot) sau chiar programul care
trebuie executat de ctre robot. Operaiile care sunt permise
asupra acestui tip de structuri sunt cele clasice:
creare de fiier CREATE;
deschiderea unui fiier OPEN;
nchiderea fiierului CLOSE;
scrierea n fiier RECORD;
tergerea fiierului DELETE.
Unele limbaje pot accepta numai anumite tipuri de fiiere (HELP
lucreaz numai cu fiiere text).
colecii de date - aggregates - din punct de vedere al
diversitii de date se situeaz ntre RECORD i FILES, n sensul
n care aceste structuri pot ngloba att date numerice, ct i
caractere, iar datele numerice pot corespunde unor deplasri,
momente, fore, informaii de la senzori. n concluzie agregatele
cupleaz o diversitate de tipuri de date.
Exemple:
f1: NEW <0.0,0.0,0.0,0.0,0.0,0.0,0.0>;
f2: NEW 7 OF 0.0;
nest1: NEW <obiect, < element , 1>,1.5>;
nest2: NEW < element , 1>;
nest3: NEW < element ,nest2,1.5>;
Accesul la componenetele acestor colecii se face similar cu
accesul la componentele tablourilor
nest1(1) obiect
nest1(2) <element,1>
^ Limbaje de Programare a Robotilor Industriali

61
nest1(3) 1.5
nest1(2,1) element
nest1(2,2) 1
Toate aceste structuri de date prezint, din punctul de
vedere al alocrii memoriei, un dezavantaj major: necesit o
prealocare a memoriei necesare stocrii datelor. Astfel dup ce
informaia a fost folosit, zona sa de memorie rmne n
continuare o zon restrictiv n ceea ce privete utilizarea sa de
ctre alte date.
Acest dezavantaj poate fi eliminat prin folosirea unor
variabile dinamice, care ocup numai strict memoria de care au
nevoie, ncepnd cu adresa disponibil ntr-un anumit moment al
compilrii i execuiei programului, urmnd 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 ataarea unui caracter
suplimentar la tipul care definete variabila. Astfel pentru cazul
limbajelor PASRO i PASCAL acest caracter este ^, iar pentru
SRL este @. Pentru nelegerea exact a acestor structuri de
date, extrem de utile n cazul realizrii unui program flexibil, rapid
i economic se va prezenta i explicita un exemplu de program n
PASRO.
^ Limbaje de Programare a Robotilor Industriali

62
1. TYPE 37. begin
2. boxpointer=^boxtype; 38. new (affixelem);
3. framepointer=^frametype; 39. affixelem^.next:=nil;
4. affixpointer=^affixelement; 40. affixelem^.affixedbox:=kx;
5. transpointer=^transformationt
ype;
41. write(kx^.num);
6. vectortype=array[1..3] of real; 42. writeln(ky^.num);
7. rotationtype = record 43. if ky^.affixrel=nil then
ky^.affixrel:=affixelem
8. axis:vectortype; 44. else
9. andle: real; 45. begin
10. end; 46. affixaux:=ky^.affixrel;
11. transformationtype =
record
47. while affixaux^.next <> nil do
12. orient:rotationtype; 48. affixaux:=affixaux^.next;
13. pos:vectortype; 49. affixaux^.next:=affixelem;
14. end; 50. end
15. frametype=transformationtyp
e;
51. end;
16. affixelement = record 52. var
17. affixedbox:boxpointer; 53. boxes:boxpointer;
18. transrelation:transpointer
;
54. boxnumber,i:integer;
19. next:affixpointer; 55. k:boxpointer;
20. end; 56. begin
21. boxtype = record 57. read(boxnumber);
22. num:integer; 58. new(boxes);
23. coordsystem:frametype; 59. boxes^.num:=1;
24. xlength, 60. boxes^.next:=nil;
25. ylength, 61. for i:=2 to boxnumber do
26. zlength:real; 62. begin
27. gripposition:frametype; 63. new(k);
28. full:boolean; 64. .next:=boxes;
29. next:boxpointer; 65. .num:=i;
30. affixrel:affixpointer 66. .affixrel:=nil;
31. end; 67. boxes:=k;
32. procedure
affix(kx,ky:boxpointer);
68. end;
33. {Generarea relatiilor intre kx
si ky}
69. k:=boxes^.next^.next;
34. var 70. affix(k^.next,k);
35. affixelem:affixpointer; 71. affix(boxes^.next,k);
36. affixaux:affixpointer; 72. affix(k,k^.next);
73. affix(boxes^.next,k^.next);
74. end.
Programul genereaz un set de elemente k1k4, care vor fi
memorate utiliznd variabile de tip pointer.n cadrul pointerului
^ Limbaje de Programare a Robotilor Industriali

63
ataat Figure 16 se observ c se vor introduce informaii
privitoare la:
- orientarea i poziia sistemului de referin -
coordsystem:frametype;
- dimensiunile elementului: x length, y length, z length;
- orientarea gripperului pentru ca elementul s fie msurat-
gripposition:frametype;
- coninutul elementului (dac este plin sau nu)-full;
- conexinea logic cu alte elemente next;
- conexiunea fizic cu alte elemente-affixrel.
Se observ c dac primele elemente sunt cunoscute ca
dimensiune, ultimul element poate evolua ntr-un mod care nu
poate fi precizat anterior nceputului micrii, motiv pentru care se
prefer i aici folosirea unui pointer. Pe de alt parte deoarece
toate elementele vor fi de tip pointer i penultima dat va fi de tip
pointer (next).

Figure 16
^ Limbaje de Programare a Robotilor Industriali

64
n cadrul programului principal se introduc elementele care vor fi
manevrate, introducerea fcndu-se sub forma algoritmului de tip
list LIFO. Relaia care se stabilete ntre elementele n cadrul
acestei pri de program este lipsit de semnificaie poziional
n partea a doua a programului se introduc relaiile poziionale
dintre elemente. Fie o relaie poziional exprimat grafic n
Figure 18.
Din prima parte a programului se reamintete c ultimul introdus
este elementul 4, fapt care face ca k:=boxes^.next^.next=2.
Instruciune affix (k^.next, k) este un apel al procedurii affix
(kky).

Figure 17

Figure 18
4ref 3 2
^ Limbaje de Programare a Robotilor Industriali

65
Aceast procedur utilizeaz un pointer nou element pentru
manipularea primului element din argument, kx (sau 1 din primul
apel) i apoi este cercetat cel de-l doilea pointer ky (sau 2). Dac
ky nu are nici o relaie cu alt element, atunci se introduce la
pointerul relaie pointerul elementului kx. n caz contrar se
transfer pointerul relaie din cadrul pointerului ky ntr-un pointer
auxiliar urmnd ca apoi transferul s se fac pn n clipa n care
se gsete ultima locaie din cadrul pointerului ky (n cazul nostru
ncrcai n affixaux i affixaux^.next) liber (nil) moment n care
se introduce n locaia relaiei elementul kx (1).
^ Limbaje de Programare a Robotilor Industriali

66
Forma final datorat acestor instruciuni de cuplare a elementelor este
prezentat n figura urmtoare:
n cazul limbajului AL, programul este mai simplu existnd
instruciunea AFFIX cu variantele RIGIDLY (conectare rigid,
ferm) respectiv NONRIGIDLY (aezare relativ de elemente).
n prezentarea datelor i structurilor de date nu s-a alocat un
spaiu separat constantelor i operaiilor de atribuire, acestea
fcndu-se n modul caracteristic limbajelor de programare uzuale.

Figure 19
^ Limbaje de Programare a Robotilor Industriali

67
C. Moduri de manipulare a datelor
Manipularea datelor se face n cadrul utilizrii acestora ca
operatori.
Cum capitolul destinat instruciunilor de micare va detalia
operaiile permise n cadrul LPRI, ne vom mrgini numai s
enumerm i s prezentm sintetic principalele operaii ce se pot
realiza cu datele prezentate.
1. Operaii logice
Operatorul SRL si
PASRO
AL AML HELP
Funcia i b AND b s AND s i AND i expr AND expr
Funcia
SAU
b OR b s OR s i OR i expr OR expr
Funcia NU NOT b NOT s NOT i NOT expr
Funcia
SAU
exclusiv
b <> b s XOR s i XOR i
Echivalen b=b s EQV s
b - data BOOLEANA; i, s - data reala sau intreaga, expr - expresie logica
2. Operaii 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

^ Limbaje de Programare a Robotilor Industriali

68
3. Operaii aritmetice
Mod de reprezentare n:
Operaie SRL i
PASRO
AL AML VAL VAL II HELP SIGLA
Adunare i+I
r+r
i+r
r+I
s+s i+i
r+r
i+r
r+i
i+i s+s s+s IC/i,i
Scdere i-I
r-r
i-r
r-I
s-s i-i
r-r
i-r
r-i
i-i s-s s-s IC/i,-i
nmulire i*I
r*r
i*r
r*I
s*s i*i
r*r
i*r
r*i
i*i s*s s*s abs.
mprire i/I
r/r
i/r
r/I
s/s i/i
r/r
i/r
r/i
i/i s/s s/s abs.
mprire a
ntregilor
i DIV I s DIV s r DIV r
i IDIV i
i/i abs. abs. abs.
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)
ABS(r)
|s| abs. abs. abs. abs. abs.
Inversare semn -I
-r
-s -i
-r
-i abs. -s NE/-i
Obs. i-ntreg, r - real, s-scalar, abs - nu se poate realiza respectiva operaie
4. Operaii geometrice
Reprezentarea operaiei Semnificaia operaiei
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
unei
coordonate
^ Limbaje de Programare a Robotilor Industriali

69
transformari
complexe)
v:=ROTAXIS(r) ROTAXIS(v,r) v <- AXIS(r) rotatia lui v, in jurul
vectorului vr, cu
unghiul o
r:=r1*r2 ROTROT(r,r2,r1) r <- r1,r2 compunerea a doua
rotatii
f=f+v FRAMETRANSL
(f,f,v)
f <- f+v translatia unui sistem
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,f1,f2)
f <- f*f compunerea a doua
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,o)=rotatie in jurul vectorului vr, cu unghiul o;
5. Funcii standard
Funcia PASRO SRL AL AML HELP ROBEX
sinus SIN
cosinus COS
tangent TAN abs. abs.
arctangent ARCTAN ATAN2 ATAN ARCT
G
ATAN
arcsinus abs. ASIN abs. abs.
arccosinus abs. ACOS abs. abs.
conversie REAL
la INTREG cu :
trunchiere
rotunjire


TRUNCH
ROUND


TRUNCH
ROUND


INT


abs.


abs.


abs.
exponent EXP abs. abs. EXP
logaritm natural LN LOG abs. abs. NLOG
logaritm zecimal abs. abs. abs. abs. abs. LOG
radical SQRT
ridicare la ptrat SQR abs. abs. abs. abs. abs.
modul ABS abs. abs. ABS
Introducerea de
date:
scalare
booleene
vector
rotaii
sistem




vread
rread
fread


INPUT
INPUT
INPUT
INPUT
INPUT


INSCALAR
QUERY



abs.


ASK
ASKN



abs.
^ Limbaje de Programare a Robotilor Industriali

70
Se observ c datele sunt folosite ca operanzi n cadrul acestor
operaii.
6. Expresii complexe cu anumite prioriti:

Prioritate SRL/PASRO AL AML HELP
1. Prioritate
maxim
function
call,(),NOT
function
call,||,NOT
= function
call,(),NOT
2. *,.,/,DIV,MOD,
AND
WRT, ->, ^ NOT *,/,AND
3. +,-,OR *,/,.,DIV,MOD,
MIN,MAX
*,/,IDIV +,-,OR
4. =,<,>,<=,=>,<> +,- +,- =, <, >
5. =,<,>,<=,=>,<
>
ROTL
6. AND EQ, NE, LT,
LE, GT,GE

7. OR,XOR AND
8. EQV OR,XOR
9. OF
10. IS
1. Prioritate
minim
=
Ca nite particulariti pentru datele vehiculate n cadrul unui
limbaj de programare a roboilor se pot evidenia anumite tipuri de
date:
- intrri i date de intrare din partea operatorului: controlul robotului
realizndu-se n funcie de anumite condiii tehnologice, n
funcie de un mediu de lucru unitatea de control preia fie din
proces, prin intermediul unor canale de intrare, fie de la tastatura
de comand a utilizatorului, date care pot sau sunt folosite n
cadrul programului.
num <- 0;
WHILE QUERY (num, Obiect prelucrat, a se continua?
) DO
BEGIN
PRINT ( Introduceti dimensiunile obiectului: );
height <- INSCALAR *cm;
num <- num+1;
^ Limbaje de Programare a Robotilor Industriali

71

END;
- tot ca o particularitate pentru LPRI sunt instruciunile prin care
se poate citi poziia 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);
framef (1) := AX(1);
framef (2) := AY(1);
framef (3) := AZ(1);
framef (4) := AR(1);
framef (5) := AP(1);
framef (6) := AYW(1);
se citete poziia curent, urmnd ca
elementele curente AX,AY,AZ,AR,AP,
AYW s fie memorate ntr-o matrice
framef

- generarea unor mesaje text sau/i numere prin intermediul
programului ctre operator n vederea monitorizrii sau chiar
controlului evoluiei robotului.
Exemple:
SRL: OUTPUT (<canal>,<lista de parametri>);
WRITELN(<lista de parametri>);
PASR
O:
WRITE(<lista de parametri>);
AL: PRINT(<lista de parametri>)
PROMT(<lista de parametri>)
AML: WRITE(<canal intrare/iesire>,<lista de
parametri>);
DISPLAY(<lista de parametri>);
PRINT(<lista de parametri>);
VAL: TYPE(<text>)
TYPEI(<intreg>)
PAUSE(<text>)
HELP: PRINT(<lista de parametri>)
SIGLA: NL/<text>,<numarator>

^ Limbaje de Programare a Robotilor Industriali

72
^ Limbaje de Programare a Robotilor Industriali

73
V. Instruciuni

Aceste elemente fac parte din semantica unui limbaj, ele utiliznd sintaxa
declarat prin intermediul datelor, structurilor de date, cuvintelor rezervate.
Instruciunile n cadrul unui program-robot i nu numai, sunt executate n
ordinea scrierii lor, excepie fcnd cazurile n care apar instruciunile de salt.
ncercnd o sintetizare a instruciunilor, element care se poate dovedi
extrem de util pentru o prezentare general, cum este cazul prezentei lucrri, se
pot defini urmtoarele tipuri de instruciuni:
1. Instruciuni de descriere a mediului de operare
2. Instruciuni de generare a micrii
3. Instruciuni de comand i control a elementului terminal
4. Instruciuni specifice sistemului senzorial
5. Instruciuni de delimitare a blocurilor structurale ale programului
6. Instruciuni de oprire a micrii robotului sau a elementului
terminal
7. Instruciuni de control ale programului
8. Instruciuni de control a strii robotului i a sistemului de
microcontacte asociat controlului
9. Instruciuni de tratarea a situaiilor excepionale
n continuare vor fi explicate la nivel general aceste tipuri de instruciuni,
alturi de prezentarea unor exemple elocvente n vederea nelegerii aciunii
respectivelor tipuri de instruciuni.
A. I nstruciuni de descriere a mediului de operare
Instruciunile de descriere a mediului de operare sunt destinate n special
programrii off-line, cnd se urmrete descrierea spaiului n care opereaz
robotul n vederea utilizrii facilitilor de micare optimal a robotului,
^ Limbaje de Programare a Robotilor Industriali

74
respectiv resurselor soft referitoare la inteligena artificial, pentru structurile de
roboi avansate.
O modalitate de descriere este utilizarea unei structuri de tip data, n care
se specific numele obiectului sub care robotul l va recunoate, respectiv
atributele acestuia:
obiect: declararea numelui i atributelor acestuia (numele atributelor);
atribut: numele atributului i valoarea acestuia.
Observaie. Prin atribut vom nelege anumite proprieti definitorii ale
obiectului, cum ar fi: lungimea, limea, nlimea, culoarea, greutatea, etc.
Exemplu:
EXISTENCE
(part 1):
cere informaia legat de existena obiectului part1;
rezultatul poate fi False sau True.
SRL: greutate_obiect1:= ATTRIBUTE
weight OF obiect1:
variabila greutate_obiect1 ia valoarea
atributului anterior declarat weight al
obiectului obiect1
ATTRIBUTE length OF element1:= 5.3;
lungimea obiectului element1
este 5.3
Un alt exemplu elocvent este prezentat n continuare. Acesta este specific
limbajelor care au la baz limbajul PASCAL. Deoarece anumite elemente au
fost prezentate anterior, n acest exemplu, vor fi explicitate numai instruciunile
de descriere spaial a elementelor spaiului de lucru, instruciuni de tipul affix
realizeaz o legtur prin intermediul unor pointeri, la nivel soft, n vederea
modelrii lumii reale. Acesta const ntr-un cuplaj ntre dou elemente, micare-
element, particulariti de tip constructiv (guri, structuri interioare, etc.) i
element. Instruciuni unfix realizeaz de aceast dat decuplarea a dou
elemente.
Program pointerexemplu;
1. TYPE 48. PROCEDURE affix
(VAR atframe :framepointer;
targetframe:framepointer;
VAR affixtrans:trans)
2. vector = RECORD 49. BEGIN
3. x, y, z : REAL 50. WITH atframe^ DO
4. END 51. BEGIN
5. rotmatrix = RECORD 52. affixedon:=TRUE;
^ Limbaje de Programare a Robotilor Industriali

75
6. t,o,a : vector 53. affixframe:=targetframe;
7. END 54. affixrel.translation.x:=
pos.x-targetframe^.pos.x;
8. rotation = RECORD 55. affixtrans.translation.x:=
affixrel.translation.x;
9. axis : vector; 56. affixrel.translation.y:=
pos.y-targetframe^.pos.y;
10. angle : REAL; 57. affixtrans.translation.y:=
affixrel.translation.y;
11. matrix: rotmatrix 58. affixrel.translation.z:=
pos.z-targetframe^.pos.z;
12. END 59. affixtrans.translation.z:=
affixrel.translation.z;
13. trans = RECORD 60. affixrel.rot:=nil; aceasta pentru a
14. translation : vector; 61. affixtrans.rot:=nil;simplifica
procedura
15. rot : rotation 62. END;
16. END 63. END; (sfirsit procedura)
17. framepointer
=
^frame 64. PROCEDURE unfix (
VAR atframe :framepointer;
targetframe :framepointer);
18. frame
=
RECORD 65. BEGIN
19. next: framepointer; 66. atframe^.affixedon:=FALSE;
20. orient:rotation; 67. atframe^affixframe:=NIL;
21. pos:vector; 68. END (procedura)
22. approach, 69. BEGIN (program principal)
23. departure:framepointer; 70. WITH nilvector^ DO
24. affixedon:BOOLEAN; 71. BEGIN
25. affixframe:framepointer
;
72. x:=0;
26. affixrel:trans 73. y:=0;
27. END; 74. z:=0;
28. VAR 75. END;
29. nilvector :vector; 76. nilrot.axis:=nilvector;
30. nilrot :rotation; 77. nilrot.angle:=0;
31. affixvariable,
dummytrans
:trans; 78.
32. box,hole,grip,
appros
:framepointer; 79. newframe(cutie,80,60,24);
33. PROCEDURE newframe(VAR
framevar:framepointer;xf,yf,zf:REAL);
80. newframe(orificiu,70,60,34);
34. BEGIN (se construieste o noua
referinta)
81. newframe(mina,70,50,44);
35. NEW(framevar) 82. newframe(apropos,70,50,50);
36. WITH framevar^ DO 83.
37. BEGIN 84. affix(orificiu,cutie,dummytrans
);)
38. next :=NIL; 85. affix(mina,cutie,affixvariable);
^ Limbaje de Programare a Robotilor Industriali

76
39. orient :=nilrot; 86. affix(apros,mina,dummytrans);
40. pos.x:=xf; 87.
41. pos.y:=yf; 88. unfix(mina,cutie)
42. pos.z:=zf; 89.
43. approach:=NIL; 90.
44. departure:=NIL; 91. END (program principal).
45. affixedon:=FALSE; 92.
46. END; 93.
47. END (procedura) 94.


Figure 20
^ Limbaje de Programare a Robotilor Industriali

77

Se observ c procedura affix cu atributele atframe, targetframe,
affixtrans realizeaz o actualizare a parametrilor atframe: x, y, z i posibil u
x
, u
y
,
u
z
(prin instruciunile
affixrel.translation.x(y,z):= pos x target.frame
^
. pos.x(y,z)
affixtrans.translation.x(y,z):= affixrel.translation x(y,z) )
Pentru ca transformarea relativ s se fac nu numai prin translaii, dar i
prin rotaii, n cadrul procedurii affix, instruciunile affixrel.rot i affixtrans.rot
trebuie s expliciteze transformarea corespunztor. (n cadrul exemplului
acestea nu au fost considerate, fiind egale nil).
De remarcat c affixtrans este folosit i ca parametru de ieire, accesibil
programului principal (prin apelul procedurii, parametrii affixtrans pot fi
atribuii unor variabile).
Limbajul AL utiliznd date de tipul FRAME, VECTOR, ROT, TRANS
permite o exprimare mai uoar, rezultnd programe mai compacte pentru
aceast descriere.
Exemplu:
AFFIX hole TO box
AFFIX gripp TO box BY affixtrans
AFFIX appros TO gripp AT TRANS (NILROT, VECTOR (0,0,6) * CM);
UNFIX gripp FROM box
unde
box FRAME (NILROT, VECTOR (55,30,22) * CM);
hole FRAME (NILROT, VECTOR (45,30,28) * CM);
gripp FRAME (NILROT, VECTOR (45,50,34) * CM).
O alt particularitate a limbajului AL este atributul RIGIDLY care face ca
elementele din cadrul instruciunii AFFIX care l conine s fie privite ca un
Coordonata X a lui atframe
^ Limbaje de Programare a Robotilor Industriali

78
singur bloc, transformrile ulterioare fiind transferate ambelor elemente: AFFIX
box TO ARM RIGIDLY.
B. Instruciuni de micare

Robotul,n general este destinat executrii unor activiti care presupun
micarea. Din acest motiv, instruciunile de micare pot fi considerate ca fiind
tipul de instruciuni cu cea mai mare importan.
Chiar dac la prima vedere o nou diviziune instruciunilor poate prea
excesiv, din considerente pur didactice, le putem clasifica n:
- instruciuni de micare implicite
- instruciuni de micare explicite.
1. Instruciunile de micare implicite.
Dac din punctul de vedere al operatorului sunt preferabile (relativ la
efortul de introducere) ele solicit o descriere detaliat a spaiului de lucru, n
paralel cu posibilitatea relativ redus de evitare a unor posibile coliziuni. Din
acest motiv, numai limbajul ROBEX dispune de acest tip de instruciuni de
micare implicit, n paralel ns cu existena unui set de instruciuni de micare
explicit.
Sintaxa unei instruciuni de micare implicit este:
MOVE Elementul 1
,
AGAINST
COPLANAR
/
Numele
suprafetei
elementului 1
,
Numele
suprafetei
elementului 2
,
Elementul 2
,
Parametr i
aditionali
,

Figure 21
^ Limbaje de Programare a Robotilor Industriali

79
Exemplu:
ROBEX: MOVE / cutie1, underside,
AGAINST, cutie2, top, EVENT, 2,
ELSE, mesaj
Se d comanda de a muta cutie1 cu
faa de jos (underside) deasupra
(top) cutie2, micarea care are loc
atta timp ct canalul este n 1
logic. n cazul n care canalul este 0
logic, se afieaz un mesaj n
paralel cu oprirea micrii.
2. Instruciunile de micare explicite.

Sunt, comparativ cu instruciunile de micare implicite, mai bogate n
informaii. Acestea pot conine pe lng declaraia explicit a punctului n care
se dorete poziionarea i parametrii ai micrii. Cteva exemple de parametri
auxiliari sunt: ce motor va fi activat, viteza de deplasare, acceleraia /
deceleraia, precizia micrii, durata micrii, forma micrii, condiionarea
micrii de informaiile furnizate de anumii senzori. Gama acestui tip de
instruciuni fiind extrem de bogat, n continuare vor fi prezentate cteva
exemple edificatoare n vederea nelegerii sintaxei i semanticii acestor
instruciuni.
Una dintre cele mai importante poziii ale robotului este poziia iniial,
de sincronizare sau home position . Marea majoritate a limbajelor aloc pentru
micarea robotului din poziia curent n poziia iniial o instruciune dedicat.
Exemplu:
SRL PASRO AL VAL ROBEX
FIRSTPOS robot, Nullpos; PARK
ARM
i

READY
Declar oriunde poziia
iniial:
SAFPOS/50,0,30
i o utilizeaz apoi n
cadrul unei instruciuni
de micare obinuit:
GOTO / SAFPOS
Instruciunile de micare explicite se pot desfura cu aportul
informaional al unor senzori auxiliari de tip traductoare de for, de moment,
sistem de vedere artificial, fie fr acest tip de control auxiliar.
^ Limbaje de Programare a Robotilor Industriali

80
Cele mai generale instruciuni de micare explicit pot fi exprimate
formal:
< MNEMONIC MISCARE>, <PUNCT TINTA (TARGET POINT)>
Variantele acestui tip de micare sunt prezentate i explicitate n
urmtoarele exemple:
SIGLA:

MO/1,1317,3,M3,P1,
180

se comand micarea motorului 1 cu 1317 pai,
a motorului 3, cu o valoare nscris n registrul
M3, a motorului denumit P1 cu 180 de pai sau
n poziia 180.

SRL:

DRIVE AXIS (2) OF arm3 TO 100


PASRO:

drive (2,110)

Miscari asolute comandate
unui singur dispozitiv de
acionare

AL:

DRIVE JOINT(4) OR ARM1 TO
210


ROBEX:

DRIVE / 3,135


SRL:

DRIVE AXIS(2) OF arm1 BY 10


PASRO:

drive(2, robotjoints[2]+20

Miscri relative comandate
unui

AL:

DRIVE JOINT(4) OF ARM1 BY 20

singur motor

ROBEX:

DRIDLT / 2, 10


VAL:

DRIVE 2, 20,
100

limbajul VAL realizeaza numai
micri relative ( motor 2 cu 20 de
pasi), nsoite de valoarea vitezei (100)
cu care se desfoar micarea.


n afar de aceste micri prin care se realizeaz comanda, fie n
coordonate absolute, fie relative a unui singur motor sunt micrile care conduc
robotul prin comanda tuturor sau mai multor motoare n vederea poziionrii
robotului ntr-un punct al spaiului de lucru sau n vederea descrierii unui
anumit tip de traiectorie.
Astfel de instruciuni care comand micarea robotului ntr-un anumit
punct al spaiului de operare pot fi exemplificate prin:
VAL:

POINT #P1 0 110 30 0 60 0
X Y Z roll pitch yaw
, , , , ,
MOVE #P1


SRL: SMOVE robot TO FRAMEC (VECTORC(95,20,40),
ROTC(zaxis,90)

^ Limbaje de Programare a Robotilor Industriali

81
PASRO:

sttframe(goal, 95, 20, 40, yaxis, 90);
smove(goal)


AL:

MOVE ARM TO
FRAME(ROT(HAT,90*DEG),VECTOR(95,20,40)*
CM)


AML:

MOVE(<JX,JY,JZ,JP>,<95,20,40,90>)


HELP: MOVE(1,#1,950,#2,200,#3,400,#5,90)
;

- acest limbaj nu poate
comanda implicit motoarele,
fiind necesar o comand
explicit a fiecrui motor

ROBEX:

GOTO / 95,20,40,ZXROT,90 sau P1 = POINT / 95,20,40
............................................
GOTO / P1


De asemenea se pot specifica i micri relative cu operand implicit:
SRL: SMOVE robot TO ROBOTFRAME(robot) +
VECTORC(20,0,10);


PASRO:

makevector (relvector, 10,5,5);
frametransl (goal, robotframe,
relvector);
smove(goal);

se definete relvector

frame-ul goal =

robotframe curent + relvector


micare n frame-ul goal

AL:

MOVE ARM1 TO @ + VECTOR(20,10,0)*CM


AML:

DMOVE(<jx, jy, jz>, 20,10,0>)


VAL:

DRAW 20, ,10


HELP:

MOVE(1,#1,X+200,2,Y,#3,Z+100);


ROBEX:

GODLTA / 20,0,10,0,0


Pe lng aceste specificaii de micare, fiecrei micri a robotului i se
pot aduga anumite atribute ale micare:
- adugarea parametrului vitez se realizeaz fie prin exprimare global,
sau parial, utiliznd cuvinte cheie alturi de procentele pe care le reprezint
din viteza maxim, fie relativ la viteza medie:
SRL:

SMOVE robot TO targetframe WITH VELOCITY = 20;
SPEEDFACTOR := 50

PASRO:

SPEEDFACTOR := 5

AL:

MOVE ARM TO targetframe WITH SPEED FACTOR =3

AML:

SPEED (0.8)

VAL:

SPEED 200

- de 3 ori viteza normal

HELP:

SPEED(1,80)
MOVE(1,#1,30,#3,10,#11,80)

- braul 1 se mic cu 80% din
viteza maxim

ROBEX:

RAPID
^ Limbaje de Programare a Robotilor Industriali

82
FEDRAT / 80

Ali parametri care pot fi specificai sunt:
- acceleraia i deceleraia numai n AML prin:
ACCEL (0.5)

-
micarea se face cu jumtate din acceleraia maxim

- durata micrii numai n AL:
MOVE ARM TO targetframe WITH DURATION = 5 * SEC
- o anumit configuraie cinematic pentru structuri redundante (structura
PUMA)
SMOVE robot TO goalframe
WITH

-
Argumentele care urmeaz dup WITH pot fi:

POSTURE(1)
RIGHTY configuraie corespunznd braului
uman drept

LEFTY configuraie corespunznd braului
uman stng
ABOVE cotul structurii PUMA este n
poziia superioar
BELOW cotul structurii PUMA este n
poziia inferioar
3. Precizia poziionrii.
Robotul i poate nceta micarea atunci cnd a ajuns n punctul a crui
coordonate au fost indicate de ctre argumentul instruciunii sau n preajma
punctului, ntr-o anumit vecintate.
AL: MOVE ARM TO targetframe WITH NULLING
SRL:

SMOVE robot TO
goalframe WITH NULLING

- micare cu precizie

AML: SETTLE(OFF)
MOVE(ARM, targetframe)
- dup ncetarea micrii curente
controlul este transferat operatorului
COARSE
- se fixeaz o toleran ridicat la
nivelul servocontrollerelor
FINE
- se cere o toleran redus
NONULL
- micarea se termin fr a fi nevoie
de a primi confirmarea terminrii
micrii fiecrei axe
VAL: NULL
- micarea se termin numai n clipa
recepiei semnalului de terminare a
micrii fiecrei axe
INTOFF
- corecia erorii n timpul integrrii
^ Limbaje de Programare a Robotilor Industriali

83
traiectoriei de control este dezactivat
VAL: INTON
- corecia erorii n timpul integrrii
traiectoriei de control este activat
4. Tipul controlului micrii.

Robotul n timpul micrii se deplaseaz fie punct cu punct, n anumite
poziii instruite sau ale cror coordonate sunt deja introduse, fie dup o anumit
traiectorie: circular, eliptic sau linie dreapt. Unele dintre aceste funcii pot fi
implementate hard prin controllerul dispozitivelor de acionare, dar la marea
majoritate a roboilor exist posibilitatea stabilirii modului de deplasare prin
program, alturi de posibilitatea precizrii unor puncte intermediare n cadrul
traiectoriei.
Exemple:
SRL: PTPMOVE puma TO goalframe
- micare punct cu punct pn n
goalframe, mai precis toate
articulaiile sunt micate pn n
poziia final cu vitez maxim i
fr sincronizare
SYNMOVE puma TO goalframe
WITH DURATION = 5
- micare cu interpolare linear, toate
motoarele pornind n acelai timp i
oprindu-se n acelai punct
SMOVE robot TO goalframe
WITH V=25
WITH ACC = 20
WITH CONSTORIENT
- micarea se realizeaz cu o vitez
programat cu o acceleraie
programat, meninnd permanent
orientarea gripper-ului const.
CIRCLE robot CP = centerframe
DEG = -45
- robotul va descrie o micare
circular, unde centrul cercului este
n punctul centerframe. Micare se
va pe 360 / 45 = 1 / 8 din cerc n
sens antiorar.
LANEMOVE rip TO goalframe
WITH VIAFRAMES(savepos1,
savepos2)
- robotul rip se mic pn n
goalframe prin poziiile intermed.
savepos1, savepos2.

Exemple:
PASRO: pmove (goalframe)
-micare punct cu punct
jmove (goalframe)
-ca i SYNMOVE
smove (goalframe)
-similar SMOVE
VAL: MOVE targetframe
-interpolare la nivel de articulaie
^ Limbaje de Programare a Robotilor Industriali

84
MOVES targetframe
-interpolare linear
Un caz particular de instruciune de micare este cel n care argumentele
pot specifica i controlul end-effectorului. Astfel se poate specifica i comanda
deschiderea respectiv nchiderea gripper-ului n timpul micrii sau eventual de
plasare cu comanda gripper-ului:
^ Limbaje de Programare a Robotilor Industriali

85
Exemple:
AL: COBEGIN

MOVE ARM TO targetframe;
OPEN HAND TO 1*cm
COEND



VAL: MOVET targetframe, 10
micarea se face cu nchiderea gripper-ului la 10mm
MOVEST targetframe, 10
micare cu interpolare liniar n paralel cu nchiderea
gripper-ului la 10mm.
O alt situaie interesant este cea prin care se urmrete evitarea
coliziunii motiv pentru care se introduc puncte de trecere intermediare. Mai
precis micarea nu are loc trecnd exact prin sistemele intermediare, doar prin
apropierea lor, motiv pentru care se impune alegerea adecvat a acestor puncte.
Exemple:
SRL:

SMOVE robo TO targetframe
WITH SMOOTHFAC=0,5
WITH VIAFRAMES
(interframe1, interframe2);
-micarea se ralizeaz dup o traiectorie care
va trece prin cele 2 puncte intermediare

VIAMOVE WITH SMOVE
puma TO interframe
-micarea se realizeaz pn n interframe,
urmnd ca n acest punct , robotul puma s
atepte comnda de micare urmtoare. n caz
contrar va fi generat un mesaj de eroare
MOVEDEF
complex_handling;
Begin_MOVEDEF
PTPMOVE TO above_pas
SMOVE TO bow_beg
WITH
CONSTORIENT;
CIRCLEMOVE
CP=bow_center
DEG=90
ITH V=150;
-micarea este definit sub forma unei
proceduri, curinznd micare punct cu punct,
micare liniar i circular cu o vitez
programat. Se observ structura de bloc a
procedurii.
Apelul acestei proceduri se face prin
instruciunea standard MOVEDO i numele
procedurii de micare, far ca s fie necesar
efectuarea calculelor de micare ce au fost
executate n timpul declanrii procedurii
^ Limbaje de Programare a Robotilor Industriali

86
END_MOVEDEF;
MOVEDO complex_handling ;
AL: MOVE ARM TO targetframe
VIA inertframe1, interframe2;

- caracteristic acestei micri este faptul c n
cazul n care poziiile intermediare suunt
apropiate, poate interveni o micare
suplimentar nu ntotdeauna controlabil
VAL: ENABLE CP
MOVES interframe1
MOVES interframe2
MOVES targetframe
DISABLE CP
-micarea prin punctele intermediare este
auxiliar controlat prin sistemul de
microntrreruptoare (de ntreruperi ON/OFF
hard) CP
HELP: SMOVE(1,#1,xz1,#2,yz1,#3,zz1
,#4,rz1,#5,pz1,#6,yawz1,#7,400
);
SMOVE(1,#1,xz2,#2,yz2,#3,zz1
,#4,rz2,#5,pz2,#6,yawz2,#7,300
);
MOVE(1,#1,x,#2,y,#3,z,#4,r,#5,
p,#6,yaw);
-limbajul HELP neavnd declaraii de puncte
intermediare de tip implicit, realizeaz
micarea liniar cu instruciunea SMOVE i
argumentele specifice deplasrii fiecrui
motor cu un increment declarat explicit.
Ca o observaie general, toate aceste limbaje accept n declararea
micrii prin puncte intermediare i argumente de tip vitez, respectiv durata
etc.
Exemple:
SRL: SMOVE ir600 TO targetframe
WITH V=50
WITH VIAFRAMES ( interframe)
WITH V=15
-micarea ncepe cu V=50cm/s, iar dup
atingerea lui interframe continu cu 15cm/s
Modul de apropiere sau deprtare poate fi deasemenea programat. Aceste
specificaii pot controla prindereea sau desprinderea unui obiect ntr-un spaiu
cu restricii la nivel de int.
Din toate limbajele prezentate pn n acest moment, acest tip de
instruciuni sunt definite numai n SRL, AL i VAL.
^ Limbaje de Programare a Robotilor Industriali

87
Exemple:
SRL: SMOVE rhino TO targetframe
WITH APRO=20
WITH DEP=10
WITH SMOOTHFAC=8;
-primele argumente indic primele
micri pe care le face robotul n
traiectoria de atingere a poziiei finale
(targetframe): micare n sus cu 20cm
(deasupra intei) urmat cu o micare cu
10cm deasupra intei. Argumentul 3
indic precizia dintre micri
AL: MOVE ARM TO targetframe
WITH APPROACH=FRAME( rotation,
vector)

-explicaia este similar celei anterioare,
cu deosebirea c aici modul de apropiere
este mai complex specificat: prin poziia
i orientarea asociat

Sigur c modul de apropiere se poate defini n AL i numai prin vectori:
AL: MOVE ARM TO targetframe
WITH APPROCH=VECTOR
(25,9,0)
WITH DEPARTURE=VECTOR
(0,20,12)


VAL: APRO targetframe, 50
APROS targetframe, 40
MOVE targetframe
-micarea iniial se face cu 50mm pe axa Z,
urmat de o micare pn la 40mm pe Z
Micri complexe pentru executarea unor operaii de sudur continu sau
operaii de vopsire. Limbajele AL, SRL i VAL ofer instruciuni implicite

Figure 22
^ Limbaje de Programare a Robotilor Industriali

88
pentru micri ntr-un plan sau spaiu de tip zig-zag, fr ca acest lucru s nu
poat fi posibil i pentru celelalte limbaje, ns cu observaia c n cazul
celorlalte limbaje, micarea va trebui precizat explicit.
Exemple:
SRL: SYNMOVE robo TO targetframe
WITH WOBBLE
-se comand o micare sinusoidal implicit
AL: MOVE ARM TO targetframe
WITH WOBBLE=2
-n acest caz amplitudinea sinusoidei poate fi
programat
VAL: WAEVE 25,5,2
MOVES targetframe
-se indic o milcare triunghiular cu
amplitudine de 25mm, un ciclu de 5 sec i un
timp de contact de 2 sec n fiecare vrf al unui
triunghi din ciclu.
5. Instruciunile de micare care integreaz i supravegherea
senzorilor.

Acest tip de micare este extrem de interesant deoarece se poate afirma c
utilizarea acestor instruciuni mbrac senzorial operaiile efectuate de robot.
n aceste condiii, instruciunile care cuprind i referiri la semnalele preluate de
senzori pot fi:
a) Instruciuni de micare cu supraveghere a unor senzori
b) Instruciuni de micare la care argumentele micrii sunt
furnizate de senzori.
n cele ce urmeaz vor fi detaliate ambele tipuri de instruciuni cu precizarea c
numai limbajelor evoluate dispun de astfel de instruciuni implicite.
c) Instruciunea de micare cu supraveghere a unor senzori
Se poate afirma c o astfel de micare este reprezentat din punct de vedere
logic prin plasarea iniial a unui bloc de decizie, n funcie de care are loc sau
nu micarea, sau are loc o micare sau alta, argumentului blocului de decizie
fiind respectarea unor valori de ctre sistemul senzorial.
Exemple:
^ Limbaje de Programare a Robotilor Industriali

89
SRL: WHEN SENSOR 2 force>=100
MONITORED EVERY 75 MS
DURING
SMOVE robot TO box
WITH VELOCITY=0.5;
END_DURING
DO STOP robot;
- dac fora de-a lungul direciei Z
este mai mare sau egal cu 100g n
timpul deplasrii de-a lungul unei
drepte spre box robot se va opri.
Aceast condiie este verificat
(monitorizat) la fiecare 75ms
SRL: DIRMOVE puma IN ZAXIS WITH
V=20
UNTIL DISTANCE TO START>50
OR SENSOR switch=TRUE
MONITORED EVERY 100MS
-se constat c decizia de oprire
este una combinat ntre respectarea
unei distane i activarea unui
switch, care este citit la fiecare
100msec din considerente legate de
efortul de calcul

Limbajul AL permite verificarea forei, respectiv momentului de manevr,
prin intermediul unui senzor montat pe gripper-ul robotului: Momentul poate fi
definit n dou moduri: referitor la baza robotului (IN WORD) sau la sistemul
gripper-ului (IN HAND).
Exemple:
MOVE ARM TO targetframe
ON FORCE(ZHAT)>=100*GM
DO
STOP 2
-dac n timpul deplasrii braului ARM spre
targetframe fora de-a lungul axei Z este >=100g
atunci robotul se va opri
Exemple:
MOVE ARM2 TO targetframe
WITH FORCE_FRAME=gripperframe IN
HAND
ON FORCE>= 200*GM ALONG ZHAT DO
BEGIN
STOP;
PRINT ("Depaire for ")
tableARM2
flag T
END;
-sistemul de referin pentru
exprimarea forei este cel legat de
gripper (IN HAND) i controleaz astfel
deplasarea spre targetframe cu fora mai
mic de 200g. Dac fora este mai mare
sau egal cu 200g se va afia mesajul
DEPIRE FOR, indicatorul flag
trece n TRUE, iar table este ncrcat cu
constanta ARM2
Exemple:
^ Limbaje de Programare a Robotilor Industriali

90
MOVE ARM3 TO targetframe
ON FORCE <30*GM
ALONG XHAT OF edge in WORLD DO
ON FORCE >=500*GM ALONG YHAT DO
PRINT ("Atenie la fora de-a lungul axei Y")2;
-braul ARM3 este comndat s
se mite spre targetframe cu o for de
30g de-a lungul axei X exprimata n
coordonate fa de baz, iar dac este
mai mic, atunci se verific dac fora
de-a lungul axei este mai mare sau
egal cu 500g cnd se afieaz mesajul
Limbajul AML dispune de o instruciune specializat de monitorizare a
valorilor predefinite ale senzorilor, lucru care duce la o form compact i uor
de utilizat.
Exemple:
MONITOR(LED,2,0,0,1,5,'este corect');
MOVE (ARM,fgoal,LED)
-este monitorizat sistemul senzorial din gripper-ul
robotului la fiecare 1,5sec. Dac bariera
luminoas este ntrerupt, n timpul deplasrii
spre fgoal, atunci robotul este oprit.
Dac limbajul VAL nu dispune de instruciuni de micare cu monitorizarea
senzorilor ca i ROBEX, limbajul HELP dispune de instruciuni dedicate de
supraveghere a fore de-a lungul unei axe sau ntr-o articulaie:
^ Limbaje de Programare a Robotilor Industriali

91
Exemple:
SMOVE (1,#3,150);
FORCE (1,#3,60);
-robotul este comandat pentru a se deplasa de-a lungul dreptei Z
(adic axa 3) cu 150mm, cu o for mai mic de 60 (din gama 0 la
255). Dac fora este egal sau mai mare atunci robotul se oprete.
Continund cu studiul acestui tip de micare cu limbajul SIGLA se
reamintete c acest limbaj este unul rudimentar la care mnemonicele nu sunt
prea bogate n semnificaie, iar manevrarea informaiei se face la nivel de
registru.
Exemplu:
MT/3, M5, 1
- mnemonicul MT duce la ncrcarea n registrul
M5 a valorii senzorului 3
RP/2, 7, 120, 70, 3, -10, 4,
5
- instruciune de deplasare efectiv a 3 cu 70 de
pai. La fiecare 7 pai senzorul 2 este monitorizat
dac depete valoarea de 120. Dac da se
execut instruciunea cu eticheta 5, n caz contrar
instruciunea cu eticheta 4. 10 este un
parametru de ntrziere a deciziei, a crei valoare
este exprimat temporal.
C. Instruciuni de micare cu specificaii tehnologice.

Astfel de micri trebuiesc generate n cazul n care robotul trebuie s
realizeze operaii de vopsire, grunduire, sudare, gravare, etc., cnd deplasarea
trebuie fcut cu respectarea unor fore da contact sau momente ale unor fore
tehnologice. Astfel n funcie de cerinele forei tehnologice micarea este
accelerat sau ncetinit astfel nct fora msurat de senzorii tactili grupate pe
gripper s fie constant. Limbajele SRL i AL permit introducerea explicit n
instruciunile lor de micare a unor astfel de cerine:
Exemplu:
SRL:

SMOVE rip TO left_side
WITH FORCE IN
XAXIS=500

- robotul rip se deplaseaz spre left_side cu o
for de-a lungul direciei x de 500g

AL:

MOVE pensul TO left_side
WITH FORCE
(XHAT)=500*GM

- dipozitivul de vopsire ce este fixat n
gripperul robotului este deplasat n
left_side cu fora de-a lungul lui x de
500g

^ Limbaje de Programare a Robotilor Industriali

92
MOVE burghiu TO below
WITH FORCE=700*GM
ALONG ZHAT OF drilltip IN
HAND
WITH FORCE=0*GM ALONG XHAT
WITH FORCE=0*GM ALONG YHAT

- gurirea se realizeaz cu o
for de 700g de-a lungul axei Z n
timp ce de-a lungul axelor X i Y
n sistemul relativ la gripper fora
va fi 0

D. Instruciuni de micare cu monitorizarea unor
evenimente.

Mediul de lucru al unui robot conine de obicei i alte dispozitive cu care
aceast structur interacioneaz n vederea realizrii unui task. Astfel se poate
impune ca robotul s desfoare un anumit protocol n clipa n care sosete o
pies pe o band transportoare sau este adus o pies de un transportor sau pot
apare alte evenimente asincrone care influeneaz n mod direct evoluia
programului. Dac marea majoritate a limbajelor reacioneaz la apariia unui
eveniment prin ntreruperea micrii, limbajele SRL, AL i HELP permit
deservirea evenimentelor n paralel cu alte micri ale robotului. Evenimentele
por fi generate de ctre dispozitive periferice sau prin ntreruperi soft datorate
utilizatorului.
Exemplu:

Figure 23
^ Limbaje de Programare a Robotilor Industriali

93
SRL: WHEN strung-stop
DURING
SMOVE brat1 TO
destinaie
END_DURING
DO STOP brat1
- oprirea prelucrrii pe strung (sesizat de
un senzor cuplat i asigrat a fi strung-stop)
duce la ntreruperea micrii bra1 ctre
destinaie
AL: MOVE ARM1 TO
destinaie
ON brat2stop DO
STOP ARM1
- odat cu terminarea micrii bra 2 i
validarea semaforului soft bra2stop are
loc oprirea micrii executat n paralel de
ctre ARM1
VAL:

REACT 2, ntrerupt
MOVE destinaie
IGNORE 2 ALWAYS

- dac n timpul deplasrii ctre destinaie
canalul 2 este activat se trece la execuia
programului ntrerupt dup ajungerea la
destinaie, pentru ca apoi acest canal s fie
ignorat varianta cu REACTI duce la
execuia imediat a programului ntrerupt
fr a mai atepta ajungerea la destinaie
HELP

Eticheta:
IF TESTB(5) THEN
!instruciuni
!instruciuni
EOM(1)
END;
COORD(1);
IF AY(1)<149 THEN
GO TO eticheta
END;
EOM(1)

- dup testarea canalului 5 coordonatele
robotului sunt comparate cu cele
corespunztoare poziiei finale a robotului.
Dac nu s-a terminat micarea atunci are loc
un salt la etichet i micarea se reia, dac da,
atunci EOM ateapt confirmarea terminrii
micrii de ctre toate axele i apoi programul
continu. Dac canalul 5 este n 1 logic atunci
zona IF poate fi executat de cteva ori,
ndeplinirea condiiei ca AY(1)>149 s fie
urmate de EOM cu aceeai semifivaie
duration:=3;
SMOVE(1, 2, 120);
Starttime:= TIME();
Eticheta:
dt:= TIME() starttime
IF dt=duration OR dt>duration THEN
`INSTRUCIUNI
EOM(1)
ELSE
COORD(1)
IF AY(1) < 120.1 THEN
GO TO eticheta
END
END;
- dac durata micrii
curente nu depete o
valoare prestabilit (3
secunde n acest caz) se
execut setul
INSTRUCIUNI n paralel
cu execuia micrii anterior
declanate pn la
terminarea tuturor
deplasrilor EOM(1). n caz
contrar pn la atingerea
coordonatei de-a lungul axei
Y de 120,1 se reia execuia
micrilor n paralel cu
execuia INSTRUCIUNI.

^ Limbaje de Programare a Robotilor Industriali

94
E. I nstruciuni de comand i control a end-effectorului

Instruciunile destinate comenzii gripper-ului se pot mpri n
instruciuni simple de genul gripper nchis, gripper deschis precum i
instruciuni care genereaz anumite aciuni ale gripper-ului care trebuiesc
executate cu o anumit for de apucare global sau la nivel de degete,
deschideri intermediare ale terminalului (la care deschiderea elementelor de
apucare are o valoare prestabilit prin program) etc.
^ Limbaje de Programare a Robotilor Industriali

95
Din cadrul primului tip de instruciuni, n continuare vor fi date
cteva exemple pentru limbajele SRL, PASRO.
Exemple:
SRL:

OPERATE urubelnia BY
urub

- definirea urubelniei i a urubului n
zona anterioar declaraia face ca
elementul urub s fie acionat de ctre
dispozitivul urubelni
OPEN pneumatic_terminal
CLOSE
pneumatic_terminal

- instruciuni clasice de tip deschidere
nchidere gripper pneumatic
PASRO:

Gripopen
Gripclose
Gripforce(6, 3, 1)

- acelai tip de instruciuni simple de
deschidere/ nchidere gripper
- prin aceast instruciune este setat
fora de pondere 6 (din numrul total
de 7) iar fora de meninere 3, iar
timpul total de prindere este de 1 sec.
AL:

OPEN HAND TO 5*CM;
CLOSE HAND TO 5*CM;

- n cadrul acestui limbaj
deschiderea/nchiderea gripper-ului
necesit parametri de indicare a deschiderii
ntre elementele de prindere
VAL:

OPEN
MOVE gripframe
CLOSEI
DEPART 0

- pentru limbajul VAL att pentru terminale electrice
ct i pentru cele pneumatice se utilizeaz
comenzile standard OPEN/CLOSE cu observaia
ca aceste comenzi devin executabile abia cnd este
executat instruciunea urmtoare, n timp ce
OPENI/CLOSEI sunt executate imediat.
Instruciunea RELAX elibereaz aerul din gripper-
ul pneumatic
ROBEX:

GOTO/p3, XYROT, 180,
EVENT, 2, ELSE, nobox

- robotul este comandat s se deplaseze n
poziia p3 cu orientarea corespunztoare.
Dac pe canalul 2 apare un eveniment
atunci robotul este oprit i are loc execuia
instruciunii urmtoare. Dac nu programul
va continua cu eticheta nobox.
Att limbajul HELP ct i SIGLA nu dispun de instruciuni dedicate
lucrului cu terminalul. Acesta este considerat ca fiind un element robot
asemntor cu orice bra al robotului, acionarea sa realizndu-se n
mod similar:
Exemple:
HELP: SET(5)
DELAY(20)
MOVE(1, #1, 500, #3,
- elementul terminal este cuplat la canalul 5
cnd comanda SET duce la activarea sa (de
obicei nchidere). Se introduce o ntrziere
pentru a asigura sigurana prinderii, apoi se
^ Limbaje de Programare a Robotilor Industriali

96
40)
RESET
deplaseaz robotul de-a lungul axei X cu 500
mm, z cu 40 mm i se dezactiveaz canalul 5
(OPEN);
PULSE(1)
DELAY(timp_ntrziere)
MOVE(1, #1, 200, #3,
250)
PULSE(2)
DELAY(timp_ntrziere)
- acest tip de acionare gripper este
specific terminalelor electrice cu acionare de
tip SET (RESET), n sensul n care un impuls
transmis la canalul 1 duce la nchiderea
terminalului, iar alt impuls ctre canalul 2
duce la deschiderea terminalului;
SIGLA: AX/-1,-12;
MO/...;
AX/1;
- instruciunea AX cu parametru negativ
duce la deschiderea terminalului, n timp ce o
valoare pozitiv duce la nchiderea sa.

Limbajul ROBEX nscriindu-se n cadrul limbajelor evoluate
dispune de instruciuni dedicate care uureaz sarcina
utilizatorului.
Exemple:
ROBEX: GRIPNO/5
OPENGR
CLOSEGR/3
- se specific gripper-ul curent, cel de la
canalul 5, urmnd comanda de deschidere.
Specificarea canalului ca argument la
instruciunea OPENGR/CLOSEGR duce la
acionarea gripperului specificat (3) i a celui
curent (5).
^ Limbaje de Programare a Robotilor Industriali

97

1. Instruciuni de acionare a terminalelor cu parametrii
Aa cum s-a artat asupra terminalelor se pot folosi:
instruciuni simple de tipul nchidere/deschidere gripper dar i
instruciuni complexe care s duc la o serie de specificri privind:
- orientarea gripperului;
- durata micrii gripper-ului;
- viteza cu care se efectueaz micarea terminalului;
- fora de apucare;
- tolerana controlului;
- instruciuni specifice terminalului folosit.
Anumite limbaje permit specificarea parametrilor terminalelor
pentru dou sau mai multe terminale, depinznd de structura robotului.
Astfel dac parametrii de identificare a gripperului lipsesc, instruciunile
de tip TO i BY se refer la gripper-ul curent, mai precis la ultimul
terminal specificat.
Exemple:
SRL:
OPEN tietor BY
OPERATION(1) DURING MOVE
- tietorul este acionat
n timpul micrii urmtoare

OPEN gripper BY 3 DURING
MOVE
SMOVE puma TO destinaii
CLOSE gripper1 TO4
WITH VELOCITY=0.5
- n timpul micrii robotului
puma ctre destinaie, gripperul 1
este deschis cu 3cm, apoi (dup
micare) este nchis pn la distana
de 4 cm ntre degete cu viteza de 0,5
cm/s;

GRIPWITH gripper
2 TO 7
- gripper-ul este nchis sau deschis pn la
distana dintre degetele gripper 2 este de 7 cm;
PASRO:
grip
with(7)
- aciunea este similar cu cea determinat de instruciunea
SRL anterioar;
AL:
OPEN HAND TO 8*CM
MOVE ARM1 TO destinaie
OPEN HAND1 BY 3*CM
MOVE ARM1 TO @+ZHAT
CLOSE HAND1 TO 2*CM
- se comand deschiderea
gripper-ului la 8 cm n timpul micrii
ctre destinaie, pentru ca n timpul
celei de-a doua micri s se comande
ca HAND1 s fie deschis cu 3 cm iar
apoi nchis la 2 cm;
^ Limbaje de Programare a Robotilor Industriali

98
VAL:
OPEN 45
- gripper-ul este deschis ce 45 mm.

n afar de parametrii de deschidere/nchidere a gripper-ului se pot
introduce pe lng viteza de operare a gripper-ului, element care
este utilizat cu succes mai ales n operaiile paralele sau de
sincronizare a mai multor micri prin durate.
Exemple:
SRL:
ALWAYS WHEN max_curent
DURING
OPERATE TOOL(1) BY OPERATION(3)
END_DURING
DO START warning (17)
- n cazul unui blocaj sesizat de
un consum de curent
suplimentar, n timpul operaiilor
(OPERATION) execuia de
TOOL(1) se afieaz un mesaj
de avertizare warning (17);

CLOSE WITH MAVSPEED
- se comand nchiderea gripper-
ului cu vitez maxim.

WHEN start_time <=
SYSTIME+close_duration
MONITORED EVERY 50 MS
DURING
start_time:=SYSTIME
CLOSE gripper 2 with V=0,5;
END_DURING
DO STOP gripper 2
- dac are loc depirea
duratei de timp alocate
nchiderii gripper-ului (close
duration) - un element
supravegheat la fiecare 50
msec se comand nchiderea
gripper-ului 2 cu viteza de 0,5
cm/sec;

AL:
OPEN HAND TO 5*CM
WITH VELOCITY=0,5*CM
- deschiderea gripper-ului la 5 cm
cu viteza de 0,5 cm/sec;


OPEN HAND BY 2*CM
WITH DURATION=5
- deschidere gripper cu 2
cm/sec in 5 sec;
2. Instruciuni de comand a terminalului cu monitorizarea
senzorilor asociai
Operaiile de manipulare a obiectelor se fac implicit cu
folosirea unor senzori de contact, de for, n vederea asigurrii unei
pierderi corespunztoare a elementului ce trebuie manipulat n paralel
cu asigurarea unei fore de manevr. Se pot accepta ca instruciuni de
comand a terminalului cu monitorizarea senzorilor i instruciunile de
nchidere/deschidere a terminalului cu/la o anumit distan ntre
degetele acestuia, precum i impunerea unui timp de execuie al
^ Limbaje de Programare a Robotilor Industriali

99
micrii sau a unei viteze, dar se prefer introducerea acestei categorii
separate de instruciuni deoarece aceste ultime instruciuni pot fi
considerate a se baza pe sistemul senzorial interioceptor.
Numai cteva limbaje ofer acest tip de instruciuni care presupun
un sistem senzorial ataat terminalului. Dintre acestea putem evidenia
limbajele:
Exemple:
SRL: CLOSE gripper1 UPTO
GRIPFORCE>stringforta+0.3
N
- gripper-ul 1 este nchis pn ce fora
de nchidere este mai mare ca
stringforta+0,3 N
WHEN touch_sens=TRUE
DURRING

CLOSE gripper2
END_DURING
DO STOP gripper2
- dac senzorul de atingere este activat
n timpul nchiderii gripper-ului 2 se
oprete acionarea acestuia.
AL: CLOSE HAND TO
2*CM
ON FORCE>=100*GM
DO
STOP HAND
- se comand nchiderea minii la 2 cm,
nchidere care va fi oprit dac nu s-a ajuns la
respectiva distan dar fora de strngere a fost
egal sau mai mare de 100g*9,81 m/s
2

VAL: GRASP
14.8,200
- n VAL controlul forei este fcut de ctre controller-ul
de for cu parametrii prestabilii. Astfel dac la
atingerea acestei fore distana dintre degetele gripper-
ului este mai mic dect valoarea specificat de
instruciune (14,8) se realizeaz saltul automat la
eticheta cuprins n argumentul al doilea (200).
^ Limbaje de Programare a Robotilor Industriali

100

F. Instruciuni dedicate lucrului cu sist emul exterioceptor

Prin sistem senzorial exterioceptor se nelege ansamblul
senzorilor care ofer arhitecturii de control a robotului informaii legate
de mediul de lucru al robotului. Din punct de vedere al complexitii
constructive senzorii exterioceptivi pot fi grupai n senzori binari,
senzori analogici i sisteme de vedere artificial.
Pe de alt parte din punct de vedere al modului de utilizare a
informaiei captate de la acetia prin intermediul limbajelor de
programare dedicate roboilor, instruciunile se pot diviza n instruciuni
dedicate senzorilor binari i analogici destinai controlului unor mrimi
fizice i instruciuni dedicate sistemelor de vedere artificial.
Deoarece prezenta carte se adreseaz specialitilor in domeniu se
va omite o descriere mai ampl a senzorilor exterioceptori i a tipurilor
de semnale furnizate de acetia, cei interesai de astfel de elemente
putndu-li-se indica o bibliografie adecvat n acest sens [. . . ].
Prezena acestor instruciuni se datoreaz faptului c roboii
industriali nu sunt construii pentru utilizarea ntr-o aplicaie specific, ei
dispun de o arhitectur cu nalt grad de generalitate dar i adaptabilitate,
n sensul n care la canalele de comunicaie cu mediul de lucru se pot
ataa senzori sau module inteligente de control a senzorilor care s
furnizeze anumite semnale robotului. Prezena acestor structuri n
arhitectura intern a robotului ar duce la avantajele evidente legate de
timpul de prelucrare al semnalelor senzorilor, n paralel cu limitarea
folosirii respectivului robot la un domeniu relativ ngust.
Ambele tipuri de structuri duc la aceeai aciune: realizarea unui
anumit nivel, tip de informaie, valoare sesizat de ctre senzor are ca
^ Limbaje de Programare a Robotilor Industriali

101
efect o anumit evoluie a robotului n timp ce nerealizarea acestei
condiii conduce la o alt evoluie specificat de utilizator. Instruciunile
oferite de limbajele de nivel nalt pot furniza elemente de identificare i
alocare a unui tip de informaie ctre senzorii care vor fi citii,
instruciuni care poat numele de instruciuni de configurare a
sistemului senzorial. Datorit complexitii ridicate a sistemelor de
vedere artificial, acestea vor fi tratate separat.

G. Instruciuni de configurare a sistemului senzorial

Acest tip de instruciuni sunt ntlnite n special la limbajele:
Exemple:
SRL: SYSTEM SPECIFICATION
SENSOR: contact=CHANNEL(3)
STRUCTURE contact=BOOLEAN
greutate=CHANNEL(2)
STRUCTURE greutate=INTEGER
END_SYSTEM_SPECIFICATION
- primete instruciuni ce
configureaz senzorii contact de
tip boolean (digital) fiind la
canalul 3 (conectarea hard) iar
greutate este de tip ntreg,
reprezentat de informaia citit pe
canalul 2.
SIGLA: MT/1,M8,2
- valoarea senzorului 1 este stocat
n registrul M8, ateptndu-se un timp de 2 sec pn
se trece la instruciunea urmtoare.
HELP: IF TESTB(3) THEN...
- dac intrarea 3 este n nivel nalt
rezultatele acestei structuri este TRUE.
IF VALUE (1) > 80 THEN
- instruciunea VALUE (1) citete canalul 1
de mai multe ori furniznd o valoare care a
diferit pentru dou msurtori succesive cel
mult la cel mai puin semnificativ bit.
IF IVALUE (1) > 80 THEN
- deosebirea const n faptul c valoarea oferit de
IVALUE este prima valoare citit. Ca o observaie,
aceste ultime dou instruciuni pot fi alocate unor
variabile de program (Ex: sens:3=VALUE(3);).
Fr ndoial c monitorizarea senzorilor se poate face programat
n modul n care deja a fost prezentat anterior:
Exemple:
SRL:
ALWAYS WHEN SENSOR(3)>=5
MONITORED EVERY 100MS
DURING
^ Limbaje de Programare a Robotilor Industriali

102
Instruciune de micare

END_DURING
DO START warning

n mod similar limbajul AML poate s ofere faciliti de
monitorizare a senzorilor.
Exemple:
MONITOR (LED, 2, 0, 0, 1.5, '
trece')
- la fiecare 1,5 secunde este monitorizat
senzorul LED i dac 2 semnale sunt 0 atunci
are loc oprirea micrii, dac nu este afiat
mesajul trece i execut micarea.
Chiar dac limbajul HELP nu are instruciuni specifice de
monitorizare aceast instruciune poate fi emulat prin intermediul unor
task-uri.
Exemple:
Monitor:
sens2:=VALUE(2);
IF sens2>5 OR sens2=5 THEN
PRINT (0, 'Maina1 este pornit'
);
M10n:=1
END;
DELAY(10)
GO TO monitor.




- indicator pornire main

n continuare instruciunile de implementare a condiiilor de
evoluie datorate senzorilor exterioceptivi au o structur conceptual
general de tipul:
IF condiie senzor THEN micare 1
(ELSE) micare 2
Exemple:
SRL: IFSIG contact 3 THEN
PTPMOVE TO
eroare
ELSE
SMOVE TO destinaie
- dac senzorul contact 3 este activat (1 logic)
atunci robotul se va mica punct cu punct ctre
punctul eroare, n caz contrar va avea loc
micarea liniar ctre destinaie.
INPUT (temperatur)
- valoarea analogic a senzorului
temperatur este citit i dac condiia
^ Limbaje de Programare a Robotilor Industriali

103
IF temperatura > temp_limit
THEN
BEGIN
SMOVE robot TO aproviz;

END
de a fi mai mare dect temperatura
limit este ndeplinit atunci este
executat blocul de instruciuni cuprins
ntre BEGIN i END. n caz contrar se
execut instruciunile de dup
instruciunea END.
AML: IF SENSI (LED,0) THEN
BREAK ('Direcie
blocat')
- dac LED este ntrerupt (senzorul) atunci are
loc afiarea mesajului i oprirea structurii, dac nu
se continu cu instruciunea de BREAK ('Direcie
blocat').
VAL: IFSIG 1, -5, , THEN 300
- limbajul VAL permite i implementarea
unor funcii logice I ntre semnalele senzorilor
pe nivel 1 sau 0. Astfel n cazul instruciunii
prezentate ca exemplu dac semnalul 1 este setat
(n 1 logic) i semnalul 5 resetat (n 0 logic, de
unde i semnal negativ) se realizeaz saltul la
instruciunea 300. n caz contrar se continu
execuia cu instruciunea urmtoare.
SIGLA: PP/-1,12
- dac senzorul 1 este n 0 logic se realizeaz saltul la eticheta
12.
MT/1, M8,2
BL/M8, 75, 3
grup 1
instruciune

JU/4;
NU/3;
grup 2
instruciune

NU/4;
- valoarea senzorului 1 este ncrcat n registrul M8. Dac
valoarea din M8 este mai mare sau egal dect 75 se execut
grupul 1 de instruciuni i apoi prin JU/4 - salt necondiionat
la eticheta 4 (NU/4). Dac valoarea este sub 75 (below-BL)
are loc executarea grupului 2 de instruciuni ce ncepe cu
eticheta 3 (NU/3).


H. Instruciuni de micare cu controlul duratei micrii

n cadrul unor procese tehnologice implicnd anumite transformri
fizico-chimice timpul, durata unei micri devin un element care nu poate fi
neglijat, motiv pentru care poate fi privit ca fiind un parametru care ar trebui
specificat explicit. Acest tip de problem poate fi rezolvat n cadrul limbajelor
de programare a roboilor industriali fie prin existena unor instruciuni explicite
cum este cazul limbajelor SRL i AL, fie prin monitorizarea momentului de
^ Limbaje de Programare a Robotilor Industriali

104
nceput a micrii i a momentului curent, diferena acestora putnd duce la
setarea unor indicatori soft, flag-uri care s intervin n cadrul procesului sub
forma unor evenimente.
Exemplu:
SRL:

WHEN
start_time<=SYSTIME-
durata_miscarii
MONITORED EVERY 20 MS
DURING
SMOVE robot TO destinaie
END_DURING
DO START alt_deplasare

- dac timpul de micare a robotului spre
destinaie, monitorizat la fiecare 20 MS a
fost depit (evaluarea duratei micrii cu
funcia SYSTIME este mai mare dect
durata planificat) se realizeaz trecerea
automat la execuia deplasrii urmtoare
AL:

MOVE ARM1 TO destinaie
ON DURATION >=5*sec DO
BEGIN
MOVE ARM2 TO centru
WITH DURATION=3*SEC;
PRINT (start proces);
END;

- la 5 secunde de la nceperea
deplasrii lui ARM1 ctre destinaie este
acionat i ARM2 spre centru timp de 3
secunde i apoi este afiat un mesaj


I . Procese n paralel

Deoarece micarea robotului sau operaiile de afiare a unor informaii la
imprimant sunt mult mai lente comparativ cu instruciunile de prelucrri
logico-aritmetice, acces informaia de pe disc, salturi n cadrul programului sunt
permise funcii care s declaneze explicit anumite operaii de prelucrare n
paralel cu execuia micrii structurii robotului. Acest tip de instruciuni sunt
specifice n special limbajelor AML i HELP.
^ Limbaje de Programare a Robotilor Industriali

105
Exemplu:
AML:

AMOVE (ARM,
framedestinaie)
.
.
WAITMOVE

- instruciunea specific micrii
asincrone urmnd ca instruciunile
cuprinse ntre acesata i WAITMOVE
s fie executate odat cu nceperea
micrii, iar trecerea la instruciunile de
dup WAITMOVE s se realizeze
numai dup terminarea micrii.


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
DELAY(50)
END;
IF VALUE(1)>70 THEN
MOVE(1, #1, 140, #3, 50);
PULSE(2)
MOVE(1, #1, 120, #2, 260, #
150)
ELSE
PRINT (Valoare
insuficient)
HOLD
END;
- dac senzorul 3 este TRUE
atunci execuia programului
este ntrziat cu 1 sec
(50x20 msec)

- dac valoarea senzorului 1
este mai mare dect 70
atunci piesa este depozitat,
gripper-ul deschis i robotul
mutat ntr-o a doua poziie.
n caz contrar se afieaz un
mesaj i se ateapt
intervenia operatorului.

J . Instruciuni destinate lucrului cu sisteme de vedere
artificiale

Sistemul de vedere artificial este de departe sistemul senzorial care pe
lng faptul c ofer o informaie complex i complet asupra scenei de lucru,
necesit i un set de operaii complexe de aliniere sau mai precis de stabilire a
unor relaii ntre cele dou sisteme care fac parte din sistem: sistemul de
referin asociat camerei de luat vederi i sistemul robot. Pe de alt parte
sistemul de vedere artificial dispune de o serie de caracteristici care-I permit o
integrare mai uoar n sistemul robot:
^ Limbaje de Programare a Robotilor Industriali

106
- obiectele identificate pot primi nume simbolice, reprezentate n ASCII
prin iruri de caractere
- poziia i orientarea obiectelor sunt evaluate n relaie cu un sistem de
coordonate cartezian
- sistemul poate nva obiectele printr-o instruire prealabil, alocnd
totodat i numele simbolice elementelor nvate.
O serie de limbaje, cum este cazul limbajului VAL, au fost extinse cu
seturi de instruciuni special dedicate sistemelor de vedere artificial.
Instruciunile de baz pentru VAL (VAL11) de lucru cu sistemul de vedere
artificial sunt VPICTURE care capteaz imaginea prin camera de luat vederi i
o depune ntr-un masiv de memorie special destinat acestui lucru (un buffer de
memorie) i VLOCATE instruciune care genereaz localizarea imaginii
achiziionate n modelele memorate (caut imaginea n imaginile memorate)
pentru ca n cazul gsirii unui obiect orientarea i poziia curent s fie
memorate ntr-un obiect, iar n caz contrar s se realizeze un salt la eticheta
cuprins n cel de-al doilea argument. Dac eticheta lipsete programul se
oprete i este generat un mesaj de eroare. Deoarece o complet prelucrare a
informaiei captate de sistemul de vedere artificial conine i o serie de operaii
de calibrare, determinare a transformrilor de coordonate ntre sisteme, pentru
nelegerea acestora va fi prezentat i comentat un exemplu:
^ Limbaje de Programare a Robotilor Industriali

107
Exemple:
HERE calibrobot
- prin aceast instruciune se definete
centrul discului n care este plasat
terminalul ca fiind sistemul de calibrare al
robotului (calibrobot)
MOVE respoint
- robotul este extras din schema de
recunoatere a obiectelor prin mutarea ntr-
un alt punct (restpoint)
VPICTURE
- este captat imaginea de ctre camera
de luat vederi
VLOCATE calibcamera, 150
- dac obiectul este recunoscut (poziia
iniial), elementele privitoare la orientare
i poziie sunt stocate n sistemul
calibcamera dac nu salt la instruciunea cu
eticheta 150
INV
invcalibcamera=calibcamera
- se calculeaz sistemul invers care
corespunde transformrii coordonatelor
obiectului n sistemul de coordonate al
camerei (achiziionarea imaginii ofer date
referitoare la sistemul imagine)
SET
camerasystem=calibrobot:
invcalibcamera
- se calculeaz transformarea camer
sistem prin compunerea transformrilor
baz-robot-camer

Pn n acest punct a avut loc calibrarea i definirea transformrilor
necesare prelucrrii imaginilor i poziionrii robotului. Din acest punct ncepe
efectiv prelucrarea obiectelor a cror imagine este achiziionat de sistemul de
vedere.

Figure 24
^ Limbaje de Programare a Robotilor Industriali

108
VPICTURE
- este achiziionat imaginea unui obiect
VLOCATE obiect,
150
- se caut identificarea obiectului
MOVE camera
system:obiect
- utiliznd orientarea i poziia
obiectului compus cu transformarea
camerasystem se poate defini sistemul n care
este nevoie ca robotul s se poziioneze.

Un alt exemplu de limbaj evoluat destinat lucrului cu sistem senzorial de
vedere artificial este RAIL. Acest limbaj dispune de mai multe elemente care s
permit identificarea obiectelor care au fost preluate de ctre un sistem de
vedere artificial. Asemntor cu VAL11 limbajul RAIL dispune de o
instruciune explicit de captur a imaginii: PICTURE dar i de un set de
instruciuni care s permit identificarea obiectului OBS_FEA(TURE) n
funcie de anumite caracteristici: poziie (OBJ_XMIN, OBJ_XMAX,
OBJ_YMIN, OBJ_YMAX), orientare (OBJ_ANGLE), numrul orificiilor
Imaginea
captata
Identificarea
obiectului si
determinarea
pozitiei
Frame lista
.
.
box
x valoare
y valoare
z = 0
Orientare
.
.
.
MOVE camera system:box
VLOCATE box, 150
.
.
.
.
.
VPICTURE
.
.
.
.
.
Sistemul de vedere
artificiala
Programul
utilizatorului
Elemente
program

Figure 25
^ Limbaje de Programare a Robotilor Industriali

109
(OBJ_HOLES), dimensiunea diametrului maxim, minim al cercului care
ncadreaz obiectul - circumscrie/nscrie obiectul (OBJ_RMAX, OBJ_RMIN),
culoare (OBJ_COLOR), arie (OBJ_TOTALAREA), centrul de greutate
(OBJ_XCENT, OBJ_YCENT). Numrul total de caracteristici care pot fi
recunoscute prin intermediul limbajului RAIL este de 45.
Deoarece nu toate cele 45 de caracteristici sunt folosite unele dintre acestea
pot fi inhibate sau chiar toate (prin REC_FEAT) oferindu-se ns posibilitatea
utilizrii unor ali identificatori cum ar fi: primul obiect din cadrul imaginii
curente (FIRSTPART), urmtorul obiect (NEXTPART), primul obiect sau
orificiu din imaginea curent (FIRSTBLOB), urmtorul obiect/orificiu
(NEXTBLOB). Aceti identificatori sunt utilizai n legtur cu variabila
VIS_NPART care identific numrul de obiecte din imagine:
Exemple:
PICTURE
IF VIS_PART>0 THEN
BEGIN
FOR numr elemente =1 TO VIS_NPART DO
BEGIN
IF numr elemente ==1 THEN
FIRSTPART
ELSE
NEXTPART
IF OBJ_NHOLES ==3 THEN
ENTLOOD
END
END
- dup achiziia imaginii se
identific prin VIS_NPART
numrul de elemente i dac
acesta este 1 se declar respectivul
ca primul, n caz contrar se indic
c sunt mai multe: NEXTPART.
Dac numrul de orificii este 3
atunci se iese din bucla de
examinare, n caz contrar se
continu examinarea (dup
ultimul END poate urma o
instruciune de genul GO TO ).

n cadrul limbajului RAIL exist posibilitatea de a controla mai multe
sisteme de vedere artificial sau inhibat afiarea imaginii pe monitor, afiarea
color sau nivele de gri sau ali parametri hard care de obicei sunt setai iniial de
utilizator, pentru aplicaia respectiv i apoi nu mai sunt modificri.
Exemple:
VIS_DISPLAY = OFF;
- se inhib afiarea pe monitor
VIS_CAMERANO =2;
- sistemul de vedere artificial curent
^ Limbaje de Programare a Robotilor Industriali

110
este numrul 2
K. Delimitarea programului prin intermediul blocurilor
Utilizarea blocurilor de program faciliteaz programatorului o abordare mai
concentrat, mai flexibil i mult mai uor depanabil. Problemele care apar n
cadrul folosirii structurilor de tip blocuri se refer la valabilitatea variabilelor
definite n interiorul unor blocuri. Structura central a declarrii blocurilor
conine curente cheie de tipul BEGIN i END cu particulariti legate de
limbajul folosit. Spre exemplu AL cere pe lng cele 2 cuvinte cheie i un nume
al blocului, SRL utilizeaz cuvinte cheie BEGIN_BLOCK i END_BLOCK, iar
PASCAL i PASRO utilizeaz structurile concrete de blocuri mpreun cu
structurile de tip procedur.
Exemple:
BEGIN bloc 1
SCALAR limit, a, b,
c;
.
.
IF SENSOR(2)< limit
THEN
BEGIN bloc 2
SCALAR I;
.
.
END bloc 2
ELSE
BEGIN bloc 3
SCALAR k;
.
.
END bloc 3
.
.
END bloc 1


PROGRAM principal
VAR limit a, b, c :
INTEGER
PROCEDURE verif
(x, y: REAL)

=
END
BEGIN
INTEGER VARi
i
.
.
:

END
END
INTEGER VARk
BEGIN
k
.
.
.
.
:



STATIC BLOCK
Subr1:
.
.
RETURN
ENDBLOCK
INIT?BLOCK
DEFINE v(3);
V[1]=3
V[2]=4
V[3]=5
ENDBLOCK
BLOCK
.
.
ENDBLOCK
BLOCK
.
.
ENDBLOCK


Exemplu n AL Exemplu n Pascal Exemplu n HELP
^ Limbaje de Programare a Robotilor Industriali

111


Din cele 3 exemple se cuvine a se aduga cteva specificaii referitoare la
limbajul HELP care dispune de blocuri dinamice ale cror instruciuni
sunt terse dup executare (BLOCK ENDBLOCK) ca i n cazul
blocurilor de iniializare (INIT_BLOCK) precum i blocuri statice care
rmn memorate n memoria de lucru a robotului, acestea putnd fi
apelate prin numele subrutinei i parametri (aceeai specificaie se
menine i pentru limbajul PASCAL i PASRO).
L. Instruciuni de control al parcurgerii programului
Chiar dac numele tipului de instruciuni pare poate puin prea elevat,
acest tip de instruciuni a fost deja ntlnit pn n acest moment, autorul
dorind s realizeze n cele ce urmeaz o prezentare mai compact a logicii
folosirii acestei instruciuni, n paralel cu exemplificarea tipurilor de
instruciuni pentru diverse limbaje. n cadrul alctuirii unui program se
apeleaz de foarte multe ori la pictograme care descriu evoluia
programului, structura acestuia la nivel de micare sau blocuri. n esen
elementele utilizate i ntreaga organigram va trebui s ndeplineasc
urmtoarele reguli:
^ Limbaje de Programare a Robotilor Industriali

112

- instructurile de tip bloc vor avea o intrare i o ieire
- evoluia dinamicii programului va fi de sus n jos prin intermediul
structurilor de tip bloc
- o structur bloc este o unitate funcional nchis (ale crui efect se
datoreaz strict instruciunii/instruciunilor din respectivul bloc)
- ntr-un bloc sunt definite clar instruciunile/instruciunea care trebuie
efectuat
- comenzile, argumentele pentru prelucrarea executat de blocul curent
sunt preluate de la vecini
innd cont de aceste specificaii se pot defini cu uurin urmtoarele
tipuri de instruciuni destinate controlului parcurgerii programului:
1. Instruciuni de salt necondiionat
Tipul general al unui astfel de instruciune conine un element de tip <
eticheta>: <instruciune> urmat de o instruciune de tipul GO TO <eticheta>.
Chiar dac acest tip de instruciuni sunt deosebit de clare se recomand ns
utilizarea ct mai puin cu putin a acestui tip de instruciune datorit rigiditii
ei.
2. Instruciuni de execuie condiionat
n cadrul acestor instruciuni putem evidenia mai multe subtipuri:
1. Instruciuni cu final condiionat (cu ieire condiionat)
Din cadrul acestor instruciuni fac parte instruciunile de tip REPEAT
UNTIL, precum i instruciunile de tipul FOR i=1 TO n DO. Acestea au
ca efect repetarea execuiei unui set de instruciuni sau unor blocuri pn
cnd variabila de tip semafor devine egal cu o anumit valoare sau mai
mic/mai mare dect valoarea prestabilit.
Exemple:
^ Limbaje de Programare a Robotilor Industriali

113
REPEAT
i:= i + dt;

IF i > valfind THEN
EXIT_REPEAT

UNTIL total > 10
FOR i = 1 TO valfinal
DO
BEGIN



END

FOR K: = 1 find
DO
l: = l + 1;


REP
- Instruciunea REPEAT cu
ieire forat (de valoarea
valfind a lui i) pentru
limbajul SRL
- Instruciuni FOR
pentru PASCAL i
PASRO
- Instruciune
FOR pentru
HELP
3. Instruciuni cu execuii condiionate

Din cadrul acestor instruciuni fac parte instruciunile de tip CASE. De
departe acest tip de instruciuni este cel mai flexibile i cel mai recomandat n
abordarea structural a unui program prin varietatea obiunilor oferite. Se
remarc rolul central pe care-l joac variabila de decizie, n spe valorile
particulare ale acestei variabile.
Principal o structur CASE se poate reprezenta astfel:
BLOC 1 BLOC 2
CASE
BLOC n
Case1 Case 2 Case n
Case n
Case 1
Case 2
Case test
Structura
blocului 1
Structura
blocului 2
Structura
blocului n
. . . . .

^ Limbaje de Programare a Robotilor Industriali

114
Exemple:
AML:
BRANCH (IF N GE 1 AND N LE
4 THEN
<CASE1, CASE2, CASE3,
CASE4> (N)
ELSE ERROR_CASE
CASE1:

BRANCH (CASE_END);
CASE2:

BRANCH (CASE_END);
CASE4:

BRANCH (CASE_END);
ERROR CASE:

CASE_END
HELP:
IF case <0.5 THEN caseend END>;
GO TO (case, case1, . , casen);
GO TO caseend
case1: <instruciuni>
GO TO caseend
case2: <instruciuni>
GO TO caseend

casen: <instruciuni>
caseend:





Instruciunile CASE pentru limbajele PASRO, SRL, AL conin elementele
caracteristice structurii de baz, n timp ce limbajele AML i HELP pot
implementa structura CASE utiliznd elemente de tipul GO TO i BRANCH.
Tot o instruciune de Test de ieire de ast dat la intrarea n bucla este
structura WHILE. Aceasta este specific limbajelor SRL, PASRO, HELP, AL
avnd o structur logic WHILE <expresie logic> DO bloc mai precis atta
timp ct <expresia logic> este TRUE se execut bloc.
4. Instruciuni cu salt condiionat
BLOC 1 BLOC 2
CONDITIE
False True
THEN
BLOC 1
ELSE
BLOC 2
CONDITIE TRUE FALSE

^ Limbaje de Programare a Robotilor Industriali

115
Acest tip de instruciune se bazeaz pe structura IF <condiie logic>
THEN bloc1 ELSE bloc2. Reprezentarea de tip organigram a acestui tip de
instruciuni este
BLOC 1
CONDITIE
False True
THEN
BLOC1
CONTINUA
CONDITIE TRUE
FALSE

^ Limbaje de Programare a Robotilor Industriali

116
Chiar dac instruciunea CASE este cea mai flexibil instruciunea
de tip IF este n general cea mai folosit i datorit faptului c n general
semnalele primite de la structurile de control sunt n general binare motiv pentru
care aceste semnale sunt fie TRUE, fie FALSE. Condiiile logice cele mai
utilizate sunt de tip relaional: mai mic, mai mare, egal, mai mic cel mult egal,
mai mare cel mult egal. Dac limbajele PASRO, SRL, AML, AL utilizeaz
forme clasice a instruciunii, limbajul SIGLA datorit strnsei conectiviti pe
care o are cu arhitectura hard, necesit o tratare mai atent i inserarea unor
comentarii care s permit o mai rapid identificare a condiiilor.
Exemple:
AL i PASRO: HELP:
IF x > a
THEN IF x <=b THEN
BEGIN
IF x=(a+b)/2 THEN
PRINT (corect)
END
ELSE PRINT (prea mare)
ELSE PRINT (prea mic);
IF (x > a) OR (x = a)
THEN IF (x < b) OR (x = b)
THEN IF x = (a+b)/2
THEN PRINT (corect)
END
ELSE PRINT (prea mare)
END
ELSE PRINT (prea mic)
END;
VAL: SIGLA:
IF x GE a THEN 10
TYPE prea mic
GO TO 100
IF x LE b THEN 20
TYPE prea mare
GO TO 100
20 SETI timp = a+b
SETI temp = temp/2
IF x NE temp GO TO 100
TYPE corect
100



MT/1, M1, 2 se ncarc n registrul M1
valoarea de la senzorul 1 (x = M1)
MT/a, M2, 2 se transfer valoarea a n
M2
MT/b, M3, 2 se transfer valoarea b n
M3
BL/M1, M2, 1 dac M1 > M2 = a atunci
salt la eticheta 1
BG/M1, M3, 2 dac M3 > M1 atunci salt
la eticheta 2
SE/M4, M2 M4M2
IC/M4, M3 M4M4+M3
SE/M5, 0 M50
NU/10 eticheta 10
IC/M5, 1 M5M5+1
IC/M4, -2 M4M4-2
^ Limbaje de Programare a Robotilor Industriali

117
BG/M4, 0, 10 dac M4 este > 0 salt la 10
BE/M4, 0, 11 dac M4 este = 0 salt la 11
IC/M5, -1 M5M5-1 dac M4 < 0
NU/11 eticheta 11
BE/M1, M5, 3 dac M1 = M5 salt la 3
JU/100 salt eticheta 100
NU/1 eticheta 1
NT/ prea mic, M1 afieaz prea mic
JU/100 salt la 100
NU/2 eticheta 2
NT/ prea mare, M1 afieaz prea mare
JU/100 salt la 100
NU/3 eticheta 3
NT/corect,M1 afieaz corect
NU/100 eticheta 100

Toate exemplele prezentate sunt utilizate pentru implementarea unei
evoluii ca n organigrama urmtoare :
x >= a
PRINT ' Prea mic '
x <= b
True
PRINT ' Prea mare '
Fal se
Fal se
x =(a+b)/2
True
PRINT ' Prea mare '
True Fal se
x >=b
Fal se True
PRINT "
Prea mic"
x<=b
Fal se True
PRINT "
Prea
mare "
x=(a+b)/2
Fal se True
PRINT " corect
"
Continua

^ Limbaje de Programare a Robotilor Industriali

118
Dac primele 3 exemple (limbajele VAL, AL, PASRO i HELP) nu credem
c necesit explicaii suplimentare, exemplul n SIGLA implementeaz operaia
de mprire prin scdere repetat, rezultatul ntreg fiind ncercat n registrul
M5: astfel atta timp ct M4>0 se scade din M4 2 i la fiecare scdere se
incrementeaz M5, urmnd c dac M4=0 s se ncheie mprirea, s se
realizeze ieirea din bucla care simuleaz mprirea cu 2, iar dac M4<0
decrementndu-se M5 se iese deasemenea din simularea mpririi.
M. Instruciuni de sincronizare i de temporizare
condiionat

Acest tip de instruciuni sunt folosite la sincronizarea micrii robotului
cu alte elemente ale modului de lucru sau a micrii robotului cu micarea
elementului terminal. O astfel de instruciune combinat este format din
dou comenzi: una de captare a semnalului de sincronizare SIGNAL <
eveniment semnal> i cea de-a doua de ateptare pn n clipa n care
semnalul eveniment este TRUE: WAIT <semnal eveniment>. Sigur c
exist i varianta care cumuleaz cele dou instruciuni sub forma
instruciunii de tip TEST <semnal eveniment>.
^ Limbaje de Programare a Robotilor Industriali

119
SIGLA are aceeai structur n schimb mnemonicele folosite sunt mai
sintetice: ES/ <variabil eveniment> (variabila este setat dac evenimentul este
TRUE) i EW/ <variabila eveniment>, <variabila>,.evoluia programului
este oprit pn ce variabilele sunt setate.
Instruciunile simple de temporizare condiionat pot fi clasificate ca:
Instruciuni condiionate temporal
Instruciuni condiionate de terminal
Instruciuni condiionate de activarea unei taste speciale
Instruciuni condiionate de evenimente externe
N. Alte consideraii privitoare la tratarea situaiilor
excepionale, la atributele i starea sistemului

Sistemul robot dispune ca orice structur complex sistemic de un
set de atribute interne i stri care pot fi citite i uneori chiar modificate
prin intermediul unui program utilizator. Spre exemplu AML dispune de
atribute privitoare la starea unui anumit canal QCHAN, atributele unui
anumit senzor QIODEF, poziia i orientarea curent QPOSITION, etc.
Modificarea acestor atribute nu se recomand a fi fcut de utilizator,
proiectantul hard/soft al structurii fiind cel care utiliznd aceste informaii
conduce sistemul spre o bun funcionare. Deasemenea situaiile
excepionale sunt de obicei tratate prin intermediul unor subrutine de
ntreruperi nemascabile implementate de ctre constructor. Astfel de
situaii de excepie pot fi:
- oprirea robotului
- elementul ce se dorete a fi prins este greit poziionat sau absent
- micarea robotului poate duce la blocaj intern sau coliziune
- mprirea la zero a unui operand
^ Limbaje de Programare a Robotilor Industriali

120
- timpul de ateptare al unui eveniment depete o valoare maxim
prestabilit
- magazia este goal
- fora exercitat asupra robotului sau terminalului este mult prea mare
^ Limbaje de Programare a Robotilor Industriali

121
VI . Integrarea n program a programrii prin instruire

Este cunoscut faptul c robotul este o structur complex att din
punct de vedere cinematic ct i dinamic. Utilizarea unui model cinematic
sau dinamic face apel la o serie de simplificri, care n cazul utilizrii
modelului drept baz pentru programarea off-line a robotului poate
conduce la erori de neneglijat. Utiliznd ideea conform creia cel mai bun
model al unui obiect este obiectul nsi a aprut modalitatea de
programare a unui robot prin instruire, cnd robotul este condus punct cu
punct pe traiectoria care se dorete a fi descris, punctele sunt memorate,
pentru ca apoi n cadrul execuiei automate robotul s descrie traiectoria
pe care a fost instruit.
n esen programarea unui robot care dispune de un limbaj de
programare se compune din dou etape:
construcia structurii logice a programului
construcia punctelor, spaiilor i orientrilor specifice execuiei
robotului.
Mai precis prima etap include evoluia dorit a robotului. Aa cum
am artat, deoarece nu pot fi definite cu suficient precizie poziia i
orientarea robotului n punctele de interes se prefer ca acestea s fie
introduse de ctre programator n cadrul procedurii de instruire (nvare).
Aceast instruire, din punct de vedere al momentului n care se execut
este de dou feluri:
a). se execut programul urmnd ca poziiile i orientrile s aib
nume simbolice, lucru care va duce ca la prima rulare executat s se
opreasc atunci cnd se ajunge la simboluri nc nedefinite valoric. n
acest moment se trece n regimul de instruire i se poziioneaz
convenabil robotul, cu ajutorul unui joystick, n marea majoritate a
^ Limbaje de Programare a Robotilor Industriali

122
cazurilor, iar la activarea unei chei speciale valorile curente s fie
atribuite simbolului ntlnit. Aceast procedur impune o alocare
corespunztoare de memorie, n paralel cu dezavantajul generat de
instruciunile condiionale de tip IF, respectiv CASE la care o prim
rulare va duce la definirea evoluiei corespunztoare condiiei ndeplinite,
pentru ca n cazul altei evoluii condiionale robotul s se opreasc din
nou i s fie nevoie completarea variabilelor simbolice.

b). se definete separat o list de poziii i orientri care va fi
asigurat separat de evoluia on line a robotului prin procedura de
instruire adecvat. Chiar dac aparent aceast procedur este
Programator
Programul text
conti nind instructiuni
de miscare, sal turi,
comenzi intrare-iesire
Produra de instruire
Si stem de programare
offl ine ( editoare si
compi latoare )
Si stem de programare
onl ine avand
componente
i nteractive
Structura cadru a
programul ui
Structura cadru a
miscari i
Program executabil
Si stem i nterpretor si
de comanda a
control l erel or
Robot

Figure 26
^ Limbaje de Programare a Robotilor Industriali

123
consumatoare de timp, din punct de vedere al blocrii produciei aceast
metodologie exclude complet dezavantajele primei metode.
n plus alctuirea de fiiere cu tipuri adecvate de sisteme, orientri,
poziii se dovedete a fi extrem de flexibil, adugarea unor alte tipuri de
variabile fcndu-se cu ansamblu.
Spre exemplu n PASRO sau SRL se definesc 5 tipuri de operaii cu
fiiere, operaii care confer o deosebit flexibilitate n manevrarea
informaiei.
Spre exemplu se pot defini urmtoarele tipuri de variabile:
Exemple:
PASRO:
TYPE
gripstatustyp = (gdeschis, gnchis)
ffilename = PACKED ARRAY |1 ffmax| OF CHAR
framename = PACKED ARRAY |1.ffmax| OF CHAR
ffilerecord = RECORD
name : framename
value : frame
gripvalue : REAL
grips : gripstatustyp
END;
ffiltyp = FILE OF ffilerecord

Dac se dorete introducerea unor noi variabile, spre exemplu
coordonatele generalizate ale cuplelor n poziia curent acest lucru se
poate face cu uurin prin inserarea n declararea TYPE a unei linii de
genul : robotangletyp = ARRAY |0 5| OF REAL iar n RECORD :
robotangle : robotangletyp
Operaiile cu fiiere sunt:
deschiderea unui fiier openframefile (filename: ffilename; VAR status:
INTEGER);
nchiderea unui fiier closeframefile
^ Limbaje de Programare a Robotilor Industriali

124
iniializarea unui fiier frameinitialize se declar prin procedur
valorile de ieire a frame-ului, valorile terminalului, status-ului
acestuia
|
|
|
|
|
|
.
|

\
|
< INTEGER VARstatus
framename fname
typ gripstatus VARgsout
REAL VARgvout
frame VARfout
:
; :
; :
; :
; :

crearea unui fiier createframefile (filename: ffilename; VAR status:
INTEGER)
scrierea ntr-un fiier framewrite
|
|
|
|
|
|
.
|

\
|
> ; :
: sin
:
:
:
INTEGER VARstatus
typ gripstatus g
REAL gvin
frame fin
framenme fname

Pentru limbajul VAL crearea listei de simboluri se face prin
utilizarea cheilor speciale de pe teach pendant utiliznd cheile T pentru
interpolare la nivelul coordonatelor robot, respectiv TS pentru interpolare
cartezian liniar.
Exemple:
T store
- se lanseaz procedura de instruire. La atingerea
orientrii i poziiei dorite se apas butonul RECORD.
MOVE
store 1,
0, 0
- la atingerea punctului urmtor se apas iar butonul
RECORD gripperul fiind nchis (0, 0)
MOVE
store 2,
47.3
- se memoreaz al treilea punct cu comanda deschiderii
gripper-ului la 47.3mm

n mod relativ asemntor se realizeaz programe n HELP, mai
precis construcia tabelei de poziii i orientri :
Exemple:
MANUAL (1)
- se comand trecere pe instruciune
CREATE (<program instruire>)
- se creeaz fiierul <program instruire>
PRINT ('INSTRUIRE')

^ Limbaje de Programare a Robotilor Industriali

125
COORD (1)
- se ateapt activarea cheii de terminare
a poziionrii cnd coordonatele poziiei
actuale sunt citite
RECORD (#0, 'strtx:= ', AX(1), ' ;
');
- se nregistreaz n fiierul deschis
valoarea deplasrii pe x
RECORD (#0, 'strty:= ', AY(1), ' ;
');
- la fel deplasarea pe y
RECORD (#0, 'MOVE (1, #1,strtx,
#2, strty, ,#6, strtw) ' );
- se nregistreaz instruciunea de
micare ce se dorete a fi executate
RECORD (#0, 'STOP');
CLOSE
STOP.
- se introduce indicatorul de sfrit de
fiier

^ Limbaje de Programare a Robotilor Industriali

126
VI I . Subrutine, proceduri i funcii
Un program realizat pentru orice tip de aplicaie este cu att mai
bine structurat i realizat cu ct numrul instruciunilor se salt este mai
mic.
Eliminarea acestor instruciuni, fr afectarea evoluiei programului
se face utiliznd o segmentare a programului i mai ales o definire a unor
entiti soft sub forma unor funcii, subrutine, proceduri.
Astfel de entiti vor cuprinde:
numele entitii
specificarea parametrilor n zona de declarare a variabilelor
un mecanism de transfer al datelor, parametrilor de intrare (call by
value)
un mecanism de transfer al datelor prelucrate de entiti soft (call by
reference)
un set de instruciuni care prelucreaz datele
ieirea din proceduri printr-un singur punct bine definit
Se remarc faptul c nu s-a fcut absolut nici o specificaie
referitoare la intrrile n procedur, element care este exploatat de HELP
care permite o structur de tip subrutin cu mai multe intrri (o subrutin
n HELP este definit formal sub forma SUBROUTINE <etichet>
Exemple:
L10 :
IF a = b THEN GO SUB 50 END;
L20 :
IF a < b THEN GO SUB L30 END;
L40 :
IF c < b THEN GO SUB L50 END;
L30 :
L50 :

RETURN
^ Limbaje de Programare a Robotilor Industriali

127

Datorit faptului c subrutinele, procedurile, funciile sunt elemente
cunoscute de ctre orice programator, n cele ce urmeaz ne vom limita la
expunerea principalelor particulariti pe care le prezenta aceste structuri
n cazul limbajelor de programare a roboilor industriali. Subrutinele sunt
specifice tuturor limbajelor ci excepia limbajului ROBEX care
compenseaz acest lucru prin utilizarea procedurilor. Specific structurii
subrutina este faptul c apelul su se face printr-o instruciune de tipul
GOSUB <nume program/etichet> iar ntoarcere se face dup execuia
subrutinei i ntlnirea instruciunii RETURN. n cazul limbajului VAL
dup RETURN poate urma un index care s specifice dac ntoarcerea se
realizeaz la instruciunea de dup apelul subrutinei (indexul lipsete) sau
la a doua,.., a index-a instruciune dup cea care a realizat apelul
subrutinei.
De remarcat c apelul unei subrutine se poate realiza i prin
instruciunea REACTI cnd revenirea se face dup RETURN la
instruciunea imediat urmtoare apelului, respectiv REACT index cnd
revenirea se face dup index instruciuni ce urmeaz dup apel.
Procedurile pot fi privite ca subprograme n cadrul programului
principal. Acestea sunt apelate prin numele procedurii nsoit de
parametri de intrare i cei de ieire. Corpul procedurii este cuprins, de
obicei, ntre un nceput BEGIN i END, respectiv
BEGIN_PROCEDURE, END_PROCEDURE (pentru SRL). Utilizarea
acestor structuri permit o folosire mai judicioas a memoriei, variabilele
interne procedurii fiind terse la terminarea acesteia.
^ Limbaje de Programare a Robotilor Industriali

128
Dac una dintre acestea trebuie memorat n vederea unor prelucrri
ulterioare sau alte apeluri ea va fi declarat OWN.VAR
Exemple:
Program 3:
SE/M1, P1 - P1, P2 sunt parametri formali: M1P1
IC/M1, P2 - M1= M1 + P2
SE/I3, M1 - I3M1
Main program:
SE/M10, 5 - M105
SE/M20, 17 - M2015
EX/3, M10, M20, 100 - apel program 3 cu P1=M10, P2=M20,
I3=100 registru

Funciile realizeaz un compromis ntre proceduri i subrutine n
ceea ce privete complexitatea: sunt apelate similar procedurile prin nume
i parametri de intrare, dar numrul instruciunilor din corpul lor este
relativ redus. Corpul unei funcii poate fi delimitat prin delimitatorii de
tip bloc (BEGIN i END), tipul rezultatului ntors trebuind s fie declarat
n declaraia funciei. Numai limbajele SRL, PASRO, AL i AML dispun
de structuri de tip funcie.
Exemple:
PASRO: FUNCTION sum vector(v: vector): REAL;
BEGIN
Sum vector: = v*x + v*y +v*z;
END

PROCEDURA
NUME
PROCEDURA
LISTA
PARAMETRILOR
;
BLOC DE
INSTRUCTIUNI
FORWARD

Declararea unei proceduri in PASRO si SR
^ Limbaje de Programare a Robotilor Industriali

129
A. Blocuri cu execuie n paralel i organizarea
programului sub forma unor task-uri

Chiar dac de obicei structura de control a unui robot nu este
multiprocesor, diferena de timp datorit vitezei mult mai mari a
procesorului relativ la viteza de execuie a elementelor n micare permite
introducerea conceptului de execuie n paralel a unor blocuri sau chiar
conceptul de multitasking. Diferena ntre blocuri cu execuie n paralel i
conceptul de multitasking se afl mai mult la nivel conceptual i al
validitii datelor: blocurile executate n paralel nu schimb date n
paralel ci mai degrab ntr-un mod secvenial n timp ce utilizarea
programrii multitasking permite schimbul de date instantaneu ntre
taskuri. Utilizarea blocurilor cu execuie n paralel este permis numai de
limbajele SRL i AL, nceputul acestor blocuri fiind declarat prin
instruciunile COBEGIN pentru AL i BEGIN_PARALLEL (pentru
SRL) respectic COEND i END_PARALLEL.
Pentru blocurile cu execuie n paralel se utilizeaz de obicei
indicativul soft sau ntreruperi de tip semnal de la senzori n vederea
sincronizrii execuiei acestora.
Astfel spre exemplu dac se dorete comanda a dou brae care s
transfere un obiect din braul 1 ctre braul 2

^ Limbaje de Programare a Robotilor Industriali

130
Exemplu de program cu operaii care se execut n paralel (limbajul AL)
BEGIN
EVENT bra deasupra, obiect prins,
obiect eliberat;
FRAME obiect, poziie deasupra,
terminal pe obiect, destinaie;
COBEGIN
BEGIN bra 1
MOVE arm 1 TO obiect;
CENTER arm 1;
AFFIX obiect TO arm 1
MOVE obiect TO poziie deasupra
WITH APPROCH = -3xcm
SIGNAL bra deasupra;
WAIT obiect prins
OPEN hand 1 TO 6xcm
UNFIX obiect FROM arm1
SIGNAL obiect eliberat
END bra 1
BEGIN bra 2
OPEN hand 2 TO 6xcm;
MOVE arm2 TO terminal pe obiect
WITH APPROCH = -3xcm;
WAIT bra deasupra;
CENTER arm2;
AFFIX obiect TO arm2
SIGNAL obiect prins
WAIT obiect eliberat
MOVE arm2 TO destinaie
WITH DEPARTURE = - 6xcm
END bra 2;
COEND;
END;

B. Task-uri
n cadrul acestor structuri secvene funcionale sunt rulate i executate n paralel
sau cvasi-paralel, implicnd astfel cteva caracteristici specifice task-urilor:
fiecare task are un suport local de date
un task poate fi oprit, pus n ateptare, continuat sau terminat din exterior printr-
o comand sistem sau alt task sau se pot opri sau termina prin evoluie proprie.
anumite sisteme pot permite apeluri multiple ale unor task-uri specifice
ntre task-uri este posibil o comunicaie la nivel de date intertasking.
n continuare este prezentat un exemplu de multitasking destinat deservirii unui
numr de 10 magazii:
SYSTEM_SPECIFICATION
ROBOT: rip = ROBOT (1)
EFFECTOR: degete = GRIPPER(0) OF rip
SENSOR:detector = CHANNEL(5)
STRUCTURE detector = RECORD
Contact: BOOLEAN;
Lungime: REAL;
END;
INTERRUPT: emty FROM
CHANNEL(7);
END_SYSTEM_SPECICICATION
PROGRAM monitorizare (INFILE,
OUTFILE)
.
.
SECTION distribuie
VAR
Magazin_list: ARRAY [1 9] OF FRAME
Get_pos: FRAME
Nr_magazie_curent: INTEGER
^ Limbaje de Programare a Robotilor Industriali

131
Ieire: BOOLEAN
Clr: CHAR;
SECTION break (nr_magazii: INTEGER);
BEGIN_SECTION break
WRITELN (ntreruperi dup magazie,
nemagazie);
Ieire:= TRUE
END_SECTION break
BEGIN_SECTION distributie
WRITELN (se ncepe distribuire)
Ieire: = FALSE
- se iniializeaz lista magaziei i poziia
depunere get_pos prin proceduri TEACH-
IN
ALWAYS WHEN detector contact=
TRUE
DURING
FOR nr_magazie_curenta: = 1 TO 9 DO
PTPMOVE rip TO get_pos;
CLOSE degete;
SMOVE rip TO magazin_list
[nr_magazie_curent]
WITH DEP = 10;
OPEN degete;
IF ieire THEN
BEGIN
WRITE(Indicator activat! Contiuni?
Y/N;
READLN (ch);
IF ch = N THEN
EXIT_SECTION
ELSE
SUSPEND 500 MS
END_IF
END
END_IF;
END_FOR;
END_DURING;
DO
START breeak(nr_magazie_curent);
WRITELN(Toate magaziile umplute!);
END_SECTION distributie;

BEGIN_PROGRAM
WRITELN (Programul de monitorizare
magazii a inceput!)
(*

*)
START distributie;
(*

*)
END_PROGRAM.
Se remarc faptul c n SRL task-urile sunt identificate prin seciuni i declarate
n mod similar procedurilor. O alt caracteristic evideniat de ctre programul
anterior este dat de faptul programul principal apare ca un fel de program de
nivel nalt care apeleaz task-urile declarate anterior.Se poate afirma c
diferena dintre task-uri i proceduri este relativ redus din punct de vedere
sintactic, dar din punct de vedere al execuiei task-urile pot fi executate n
paralel sau chiar activate printr-un proces care implic acordarea unei anumite
prioriti fiecrui task.
n cadrul programului prezentat ca exemplu se observ declararea iniial a
subsistemelor i elementelor structurii n cadrul seciunii SYSTEM
SPECIFICATION. n cadrul seciunii break se definete modul n care robotul
trebuie s rspund la apariia unui mesaj de tip semafor din partea unei intrri
^ Limbaje de Programare a Robotilor Industriali

132
logice, cnd dup afiarea locului unde a avut loc evenimentul este activat
logic variabila set exit. Seciunea distributie asigur comanda robotlui pentru
asigurarea alimentrii cu piese a unor magazii precum i apelul la alte seciuni
n clipa apariiei unor evenimente. Se observ modul n care seciunile
distribuie, break i system specification interacioneaz sau sunt executate n
paralel (distribuie cu break)
Limbajul HELP care permite de asemenea regimul multitasking privete fiecare
task drept un program aparte, individual, identificat printr-o eticheta. Activarea
respectivului program se face printr-o comand de tip ACTIVE (numr task,
numr task, ), pentru ca n prealabil fiecare task s fi avut definit o etichet
identificatoare: ASSIGN (numr, REF tabel de referine).

^ Limbaje de Programare a Robotilor Industriali

133
VI I I .Bibliografie i referine

[1.] A Manufacturing Language - Concepts and Users Guide. IBM Corporation,
Boca Raton, Florida
[2.] AML/Entry, Version 4, Users Guide. IBM Corporation, Boca Raton, Florida
[3.] Bernorio, M. Programming an Industrial Robot, 7
th
ISIR Tokyo
[4.] Blume C, A Structured Way of Implementating the High Level Programming
Language AL on a Mini and Microcomputer Configuration - Proceedings of
11
th
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.] Ivnescu,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 - colecie 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, 8
th
ISIR, Stuttgard
[24.] User Guide to VAL. A Robot Programming and Control System.Unimation
Robotics Inc.Connectticut
[25.] Users 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