Discard PLC Signals

La richiesta è quella di poter mettere (tramite un bottone sul HMI touch screen) un'ubicazione in una modalità che non considera i segnali provenienti dal PLC. Il motivo di questa richiesta risiede nel fatto che, durante alcune attività di manutenzione, può essere utile escludere i segnali provenienti dal PLC perché le macchine sono in fermo (manutenzione) e devono rimanerci. Quindi, il segnale RUN/STOP e il contatore potrebbe far cambiare lo stato della linea riportandola in running oppure potrebbe contare dei pezzi prodotti che in realtà sono movimenti della macchina durante la manutenzione. Inoltre, le funzionalità del HMI touch screen devono rimanere abilitate.

La soluzione interessa tre agenti: simpmovi (riceve i segnali per i pezzi prodotti), fermirep (legge i segnali per le fermate), autostop (gestione delle fermate su linee senza PLC in base al takt time).

Agente che gestisce lo stato delle ubicazioni

Verrà realizzato un agente agentUbiStatus (oppure modificare l'agentUbiMng) che mette l'ubicazione in stato bloccato (ubicaz.stato='B'):

aggiorna il database

aggiorna lo stato delle ubicazioni in memoria HashTableLock

Gli agenti interessati (simpmovi,fermirep e autostop) devono gestire una struttura interna in memoria con lo stato delle ubicazioni. All'avvio, effettuano una richiesta all'agentUbiStatus per caricare la struttura in memoria.

Inoltre, l'agentUbiStatus invia delle tell agli agenti (simpmovi, fermirep, autostop) ogni volta che viene aggiornato lo stato di una linea.

L'agente restituisce lo stato delle linee a richiesta: ask::status(codubi) e la lista di tutte le linee con il relativo stato ask::status(codubi1,codubi2,..).