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 - IActuatorinterfaccia. Questa interfaccia non ha metodi o proprietà e viene utilizzata solo per la compatibilità dei moduli (vedere il file- IActuatordocumentazione 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 - StepBaseblocco funzione. Ciò fornisce tutte le implementazioni di base necessarie di- IProgramSequenceStepinterfaccia. Vedi il- IActuatordocumentazione in biblioteca. Quando si utilizza la classe base- StepBase, è quindi solo necessario implementare il- Executemetodo. Quest'ultimo viene poi chiamato ciclicamente dal flusso del programma fino alla variabile- xDonedella classe base è impostata su- TRUE. Inoltre, per una corretta funzionalità, il flag- xActivedovrebbe essere impostato su- TRUEfinché 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 OMAC Figura 67. Modulo: Figura 67. Modulo:- MovableBarrier - Il modulo - MovableBarrierè implementato nel modo seguente: Il blocco funzione corrispondente- MovableBarrierimplementa l'interfaccia creata- IMovableBarrier. Quest'ultima interfaccia definisce i metodi per spostare una barriera, mentre- IMovableBarrierstesso implementa l'interfaccia- IActuator, in modo che il modulo- MovableBarrierè inseribile come attuatore nell'albero dei moduli sotto un'unità meccatronica:Figura 68. Implementazione del modulo- MovableBarrier - Tuttavia, questo attuatore "MovableBarrier" viene spostato dal modulo passo-sequenza - MoveBarrierForTime, che a sua volta è implementato nel modo seguente:Figura 69. Implementazione del modulo- MoveBarrierForTime - Il modulo che implementa il blocco funzione - MoveBarrierForTimederiva semplicemente dal blocco funzione di base contenuto nella libreria- AC_MEC.StepBase. In questo modo il blocco funzione- MoveBarrierForTimeimplementa già l'interfaccia- IProgramSequenceStep. Di conseguenza il modulo- MoveBarrierForTimeè inseribile come passo di sequenza in una sequenza di programma. L'implementazione funzionale del blocco funzione- MoveBarrierForTimeè la seguente: definendo uno slot di riferimento per il modulo- MoveBarrierForTime, che può contenere un attuatore che implementa l'interfaccia- IMovableBarrier, si ottiene un collegamento ad un attuatore "MovableBarrier" esistente. Il movimento di questo attuatore avviene infine nel- Executefunzione del- MoveBarrierForTimeblocco funzione, che richiama semplicemente il metodo per spostare (immagineticamente) la calotta protettiva. Questo metodo è fornito dall'attuatore di riferimento, che lo implementa- IMovableBarrier. Inoltre la proprietà- Donee la variabile- xActivesono accoppiati a un TON, in modo che richiami ripetutamente alle funzioni di spostamento di- IMovableBarriervengono eseguite fino allo scadere di un certo tempo (TON), trascorso il quale- Doneè impostato su TRUE e- xActivea FALSO. La proprietà- Donefa parte dell'interfaccia- IProgramSequenceStepe 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.libraryfornisce anche alcuni passaggi pre-implementati, che possono essere utilizzati per operazioni logiche generali. Ad esempio questo significa un passo- BranchOnBoolviene 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 biblioteca- AC_Mechatronics.librarycontiene passaggi di flusso per flussi paralleli, salti condizionali o semplici passaggi di attesa e molte altre attività.