Tipo: |
Blocco funzione |
Disponibile a partire da: |
V1.0.1.0 |
Il blocco funzione FB_ModeManager permette di gestire le richieste di modifica della modalità in un'applicazione della macchina basata sul modello di stato PackML. In base alla definizione della modalità dell'unità, il blocco funzione verifica se il cambio di modalità richiesto è possibile o meno.
La definizione della modalità dell'unità comprende la definizione degli stati possibili per ogni modalità di controllo disponibile e la definizione dello stato dal quale è permesso il cambio di stato. Per eseguire la definizione della modalità dell'unità, possono essere utilizzate le funzioni ausiliarie FC_InitStateModelStateChange e FC_InitStateModelExistingStates.
Infine, la definizione della modalità dell'unità deve essere fornita nell'array di tipo ST_UnitModeDefinition. Gli indici dell'array corrispondono al valore numerico delle modalità di controllo disponibili (vedere ET_Modes).
La definizione della modalità dell'unità deve essere eseguita all'inizio (fase di inizializzazione) di un'applicazione, prima del primo richiamo con i_xEnable = TRUE dell'istanza del blocco funzione FB_ModeManager.
Su un fronte di salita dell'ingresso i_xEnable, viene eseguita la fase di inizializzazione del blocco funzione FB_ModeManager. Durante questa fase, vengono verificate le definizioni dello stato dell'unità per ogni modalità di controllo disponibile per stabilire se è possibile creare un modello di stato conforme a PackML. Se l'inizializzazione viene conclusa correttamente, il blocco funzione è pronto per il funzionamento; questa condizione è indicata dall'uscita q_xReady.
Durante l'inizializzazione, vengono verificate le seguenti condizioni:
oIl numero massimo di stati è 17.
oGli stati Execute e Stopped sono stati obbligatori per ogni modalità di controllo.
oLo stato Completing richiede anche lo stato Complete.
oGli stati Holding e Unholding richiedono sempre lo stato Held.
oGli stati Suspending e UnSuspending richiedono sempre lo stato Suspended.
oGli stati Aborting e Clearing richiedono sempre lo stato Aborted.
oGli stati Resetting e Idle possono essere utilizzati soltanto insieme.
Durante il funzionamento normale, il blocco funzione verifica la richiesta di cambio della modalità, indicata dagli ingressi i_diUnitMode e i_xUnitModeChange, rispetto alla modalità di controllo corrente (iq_diUnitModeCurrent) e allo stato corrente (i_diStateCurrent). Soltanto un fronte di salita su i_sUnitModeChange attiva un'esecuzione del blocco funzione. Il risultato è indicato dalle uscite q_diEnterMode e q_xModeChangeRequestRejected. Se il cambio di modalità è permesso, l'uscita q_xModeChangeRequestRejected indica FALSE e l'uscita q_diEnterMode viene aggiornata con il valore della modalità richiesta. In questo caso, si devono eseguire i passi necessari per cambiare la modalità di controllo in funzione dell'applicazione. Successivamente, l'informazione che è stato effettuato il cambio di modalità deve essere trasmessa al blocco funzione tramite l'ingresso i_xModeChangeDone. Se questo ingresso indica TRUE, la variabile collegata all'ingresso / uscita iq_diUnitModeCurrent viene aggiornata con la modalità di controllo precedentemente richiesta.
Ingresso |
Tipo di dati |
Descrizione |
---|---|---|
i_xEnable |
BOOL |
Attivazione e inizializzazione del blocco funzione. |
i_diNumberOfModes |
DINT |
Numero di modalità di funzionamento Se è stato modificato il valore, è necessaria una reinizializzazione del blocco funzione. |
i_diUnitMode |
DINT |
Modalità di funzionamento richiesta PackTag Command.UnitMode deve essere applicato all'ingresso. |
i_xUnitModeChangeRequest |
BOOL |
Su un fronte di salita, il blocco funzione verifica se è possibile un cambio di modalità di funzionamento. PackTag Command.UnitModeChangeRequest deve essere applicato all'ingresso. |
i_diStateCurrent |
DINT |
Stato attuale macchina PackTag Status.StateCurrent deve essere applicato all'ingresso. |
i_xModeChangeDone |
BOOL |
Feedback dall'applicazione che segnala che è stato eseguito il cambio di modalità richiesto. Su un fronte di salita, la variabile collegata a iq_diUnitModeCurrent viene aggiornata di conseguenza. |
i_pstInitMode |
POINTER TO ST_UnitModeDefinition |
Mediante questo ingresso, l'indirizzo puntatore alle definizioni della modalità dell'unità viene trasmesso al blocco funzione.* * La definizione della modalità dell'unità fornisce le definizioni degli stati per ogni modalità di funzionamento disponibile e deve essere indicata in un array di ST_UnitModeDefinition. Gli indici dell'array corrispondono al valore numerico delle modalità di controllo disponibili (vedere ET_Modes). Pertanto il puntatore deve puntare all'indice associato alla modalità di funzionamento Producing, ovvero la prima modalità. |
Ingresso/uscita |
Tipo di dati |
Descrizione |
---|---|---|
iq_diUnitModeCurrent |
DINT |
Mediante la variabile collegata a questo ingresso / uscita, il blocco funzione ottiene la modalità di funzionamento corrente in seguito a una richiesta di modifica e scrive la nuova modalità di funzionamento dopo che è stata eseguita la modifica. PackTag Status.UnitModeCurrent deve essere applicato all'ingresso/uscita. |
Uscita |
Tipo di dati |
Descrizione |
---|---|---|
q_xActive |
BOOL |
Se questa uscita è impostata a TRUE, il blocco funzione è attivo. |
q_xError |
BOOL |
Se questa uscita è impostata a TRUE, è stato rilevato un errore. Vedere ET_Result. |
q_xReady |
BOOL |
Se questa uscita è impostata a TRUE, il blocco funzione è pronto per il funzionamento. |
q_etResult |
ET_Result |
Enumerazione con il risultato. |
q_sResultMsg |
STRING[80] |
Messaggio di risultato aggiuntivo. |
q_xUnitModeRequested |
BOOL |
Riflette l'uscita i_xUnitModeChangeRequest. PackTag Status.UnitModeRequested deve essere applicato a quest'uscita. |
q_diEnterMode |
DINT |
Indica la modalità di funzionamento alla quale passare. Se il blocco funzione è disattivato, l'uscita è impostata a 0. |
q_xModeChangeRequestRejected |
BOOL |
Finché questa uscita indica TRUE, una richiesta di cambio modalità non è autorizzata da questo blocco funzione e non deve essere eseguita. |