LINGUAGGIO PDL2 Caratteristiche del linguaggio PDL2 ... · PDF fileCARATTERISTICHE DEL...

Post on 12-Feb-2018

336 views 12 download

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

� �