PnSistemi Gestione MicroControllori/Plc – Esempio di applicazione
Esempio di creazione di un timer per arresto di un attuatore con impostazione del suo stato
1) creiamo quattro variabili con nomi e descrizione scelti da noi: V0000032 l’ ora di sistema; V0000042 Stato dell’ attuatore (agitatore) V0000049 l’ora del prossimo evento (avvio dell’agitatore) V0000050 la durata del funzionamento dell’attuatore in secondi |
Creiamo un comando per valutare le condizioni di avvio dell’attuatore:
Il test di avvio comprende in AND anche le variabili V0000001 (una temperatura e la sua soglia V3), V0000113 (il consenso di avvio), V0000042 (lo stato dell’ attuatore per verificare che non sia già avviato) |
se il test di avvio è positivo, allora oltre a eseguire il comando (imposta ON sull’attuatore AT000017) si assegna un pacchetto AV000010 di variabili impostando i valori tramite l’operatore scelto: |
si imposta la variabile V0000009 che contiene lo stato dell’attuatore AT000017 a ON, si azzera il contagiri dell’attuatore, variabile V0000111, si imposta nella variabile V0000044 l’ora dello spegnimento dell’attuatore, sommando l’ora di sistema contenuta nella variabile V0000032 alla durata dell’ accensione contenuta nella variabile V0000043 |
I comandi vengono associati e composti nel ciclo dei Sottprocessi” mostrato di seguito; assieme ai comandi può eseguito un set di letture di sensori e una assegnazione di variabili per eseguire i calcoli dopo la lettura dei sensori (ad esempio calcolare i KWH dopo la lettura di RPM e coppia di un albero motore); Ogni set di comandi, assegnazione/calcolo di variabili, letture di sensori viene ordinato a piacere (colonna “ord.” in tabella in modo da rispettare la logica di funzionamento della macchina Dopo l’elaborazione di dati importanti e’ possibile forzare la visualizzazione del pannello HMI che altrimenti avverrebbe solo a fine ciclo. E’ possibile forzare un log delle operazioni eseguite a livello di singolo comando, (un log completo scrive da mille a 5000 righe di log per ciclo, a seconda della complessità del ciclo stesso) |
Tabella dei sensori |
Alla lettura di un sensore automaticamente si assegna la variabile definita; le letture dei sensori sono assegnate a dei set in modo da gestire le priorità di lettura e salvare le performance |
Eventuali periferiche aggiuntive, come un altro plc, o un inverter vengono aggiunti in questa tabella |
Le formule sensori si usano quando il valore ritornato da un sensore va normalizzato, in modo da potere gestire tutte le letture tipiche dei sensori 0-10V, 4-20ma ecc. in valori utilizzabili. Per esempio, in caso di uso di una sonda che ritorna valori lineari devo riportare il valore da tra 0 e 4096 da una porta a 12bit al valore rilevato reale come da scheda tecnica del sensore; oppure in caso di uso in un contagiri di una ruota fonica a 60 denti devo divirere il valore riportato per 60 al fine di avere una valore per giro e non per dente. |
Il cambiamento della formula del sensore si fa durante il runtime senza arresti. |
Tabella degli attuatori |
Qusta è la tabella usata per impostare il colloquio col plc in modo che poi gestisca l’attuatore. La tabella va completata con i set di istruzioni di ogni attuatore (E,P,C); possono comprendere valori On/off, oppure settaggi pwm o stringhe per colloquio di tipo Modbus o altri, e il numero della porta individuata nel Plc |
Anche l’archiviazione dati può essete gestita come evento e quindi eseguita in modo condizionale al verificarsi di condizioni specificate nel set delle variabili. |
Esempio diei File di log, ovvero il log completo delle istruzioni eseguite da pc
Thread principale – Esegue la comunicazione con le porte di I/O (seriale,ethernet), la assegnazione delle variabili, i comandi l’archiviazione dei dati di log,la visualizzazione del valori per l’HMI | |
Lettura del microcontrollore via seriale | |
colonna 1: Time Sec. colonna 2: Operazioni per decimo di secondo colonna 3: Durata operazione in millisecondoi colonna 4: Thread / pagina di V colonna 5: Operazione eseguita C1 C2 C3 C4 C5 8.045 34 0.089 1/3 Valuto Sensori: LE000004 8.045 35 0.182 1/3 Istruzione ARDREAD: GIRWPORT 8.045 36 0.116 1/3 INDCOMAI Ricerco Parametro Istruzioni per Sensori e Attuatori 8.045 37 0.086 1/3 ARDREADI Set Istruzioni: GIRWPORT(‘I00500R58001′,’ 40′,’INDCOMAI’,) 8.045 38 0.146 1/3 funz.GIRWPORT(P1: I00500R58001; P2: 40; P3: INDCOMAI: ; P4: nil) invia: 00040I00500R58001#’ 8.069 1 24.059 1/3 funz.GIRWPORT torna: 0.00:100:0000000000000000000000000000000# 8.070 2 0.173 1/3 Spacchetto: V0000001: 0.00 8.070 3 0.312 1/3 Valuto espressione: KG x*-1/4.92 8.070 4 0.120 1/3 LE000004 Letto sensore: SE000000 ( 0.00) Assegnato alla Variabile: V0000001 ( =) Calcolato con formula: KG x*-1/4.92 8.070 1 0.095 1/3 Spacchetto: V0000002: 100 8.070 2 0.277 1/3 Valuto espressione: RMP1D x 8.070 3 0.108 1/3 LE000004 Letto sensore: SE000002 ( 100) Assegnato alla Variabile: V0000002 ( =) Calcolato con formula: RMP1D x 8.071 4 0.085 1/3 AV000003 Assegnazione Variabili 8.071 5 0.278 1/3 AV000003 0010 Assegno Variabile V0000001 KG/M ( 0,0) = V0000001 KG/M ( 0,0) Risultato = 0,0 8.071 6 0.117 1/3 AV000003 0015 Assegno Variabile V0000002 RPM ( 100) = V0000002 RPM ( 100) Risultato = 100 | |
Esecuzione di un comando condizionato | |
7.967 42 0.000 1/3 Processo: SP000030 0350 CRGRPMAM 7.967 43 0.154 1/3 CRGRPMAM Comandi dei Sottoprocessi 7.967 44 0.174 1/3 CRGRPMAM 0100 Lettura Tabella: G3SF 0100 Aumento Manuale 7.967 45 0.272 1/3 CRGRPMAM 0100 Valuto Variabili Comando: VRGBAUM Aumenta Giri ( 1) = 1 e’ vero 7.968 46 0.227 1/3 Valuto Riga Comando: .t. : Vero, eseguo comando CRGRPMAM 0100 7.968 47 0.089 1/3 Inizio Lettura Sensori 1 Variabili 7.968 48 0.082 1/3 CRGRPMAM 0100 Assegnaz. Variab. ARGAUMM da eseguire 7.968 49 0.171 1/3 CRGRPMAM0100 Assegnazione Variabile ARGAUMM Su Comando 7.968 50 0.279 1/3 ARGAUMM 0050 Assegno Variabile VRGRPMRI Giri richiesti ( 1500) M VRGMIN Giri A Inizio/Fine Prova ( 1.500) Risultato = 1500 7.968 51 0.217 1/3 ARGAUMM 0100 Assegno Variabile VRGRPMRI Giri richiesti ( 2250) + VRGSTEPM Passo Aumento/Diminuzione ( 750) Risultato = 2250 7.969 52 0.213 1/3 ARGAUMM 0200 Assegno Variabile VRGRPMRI Giri richiesti ( 2250) m VRGMAX Massimo Numero Giri da Ra ( 9.000) Risultato = 2250 7.969 53 0.234 1/3 ARGAUMM 0300 Assegno Variabile VRGBAUM Aumenta Giri ( 0) = 0 0 ( 0) Risultato = 0 |
Thread secondario: esegue la visualizzazione del pannello Hmi sezione input, la verifica della tastiera |
2.601 4 0.000 2/1 Processo: SP000030 0390 CRGRPSTP 2.602 5 0.285 2/1 Timer: 2.61>= 2.59 2.602 6 0.176 2/1 Assegno var.: SVI00001 Valore: 15.820 2.602 7 0.143 2/1 Interv.Hmi: 0.063 Hz: 15.8 Prossima tra : 0.050 ritardo: 0.020 2.602 8 0.169 2/1 Inizializza Hmi 2.602 9 0.225 2/1 Inizializza Hmi Fine 2.605 18 0.293 2/1 Fine Hmi Durata: 0.063 2.605 19 0.339 2/1 Timer: 2.61>= 2.19 2.605 20 0.146 2/1 Test tasto processo, rit: 0.420 prox: 2.190 att: 0.000 2.606 21 0.475 2/1 Val.tasto: 0 2.606 22 0.136 2/1 Var. non impostata, Procedo: SP000030 0395 |