scaricare

Transcript

scaricare
LINGUAGGIO PDL2
Caratteristiche del linguaggio PDL2
Struttura del programma
Rappresentazione dei dati
Istruzioni
Gestori di condizione
Ambiente di programmazione
CARATTERISTICHE DEL LINGUAGGIO PDL2
Orientato al robot
interpretato
Linguaggio di programmazione strutturata (simile al PASCAL)
tipi di dato aggiuntivi per la rappresentazione di
informazioni relative al robot e la descrizione del compito
identificatori predefiniti di variabili, costanti e procedure
specifici per applicazioni robotiche
operazioni su vettori e matrici
insieme di istruzioni allargato per l’esecuzione di movimenti
e per il comando dell’utensile (pinza)
monitoraggio di eventi in parallelo con l’esecuzione del
programma
sincronizzazione con altri dispositivi
programmazione concorrente
funzioni di controllore logico programmabile (PLC)
STRUTTURA DEL PROGRAMMA
Intestazione
Sezione dichiarativa
dichiarazione di costanti, tipi, variabili
dichiarazione di procedure e funzioni
Sezione esecutiva
clausola CYCLE
Esempio:
PROGRAM sposta
VAR approccio, nastro, tavola: POSITION
BEGIN CYCLE
MOVE TO approccio
OPEN HAND 1
MOVE TO nastro
CLOSE HAND 1
MOVE TO approccio
MOVE TO tavola
OPEN HAND 1
END sposta
RAPPRESENTAZIONE DEI DATI
Tipi di dato standard
Semplici
INTEGER, REAL, BOOLEAN
Strutturati
STRING, ARRAY, RECORD
Tipi di dato aggiuntivi
VECTOR
POSITION
JOINTPOS
XTNDPOS
NODE
PATH
N.B. le lunghezze sono espresse in millimetri, gli angoli in gradi, i
tempi in millisecondi
Tipo VECTOR
Tre componenti di tipo REAL (X, Y, Z)
Accesso alle componenti:
var vet.X Operazioni
aritmetiche (+,-), relazionali (=,<>), prodotto vettoriale ( ),
prodotto scalare (@)
aritmetiche (*,/) con scalari (INTEGER, REAL)
funzione interna VEC:
var vet VEC Tipo POSITION
Tre componenti di posizione (X,Y,Z), tre angoli di Eulero
ZYZ per l’orientamento (E1,E2,E3) di tipo REAL ed una
componente di tipo STRING
posizione ed orientamento di un terna rispetto ad una terna
di riferimento
Accesso alle componenti X, Y e Z come per il tipo VECTOR
Operazioni
composizione (:) POSITION–POSITION e POSITION–
VECTOR
funzione interna POS:
var pos POS(
’ ’)
Variabili POSITION predefinite $BASE (terna base) e $TOOL
(terna utensile)
Tipo JOINTPOS
componenti di tipo REAL per un braccio con
mobilità
gradi di
vettore delle variabili di giunto
Accesso alle componenti:
var jointpos[4] Tipo XTNDPOS
Configurazione di un braccio con più di sei gradi di mobilità
Un campo predefinito POS (di tipo POSITION) ed un campo
predefinito AUX (di tipo ARRAY di REAL)
il campo POS contiene posizione e orientamento della terna
utensile definiti dalla struttura base a sei gradi di mobilità
il campo AUX contiene il valore delle variabili di giunto
relative ai gradi di mobilità considerati aggiuntivi
Tipo NODE
Simile al tipo RECORD
Contiene un insieme di campi predefiniti (contrassegnati dal
simbolo $) noti al sistema e un insieme di campi definiti
dall’utente
Dichiarazione di tipo:
TYPE
node 1 = NODEDEF
$SEG TERM TYPE, $MOVE TYPE
next pos: POSITION
salda on: BOOLEAN
ENDNODEDEF
i campi predefiniti descrivono le caratteristiche del
movimento
i campi definiti dall’utente contengono la destinazione del
movimento
Tipo PATH
Array di tipo NODE
rappresenta una sequenza di nodi che devono essere
interpretati per l’esecuzione di un singolo movimento (punti
di percorso o punti di via)
DICHIARAZIONI
Dichiarazione di costanti
CONST
numpart = 4
maxangolo = 180.0
test = TRUE
errore = ’Manca aria’
le costanti possono essere di tipo INTEGER, REAL,
BOOLEAN (TRUE, FALSE, ON, OFF) e STRING
le costanti predefinite sono precedute dal simbolo $
Dichiarazione di tipo
TYPE
nometipo = RECORD
campo1 : ARRAY[16] OF REAL
campo2 : STRING[10]
ENDRECORD
solo per la definizione di tipi RECORD e NODE
Dichiarazione di variabili
VAR
indice = INTEGER
angolo = REAL
flag = BOOLEAN
errore = STRING[10]
matrice = ARRAY[2,10] OF INTEGER
offset = VECTOR
le variabili predefinite sono precedute dal simbolo $
Dichiarazione di ROUTINE (funzione e procedura)
ROUTINE positivo(x: INTEGER): BOOLEAN
BEGIN
END positivo
ROUTINE prendi(pick: POSITION)
BEGIN
END prendi
ISTRUZIONI
Istruzioni standard
Ingresso/uscita
OPEN FILE, CLOSE FILE, READ, WRITE
Controllo dell’esecuzione
IF, SELECT, FOR, WHILE, REPEAT, GOTO
Sottoprogrammi
Procedure e funzioni
Istruzioni aggiuntive
Controllo del movimento
Gestori di condizione
Istruzioni di controllo del movimento
MOVE TO destinazione
comanda il movimento del braccio dalla posizione corrente
a quella specificata nella variabile destinazione
la variabile destinazione può essere di tipo POSITION,
JOINTPOS, XTNDPOS o un elenco di variabili di giunto:
MOVE TO POS(x, y, z, e1, e2, e3, ’ ’)
MOVE TO q1, q2, q3, q4, q5, q6
Tipo di percorso
percorso nello spazio dei giunti:
MOVE JOINT TO destinazione
segmento nello spazio operativo:
MOVE LINEAR TO destinazione
arco di circonferenza:
MOVE CIRCULAR TO pos finale VIA pos intermedia
se nell’istruzione non è specificato il tipo di percorso,
viene utilizzato il valore della variabile predefinita
$MOVE TYPE (JOINT per default)
Legge oraria
Profilo di accelerazione a doppio trapezio
velocità costante nel tratto intermedio con raccordi
parabolico–lineari
variabili predefinite per la scalatura della velocità (dei giunti
e cartesiana) e dei valori di accelerazione e decelerazione
Movimento continuo
MOVEFLY + clausola ADVANCE:
MOVEFLY TO punto di via ADVANCE
MOVE TO destinazione
la clausola ADVANCE fa in modo che l’interprete continui
l’esecuzione del programma appena terminati i calcoli
relativi alla traiettoria (pochi millisecondi dopo l’inizio del
moto)
l’istruzione MOVEFLY fa in modo che il movimento
specificato nella istruzione MOVE successiva venga avviato
prima della fine del movimento corrente
il braccio passa in prossimità di punto di via senza arrestarsi
Terna di riferimento
MOVE + clausola WITH:
MOVE LINEAR TO pos 1 WITH $TOOL utensile
la clausola WITH può essere usata per specificare anche
altre caratteristiche del moto (velocità, condizione di
arresto, etc.) e può includere gestori di condizione
MOVE NEAR p1 BY d1
p1 è una variabile o una costante di tipo POSITION e d1 è
una distanza
comanda un movimento verso la posizione posta alla
distanza d1 dalla destinazione p1, misurata lungo il versore
negativo di approccio della terna utensile
MOVE RELATIVE vet IN terna rif
vet è una variabile o una costante di tipo VECTOR, terna rif
può essere TOOL o BASE
comanda un movimento verso la destinazione specificata
dal vettore vet in terna terna rif a partire dalla posizione
corrente della terna utensile
MOVE ABOUT vet BY teta IN terna rif
vet è una variabile o una costante di tipo VECTOR, terna rif
può essere TOOL o BASE e teta è un angolo
comanda un movimento di rotazione della terna utensile
di un angolo teta intorno al vettore vet espresso in terna
terna rif a partire dalla posizione corrente
MOVE AWAY d1
comanda un movimento verso la posizione posta alla
distanza d1 dalla posizione corrente, misurata lungo il
versore negativo di approccio della terna utensile
MOVE BY q1, q2, , q4, , q6
comanda un movimento incrementale per i singoli giunti
secondo gli angoli q1, ..., q6
MOVE FOR d1 TO p1
comanda un movimento parziale nello spazio operativo
verso la destinazione p1 che si arresta dopo la distanza
percorsa d1
MOVE ALONG path 1
comanda un movimento lungo il percorso specificato nella
variabile path 1 di tipo PATH
GESTORI DI CONDIZIONE
Consentono di monitorare condizioni in parallelo con la
normale esecuzione del programma e di eseguire le azioni
associate nel caso in cui tali condizioni si verifichino
Condizioni di attivazione
stati o eventi associati al funzionamento di dispositivi esterni
eventi di sistema ed eventi di errore
eventi di movimento
Esempio:
CONDITION[1]:
- - definisce il gestore di condizione
WHEN $FDIN[5]=ON DO
$DOUT[21]:=OFF
ENDCONDITION
ENABLE CONDITION[1] - - abilita il gestore di condizione
quando il segnale di sistema $FDIN[5] diventa ON (in
corrispondenza della pressione del tasto LED U1 sul
pannello di controllo), il segnale associato alla porta di
uscita digitale $DOUT[21] viene posto a OFF
L’utilizzo di un gestore di condizione avviene in due fasi
definizione
abiltazione
Un gestore di condizione deve essere definito nella sezione
eseguibile del programma:
CONDITION[5]
WHEN esp cond DO
lista azioni
END CONDITION[5]
viene identificato da un numero
le condizioni da monitorare sono combinate nell’espressione
booleana esp cond
le azioni da eseguire sono specificate in lista azioni
L’espressione di condizione viene monitorata solo quando il
gestore è abilitato
abilitazione in un punto del programma:
ENABLE CONDITION[5]
abilitazione temporanea durante una istruzione MOVE:
MOVE TO p1 WITH CONDITION[1]
I gestori di condizione vengono automaticamente disabilitati
quando la condizione viene attivata, tranne quando viene
utilizzata la clausola NODISABLE (non utilizzabile per
condizioni di evento)
CONDITION[1] NODISABLE:
disabilitazione in un punto del programma:
DISABLE CONDITION[1]
Una condizione abilitata (stato o evento) viene monitorata a
intervalli fissi mediante un processo di scansione
Una condizione di stato è soddisfatta fintanto che esiste (viene
rilevata ad ogni scansione)
WHEN esp bool DO
le condizioni di stato possono essere espressioni di
relazione, variabili booleane, variabili di I/O digitale
Una condizione di evento è soddisfatta solo nell’istante in cui si
verifica. Il valore iniziale è quello assunto nell’istante in cui il
gestore viene abilitato; la condizione è soddisfatta nell’istante
in cui la scansione verifica la modifica specificata
WHEN $DIN[1]+ DO
WHEN $DIN[5]- DO
le condizioni di evento sono associate a I/O digitali, eventi
di sistema, eventi di errore, eventi di programma o eventi di
movimento
le condizioni di evento non possono essere collegate
dall’operatore AND
Gli stati e gli eventi relativi a dispositivi esterni sono associati
a valori di variabili predefinite
variabili predefinite di tipo ARRAY associate a porte fisiche
di ingresso e di uscita ($DIN, $DOUT, $GIN, $GOUT,
$AIN, $AUT) configurabili dall’utente per l’accesso a
dispositivi esterni (utensili, dispositivi di cella)
variabili predefinite di tipo ARRAY ($SDIN, $SDOUT,
$FDIN, $FOUT, $TIMER) definite dal sistema. Le variabili
$FDIN, $FOUT (ARRAY di BOOLEAN) sono associate ai
tasti funzione e ai tasti LED sul pannello di controllo e sul
terminale di programmazione
Eventi di movimento
TIME t1 AFTER START
TIME t1 BEFORE END
DISTANCE d1 AFTER START (VIA)
DISTANCE d1 BEFORE END (VIA)
PERCENT per AFTER START
PERCENT per BEFORE END
AT START, AT VIA, AT END
la condizione è soddisatta quando l’evento di movimento si
verifica mentre il gestore di condizione è abilitato (clausola
WITH dell’istruzione MOVE)
AMBIENTE DI PROGRAMMAZIONE
Scrittura del programma
con un normale editor di testi
con l’editor del sistema operativo
Editor del sistema operativo
controllo della sintassi e della semantica
apprendimento delle posizioni
verifica passo–passo delle istruzioni del programma
File di programma
file (.COD) con le istruzioni
file (.VAR) con i dati
Modalità operative dell’editor
modo CODE
modo DATA
Modo CODE
modifica della parte dichiarativa e della parte esecutiva del
file .COD
il file .VAR non viene modificato
Modo DATA
modifica della sola parte esecutiva del file .COD
apprendimento delle posizioni
esecuzione delle istruzioni
Apprendimento delle posizioni in modo DATA con il terminale
di programmazione
tasto REC: aggiunge automaticamente una istruzione di
MOVE TO p1 e memorizza in p1 la posizione corrente
del braccio
tasto MOD: modifica il valore di una variabile utilizzata in
una istruzione di MOVE
la parte dichiarativa ed il file .VAR vengono aggiornati
automaticamente