Skip to main content

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:

Figura 65. Esempio di compositore di applicazioni Mechatronics
Esempio di compositore di applicazioni 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.

  1. 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 file IActuator 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).

  2. 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 di IProgramSequenceStep interfaccia. Vedi il IActuator documentazione in biblioteca. Quando si utilizza la classe base StepBase, è quindi solo necessario implementare il Execute metodo. Quest'ultimo viene poi chiamato ciclicamente dal flusso del programma fino alla variabile xDone della classe base è impostata su TRUE. Inoltre, per una corretta funzionalità, il flag xActive dovrebbe essere impostato su TRUE 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.).

  3. 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
    Diagramma OMAC


    Figura 67. Modulo: MovableBarrier
    Modulo: MovableBarrier


    Il modulo MovableBarrier è implementato nel modo seguente: Il blocco funzione corrispondente MovableBarrier implementa l'interfaccia creata IMovableBarrier. Quest'ultima interfaccia definisce i metodi per spostare una barriera, mentre IMovableBarrier stesso 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
    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
    Implementazione del modulo MoveBarrierForTime


    Il modulo che implementa il blocco funzione MoveBarrierForTime deriva semplicemente dal blocco funzione di base contenuto nella libreria AC_MEC.StepBase. In questo modo il blocco funzione MoveBarrierForTime implementa 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 Execute funzione 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à Done e la variabile xActive sono accoppiati a un TON, in modo che richiami ripetutamente alle funzioni di spostamento di IMovableBarrier vengono eseguite fino allo scadere di un certo tempo (TON), trascorso il quale Done è impostato su TRUE e xActive a FALSO. La proprietà Done fa parte dell'interfaccia IProgramSequenceStep 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 passo BranchOnBool 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 biblioteca AC_Mechatronics.library contiene passaggi di flusso per flussi paralleli, salti condizionali o semplici passaggi di attesa e molte altre attività.