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

21
LINGUAGGIO PDL2 Caratteristiche del linguaggio PDL2 Struttura del programma Rappresentazione dei dati Istruzioni Gestori di condizione Ambiente di programmazione

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

� �