Biblioteca: Meccatronica
Suggerimento
IL Mechatronics
La libreria vuole essere un esempio per una semplice (e non completa) implementazione di un'unità meccatronica con esecuzione sequenziale. Non soddisfa tutti i requisiti che potrebbe avere un'applicazione meccatronica completa. Piuttosto, è inteso come punto di ingresso o base per un'applicazione di questo tipo.
Il nucleo essenziale del modello meccatronico proposto si basa sulla seguente struttura di moduli:
Mechatronics

Si presuppone quindi che ogni macchina possa avere diverse subunità meccatroniche (esempio: ciascuna rappresenta una pinza). Tale sottounità si suddivide nuovamente nei suoi attuatori (come l'unità meccanica stessa, anche la sua implementazione funzionale o gestione I/O) e un program manager. Il program manager ha lo scopo di gestire i diversi stati di una subunità meccatronica, ad esempio la sua Idle
O Execute
stato. Eventualmente tali stati sono rappresentati da sequenze di programma che controllano gli attuatori o qualsiasi altra cosa necessaria per una corretta esecuzione.
A questo punto verranno brevemente descritte nel dettaglio le varie parti. Quando si utilizza la libreria, in molti casi sarà necessario implementare i propri attuatori, fasi di flusso o sequenze di programma, che verranno spiegati anche qui.
Attuatori: Tutti i moduli che dovrebbero essere attuatori devono essere implementati da un blocco funzione che a sua volta implementa il
IActuator
interfaccia. Questa interfaccia non ha metodi o proprietà e viene utilizzata solo per la compatibilità dei moduli (vedere il fileIActuator
documentazione in biblioteca). Non sono previste restrizioni o regole per l'implementazione dell'attuatore, per cui il movimento o l'attivazione di tale attuatore deve essere eseguito separatamente. Normalmente ciò avviene implementando un modulo a passi sequenziali, che può trattenere gli appositi attuatori in uno slot di riferimento e quindi muovere questi ultimi nel modo desiderato (ad esempio utilizzando interfacce aggiuntive).Passi della sequenza
Si consiglia vivamente di eseguire l'implementazione delle fasi di flusso come classi derivate di
StepBase
blocco funzione. Ciò fornisce tutte le implementazioni di base necessarie diIProgramSequenceStep
interfaccia. Vedi ilIActuator
documentazione in biblioteca. Quando si utilizza la classe baseStepBase
, è quindi solo necessario implementare ilExecute
metodo. Quest'ultimo viene poi chiamato ciclicamente dal flusso del programma fino alla variabilexDone
della classe base è impostata suTRUE
. Inoltre, per una corretta funzionalità, il flagxActive
dovrebbe essere impostato suTRUE
finché il passaggio è attivo. Tuttavia il collegamento agli attuatori può essere effettuato in qualunque modo, ad esempio tramite le feritoie di riferimento proposte (vedi 1.).Sequenza del programma e gestione del programma Una sequenza di programma è un sottomodulo di un program manager che rappresenta uno stato. Questi stati sono gestiti sotto forma di una macchina a stati OMAC. Le sue implementazioni si basano ancora sul metodo "Execute" (per i dettagli vedere l'implementazione nella libreria). Nella maggior parte dei casi, tuttavia, l'implementazione di tale flusso di programma da parte dell'utente non è necessaria. Qui di seguito viene tuttavia brevemente descritto il modo in cui il comportamento della macchina a stati viene implementato nel Program Manager e quindi esegue le sequenze del programma:
Esistono due tipi di stati: stati di azione (che terminano con "ing") e stati di attesa/duplici (il resto). Gli stati di attesa vengono terminati da comandi esterni, mentre gli stati di azione vengono eseguiti e terminati automaticamente. I comandi disponibili dipendono dallo stato in cui si trova attualmente il program manager. Una breve panoramica è fornita nel diagramma di stato OMAC:
Figura 66. Diagramma OMACFigura 67. Modulo:MovableBarrier
Il modulo
MovableBarrier
è implementato nel modo seguente: Il blocco funzione corrispondenteMovableBarrier
implementa l'interfaccia creataIMovableBarrier
. Quest'ultima interfaccia definisce i metodi per spostare una barriera, mentreIMovableBarrier
stesso implementa l'interfacciaIActuator
, in modo che il moduloMovableBarrier
è inseribile come attuatore nell'albero dei moduli sotto un'unità meccatronica:Figura 68. Implementazione del moduloMovableBarrier
Tuttavia, questo attuatore "MovableBarrier" viene spostato dal modulo passo-sequenza
MoveBarrierForTime
, che a sua volta è implementato nel modo seguente:Figura 69. Implementazione del moduloMoveBarrierForTime
Il modulo che implementa il blocco funzione
MoveBarrierForTime
deriva semplicemente dal blocco funzione di base contenuto nella libreriaAC_MEC.StepBase
. In questo modo il blocco funzioneMoveBarrierForTime
implementa già l'interfacciaIProgramSequenceStep
. Di conseguenza il moduloMoveBarrierForTime
è inseribile come passo di sequenza in una sequenza di programma. L'implementazione funzionale del blocco funzioneMoveBarrierForTime
è la seguente: definendo uno slot di riferimento per il moduloMoveBarrierForTime
, che può contenere un attuatore che implementa l'interfacciaIMovableBarrier
, si ottiene un collegamento ad un attuatore "MovableBarrier" esistente. Il movimento di questo attuatore avviene infine nelExecute
funzione delMoveBarrierForTime
blocco funzione, che richiama semplicemente il metodo per spostare (immagineticamente) la calotta protettiva. Questo metodo è fornito dall'attuatore di riferimento, che lo implementaIMovableBarrier
. Inoltre la proprietàDone
e la variabilexActive
sono accoppiati a un TON, in modo che richiami ripetutamente alle funzioni di spostamento diIMovableBarrier
vengono eseguite fino allo scadere di un certo tempo (TON), trascorso il qualeDone
è impostato su TRUE exActive
a FALSO. La proprietàDone
fa parte dell'interfacciaIProgramSequenceStep
e con ciò comunica alla sequenza del programma sovraordinato che verrà eseguito il passo successivo della sequenza.A parte la tua implementazione dei passaggi della sequenza, il file
AC_Mechatronics.library
fornisce anche alcuni passaggi pre-implementati, che possono essere utilizzati per operazioni logiche generali. Ad esempio questo significa un passoBranchOnBool
viene fornito, che ha due sottosequenze/rami di passi, che vengono eseguiti in base al valore di una variabile BOOL. Questi passaggi secondari vengono eseguiti in base al valore di una variabile booleana. Inoltre, la bibliotecaAC_Mechatronics.library
contiene passaggi di flusso per flussi paralleli, salti condizionali o semplici passaggi di attesa e molte altre attività.