# Mapo-IOB Repository progetti che ruotano intorno al concetto di IOB (Input Out Board) per MAPO / MoonPro ATTENZIONE: singoli file readme e di definizioni sono riportati nelle varie subfolder/subdirectory del progetto ove necessario. - [Mapo-IOB](#mapo-iob) - [Standard Tecnici](#standard-tecnici) - [Definizione ed acronimi](#definizione-ed-acronimi) - [Descrizione](#descrizione) - [Architettura generale](#architettura-generale) - [Architettura IOB](#architettura-iob) - [State Machine Ingressi](#state-machine-ingressi) - [Moduli **IOB**](#moduli-iob) - [**IOB-PI**](#iob-pi) - [**IOB-WIN**](#iob-win) - [HowTo](#howto) - [Analisi file di log](#analisi-file-di-log) ## Standard Tecnici Il progetto impiega i seguenti standard tecnici: - http call - Python 2.7 (R-IOB) - asp.net / C# (W-IOB) ## Definizione ed acronimi Di seguito una legenda degli acronimi usati in seguito (per Compoenti, Sistemi, Attori, ...): | Acronimo | Definizione | | ----------- |:--------------------------------------------------| | **MAPO** | Modulo Acquisizione Produzione Operativo | | **MoOnPro** | Monitoraggio Online Produzione | | **IOB** | Input Output Board | | **IOB-PI** | Input Output Board basata su RaspberryPi | | **IOB-WIN** | Input Output Board basata su Windows | | **MP-MON** | SW HTML5 per monitoraggio semplificato (totem) | | **MP-MON-PI** | Sistema monitoraggio stato MP-MON RaspberryPi | | **BLINK** | Segnali bistabili (blinking) | | **IN.SIG** | Segnali acquisiti in Ingresso | | **S.BIT** | Segnali BIT in Ingresso (come singoli bit 0/1) | ## Descrizione I sw di questo progetto sono pensati epr integrarsi con il sisstema MoOnPro di analisi dati della produzione,e d in particolare si occupano delel fasi di IO verso le macchine. I dispositivi della serie **MON** si occupano delal aprte OUTput (e sono a tutti gli effetti dei totem / visualizzatori dello stato del sistema), mentre i dispositivi **IOB** più genericamente si occupano di inviare e ricevere dati da e verso le macchine come layer di interfaccia tra queste e la rete / il sistema MoonPro. Allegati/Materiale contenuta in area Google Drive: - `...\GDrive@steamware\SteamWare\Clienti\Donati\...` - `...\GDrive@steamware\SteamWare\Clienti\Jetco\...` ## Architettura generale L'architettura prevede il seguente schema - Un server centrale (windows based / asp.net) che ospita i seguenti moduli applicativi: - **MP-IO**: riceve l'input da tutte le macchine tramite i vari **IOB-PI** / **IOB-WIN** - **MP-ADM**: serve ad amministrare i dati anagrafici (ODL, articoli) e gestire le fasi approvative (es TC modificati) - **MP-SITE**: rappresenta il sito principale per l'interrogazione dellos tato attuale, dell'analisi temporale dei rendimenti, dellos tato produzione, dei tempi, delel commesse... - **MP-TAB**: applicazione specializzata per tablet dedicata al'input utente per dichairazione fermate, dichairazione attrezzaggi, conferma produzione, ... - **MP-MON**: applicazione epr visualizzazione semplificata stato macchine (Totem style) E quindi sono fondamentali gli elementi "periferici" che acquisiscono i dati (**IOB**) o che mostrano lo stato (**MON**). ## Architettura IOB Gli acquisitori (**IOB**) si limitano a leggere (ciclicamente, tipicamente 10Hz) in modo continuativo lo stato di alcuni segnali (**BIT**) macchina (tramite HW per **IOB-PI** e tramite sw per **IOB-WIN**) e a inviarli (in caso di variazione) al sistema centrale: ci sono però alcune regole particolari rispettate dal sistema: - il singolo acquisitore **IOB** invia in primis un segnale specifico in caso di avvio/reboot - ogni **IOB** invia informazioni in casi di variazione dei segnali letti oppure (se il segnale fosse stabile) alla scadenza di un timer di timeout lungo tipicamente di durata 50sec --> questo garantisce che il sistema centrale abbia l'informazione di keep-alive dei vari acquisitori in modo garantito ALMENO 1 volta al minuto così da poter verificare lo stato di buona salute e funzionamento del sistema - ogni **IOB** ha anche un timeout breve che serve alla verifica del cambio fronte e che prevede di inviare entro pochi secondi una conferma del segnale appena inviato (anche se appunto NON variato) - i segnali vengono "impacchettati" in modalità binaria, per cui ad esempio se ci sono 8 **S.BIT** in ingresso avremo in uscita un valore compreso nell'intervallo **0 --> 255** (= **00000000 --> 11111111**) inviato in forma **esadecimale** con valori **00 --> FF** - ci possono essere segnali stabili e segnali alternanti/lampeggianti (**BLINK**) --> per evitare di saturare inutilmente i canali di comunicazione si è implementato a livello del sw di acquisizione (per ora sul rPI) una gestione di tali segnali per cui un segnale di fronte di salita (0-->1) viene SUBITO segnalato mentre il fronte in discesa viene segnalato sol se questo è stabile per un numero minimo di cicli (valutato per singolo **S.BIT**), tipicamente per almeno 1-2 secondi ## State Machine Ingressi Vedere doc in area specifica per come siano definite/costruite ## Moduli **IOB** Di seguito una definizione generale, nelle rispettive folder informazioni più specifiche ### **IOB-PI** ... ### **IOB-WIN** ... ## HowTo ... ### Analisi file di log ...