104 lines
5.4 KiB
Markdown
104 lines
5.4 KiB
Markdown
# 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.
|
|
|
|
<!-- TOC -->
|
|
|
|
- [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)
|
|
|
|
<!-- /TOC -->
|
|
|
|
## 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
|
|
|
|
... |