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