LINGUAGGIO PDL2 Caratteristiche del linguaggio PDL2 ... · PDF fileCARATTERISTICHE DEL...
Transcript of LINGUAGGIO PDL2 Caratteristiche del linguaggio PDL2 ... · PDF fileCARATTERISTICHE DEL...
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 spostaVAR approccio, nastro, tavola: POSITIONBEGIN CYCLE
MOVE TO approccioOPEN HAND 1MOVE TO nastroCLOSE HAND 1MOVE TO approccioMOVE TO tavolaOPEN 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, itempi 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 EuleroZYZ per l’orientamento (E1,E2,E3) di tipo REAL ed unacomponente di tipo STRING
� posizione ed orientamento di un terna rispetto ad una ternadi 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 � gradi dimobilita
� vettore delle variabili di giunto
� Accesso alle componenti:var jointpos[4] ��� � ��� �
Tipo XTNDPOS
� Configurazione di un braccio con piu di sei gradi di mobilita
� Un campo predefinito POS (di tipo POSITION) ed un campopredefinito AUX (di tipo ARRAY di REAL)
� il campo POS contiene posizione e orientamento della ternautensile definiti dalla struttura base a sei gradi di mobilita
� il campo AUX contiene il valore delle variabili di giuntorelative ai gradi di mobilita considerati aggiuntivi
�
Tipo NODE
� Simile al tipo RECORD
� Contiene un insieme di campi predefiniti (contrassegnati dalsimbolo $) noti al sistema e un insieme di campi definitidall’utente
� Dichiarazione di tipo:TYPEnode 1 = NODEDEF
$SEG TERM TYPE, $MOVE TYPEnext pos: POSITIONsalda 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 (puntidi percorso o punti di via)
�
DICHIARAZIONI
� Dichiarazione di costantiCONSTnumpart = 4maxangolo = 180.0test = TRUEerrore = ’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 tipoTYPEnometipo = RECORDcampo1 : ARRAY[16] OF REALcampo2 : STRING[10]ENDRECORD
� solo per la definizione di tipi RECORD e NODE
�
� Dichiarazione di variabiliVARindice = INTEGERangolo = REALflag = BOOLEANerrore = STRING[10]matrice = ARRAY[2,10] OF INTEGERoffset = VECTOR
� le variabili predefinite sono precedute dal simbolo $
� Dichiarazione di ROUTINE (funzione e procedura)ROUTINE positivo(x: INTEGER): BOOLEANBEGIN� � �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 puo 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 e 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� velocita costante nel tratto intermedio con raccordi
parabolico–lineari� variabili predefinite per la scalatura della velocita (dei giunti
e cartesiana) e dei valori di accelerazione e decelerazione
� Movimento continuo� MOVEFLY + clausola ADVANCE:
MOVEFLY TO punto di via ADVANCEMOVE TO destinazione
� la clausola ADVANCE fa in modo che l’interprete continuil’esecuzione del programma appena terminati i calcolirelativi alla traiettoria (pochi millisecondi dopo l’inizio delmoto)
� l’istruzione MOVEFLY fa in modo che il movimentospecificato nella istruzione MOVE successiva venga avviatoprima della fine del movimento corrente
� il braccio passa in prossimita di punto di via senza arrestarsi
� Terna di riferimento� MOVE + clausola WITH:
MOVE LINEAR TO pos 1 WITH $TOOL � utensile� la clausola WITH puo essere usata per specificare anche
altre caratteristiche del moto (velocita, condizione diarresto, etc.) e puo includere gestori di condizione
� �
� MOVE NEAR p1 BY d1� p1 e una variabile o una costante di tipo POSITION e d1 e
una distanza� comanda un movimento verso la posizione posta alla
distanza d1 dalla destinazione p1, misurata lungo il versorenegativo di approccio della terna utensile
� MOVE RELATIVE vet IN terna rif� vet e una variabile o una costante di tipo VECTOR, terna rif
puo essere TOOL o BASE� comanda un movimento verso la destinazione specificata
dal vettore vet in terna terna rif a partire dalla posizionecorrente della terna utensile
� MOVE ABOUT vet BY teta IN terna rif� vet e una variabile o una costante di tipo VECTOR, terna rif
puo essere TOOL o BASE e teta e un angolo� comanda un movimento di rotazione della terna utensile
di un angolo teta intorno al vettore vet espresso in ternaterna rif a partire dalla posizione corrente
� �
� MOVE AWAY d1� comanda un movimento verso la posizione posta alla
distanza d1 dalla posizione corrente, misurata lungo ilversore 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 distanzapercorsa 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 lanormale esecuzione del programma e di eseguire le azioniassociate 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 sulpannello di controllo), il segnale associato alla porta diuscita 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 sezioneeseguibile del programma:
CONDITION[5]WHEN esp cond DOlista 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 ilgestore e 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 disabilitatiquando la condizione viene attivata, tranne quando vieneutilizzata la clausola NODISABLE (non utilizzabile percondizioni di evento)
CONDITION[1] NODISABLE:� � �� � �
� disabilitazione in un punto del programma:DISABLE CONDITION[1]
� Una condizione abilitata (stato o evento) viene monitorata aintervalli fissi mediante un processo di scansione
� Una condizione di stato e soddisfatta fintanto che esiste (vienerilevata 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 e soddisfatta solo nell’istante in cui siverifica. Il valore iniziale e quello assunto nell’istante in cui ilgestore viene abilitato; la condizione e soddisfatta nell’istantein cui la scansione verifica la modifica specificata
WHEN $DIN[1]+ DOWHEN $DIN[5]- DO
� le condizioni di evento sono associate a I/O digitali, eventidi sistema, eventi di errore, eventi di programma o eventi dimovimento
� le condizioni di evento non possono essere collegatedall’operatore AND
� �
� Gli stati e gli eventi relativi a dispositivi esterni sono associatia valori di variabili predefinite
� variabili predefinite di tipo ARRAY associate a porte fisichedi ingresso e di uscita ($DIN, $DOUT, $GIN, $GOUT,$AIN, $AUT) configurabili dall’utente per l’accesso adispositivi 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 aitasti funzione e ai tasti LED sul pannello di controllo e sulterminale 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 e soddisatta quando l’evento di movimento si
verifica mentre il gestore di condizione e abilitato (clausolaWITH 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
� �
� Modalita 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 terminaledi programmazione
� tasto REC: aggiunge automaticamente una istruzione diMOVE TO p1 e memorizza in p1 la posizione correntedel braccio
� tasto MOD: modifica il valore di una variabile utilizzata inuna istruzione di MOVE
� la parte dichiarativa ed il file .VAR vengono aggiornatiautomaticamente
� �