From cb2ace29d7ddaebb51b5c1dde409bc95142e8db6 Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Thu, 22 Feb 2018 10:38:51 +0100 Subject: [PATCH] SIEMENS: recuperato feed x tutti gli assi... singolarmente --- .../CMSCncLib/CNC/CNC.SIEMENS/CNC.SIEMENS.vb | 14 +- MTC_Adapter/MTC_Adapter/AdapterGeneric.cs | 2 +- MTC_Adapter/MTC_Adapter/AdapterSiemens.cs | 2 +- MTC_Adapter/MTC_Adapter/App.config | 2 +- .../DATA/CONF/Adapter_ItemList.xml | 122 +- .../MTC_Adapter/DATA/CONF/AlarmList.map | 2016 +++++----- .../MTC_Adapter/DATA/CONF/AnalogData.map | 8 +- .../MTC_Adapter/DATA/CONF/CounterList.map | 36 +- .../MTC_Adapter/DATA/CONF/StatusList.map | 10 +- MTC_Adapter/MTC_Adapter/MainForm.cs | 3380 ++++++++--------- 10 files changed, 2826 insertions(+), 2766 deletions(-) diff --git a/MTC_Adapter/CMSCncLib/CNC/CNC.SIEMENS/CNC.SIEMENS.vb b/MTC_Adapter/CMSCncLib/CNC/CNC.SIEMENS/CNC.SIEMENS.vb index 7b3e436..905b2ea 100644 --- a/MTC_Adapter/CMSCncLib/CNC/CNC.SIEMENS/CNC.SIEMENS.vb +++ b/MTC_Adapter/CMSCncLib/CNC/CNC.SIEMENS/CNC.SIEMENS.vb @@ -929,6 +929,10 @@ Namespace CNC ''' Velocità asse ''' Public Speed As Single + ''' + ''' Feed asse + ''' + Public Feed As Single End Structure ''' @@ -970,12 +974,19 @@ Namespace CNC ' RIFERIMENTO: ' txt Giuseppe - ReDim itemRead(3) + ReDim itemRead(4) itemRead(0) = New Item("DB241.DBD0:[16]") 'Posizione attuale itemRead(1) = New Item("DB254.DBW140:[20]") 'Speed effettiva itemRead(2) = New Item("DB254.DBB180:[20]") 'Carico effettivo itemRead(3) = New Item("/Channel/MachineAxis/toolBaseDistToGo[u1,1, 16]") 'itemRead(3) = New Item("DB241.DBD0:[16]") 'Posizione Target !!!FARE!!! è altra variabile?!? AA_IM + itemRead(4) = New Item("/Channel/MachineAxis/actFeedRate[u1, 1, 16]") 'legge la feed... da salvare in valore assolulto... + + '/Channel/MachineAxis/actFeedRate[u1, 3] + '/ChannelState/actFeedRateIpo[u1,1,16] + '/ChannelState/cmdFeedRateIpo[u1] ?? + '/ChannelState/actFeedRateIpo[u1] ?? + '/ChannelState/actFeedRateTechIpo[u1] ?? Do Try @@ -995,6 +1006,7 @@ Namespace CNC 'datiAssi(i).PosAct = itemRead(0).Value(i) datiAssi(i).PosAct = UIntegerToSingle(itemRead(0).Value(i)) datiAssi(i).PosTgt = Convert.ToSingle(itemRead(3).Value(i)) + datiAssi(i).Feed = Math.Abs(Convert.ToSingle(itemRead(4).Value(i))) Next i For i As Integer = 0 To 19 datiAssi(i).Speed = UIntegerToSingle(itemRead(1).Value(i)) diff --git a/MTC_Adapter/MTC_Adapter/AdapterGeneric.cs b/MTC_Adapter/MTC_Adapter/AdapterGeneric.cs index 8f6de29..981813c 100644 --- a/MTC_Adapter/MTC_Adapter/AdapterGeneric.cs +++ b/MTC_Adapter/MTC_Adapter/AdapterGeneric.cs @@ -2615,7 +2615,7 @@ namespace MTC_Adapter { // leggo valore Codice - locSpeedRate = BitConverter.ToUInt16(unOpSpeedMem, 2 * i); + locSpeedRate = BitConverter.ToUInt16(unOpSpeedMem, 2 * i); // leggo 41° byte = indice 40 + 2*i x le var del carico UnOp UnOpLoad = unOpSpeedMem[40 + i]; diff --git a/MTC_Adapter/MTC_Adapter/AdapterSiemens.cs b/MTC_Adapter/MTC_Adapter/AdapterSiemens.cs index 6677dc5..6cfeb38 100644 --- a/MTC_Adapter/MTC_Adapter/AdapterSiemens.cs +++ b/MTC_Adapter/MTC_Adapter/AdapterSiemens.cs @@ -1070,7 +1070,7 @@ namespace MTC_Adapter vettAxis[i].mAxLoad.Value = ValAssi[i].Load; // imposto feed "generale" per asse... si potrebbe usare velocità del singolo asse... !!!FARE!!! verificare - vettAxis[i].mAxFeedAct.Value = FeedRate; + vettAxis[i].mAxFeedAct.Value = ValAssi[i].Feed;// FeedRate; //vettAxis[i].mAxFeedAct.Value= ValAssi[i].Speed; vettAxis[i].mAxFeedOver.Value = FeedRateOver; diff --git a/MTC_Adapter/MTC_Adapter/App.config b/MTC_Adapter/MTC_Adapter/App.config index 01d7244..4b6430c 100644 --- a/MTC_Adapter/MTC_Adapter/App.config +++ b/MTC_Adapter/MTC_Adapter/App.config @@ -47,7 +47,7 @@ - + diff --git a/MTC_Adapter/MTC_Adapter/DATA/CONF/Adapter_ItemList.xml b/MTC_Adapter/MTC_Adapter/DATA/CONF/Adapter_ItemList.xml index d2844a7..056e4e8 100644 --- a/MTC_Adapter/MTC_Adapter/DATA/CONF/Adapter_ItemList.xml +++ b/MTC_Adapter/MTC_Adapter/DATA/CONF/Adapter_ItemList.xml @@ -1,8 +1,8 @@ 1 - CMS_ADAPTER - OSAI + ADAPTER_SIEMENS + SIEMENS 0 0 0 @@ -36,6 +36,18 @@ + + + SlittaMagazzino_01 + + + + + + ProtMagazzino_01 + + + Cooler_01 @@ -46,6 +58,26 @@ + + + Press_01 + + + + Press_02 + + + + + + Temp_01 + + + + Temp_02 + + + Path_01 @@ -61,34 +93,6 @@ UnOp_01 - - UnOp_02 - - - - UnOp_03 - - - - UnOp_04 - - - - UnOp_05 - - - - UnOp_06 - - - - UnOp_07 - - - - UnOp_08 - - @@ -200,7 +204,7 @@ Axis_09_Type - ROTARY + LINEAR Axis_09_Grp @@ -213,7 +217,7 @@ Axis_10_Type - ROTARY + LINEAR Axis_10_Grp @@ -226,7 +230,7 @@ Axis_11_Type - ROTARY + LINEAR Axis_11_Grp @@ -247,5 +251,57 @@ + + Axis_13 + + + Axis_13_Type + ROTARY + + + Axis_13_Grp + 00 + + + + + Axis_14 + + + Axis_14_Type + ROTARY + + + Axis_14_Grp + 00 + + + + + Axis_15 + + + Axis_15_Type + LINEAR + + + Axis_15_Grp + 00 + + + + + Axis_16 + + + Axis_16_Type + LINEAR + + + Axis_16_Grp + 00 + + + \ No newline at end of file diff --git a/MTC_Adapter/MTC_Adapter/DATA/CONF/AlarmList.map b/MTC_Adapter/MTC_Adapter/DATA/CONF/AlarmList.map index 3f9a6ac..6698345 100644 --- a/MTC_Adapter/MTC_Adapter/DATA/CONF/AlarmList.map +++ b/MTC_Adapter/MTC_Adapter/DATA/CONF/AlarmList.map @@ -1,993 +1,1025 @@ # Commenti con "#", elenco tipo COD_NUM|GRUPPO|LEVEL|DESCRIZIONE completa -000001|PLC|FAULT|[COD 001] - 152 Allarme azionamento asse ID 01 -000002|PLC|FAULT|[COD 002] - 152 Allarme azionamento asse ID 02 -000003|PLC|FAULT|[COD 003] - 152 Allarme azionamento asse ID 03 -000004|PLC|FAULT|[COD 004] - 152 Allarme azionamento asse ID 04 -000005|PLC|FAULT|[COD 005] - 152 Allarme azionamento asse ID 05 -000006|PLC|FAULT|[COD 006] - 152 Allarme azionamento asse ID 06 -000007|PLC|FAULT|[COD 007] - 152 Allarme azionamento asse ID 07 -000008|PLC|FAULT|[COD 008] - 152 Allarme azionamento asse ID 08 -000009|PLC|FAULT|[COD 009] - 152 Allarme azionamento asse ID 09 -000010|PLC|FAULT|[COD 010] - 152 Allarme azionamento asse ID 10 -000011|PLC|FAULT|[COD 011] - 152 Allarme azionamento asse ID 11 -000012|PLC|FAULT|[COD 012] - 152 Allarme azionamento asse ID 12 -000013|PLC|FAULT|[COD 013] - 152 Allarme azionamento asse ID 13 -000014|PLC|FAULT|[COD 014] - 152 Allarme azionamento asse ID 14 -000015|PLC|FAULT|[COD 015] - 152 Allarme azionamento asse ID 15 -000016|PLC|FAULT|[COD 016] - 152 Allarme azionamento asse ID 16 -000017|PLC|FAULT|[COD 017] - 152 Allarme azionamento asse ID 17 -000018|PLC|FAULT|[COD 018] - 152 Allarme azionamento asse ID 18 -000019|PLC|FAULT|[COD 019] - 152 Allarme azionamento asse ID 19 -000020|PLC|FAULT|[COD 020] - 152 Allarme azionamento asse ID 20 -000021|PLC|FAULT|[COD 021] - 152 Allarme azionamento asse ID 21 -000022|PLC|FAULT|[COD 022] - 152 Allarme azionamento asse ID 22 -000023|PLC|FAULT|[COD 023] - 152 Allarme azionamento asse ID 23 -000024|PLC|FAULT|[COD 024] - 152 Allarme azionamento asse ID 24 -000025|PLC|FAULT|[COD 025] - 152 Allarme azionamento asse ID 25 -000026|PLC|FAULT|[COD 026] - 152 Allarme azionamento asse ID 26 -000027|PLC|FAULT|[COD 027] - 152 Allarme azionamento asse ID 27 -000028|PLC|FAULT|[COD 028] - 152 Allarme azionamento asse ID 28 -000029|PLC|FAULT|[COD 029] - 152 Allarme azionamento asse ID 29 -000030|PLC|FAULT|[COD 030] - 152 Allarme azionamento asse ID 30 -000031|PLC|FAULT|[COD 031] - 152 Allarme azionamento asse ID 31 -000032|PLC|FAULT|[COD 032] - 152 Allarme azionamento asse ID 32 -000033|PLC|FAULT|[COD 033] - 152 Allarme azionamento asse ID 33 -000034|PLC|FAULT|[COD 034] - 152 Allarme azionamento asse ID 34 -000035|PLC|FAULT|[COD 035] - 152 Allarme azionamento asse ID 35 -000036|PLC|FAULT|[COD 036] - 152 Allarme azionamento asse ID 36 -000037|PLC|FAULT|[COD 037] - 152 Allarme azionamento asse ID 37 -000038|PLC|FAULT|[COD 038] - 152 Allarme azionamento asse ID 38 -000039|PLC|FAULT|[COD 039] - 152 Allarme azionamento asse ID 39 -000040|PLC|FAULT|[COD 040] - 152 Allarme azionamento asse ID 40 -000041|PLC|FAULT|[COD 041] - 152 Allarme azionamento asse ID 41 -000042|PLC|FAULT|[COD 042] - 152 Allarme azionamento asse ID 42 -000043|PLC|FAULT|[COD 043] - 152 Allarme azionamento asse ID 43 -000044|PLC|FAULT|[COD 044] - 152 Allarme azionamento asse ID 44 -000045|PLC|FAULT|[COD 045] - 152 Allarme azionamento asse ID 45 -000046|PLC|FAULT|[COD 046] - 152 Allarme azionamento asse ID 46 -000047|PLC|FAULT|[COD 047] - 152 Allarme azionamento asse ID 47 -000048|PLC|FAULT|[COD 048] - 152 Allarme azionamento asse ID 48 -000049|PLC|FAULT|[COD 049] - 152 Allarme azionamento asse ID 49 -000050|PLC|FAULT|[COD 050] - 152 Allarme azionamento asse ID 50 -000051|PLC|FAULT|[COD 051] - 152 Allarme azionamento asse ID 51 -000052|PLC|FAULT|[COD 052] - 152 Allarme azionamento asse ID 52 -000053|PLC|FAULT|[COD 053] - 152 Allarme azionamento asse ID 53 -000054|PLC|FAULT|[COD 054] - 152 Allarme azionamento asse ID 54 -000055|PLC|FAULT|[COD 055] - 152 Allarme azionamento asse ID 55 -000056|PLC|FAULT|[COD 056] - 152 Allarme azionamento asse ID 56 -000057|PLC|FAULT|[COD 057] - 152 Allarme azionamento asse ID 57 -000058|PLC|FAULT|[COD 058] - 152 Allarme azionamento asse ID 58 -000059|PLC|FAULT|[COD 059] - 152 Allarme azionamento asse ID 59 -000060|PLC|FAULT|[COD 060] - 152 Allarme azionamento asse ID 60 -000061|PLC|FAULT|[COD 061] - 152 Allarme azionamento asse ID 61 -000062|PLC|FAULT|[COD 062] - 152 Allarme azionamento asse ID 62 -000063|PLC|FAULT|[COD 063] - 152 Allarme azionamento asse ID 63 -000064|PLC|FAULT|[COD 064] - 152 Allarme azionamento asse ID 64 -000065|PLC|FAULT|[COD 065] - 146 FIELDBUS KO (375) -000066|PLC|FAULT|[COD 066] - -000067|PLC|FAULT|[COD 067] - -000068|PLC|FAULT|[COD 068] - Errore abilitazione assi -000069|PLC|FAULT|[COD 069] - 153 Assi non abilitati -000070|PLC|FAULT|[COD 070] - -000071|PLC|FAULT|[COD 071] - -000072|PLC|FAULT|[COD 072] - Contr.tempo esecuzione background -000073|PLC|FAULT|[COD 073] - -000074|PLC|FAULT|[COD 074] - 105 MACCHINA IN HOLD (Processo 2) -000075|PLC|FAULT|[COD 075] - 105 MACCHINA IN HOLD (Processo 3) -000076|PLC|FAULT|[COD 076] - 105 MACCHINA IN HOLD (Processo 4) -000077|PLC|FAULT|[COD 077] - -000078|PLC|FAULT|[COD 078] - -000079|PLC|FAULT|[COD 079] - -000080|PLC|FAULT|[COD 080] - -000081|PLC|FAULT|[COD 081] - Anomalia generica function block -000082|PLC|FAULT|[COD 082] - Nodo di I/O digitale in errore -000083|PLC|FAULT|[COD 083] - Time-out abilitazione assi -000084|PLC|FAULT|[COD 084] - -000085|PLC|FAULT|[COD 085] - -000086|PLC|FAULT|[COD 086] - -000087|PLC|FAULT|[COD 087] - -000088|PLC|FAULT|[COD 088] - Errore gestione reset -000089|PLC|FAULT|[COD 089] - -000090|PLC|FAULT|[COD 090] - -000091|PLC|FAULT|[COD 091] - -000092|PLC|FAULT|[COD 092] - -000093|PLC|FAULT|[COD 093] - -000094|PLC|FAULT|[COD 094] - -000095|PLC|FAULT|[COD 095] - -000096|PLC|FAULT|[COD 096] - -000097|PLC|FAULT|[COD 097] - -000098|PLC|FAULT|[COD 098] - -000099|PLC|FAULT|[COD 099] - -000100|PLC|FAULT|[COD 100] - 275 LIMITE SOFTWARE ASSE AUSILIARIO -000101|PLC|FAULT|[COD 101] - 664 SPEGNIMENTO IN CORSO -000102|PLC|FAULT|[COD 102] - 663 VELOCITA ASSI TROPPO ELEVATA -000103|PLC|FAULT|[COD 103] - 587 ANOMALIA PORTE DI SICUREZZA -000104|PLC|FAULT|[COD 104] - -000105|PLC|FAULT|[COD 105] - -000106|PLC|FAULT|[COD 106] - -000107|PLC|FAULT|[COD 107] - -000108|PLC|FAULT|[COD 108] - -000109|PLC|FAULT|[COD 109] - -000110|PLC|FAULT|[COD 110] - 420 TESTA 1 NON IN POSIZIONE -000111|PLC|FAULT|[COD 111] - 420 TESTA 2 NON IN POSIZIONE -000112|PLC|FAULT|[COD 112] - 420 TESTA 3 NON IN POSIZIONE -000113|PLC|FAULT|[COD 113] - 420 TESTA 4 NON IN POSIZIONE -000114|PLC|FAULT|[COD 114] - 730 INSERZIONE UTENSILE NON OK TESTA 1 -000115|PLC|FAULT|[COD 115] - 730 INSERZIONE UTENSILE NON OK TESTA 2 -000116|PLC|FAULT|[COD 116] - 730 INSERZIONE UTENSILE NON OK TESTA 3 -000117|PLC|FAULT|[COD 117] - 730 INSERZIONE UTENSILE NON OK TESTA 4 -000118|PLC|FAULT|[COD 118] - -000119|PLC|FAULT|[COD 119] - -000120|PLC|FAULT|[COD 120] - -000121|PLC|FAULT|[COD 121] - -000122|PLC|FAULT|[COD 122] - 555 FERMO ANTERIORE NON IN POSIZIONE -000123|PLC|FAULT|[COD 123] - 176 ALIMENTAZIONE RULLIERA NON OK -000124|PLC|FAULT|[COD 124] - 250 CICLO SCARICO / CARICO PEZZO IN CORSO -000125|PLC|FAULT|[COD 125] - 556 CICLO SCARICO / CARICO PEZZO INTERROTTO -000126|PLC|FAULT|[COD 126] - 555 FERMO LATERALE MODULO 2 NON IN POSIZIONE -000127|PLC|FAULT|[COD 127] - 555 FERMO LATERALE MODULO 4 NON IN POSIZIONE -000128|PLC|FAULT|[COD 128] - 555 FERMO LATERALE MODULO 6 NON IN POSIZIONE -000129|PLC|FAULT|[COD 129] - 555 FERMO LATERALE MODULO 8 NON IN POSIZIONE -000130|PLC|FAULT|[COD 130] - 555 FERMO LATERALE MODULO 10 NON IN POSIZIONE -000131|PLC|FAULT|[COD 131] - 555 FERMO LATERALE MODULO 12 NON IN POSIZIONE -000132|PLC|FAULT|[COD 132] - 555 FERMO LATERALE MODULO 14 NON IN POSIZIONE -000133|PLC|FAULT|[COD 133] - 555 FERMO LATERALE MODULO 16 NON IN POSIZIONE -000134|PLC|FAULT|[COD 134] - 555 FERMO LATERALE MODULO 18 NON IN POSIZIONE -000135|PLC|FAULT|[COD 135] - 555 FERMO LATERALE MODULO 20 NON IN POSIZIONE -000136|PLC|FAULT|[COD 136] - 555 FERMO LATERALE MODULO 22 NON IN POSIZIONE -000137|PLC|FAULT|[COD 137] - 294 MISURATORE LASER MODULO 8 NON IN POSIZIONE -000138|PLC|FAULT|[COD 138] - 294 MISURATORE LASER MODULO 11 NON IN POSIZIONE -000139|PLC|FAULT|[COD 139] - 294 MISURATORE LASER MODULO 14 NON IN POSIZIONE -000140|PLC|FAULT|[COD 140] - -000141|PLC|FAULT|[COD 141] - -000142|PLC|FAULT|[COD 142] - 290 RULLI PRESSORI NON IN POSIZIONE -000143|PLC|FAULT|[COD 143] - 604 FLOTTANTE TESTA 2 NON IN POSIZIONE -000144|PLC|FAULT|[COD 144] - -000145|PLC|FAULT|[COD 145] - Errore gestione asse ausiliario ... -000146|PLC|FAULT|[COD 146] - -000147|PLC|FAULT|[COD 147] - -000148|PLC|FAULT|[COD 148] - -000149|PLC|FAULT|[COD 149] - -000150|PLC|FAULT|[COD 150] - -000151|PLC|FAULT|[COD 151] - -000152|PLC|FAULT|[COD 152] - -000153|PLC|FAULT|[COD 153] - -000154|PLC|FAULT|[COD 154] - Errore gestione assi condivisi -000155|PLC|FAULT|[COD 155] - -000156|PLC|FAULT|[COD 156] - --- TEST MT CONNECT -000157|PLC|FAULT|[COD 157] - --- ATTESA CONFERMA CMS CONTROL -000158|PLC|FAULT|[COD 158] - --- ADAPTER MTCONNECT NON DISPONIBILE -000159|PLC|FAULT|[COD 159] - -000160|PLC|FAULT|[COD 160] - -000161|PLC|FAULT|[COD 161] - 640 TAVOLE NON IN POSIZIONE PER AGGANCIO/SGANCIO -000162|PLC|FAULT|[COD 162] - 534 TAVOLA DESTRA NON AGGANCIATA/SGANCIATA -000163|PLC|FAULT|[COD 163] - 534 TAVOLA SINISTRA NON AGGANCIATA/SGANCIATA -000164|PLC|FAULT|[COD 164] - 654 ASSE Y IN COLLISIONE CON PORTELLA CARICATORE -000165|PLC|FAULT|[COD 165] - 654 ASSE V IN COLLISIONE CON PORTELLA CARICATORE -000166|PLC|FAULT|[COD 166] - -000167|PLC|FAULT|[COD 167] - -000168|PLC|FAULT|[COD 168] - -000169|PLC|FAULT|[COD 169] - -000170|PLC|FAULT|[COD 170] - 294 BARRA DI PULIZIA TAVOLA DX NON IN POSIZIONE -000171|PLC|FAULT|[COD 171] - 294 BARRA DI PULIZIA TAVOLA SX NON IN POSIZIONE -000172|PLC|FAULT|[COD 172] - -000173|PLC|FAULT|[COD 173] - -000174|PLC|FAULT|[COD 174] - 398 PRESSIONE ARIA SECCA INSUFFICIENTE -000175|PLC|FAULT|[COD 175] - 398 PRESSIONE MINIMA ARIA VENTOSE -000176|PLC|FAULT|[COD 176] - 398 PRESSIONE ARIA LINEA 2 INSUFFICIENTE -000177|PLC|FAULT|[COD 177] - -000178|PLC|FAULT|[COD 178] - -000179|PLC|FAULT|[COD 179] - -000180|PLC|FAULT|[COD 180] - 654 ASSE Y IN COLLISIONE CON CUFFIA ASPIRAZIONE -000181|PLC|FAULT|[COD 181] - 599 MOVIMENTO ASSE Y NON CONSENTITO CON CUFFIA NON IN POSIZIONE ALTA -000182|PLC|FAULT|[COD 182] - -000183|PLC|FAULT|[COD 183] - -000184|PLC|FAULT|[COD 184] - -000185|PLC|FAULT|[COD 185] - -000186|PLC|FAULT|[COD 186] - -000187|PLC|FAULT|[COD 187] - -000188|PLC|FAULT|[COD 188] - -000189|PLC|FAULT|[COD 189] - -000190|PLC|FAULT|[COD 190] - 294 BARRA SPINGIPEZZO NON IN POSIZIONE -000191|PLC|FAULT|[COD 191] - 703 ANOMALIA CICLO SCARICO -000192|PLC|FAULT|[COD 192] - -000193|PLC|FAULT|[COD 193] - -000194|PLC|FAULT|[COD 194] - -000195|PLC|FAULT|[COD 195] - -000196|PLC|FAULT|[COD 196] - -000197|PLC|FAULT|[COD 197] - -000198|PLC|FAULT|[COD 198] - -000199|PLC|FAULT|[COD 199] - -000200|PLC|FAULT|[COD 200] - 557 PEZZO ROTTO (PCP) -000201|PLC|FAULT|[COD 201] - -000202|PLC|FAULT|[COD 202] - -000203|PLC|FAULT|[COD 203] - -000204|PLC|FAULT|[COD 204] - -000205|PLC|FAULT|[COD 205] - -000206|PLC|FAULT|[COD 206] - -000207|PLC|FAULT|[COD 207] - 595 BARRIERA DI SICUREZZA NON OK 1 -000208|PLC|FAULT|[COD 208] - 595 BARRIERA DI SICUREZZA NON OK 2 -000209|PLC|FAULT|[COD 209] - 590 RECINZIONE MOBILE NON CHIUSA -000210|PLC|FAULT|[COD 210] - 270 TERMICO GRUPPO DI FORATURA 1 -000211|PLC|FAULT|[COD 211] - 270 TERMICO GRUPPO DI FORATURA 2 -000212|PLC|FAULT|[COD 212] - 270 TERMICO GRUPPO DI FORATURA 3 -000213|PLC|FAULT|[COD 213] - 550 GRUPPO FORATURA 1 NON IN POSIZIONE -000214|PLC|FAULT|[COD 214] - 550 GRUPPO FORATURA 2 NON IN POSIZIONE -000215|PLC|FAULT|[COD 215] - 550 GRUPPO FORATURA 3 NON IN POSIZIONE -000216|PLC|FAULT|[COD 216] - 551 ASSI NON IN POSIZIONE PER GRUPPO A FORARE -000217|PLC|FAULT|[COD 217] - -000218|PLC|FAULT|[COD 218] - -000219|PLC|FAULT|[COD 219] - -000220|PLC|FAULT|[COD 220] - -000221|PLC|FAULT|[COD 221] - 383 RIFERIMENTI INTERNI DESTRA NON IN POSIZIONE -000222|PLC|FAULT|[COD 222] - 383 RIFERIMENTI INTERNI SINISTRA NON IN POSIZIONE -000223|PLC|FAULT|[COD 223] - -000224|PLC|FAULT|[COD 224] - -000225|PLC|FAULT|[COD 225] - 383 RIFERIMENTI DESTRA NON IN POSIZIONE -000226|PLC|FAULT|[COD 226] - 383 RIFERIMENTI SINISTRA NON IN POSIZIONE -000227|PLC|FAULT|[COD 227] - -000228|PLC|FAULT|[COD 228] - -000229|PLC|FAULT|[COD 229] - -000230|PLC|FAULT|[COD 230] - -000231|PLC|FAULT|[COD 231] - -000232|PLC|FAULT|[COD 232] - -000233|PLC|FAULT|[COD 233] - -000234|PLC|FAULT|[COD 234] - -000235|PLC|FAULT|[COD 235] - -000236|PLC|FAULT|[COD 236] - -000237|PLC|FAULT|[COD 237] - -000238|PLC|FAULT|[COD 238] - -000239|PLC|FAULT|[COD 239] - -000240|PLC|FAULT|[COD 240] - 563 TASTATORE RIQUALIFICA ASSI NON ATTIVATO -000241|PLC|FAULT|[COD 241] - 588 PROTEZIONE POSTERIORE TESTA 1 NON BLOCCATA/SBLOCCATA -000242|PLC|FAULT|[COD 242] - 581 CORTINE FLESSIBILI DI PROTEZIONE NON IN POSIZIONE -000243|PLC|FAULT|[COD 243] - 588 PROTEZIONE POSTERIORE TESTA 1 NON IN POSIZIONE -000244|PLC|FAULT|[COD 244] - -000245|PLC|FAULT|[COD 245] - 559 RADIO PROBE IN MANDRINO -000246|PLC|FAULT|[COD 246] - 572 RADIO PROBE NON PRONTO -000247|PLC|FAULT|[COD 247] - 173 BATTERIA RADIO PROBE NON OK -000248|PLC|FAULT|[COD 248] - -000249|PLC|FAULT|[COD 249] - -000250|PLC|FAULT|[COD 250] - 590 PORTA ANTERIORE NON CHIUSA/INTERBLOCCATA -000251|PLC|FAULT|[COD 251] - 590 PORTA POSTERIORE NON CHIUSA/INTERBLOCCATA -000252|PLC|FAULT|[COD 252] - 590 PORTA 1 NON CHIUSA/INTERBLOCCATA -000253|PLC|FAULT|[COD 253] - 590 PORTA 2 NON CHIUSA/INTERBLOCCATA -000254|PLC|FAULT|[COD 254] - 590 PORTA 3 NON CHIUSA/INTERBLOCCATA -000255|PLC|FAULT|[COD 255] - 590 PORTA 4 NON CHIUSA/INTERBLOCCATA -000256|PLC|FAULT|[COD 256] - 590 PORTA 5 NON CHIUSA/INTERBLOCCATA -000257|PLC|FAULT|[COD 257] - 590 PORTA 11 NON CHIUSA/INTERBLOCCATA -000258|PLC|FAULT|[COD 258] - 590 PORTA 21 NON CHIUSA/INTERBLOCCATA -000259|PLC|FAULT|[COD 259] - 590 PORTA 12 NON CHIUSA/INTERBLOCCATA -000260|PLC|FAULT|[COD 260] - 590 PORTA 22 NON CHIUSA/INTERBLOCCATA -000261|PLC|FAULT|[COD 261] - -000262|PLC|FAULT|[COD 262] - -000263|PLC|FAULT|[COD 263] - -000264|PLC|FAULT|[COD 264] - -000265|PLC|FAULT|[COD 265] - 444 PRESSIONE LIQUIDO DI RAFFREDDAMENTO INSUFFICIENTE MANDRINO 1 NON OK -000266|PLC|FAULT|[COD 266] - 444 PRESSIONE LIQUIDO DI RAFFREDDAMENTO INSUFFICIENTE MANDRINO 2 NON OK -000267|PLC|FAULT|[COD 267] - 444 PRESSIONE LIQUIDO DI RAFFREDDAMENTO INSUFFICIENTE MANDRINO 3 NON OK -000268|PLC|FAULT|[COD 268] - 444 PRESSIONE LIQUIDO DI RAFFREDDAMENTO INSUFFICIENTE MANDRINO 4 NON OK -000269|PLC|FAULT|[COD 269] - 444 PRESSIONE LIQUIDO DI RAFFREDDAMENTO INSUFFICIENTE MANDRINO 5 NON OK -000270|PLC|FAULT|[COD 270] - 444 PRESSIONE LIQUIDO DI RAFFREDDAMENTO INSUFFICIENTE MANDRINO 6 NON OK -000271|PLC|FAULT|[COD 271] - 444 PRESSIONE LIQUIDO DI RAFFREDDAMENTO INSUFFICIENTE MANDRINO 7 NON OK -000272|PLC|FAULT|[COD 272] - 444 PRESSIONE LIQUIDO DI RAFFREDDAMENTO INSUFFICIENTE MANDRINO 8 NON OK -000273|PLC|FAULT|[COD 273] - 176 ALIMENTAZIONE MANDRINO 1 NON OK -000274|PLC|FAULT|[COD 274] - 176 ALIMENTAZIONE MANDRINO 2 NON OK -000275|PLC|FAULT|[COD 275] - 176 ALIMENTAZIONE MANDRINO 3 NON OK -000276|PLC|FAULT|[COD 276] - 176 ALIMENTAZIONE MANDRINO 4 NON OK -000277|PLC|FAULT|[COD 277] - 176 ALIMENTAZIONE MANDRINO 5 NON OK -000278|PLC|FAULT|[COD 278] - 176 ALIMENTAZIONE MANDRINO 6 NON OK -000279|PLC|FAULT|[COD 279] - 176 ALIMENTAZIONE MANDRINO 7 NON OK -000280|PLC|FAULT|[COD 280] - 176 ALIMENTAZIONE MANDRINO 8 NON OK -000281|PLC|FAULT|[COD 281] - -000282|PLC|FAULT|[COD 282] - -000283|PLC|FAULT|[COD 283] - -000284|PLC|FAULT|[COD 284] - -000285|PLC|FAULT|[COD 285] - 533 PINZA MAGAZZINO UTENSILI 1 NON IN POSIZIONE -000286|PLC|FAULT|[COD 286] - 533 PINZA MAGAZZINO UTENSILI 2 NON IN POSIZIONE -000287|PLC|FAULT|[COD 287] - 533 PINZA MAGAZZINO UTENSILI 3 NON IN POSIZIONE -000288|PLC|FAULT|[COD 288] - 533 PINZA MAGAZZINO UTENSILI 4 NON IN POSIZIONE -000289|PLC|FAULT|[COD 289] - 465 UTENSILE IN MAGAZZINO 1 ROTTO -000290|PLC|FAULT|[COD 290] - 465 UTENSILE IN MAGAZZINO 2 ROTTO -000291|PLC|FAULT|[COD 291] - 465 UTENSILE IN MAGAZZINO 3 ROTTO -000292|PLC|FAULT|[COD 292] - 465 UTENSILE IN MAGAZZINO 4 ROTTO -000293|PLC|FAULT|[COD 293] - 465 UTENSILE IN MAGAZZINO 5 ROTTO -000294|PLC|FAULT|[COD 294] - 465 UTENSILE IN MAGAZZINO 6 ROTTO -000295|PLC|FAULT|[COD 295] - 445 MAGAZZINO UTENSILI 1 NON ALLINEATO -000296|PLC|FAULT|[COD 296] - 445 MAGAZZINO UTENSILI 2 NON ALLINEATO -000297|PLC|FAULT|[COD 297] - 445 MAGAZZINO UTENSILI 3 NON ALLINEATO -000298|PLC|FAULT|[COD 298] - -000299|PLC|FAULT|[COD 299] - -000300|PLC|FAULT|[COD 300] - -000301|PLC|FAULT|[COD 301] - -000302|PLC|FAULT|[COD 302] - -000303|PLC|FAULT|[COD 303] - -000304|PLC|FAULT|[COD 304] - 465 UTENSILE ROTTO -000305|PLC|FAULT|[COD 305] - 130 ANOMALIA SENSORE INTEGRITA' UTENSILE 1 -000306|PLC|FAULT|[COD 306] - 130 ANOMALIA SENSORE INTEGRITA' UTENSILE 2 -000307|PLC|FAULT|[COD 307] - 130 ANOMALIA SENSORE INTEGRITA' UTENSILE 3 -000308|PLC|FAULT|[COD 308] - 130 ANOMALIA SENSORE INTEGRITA' UTENSILE 4 -000309|PLC|FAULT|[COD 309] - 130 ANOMALIA SENSORE INTEGRITA' UTENSILE 5 -000310|PLC|FAULT|[COD 310] - 130 ANOMALIA SENSORE INTEGRITA' UTENSILE 6 -000311|PLC|FAULT|[COD 311] - 130 ANOMALIA SENSORE INTEGRITA' UTENSILE 7 -000312|PLC|FAULT|[COD 312] - 130 ANOMALIA SENSORE INTEGRITA' UTENSILE 8 -000313|PLC|FAULT|[COD 313] - 465 UTENSILE IN MANDRINO 1 ROTTO -000314|PLC|FAULT|[COD 314] - 465 UTENSILE IN MANDRINO 2 ROTTO -000315|PLC|FAULT|[COD 315] - 465 UTENSILE IN MANDRINO 3 ROTTO -000316|PLC|FAULT|[COD 316] - 465 UTENSILE IN MANDRINO 4 ROTTO -000317|PLC|FAULT|[COD 317] - 465 UTENSILE IN MANDRINO 5 ROTTO -000318|PLC|FAULT|[COD 318] - 465 UTENSILE IN MANDRINO 6 ROTTO -000319|PLC|FAULT|[COD 319] - 465 UTENSILE IN MANDRINO 7 ROTTO -000320|PLC|FAULT|[COD 320] - 465 UTENSILE IN MANDRINO 8 ROTTO -000321|PLC|FAULT|[COD 321] - 148 ASSI IN PREALLARME -000322|PLC|FAULT|[COD 322] - 147 ASSI IN ALLARME -000323|PLC|FAULT|[COD 323] - 149 ASSE Z IN PREALLARME -000324|PLC|FAULT|[COD 324] - 149 ASSE W IN PREALLARME -000325|PLC|FAULT|[COD 325] - 654 VERIFICA COLLISIONE ASSI -000326|PLC|FAULT|[COD 326] - 593 PROTEZIONI DI SICUREZZA (BUMPERS) -000327|PLC|FAULT|[COD 327] - 151 AZIONAMENTI NON ALIMENTATI -000328|PLC|FAULT|[COD 328] - 150 AZIONAMENTI NON ABILITATI -000329|PLC|FAULT|[COD 329] - 149 ASSE VERTICALE SCARICO PEZZI IN PREALLARME -000330|PLC|FAULT|[COD 330] - 177 MODULO FRENATURA AZIONAMENTO ASSE P NON OK -000331|PLC|FAULT|[COD 331] - 177 MODULO FRENATURA AZIONAMENTO ASSE Q NON OK -000332|PLC|FAULT|[COD 332] - 177 MODULO FRENATURA AZIONAMENTO ASSE Y slave NON OK -000333|PLC|FAULT|[COD 333] - 177 MODULO FRENATURA AZIONAMENTO ASSE VERTICALE SCARICO PEZZI NON OK -000334|PLC|FAULT|[COD 334] - 177 MODULO FRENATURA AZIONAMENTO ASSE X NON OK -000335|PLC|FAULT|[COD 335] - 177 MODULO FRENATURA AZIONAMENTO ASSE Y NON OK -000336|PLC|FAULT|[COD 336] - 177 MODULO FRENATURA AZIONAMENTO ASSE Z NON OK -000337|PLC|FAULT|[COD 337] - 177 MODULO FRENATURA AZIONAMENTO ASSE U NON OK -000338|PLC|FAULT|[COD 338] - 177 MODULO FRENATURA AZIONAMENTO ASSE V NON OK -000339|PLC|FAULT|[COD 339] - 177 MODULO FRENATURA AZIONAMENTO ASSE W NON OK -000340|PLC|FAULT|[COD 340] - 173 CAMBIARE BATTERIA ASSE X -000341|PLC|FAULT|[COD 341] - 173 CAMBIARE BATTERIA ASSE Y -000342|PLC|FAULT|[COD 342] - 173 CAMBIARE BATTERIA ASSE Z -000343|PLC|FAULT|[COD 343] - 173 CAMBIARE BATTERIA ASSE B -000344|PLC|FAULT|[COD 344] - 173 CAMBIARE BATTERIA ASSE C -000345|PLC|FAULT|[COD 345] - 173 CAMBIARE BATTERIA ASSE U -000346|PLC|FAULT|[COD 346] - 173 CAMBIARE BATTERIA ASSE V -000347|PLC|FAULT|[COD 347] - 173 CAMBIARE BATTERIA ASSE W -000348|PLC|FAULT|[COD 348] - 173 CAMBIARE BATTERIA ASSE A -000349|PLC|FAULT|[COD 349] - 173 CAMBIARE BATTERIA ASSE D -000350|PLC|FAULT|[COD 350] - 173 CAMBIARE BATTERIA ASSE P -000351|PLC|FAULT|[COD 351] - 173 CAMBIARE BATTERIA ASSE Q -000352|PLC|FAULT|[COD 352] - 173 CAMBIARE BATTERIA ASSE Y SLAVE -000353|PLC|FAULT|[COD 353] - 173 CAMBIARE BATTERIA ASSE V SLAVE -000354|PLC|FAULT|[COD 354] - 173 CAMBIARE BATTERIA ASSE AUSILIARIO u -000355|PLC|FAULT|[COD 355] - 146 BUS ETHERCAT NON OK -000356|PLC|FAULT|[COD 356] - 145 SCHEDE ASSI NON PRONTE -000357|PLC|FAULT|[COD 357] - 583 MACCHINA SPENTA -000358|PLC|FAULT|[COD 358] - 407 UNO O PIU ASSI IN EXTRA CORSA -000359|PLC|FAULT|[COD 359] - 406 PULSANTI DI EMERGENZA -000360|PLC|FAULT|[COD 360] - 583 Contatto E-STOP aperto -000361|PLC|FAULT|[COD 361] - 667 CIRCUITI DI SICUREZZA NON OK -000362|PLC|FAULT|[COD 362] - 666 DISPOSITIVO DI SICUREZZA NON OK -000363|PLC|FAULT|[COD 363] - 127 SELETTORE FEED OVERRIDE PROCESSO 1 A ZERO -000364|PLC|FAULT|[COD 364] - 127 SELETTORE FEED OVERRIDE PROCESSO 2 A ZERO -000365|PLC|FAULT|[COD 365] - 127 SELETTORE RAPID OVERRIDE PROCESSO 1 A ZERO -000366|PLC|FAULT|[COD 366] - 406 PULSANTE POWER OFF PREMUTO -000367|PLC|FAULT|[COD 367] - 704 SELEZIONARE AMP GANTRY -000368|PLC|FAULT|[COD 368] - 586 PORTA CABINA DESTRA APERTA -000369|PLC|FAULT|[COD 369] - 586 PORTA CABINA SINISTRA APERTA -000370|PLC|FAULT|[COD 370] - 230 RELE TERMICO POMPA VUOTO 1 -000371|PLC|FAULT|[COD 371] - 230 RELE TERMICO POMPA VUOTO 2 -000372|PLC|FAULT|[COD 372] - 229 RELE TERMICO POMPA IDRAULICA -000373|PLC|FAULT|[COD 373] - 403 SURRISCALDAMENTO ARMADIO ELETTRICO -000374|PLC|FAULT|[COD 374] - 260 REGOLAZIONE AUTOMATICA FEED OVERRIDE PROCESSO 1 IN CORSO -000375|PLC|FAULT|[COD 375] - 260 REGOLAZIONE AUTOMATICA FEED OVERRIDE PROCESSO 2 IN CORSO -000376|PLC|FAULT|[COD 376] - 459 ASSE A NON SBLOCCATO -000377|PLC|FAULT|[COD 377] - 458 ASSE A NON BLOCCATO -000378|PLC|FAULT|[COD 378] - 459 ASSE D NON SBLOCCATO -000379|PLC|FAULT|[COD 379] - 458 ASSE D NON BLOCCATO -000380|PLC|FAULT|[COD 380] - 459 ASSE B NON SBLOCCATO -000381|PLC|FAULT|[COD 381] - 458 ASSE B NON BLOCCATO -000382|PLC|FAULT|[COD 382] - 459 ASSE C NON SBLOCCATO -000383|PLC|FAULT|[COD 383] - 458 ASSE C NON BLOCCATO -000384|PLC|FAULT|[COD 384] - 460 ASSE Y BLOCCATO -000385|PLC|FAULT|[COD 385] - 458 ASSE Y NON BLOCCATO -000386|PLC|FAULT|[COD 386] - 460 ASSE V BLOCCATO -000387|PLC|FAULT|[COD 387] - 458 ASSE V NON BLOCCATO -000388|PLC|FAULT|[COD 388] - 590 PORTE NON CHIUSE/INTERBLOCCATE -000389|PLC|FAULT|[COD 389] - 346 PARATIA NON IN POSIZIONE -000390|PLC|FAULT|[COD 390] - 419 TEMPERATURA MINIMA ARMADIO ELETTRICO NON OK -000391|PLC|FAULT|[COD 391] - 720 LIVELLO LIQUIDO LUBRIFICAZIONE MORTASATRICE INSUFFICIENTE -000392|PLC|FAULT|[COD 392] - 276 LIMITI ASSE X NON OK -000393|PLC|FAULT|[COD 393] - 607 PREMERE PRENOTAZIONE CAMBIO ZONA -000394|PLC|FAULT|[COD 394] - 607 PREMERE PRENOTAZIONE ZONA DX -000395|PLC|FAULT|[COD 395] - 607 PREMERE PRENOTAZIONE ZONA SX -000396|PLC|FAULT|[COD 396] - 512 CAMBIO ZONA INTERROTTO -000397|PLC|FAULT|[COD 397] - 530 PULSANTIERA ESTERNA ABILITATA -000398|PLC|FAULT|[COD 398] - 412 AZZERAMENTO AUTOMATICO ASSI IN CORSO -000399|PLC|FAULT|[COD 399] - 599 MOVIMENTO ASSI NON CONSENTITO -000400|PLC|FAULT|[COD 400] - 674 CAMBIO ZONA DI LAVORO IN CORSO -000401|PLC|FAULT|[COD 401] - 704 CAMBIO MODALITA`DI LAVORO NON CONSENTITO -000402|PLC|FAULT|[COD 402] - 606 PART-PROGRAM (PC) PROCESSO 1 NON TROVATO -000403|PLC|FAULT|[COD 403] - 606 PART-PROGRAM (PC) PROCESSO 2 NON TROVATO -000404|PLC|FAULT|[COD 404] - 603 INSERIRE FERMO MACCHINA E PREMERE CICLO START -000405|PLC|FAULT|[COD 405] - 001 HAI VERIFICATO TABELLE UTENSILI ? PREMERE SOFTKEY "SI" -000406|PLC|FAULT|[COD 406] - 002 SEI SICURO ? PREMERE SOFTKEY "SI" -000407|PLC|FAULT|[COD 407] - 606 PART-PROGRAM NON TROVATO -000408|PLC|FAULT|[COD 408] - 753 PEZZO NON BLOCCATO PCP -000409|PLC|FAULT|[COD 409] - 704 CONFIGURAZIONE ASSI AMP NON OK -000410|PLC|FAULT|[COD 410] - 105 MACCHINA IN HOLD (Processo 1) -000411|PLC|FAULT|[COD 411] - 429 UTENSILE IN MANDRINO -000412|PLC|FAULT|[COD 412] - 700 TABELLE IN MODIFICA -000413|PLC|FAULT|[COD 413] - 161 COMUNICAZIONE CONVERTITORE IN ERRORE -000414|PLC|FAULT|[COD 414] - 162 FATAL ERROR CONVERTITORE: SPEGNERE MACCHINA -000415|PLC|FAULT|[COD 415] - 176 MANDRINO 1 NON INIZIALIZZATO -000416|PLC|FAULT|[COD 416] - 176 MANDRINO 2 NON INIZIALIZZATO -000417|PLC|FAULT|[COD 417] - 176 MANDRINO 3 NON INIZIALIZZATO -000418|PLC|FAULT|[COD 418] - 176 MANDRINO 4 NON INIZIALIZZATO -000419|PLC|FAULT|[COD 419] - 176 MANDRINO 5 NON INIZIALIZZATO -000420|PLC|FAULT|[COD 420] - 176 MANDRINO 6 NON INIZIALIZZATO -000421|PLC|FAULT|[COD 421] - 176 MANDRINO 7 NON INIZIALIZZATO -000422|PLC|FAULT|[COD 422] - 176 MANDRINO 8 NON INIZIALIZZATO -000423|PLC|FAULT|[COD 423] - 106 STOP DA PULSANTIERA ESTERNA PROCESSO 1 -000424|PLC|FAULT|[COD 424] - 106 STOP DA PULSANTIERA ESTERNA PROCESSO 2 -000425|PLC|FAULT|[COD 425] - 106 STOP DA PULSANTIERA ESTERNA PROCESSO 3 -000426|PLC|FAULT|[COD 426] - 106 STOP DA PULSANTIERA ESTERNA PROCESSO 4 -000427|PLC|FAULT|[COD 427] - 741 CODICE CAMBIO UTENSILE NON SELEZIONATO PROCESSO 1 -000428|PLC|FAULT|[COD 428] - 390 T CHIAMATA NON OK PROCESSO 1 -000429|PLC|FAULT|[COD 429] - 741 CODICE CAMBIO UTENSILE NON SELEZIONATO PROCESSO 2 -000430|PLC|FAULT|[COD 430] - 390 T CHIAMATA NON OK PROCESSO 2 -000431|PLC|FAULT|[COD 431] - 741 UNITA' OPERATRICE 1: MANDRINO NON SELEZIONATO o IN CAMBIO UTENSILE -000432|PLC|FAULT|[COD 432] - 741 UNITA' OPERATRICE 2: MANDRINO NON SELEZIONATO o IN CAMBIO UTENSILE -000433|PLC|FAULT|[COD 433] - 741 UNITA' OPERATRICE 3: MANDRINO NON SELEZIONATO o IN CAMBIO UTENSILE -000434|PLC|FAULT|[COD 434] - 181 UNITA' OPERATRICE 1: M06 O M100 NON CHIAMATI -000435|PLC|FAULT|[COD 435] - 181 UNITA' OPERATRICE 2: M06 O M100 NON CHIAMATI -000436|PLC|FAULT|[COD 436] - 181 UNITA' OPERATRICE 3: M06 O M100 NON CHIAMATI -000437|PLC|FAULT|[COD 437] - 689 AVVISO TOOLTABLE - T INTERPRETATA COME MANINA -000438|PLC|FAULT|[COD 438] - 689 AVVISO TOOLTABLE - T INTERPRETATA COME ID UTENSILE -000439|PLC|FAULT|[COD 439] - 434 RIQUALIFICA CORRETTORE UTENSILE NON OK PROCESSO 1 -000440|PLC|FAULT|[COD 440] - 434 RIQUALIFICA CORRETTORE UTENSILE NON OK PROCESSO 2 -000441|PLC|FAULT|[COD 441] - 517 VALORE IN TABELLA UTENSILE ERRATO / UTENSILE NON DISPONIBILE -000442|PLC|FAULT|[COD 442] - 390 FUNZIONE M07 NON PERMESSA -000443|PLC|FAULT|[COD 443] - 411 ASSI NON RIFERITI (SOFTKEY AZZERAMENTO ASSI) -000444|PLC|FAULT|[COD 444] - 390 FUNZIONE T NON PERMESSA -000445|PLC|FAULT|[COD 445] - 399 SERBATOIO DEL GRASSO VUOTO PONTE 1 -000446|PLC|FAULT|[COD 446] - 400 LUBRIFICAZIONE INEFFICIENTE PONTE 1 -000447|PLC|FAULT|[COD 447] - 732 PULSANTIERA ATTREZZAGGIO MAGAZZINI UTENSILI ABILITATA -000448|PLC|FAULT|[COD 448] - 530 MODALITA' SETTING ABILITATA -000449|PLC|FAULT|[COD 449] - 398 PRESSIONE ARIA INSUFFICIENTE -000450|PLC|FAULT|[COD 450] - 528 MODALITA' "PROVA PROGRAMMI" ATTIVA -000451|PLC|FAULT|[COD 451] - 390 FUNZIONE M NON PERMESSA -000452|PLC|FAULT|[COD 452] - 398 PRESSIONE ARIA SOFFIAGGI INSUFFICIENTE -000453|PLC|FAULT|[COD 453] - 100 CONVERTITORE 1 SPENTO -000454|PLC|FAULT|[COD 454] - 100 CONVERTITORE 2 SPENTO -000455|PLC|FAULT|[COD 455] - 100 CONVERTITORE 3 SPENTO -000456|PLC|FAULT|[COD 456] - 100 CONVERTITORE 4 SPENTO -000457|PLC|FAULT|[COD 457] - 100 CONVERTITORE 5 SPENTO -000458|PLC|FAULT|[COD 458] - 100 CONVERTITORE 6 SPENTO -000459|PLC|FAULT|[COD 459] - 163 FRENO CONVERTITORE 1 NON OK -000460|PLC|FAULT|[COD 460] - 163 FRENO CONVERTITORE 2 NON OK -000461|PLC|FAULT|[COD 461] - 163 FRENO CONVERTITORE 3 NON OK -000462|PLC|FAULT|[COD 462] - 163 FRENO CONVERTITORE 4 NON OK -000463|PLC|FAULT|[COD 463] - 163 FRENO CONVERTITORE 5 NON OK -000464|PLC|FAULT|[COD 464] - 163 FRENO CONVERTITORE 6 NON OK -000465|PLC|FAULT|[COD 465] - 135 CONVERTITORE 1 IN BLOCCO -000466|PLC|FAULT|[COD 466] - 135 CONVERTITORE 2 IN BLOCCO -000467|PLC|FAULT|[COD 467] - 135 CONVERTITORE 3 IN BLOCCO -000468|PLC|FAULT|[COD 468] - 135 CONVERTITORE 4 IN BLOCCO -000469|PLC|FAULT|[COD 469] - 135 CONVERTITORE 5 IN BLOCCO -000470|PLC|FAULT|[COD 470] - 135 CONVERTITORE 6 IN BLOCCO -000471|PLC|FAULT|[COD 471] - 168 CONVERTITORE 1 NON ABILITATO -000472|PLC|FAULT|[COD 472] - 168 CONVERTITORE 2 NON ABILITATO -000473|PLC|FAULT|[COD 473] - 168 CONVERTITORE 3 NON ABILITATO -000474|PLC|FAULT|[COD 474] - 168 CONVERTITORE 4 NON ABILITATO -000475|PLC|FAULT|[COD 475] - 168 CONVERTITORE 5 NON ABILITATO -000476|PLC|FAULT|[COD 476] - 168 CONVERTITORE 6 NON ABILITATO -000477|PLC|FAULT|[COD 477] - 520 FUNZIONE STALL MODE CONVERTITORE 1 ATTIVA -000478|PLC|FAULT|[COD 478] - 520 FUNZIONE STALL MODE CONVERTITORE 2 ATTIVA -000479|PLC|FAULT|[COD 479] - 520 FUNZIONE STALL MODE CONVERTITORE 3 ATTIVA -000480|PLC|FAULT|[COD 480] - 520 FUNZIONE STALL MODE CONVERTITORE 4 ATTIVA -000481|PLC|FAULT|[COD 481] - 520 FUNZIONE STALL MODE CONVERTITORE 5 ATTIVA -000482|PLC|FAULT|[COD 482] - 520 FUNZIONE STALL MODE CONVERTITORE 6 ATTIVA -000483|PLC|FAULT|[COD 483] - 120 GAMMA NON OK CONVERTITORE 1 -000484|PLC|FAULT|[COD 484] - 120 GAMMA NON OK CONVERTITORE 2 -000485|PLC|FAULT|[COD 485] - 120 GAMMA NON OK CONVERTITORE 3 -000486|PLC|FAULT|[COD 486] - 120 GAMMA NON OK CONVERTITORE 4 -000487|PLC|FAULT|[COD 487] - 120 GAMMA NON OK CONVERTITORE 5 -000488|PLC|FAULT|[COD 488] - 120 GAMMA NON OK CONVERTITORE 6 -000489|PLC|FAULT|[COD 489] - 135 CONVERTITORE 1 IN FAULT -000490|PLC|FAULT|[COD 490] - 135 CONVERTITORE 2 IN FAULT -000491|PLC|FAULT|[COD 491] - 135 CONVERTITORE 3 IN FAULT -000492|PLC|FAULT|[COD 492] - 135 CONVERTITORE 4 IN FAULT -000493|PLC|FAULT|[COD 493] - 135 CONVERTITORE 5 IN FAULT -000494|PLC|FAULT|[COD 494] - 135 CONVERTITORE 6 IN FAULT -000495|PLC|FAULT|[COD 495] - 135 CONVERTITORE 1 IN WARNING -000496|PLC|FAULT|[COD 496] - 135 CONVERTITORE 2 IN WARNING -000497|PLC|FAULT|[COD 497] - 135 CONVERTITORE 3 IN WARNING -000498|PLC|FAULT|[COD 498] - 135 CONVERTITORE 4 IN WARNING -000499|PLC|FAULT|[COD 499] - 135 CONVERTITORE 5 IN WARNING -000500|PLC|FAULT|[COD 500] - 135 CONVERTITORE 6 IN WARNING -000501|PLC|FAULT|[COD 501] - 404 BILANCIAMENTO ASSE Z INSUFFICIENTE -000502|PLC|FAULT|[COD 502] - 404 BILANCIAMENTO ASSE W INSUFFICIENTE -000503|PLC|FAULT|[COD 503] - 404 BILANCIAMENTO ASSE VERTICALE SCARICO PEZZI INSUFFICIENTE -000504|PLC|FAULT|[COD 504] - 404 BILANCIAMENTO ASPIRAZIONE INSUFFICIENTE -000505|PLC|FAULT|[COD 505] - 458 ASSE P NON BLOCCATO -000506|PLC|FAULT|[COD 506] - 458 ASSE P NON SBLOCCATO -000507|PLC|FAULT|[COD 507] - 539 ASSE A NON IN POSIZONE DI ZERO -000508|PLC|FAULT|[COD 508] - 539 ASSE B NON IN POSIZONE DI ZERO -000509|PLC|FAULT|[COD 509] - 529 UTENSILE TESTA 1 NON FERMO -000510|PLC|FAULT|[COD 510] - 529 UTENSILE TESTA 2 NON FERMO -000511|PLC|FAULT|[COD 511] - 525 UTENSILE TESTA 1 NON IN ROTAZIONE -000512|PLC|FAULT|[COD 512] - 525 UTENSILE TESTA 2 NON IN ROTAZIONE -000513|PLC|FAULT|[COD 513] - 235 SONDA TERMICA MANDRINO 1 -000514|PLC|FAULT|[COD 514] - 235 SONDA TERMICA MANDRINO 2 -000515|PLC|FAULT|[COD 515] - 235 SONDA TERMICA MANDRINO 3 -000516|PLC|FAULT|[COD 516] - 235 SONDA TERMICA MANDRINO 4 -000517|PLC|FAULT|[COD 517] - 235 SONDA TERMICA MANDRINO 5 -000518|PLC|FAULT|[COD 518] - 235 SONDA TERMICA MANDRINO 6 -000519|PLC|FAULT|[COD 519] - 235 SONDA TERMICA MANDRINO 7 -000520|PLC|FAULT|[COD 520] - 235 SONDA TERMICA MANDRINO 8 -000521|PLC|FAULT|[COD 521] - 522 GIRI TROPPO ELEVATI MANDRINO 1 -000522|PLC|FAULT|[COD 522] - 522 GIRI TROPPO ELEVATI MANDRINO 2 -000523|PLC|FAULT|[COD 523] - 522 GIRI TROPPO ELEVATI MANDRINO 3 -000524|PLC|FAULT|[COD 524] - 522 GIRI TROPPO ELEVATI MANDRINO 4 -000525|PLC|FAULT|[COD 525] - 522 GIRI TROPPO ELEVATI MANDRINO 5 -000526|PLC|FAULT|[COD 526] - 522 GIRI TROPPO ELEVATI MANDRINO 6 -000527|PLC|FAULT|[COD 527] - 522 GIRI TROPPO ELEVATI MANDRINO 7 -000528|PLC|FAULT|[COD 528] - 522 GIRI TROPPO ELEVATI MANDRINO 8 -000529|PLC|FAULT|[COD 529] - 115 CONTROLLO VELOCITA' MANDRINO 1 -000530|PLC|FAULT|[COD 530] - 115 CONTROLLO VELOCITA' MANDRINO 2 -000531|PLC|FAULT|[COD 531] - 115 CONTROLLO VELOCITA' MANDRINO 3 -000532|PLC|FAULT|[COD 532] - 115 CONTROLLO VELOCITA' MANDRINO 4 -000533|PLC|FAULT|[COD 533] - 115 CONTROLLO VELOCITA' MANDRINO 5 -000534|PLC|FAULT|[COD 534] - 115 CONTROLLO VELOCITA' MANDRINO 6 -000535|PLC|FAULT|[COD 535] - 115 CONTROLLO VELOCITA' MANDRINO 7 -000536|PLC|FAULT|[COD 536] - 115 CONTROLLO VELOCITA' MANDRINO 8 -000537|PLC|FAULT|[COD 537] - 498 CARICO MASSIMO SUL MANDRINO 1 -000538|PLC|FAULT|[COD 538] - 498 CARICO MASSIMO SUL MANDRINO 2 -000539|PLC|FAULT|[COD 539] - 498 CARICO MASSIMO SUL MANDRINO 3 -000540|PLC|FAULT|[COD 540] - 498 CARICO MASSIMO SUL MANDRINO 4 -000541|PLC|FAULT|[COD 541] - 498 CARICO MASSIMO SUL MANDRINO 5 -000542|PLC|FAULT|[COD 542] - 498 CARICO MASSIMO SUL MANDRINO 6 -000543|PLC|FAULT|[COD 543] - 498 CARICO MASSIMO SUL MANDRINO 7 -000544|PLC|FAULT|[COD 544] - 498 CARICO MASSIMO SUL MANDRINO 8 -000545|PLC|FAULT|[COD 545] - 441 MALFUNZIONAMENTO RAFFREDDAMENTO MANDRINO 1 -000546|PLC|FAULT|[COD 546] - 441 MALFUNZIONAMENTO RAFFREDDAMENTO MANDRINO 2 -000547|PLC|FAULT|[COD 547] - 441 MALFUNZIONAMENTO RAFFREDDAMENTO MANDRINO 3 -000548|PLC|FAULT|[COD 548] - 441 MALFUNZIONAMENTO RAFFREDDAMENTO MANDRINO 4 -000549|PLC|FAULT|[COD 549] - 441 MALFUNZIONAMENTO RAFFREDDAMENTO MANDRINO 5 -000550|PLC|FAULT|[COD 550] - 441 MALFUNZIONAMENTO RAFFREDDAMENTO MANDRINO 6 -000551|PLC|FAULT|[COD 551] - 441 MALFUNZIONAMENTO RAFFREDDAMENTO MANDRINO 7 -000552|PLC|FAULT|[COD 552] - 441 MALFUNZIONAMENTO RAFFREDDAMENTO MANDRINO 8 -000553|PLC|FAULT|[COD 553] - 672 CIRCUITO LIQUIDO RAFFREDDAMENTO MANDRINO 1 NON OK -000554|PLC|FAULT|[COD 554] - 672 CIRCUITO LIQUIDO RAFFREDDAMENTO MANDRINO 2 NON OK -000555|PLC|FAULT|[COD 555] - 672 CIRCUITO LIQUIDO RAFFREDDAMENTO MANDRINO 3 NON OK -000556|PLC|FAULT|[COD 556] - 672 CIRCUITO LIQUIDO RAFFREDDAMENTO MANDRINO 4 NON OK -000557|PLC|FAULT|[COD 557] - 672 CIRCUITO LIQUIDO RAFFREDDAMENTO MANDRINO 5 NON OK -000558|PLC|FAULT|[COD 558] - 672 CIRCUITO LIQUIDO RAFFREDDAMENTO MANDRINO 6 NON OK -000559|PLC|FAULT|[COD 559] - 672 CIRCUITO LIQUIDO RAFFREDDAMENTO MANDRINO 7 NON OK -000560|PLC|FAULT|[COD 560] - 672 CIRCUITO LIQUIDO RAFFREDDAMENTO MANDRINO 8 NON OK -000561|PLC|FAULT|[COD 561] - 490 VERIFICA POSIZIONE UTENSILE MANDRINO 1 -000562|PLC|FAULT|[COD 562] - 490 VERIFICA POSIZIONE UTENSILE MANDRINO 2 -000563|PLC|FAULT|[COD 563] - 490 VERIFICA POSIZIONE UTENSILE MANDRINO 3 -000564|PLC|FAULT|[COD 564] - 490 VERIFICA POSIZIONE UTENSILE MANDRINO 4 -000565|PLC|FAULT|[COD 565] - 490 VERIFICA POSIZIONE UTENSILE MANDRINO 5 -000566|PLC|FAULT|[COD 566] - 490 VERIFICA POSIZIONE UTENSILE MANDRINO 6 -000567|PLC|FAULT|[COD 567] - 490 VERIFICA POSIZIONE UTENSILE MANDRINO 7 -000568|PLC|FAULT|[COD 568] - 490 VERIFICA POSIZIONE UTENSILE MANDRINO 8 -000569|PLC|FAULT|[COD 569] - 666 DISPOSITIVO SICUREZZA MANDRINO 1 FERMO NON OK -000570|PLC|FAULT|[COD 570] - 666 DISPOSITIVO SICUREZZA MANDRINO 2 FERMO NON OK -000571|PLC|FAULT|[COD 571] - 666 DISPOSITIVO SICUREZZA MANDRINO 3 FERMO NON OK -000572|PLC|FAULT|[COD 572] - 666 DISPOSITIVO SICUREZZA MANDRINO 4 FERMO NON OK -000573|PLC|FAULT|[COD 573] - 666 DISPOSITIVO SICUREZZA MANDRINO 5 FERMO NON OK -000574|PLC|FAULT|[COD 574] - 666 DISPOSITIVO SICUREZZA MANDRINO 6 FERMO NON OK -000575|PLC|FAULT|[COD 575] - 666 DISPOSITIVO SICUREZZA MANDRINO 7 FERMO NON OK -000576|PLC|FAULT|[COD 576] - 666 DISPOSITIVO SICUREZZA MANDRINO 8 FERMO NON OK -000577|PLC|FAULT|[COD 577] - 464 VITA UTENSILE MANDRINO 1 ESAURITA -000578|PLC|FAULT|[COD 578] - 464 VITA UTENSILE MANDRINO 2 ESAURITA -000579|PLC|FAULT|[COD 579] - 464 VITA UTENSILE MANDRINO 3 ESAURITA -000580|PLC|FAULT|[COD 580] - 464 VITA UTENSILE MANDRINO 4 ESAURITA -000581|PLC|FAULT|[COD 581] - 464 VITA UTENSILE MANDRINO 5 ESAURITA -000582|PLC|FAULT|[COD 582] - 464 VITA UTENSILE MANDRINO 6 ESAURITA -000583|PLC|FAULT|[COD 583] - 464 VITA UTENSILE MANDRINO 7 ESAURITA -000584|PLC|FAULT|[COD 584] - 464 VITA UTENSILE MANDRINO 8 ESAURITA -000585|PLC|FAULT|[COD 585] - 450 UTENSILE 1 NON BLOCCATO -000586|PLC|FAULT|[COD 586] - 450 UTENSILE 2 NON BLOCCATO -000587|PLC|FAULT|[COD 587] - 450 UTENSILE 3 NON BLOCCATO -000588|PLC|FAULT|[COD 588] - 450 UTENSILE 4 NON BLOCCATO -000589|PLC|FAULT|[COD 589] - 450 UTENSILE 5 NON BLOCCATO -000590|PLC|FAULT|[COD 590] - 450 UTENSILE 6 NON BLOCCATO -000591|PLC|FAULT|[COD 591] - 450 UTENSILE 7 NON BLOCCATO -000592|PLC|FAULT|[COD 592] - 450 UTENSILE 8 NON BLOCCATO -000593|PLC|FAULT|[COD 593] - 432 UTENSILE 1 NON SGANCIATO -000594|PLC|FAULT|[COD 594] - 432 UTENSILE 2 NON SGANCIATO -000595|PLC|FAULT|[COD 595] - 432 UTENSILE 3 NON SGANCIATO -000596|PLC|FAULT|[COD 596] - 432 UTENSILE 4 NON SGANCIATO -000597|PLC|FAULT|[COD 597] - 432 UTENSILE 5 NON SGANCIATO -000598|PLC|FAULT|[COD 598] - 432 UTENSILE 6 NON SGANCIATO -000599|PLC|FAULT|[COD 599] - 432 UTENSILE 7 NON SGANCIATO -000600|PLC|FAULT|[COD 600] - 432 UTENSILE 8 NON SGANCIATO -000601|PLC|FAULT|[COD 601] - -000602|PLC|FAULT|[COD 602] - 475 CUFFIA ASPIRAZIONE 1 NON IN POSIZIONE -000603|PLC|FAULT|[COD 603] - 475 CUFFIA ASPIRAZIONE 2 NON IN POSIZIONE -000604|PLC|FAULT|[COD 604] - 475 CUFFIA ASPIRAZIONE 3 NON IN POSIZIONE -000605|PLC|FAULT|[COD 605] - 475 CUFFIA ASPIRAZIONE 4 NON IN POSIZIONE -000606|PLC|FAULT|[COD 606] - 503 CAMBIO UTENSILE 1 IN CORSO -000607|PLC|FAULT|[COD 607] - 503 CAMBIO UTENSILE 2 IN CORSO -000608|PLC|FAULT|[COD 608] - 503 CAMBIO UTENSILE 3 IN CORSO -000609|PLC|FAULT|[COD 609] - 503 CAMBIO UTENSILE 4 IN CORSO -000610|PLC|FAULT|[COD 610] - 503 CAMBIO UTENSILE 5 IN CORSO -000611|PLC|FAULT|[COD 611] - 503 CAMBIO UTENSILE 6 IN CORSO -000612|PLC|FAULT|[COD 612] - 504 CAMBIO UTENSILE 1 INTERROTTO -000613|PLC|FAULT|[COD 613] - 504 CAMBIO UTENSILE 2 INTERROTTO -000614|PLC|FAULT|[COD 614] - 504 CAMBIO UTENSILE 3 INTERROTTO -000615|PLC|FAULT|[COD 615] - 504 CAMBIO UTENSILE 4 INTERROTTO -000616|PLC|FAULT|[COD 616] - 475 CUFFIA ASPIRAZIONE 1 NON PRONTA -000617|PLC|FAULT|[COD 617] - 475 CUFFIA ASPIRAZIONE 1 TIMEOUT -000618|PLC|FAULT|[COD 618] - 666 DISPOSITIVO SICUREZZA MANDRINO 1 CAMBIO UTENSILE FERMO NON OK -000619|PLC|FAULT|[COD 619] - 475 CUFFIA ASPIRAZIONE 2 NON PRONTA -000620|PLC|FAULT|[COD 620] - 475 CUFFIA ASPIRAZIONE 2 TIMEOUT -000621|PLC|FAULT|[COD 621] - 563 TASTATORE DISABILITATO -000622|PLC|FAULT|[COD 622] - 410 REVOLVER NON IN POSIZIONE -000623|PLC|FAULT|[COD 623] - 466 UTENSILE GIA' PRESENTE IN MAGAZZINO 1 -000624|PLC|FAULT|[COD 624] - 466 UTENSILE GIA' PRESENTE IN MAGAZZINO 2 -000625|PLC|FAULT|[COD 625] - 466 UTENSILE GIA' PRESENTE IN MAGAZZINO 3 -000626|PLC|FAULT|[COD 626] - 466 UTENSILE GIA' PRESENTE IN MAGAZZINO 4 -000627|PLC|FAULT|[COD 627] - 466 UTENSILE GIA' PRESENTE IN MAGAZZINO 5 -000628|PLC|FAULT|[COD 628] - 466 UTENSILE GIA' PRESENTE IN MAGAZZINO 6 -000629|PLC|FAULT|[COD 629] - 514 PROTEZIONE MAGAZZINO 1 NON IN POSIZIONE -000630|PLC|FAULT|[COD 630] - 514 PROTEZIONE MAGAZZINO 2 NON IN POSIZIONE -000631|PLC|FAULT|[COD 631] - 514 PROTEZIONE MAGAZZINO 3 NON IN POSIZIONE -000632|PLC|FAULT|[COD 632] - 514 PROTEZIONE MAGAZZINO 4 NON IN POSIZIONE -000633|PLC|FAULT|[COD 633] - 514 PROTEZIONE MAGAZZINO 5 NON IN POSIZIONE -000634|PLC|FAULT|[COD 634] - 514 PROTEZIONE MAGAZZINO 6 NON IN POSIZIONE -000635|PLC|FAULT|[COD 635] - 442 MAGAZZINO 1 NON IN POSIZIONE -000636|PLC|FAULT|[COD 636] - 442 MAGAZZINO 2 NON IN POSIZIONE -000637|PLC|FAULT|[COD 637] - 442 MAGAZZINO 3 NON IN POSIZIONE -000638|PLC|FAULT|[COD 638] - 442 MAGAZZINO 4 NON IN POSIZIONE -000639|PLC|FAULT|[COD 639] - 442 MAGAZZINO 5 NON IN POSIZIONE -000640|PLC|FAULT|[COD 640] - 442 MAGAZZINO 6 NON IN POSIZIONE -000641|PLC|FAULT|[COD 641] - 135 CONVERTITORE CAMBIO UTENSILE 1 IN BLOCCO -000642|PLC|FAULT|[COD 642] - 135 CONVERTITORE CAMBIO UTENSILE 2 IN BLOCCO -000643|PLC|FAULT|[COD 643] - 135 CONVERTITORE CAMBIO UTENSILE 3 IN BLOCCO -000644|PLC|FAULT|[COD 644] - 135 CONVERTITORE CAMBIO UTENSILE 4 IN BLOCCO -000645|PLC|FAULT|[COD 645] - 148 CONVERTITORE CAMBIO UTENSILE 1 IN WARNING -000646|PLC|FAULT|[COD 646] - 148 CONVERTITORE CAMBIO UTENSILE 2 IN WARNING -000647|PLC|FAULT|[COD 647] - 148 CONVERTITORE CAMBIO UTENSILE 3 IN WARNING -000648|PLC|FAULT|[COD 648] - 148 CONVERTITORE CAMBIO UTENSILE 4 IN WARNING -000649|PLC|FAULT|[COD 649] - 179 MOTORE CAMBIO UTENSILE 1 NON ALIMENTATO/ABILITATO -000650|PLC|FAULT|[COD 650] - 179 MOTORE CAMBIO UTENSILE 2 NON ALIMENTATO/ABILITATO -000651|PLC|FAULT|[COD 651] - 179 MOTORE CAMBIO UTENSILE 3 NON ALIMENTATO/ABILITATO -000652|PLC|FAULT|[COD 652] - 179 MOTORE CAMBIO UTENSILE 4 NON ALIMENTATO/ABILITATO -000653|PLC|FAULT|[COD 653] - 611 MOTORE CAMBIO UTENSILE 1 NON IN POSIZIONE -000654|PLC|FAULT|[COD 654] - 611 MOTORE CAMBIO UTENSILE 2 NON IN POSIZIONE -000655|PLC|FAULT|[COD 655] - 611 MOTORE CAMBIO UTENSILE 3 NON IN POSIZIONE -000656|PLC|FAULT|[COD 656] - 611 MOTORE CAMBIO UTENSILE 4 NON IN POSIZIONE -000657|PLC|FAULT|[COD 657] - 720 LIQUIDO NEBULIZZATORE UTENSILE 1 NON OK -000658|PLC|FAULT|[COD 658] - 720 LIQUIDO NEBULIZZATORE UTENSILE 2 NON OK -000659|PLC|FAULT|[COD 659] - 720 LIQUIDO NEBULIZZATORE UTENSILE 3 NON OK -000660|PLC|FAULT|[COD 660] - 720 LIQUIDO NEBULIZZATORE UTENSILE 4 NON OK -000661|PLC|FAULT|[COD 661] - 305 BLOCCAGGIO A DEPRESSIONE DESTRA 1 INEFFICIENTE -000662|PLC|FAULT|[COD 662] - 305 BLOCCAGGIO A DEPRESSIONE SINISTRA 1 INEFFICIENTE -000663|PLC|FAULT|[COD 663] - 305 BLOCCAGGIO A DEPRESSIONE DESTRA 2 INEFFICIENTE -000664|PLC|FAULT|[COD 664] - 305 BLOCCAGGIO A DEPRESSIONE SINISTRA 2 INEFFICIENTE -000665|PLC|FAULT|[COD 665] - 300 BLOCCAGGIO PRESSIONE DESTRA INEFFICIENTE -000666|PLC|FAULT|[COD 666] - 300 BLOCCAGGIO PRESSIONE SINISTRA INEFFICIENTE -000667|PLC|FAULT|[COD 667] - 300 BLOCCAGGIO MORSE 1 INEFFICIENTE -000668|PLC|FAULT|[COD 668] - 300 BLOCCAGGIO MORSE 2 INEFFICIENTE -000669|PLC|FAULT|[COD 669] - 305 BLOCCAGGIO A DEPRESSIONE ZONA 11 INEFFICIENTE -000670|PLC|FAULT|[COD 670] - 305 BLOCCAGGIO A DEPRESSIONE ZONA 21 INEFFICIENTE -000671|PLC|FAULT|[COD 671] - 305 BLOCCAGGIO A DEPRESSIONE ZONA 12 INEFFICIENTE -000672|PLC|FAULT|[COD 672] - 305 BLOCCAGGIO A DEPRESSIONE ZONA 22 INEFFICIENTE -000673|PLC|FAULT|[COD 673] - 300 BLOCCAGGIO PRESSIONE ZONA 11 INEFFICIENTE -000674|PLC|FAULT|[COD 674] - 300 BLOCCAGGIO PRESSIONE ZONA 21 INEFFICIENTE -000675|PLC|FAULT|[COD 675] - 230 RELE TERMICO POMPA VUOTO 3 -000676|PLC|FAULT|[COD 676] - 230 RELE TERMICO POMPA VUOTO 4 -000677|PLC|FAULT|[COD 677] - 305 BLOCCAGGIO A DEPRESSIONE ZONA 1 INEFFICIENTE -000678|PLC|FAULT|[COD 678] - 305 BLOCCAGGIO A DEPRESSIONE ZONA 2 INEFFICIENTE -000679|PLC|FAULT|[COD 679] - 305 BLOCCAGGIO A DEPRESSIONE ZONA 3 INEFFICIENTE -000680|PLC|FAULT|[COD 680] - 305 BLOCCAGGIO A DEPRESSIONE ZONA 4 INEFFICIENTE -000681|PLC|FAULT|[COD 681] - 305 BLOCCAGGIO A DEPRESSIONE ZONA 5 INEFFICIENTE -000682|PLC|FAULT|[COD 682] - 305 BLOCCAGGIO A DEPRESSIONE ZONA 6 INEFFICIENTE -000683|PLC|FAULT|[COD 683] - 305 BLOCCAGGIO A DEPRESSIONE ZONA 7 INEFFICIENTE -000684|PLC|FAULT|[COD 684] - 305 BLOCCAGGIO A DEPRESSIONE ZONA 8 INEFFICIENTE -000685|PLC|FAULT|[COD 685] - 305 BLOCCAGGIO A DEPRESSIONE ZONA 9 INEFFICIENTE -000686|PLC|FAULT|[COD 686] - 305 BLOCCAGGIO A DEPRESSIONE ZONA 10 INEFFICIENTE -000687|PLC|FAULT|[COD 687] - 305 BLOCCAGGIO A DEPRESSIONE MITRAGLIERA 1 INEFFICIENTE -000688|PLC|FAULT|[COD 688] - 305 BLOCCAGGIO A DEPRESSIONE MITRAGLIERA 2 INEFFICIENTE -000689|PLC|FAULT|[COD 689] - 300 BLOCCAGGIO A PRESSIONE MITRAGLIERA 1 INEFFICIENTE -000690|PLC|FAULT|[COD 690] - 300 BLOCCAGGIO A PRESSIONE MITRAGLIERA 2 INEFFICIENTE -000691|PLC|FAULT|[COD 691] - 588 PROTEZIONE CABINA DESTRA NON IN POSIZIONE -000692|PLC|FAULT|[COD 692] - 588 PROTEZIONE CABINA SINISTRA NON IN POSIZIONE -000693|PLC|FAULT|[COD 693] - 124 ERRORE FILE GESTIONE CONFIGURAZIONE PLC -000694|PLC|FAULT|[COD 694] - 124 ERRORE FILE GESTIONE I/O -000695|PLC|FAULT|[COD 695] - AXES AMP PARAMETER OVERWRITE -000696|PLC|FAULT|[COD 696] - ERROR DURING BOOT -000697|PLC|FAULT|[COD 697] - 590 PORTA ATTREZZAGGIO CAMBIO UTENSILE 1 NON CHIUSA/INTERBLOCCATA -000698|PLC|FAULT|[COD 698] - 590 PORTA ATTREZZAGGIO CAMBIO UTENSILE 2 NON CHIUSA/INTERBLOCCATA -000699|PLC|FAULT|[COD 699] - 590 PORTA DX NON CHIUSA/INTERBLOCCATA -000700|PLC|FAULT|[COD 700] - 590 PORTA SX NON CHIUSA/INTERBLOCCATA -000701|PLC|FAULT|[COD 701] - 590 PORTA ZONA CARICO NON CHIUSA/INTERBLOCCATA -000702|PLC|FAULT|[COD 702] - 590 PORTA ZONA SCARICO NON CHIUSA/INTERBLOCCATA -000703|PLC|FAULT|[COD 703] - 546 ASSE Z NON IN POSIZIONE -000704|PLC|FAULT|[COD 704] - 554 TASTATORE NON IN POSIZIONE -000705|PLC|FAULT|[COD 705] - 281 RELE TERMICO MOTORE SCARICO SFRIDI 1 -000706|PLC|FAULT|[COD 706] - 546 ASSE W NON IN POSIZIONE -000707|PLC|FAULT|[COD 707] - 590 PORTA 2 ZONA SCARICO NON CHIUSA/INTERBLOCCATA -000708|PLC|FAULT|[COD 708] - 281 RELE TERMICO MOTORE SCARICO SFRIDI 2 -000709|PLC|FAULT|[COD 709] - 281 RELE TERMICO MOTORE SCARICO SFRIDI 3 -000710|PLC|FAULT|[COD 710] - 305 BLOCCAGGIO DEPRESSIONE INEFFICIENTE -000711|PLC|FAULT|[COD 711] - -000712|PLC|FAULT|[COD 712] - -000713|PLC|FAULT|[COD 713] - -000714|PLC|FAULT|[COD 714] - -000715|PLC|FAULT|[COD 715] - -000716|PLC|FAULT|[COD 716] - 730 INSERZIONE UTENSILE NON OK -000717|PLC|FAULT|[COD 717] - -000718|PLC|FAULT|[COD 718] - -000719|PLC|FAULT|[COD 719] - -000720|PLC|FAULT|[COD 720] - -000721|PLC|FAULT|[COD 721] - -000722|PLC|FAULT|[COD 722] - -000723|PLC|FAULT|[COD 723] - -000724|PLC|FAULT|[COD 724] - -000725|PLC|FAULT|[COD 725] - -000726|PLC|FAULT|[COD 726] - -000727|PLC|FAULT|[COD 727] - -000728|PLC|FAULT|[COD 728] - -000729|PLC|FAULT|[COD 729] - -000730|PLC|FAULT|[COD 730] - -000731|PLC|FAULT|[COD 731] - -000732|PLC|FAULT|[COD 732] - -000733|PLC|FAULT|[COD 733] - -000734|PLC|FAULT|[COD 734] - -000735|PLC|FAULT|[COD 735] - -000736|PLC|FAULT|[COD 736] - 594 PORTA SINISTRA CHIUSA E NON BLOCCATA -000737|PLC|FAULT|[COD 737] - 594 PORTA DESTRA CHIUSA E NON BLOCCATA -000738|PLC|FAULT|[COD 738] - -000739|PLC|FAULT|[COD 739] - -000740|PLC|FAULT|[COD 740] - -000741|PLC|FAULT|[COD 741] - -000742|PLC|FAULT|[COD 742] - 593 PROTEZIONI DI SICUREZZA -000743|PLC|FAULT|[COD 743] - -000744|PLC|FAULT|[COD 744] - -000745|PLC|FAULT|[COD 745] - -000746|PLC|FAULT|[COD 746] - -000747|PLC|FAULT|[COD 747] - -000748|PLC|FAULT|[COD 748] - -000749|PLC|FAULT|[COD 749] - -000750|PLC|FAULT|[COD 750] - 399 SERBATOIO DEL GRASSO VUOTO PONTE 2 -000751|PLC|FAULT|[COD 751] - 400 LUBRIFICAZIONE INEFFICIENTE PONTE 2 -000752|PLC|FAULT|[COD 752] - 173 CAMBIARE BATTERIA ASSE X SLAVE -000753|PLC|FAULT|[COD 753] - 173 CAMBIARE BATTERIA ASSE U SLAVE -000754|PLC|FAULT|[COD 754] - 177 MODULO FRENATURA AZIONAMENTO ASSE X slave NON OK -000755|PLC|FAULT|[COD 755] - 177 MODULO FRENATURA AZIONAMENTO ASSE U slave NON OK -000756|PLC|FAULT|[COD 756] - 538 TAVOLA NON POSIZIONATA -000757|PLC|FAULT|[COD 757] - 673 ASSI NON IN POSIZIONE PER CAMBIO TAVOLA -000758|PLC|FAULT|[COD 758] - 534 PIOLO BLOCCAGGIO TAVOLA NON IN POSIZIONE -000759|PLC|FAULT|[COD 759] - -000760|PLC|FAULT|[COD 760] - -000761|PLC|FAULT|[COD 761] - -000762|PLC|FAULT|[COD 762] - -000763|PLC|FAULT|[COD 763] - -000764|PLC|FAULT|[COD 764] - -000765|PLC|FAULT|[COD 765] - -000766|PLC|FAULT|[COD 766] - -000767|PLC|FAULT|[COD 767] - -000768|PLC|FAULT|[COD 768] - -000769|PLC|FAULT|[COD 769] - -000770|PLC|FAULT|[COD 770] - -000771|PLC|FAULT|[COD 771] - -000772|PLC|FAULT|[COD 772] - -000773|PLC|FAULT|[COD 773] - -000774|PLC|FAULT|[COD 774] - -000775|PLC|FAULT|[COD 775] - -000776|PLC|FAULT|[COD 776] - -000777|PLC|FAULT|[COD 777] - -000778|PLC|FAULT|[COD 778] - -000779|PLC|FAULT|[COD 779] - -000780|PLC|FAULT|[COD 780] - -000781|PLC|FAULT|[COD 781] - -000782|PLC|FAULT|[COD 782] - 294 CILINDRI POSIZIONAMENTO MODULI TAVOLA 1 NON IN POSIZIONE -000783|PLC|FAULT|[COD 783] - 294 CILINDRI POSIZIONAMENTO MODULI TAVOLA 2 NON IN POSIZIONE -000784|PLC|FAULT|[COD 784] - 250 CICLO DI ATTREZZAGGIO TAVOLA 1 IN CORSO -000785|PLC|FAULT|[COD 785] - 250 CICLO DI ATTREZZAGGIO TAVOLA 2 IN CORSO -000786|PLC|FAULT|[COD 786] - 294 ATTREZZATURE TAVOLA 1 NON IN POSIZIONE / NON BLOCCATE -000787|PLC|FAULT|[COD 787] - 294 ATTREZZATURE TAVOLA 2 NON IN POSIZIONE / NON BLOCCATE -000788|PLC|FAULT|[COD 788] - 552 BLOCCAGGIO / SBLOCCAGGIO MORSE TAVOLA 1 NON OK -000789|PLC|FAULT|[COD 789] - 552 BLOCCAGGIO / SBLOCCAGGIO MORSE TAVOLA 2 NON OK -000790|PLC|FAULT|[COD 790] - 703 ASSENZA CONSENSI ATTREZZAGGIO TAVOLA 1 (PEZZO BLOCCATO, BARRIERE, ...) -000791|PLC|FAULT|[COD 791] - 703 ASSENZA CONSENSI ATTREZZAGGIO TAVOLA 2 (PEZZO BLOCCATO, BARRIERE, ...) -000792|PLC|FAULT|[COD 792] - -000793|PLC|FAULT|[COD 793] - -000794|PLC|FAULT|[COD 794] - -000795|PLC|FAULT|[COD 795] - -000796|PLC|FAULT|[COD 796] - -000797|PLC|FAULT|[COD 797] - -000798|PLC|FAULT|[COD 798] - -000799|PLC|FAULT|[COD 799] - -000800|PLC|FAULT|[COD 800] - -000801|PLC|FAULT|[COD 801] - -000802|PLC|FAULT|[COD 802] - -000803|PLC|FAULT|[COD 803] - -000804|PLC|FAULT|[COD 804] - -000805|PLC|FAULT|[COD 805] - -000806|PLC|FAULT|[COD 806] - -000807|PLC|FAULT|[COD 807] - -000808|PLC|FAULT|[COD 808] - -000809|PLC|FAULT|[COD 809] - -000810|PLC|FAULT|[COD 810] - -000811|PLC|FAULT|[COD 811] - -000812|PLC|FAULT|[COD 812] - -000813|PLC|FAULT|[COD 813] - -000814|PLC|FAULT|[COD 814] - -000815|PLC|FAULT|[COD 815] - -000816|PLC|FAULT|[COD 816] - -000817|PLC|FAULT|[COD 817] - -000818|PLC|FAULT|[COD 818] - -000819|PLC|FAULT|[COD 819] - -000820|PLC|FAULT|[COD 820] - -000821|PLC|FAULT|[COD 821] - -000822|PLC|FAULT|[COD 822] - -000823|PLC|FAULT|[COD 823] - -000824|PLC|FAULT|[COD 824] - -000825|PLC|FAULT|[COD 825] - -000826|PLC|FAULT|[COD 826] - -000827|PLC|FAULT|[COD 827] - -000828|PLC|FAULT|[COD 828] - -000829|PLC|FAULT|[COD 829] - -000830|PLC|FAULT|[COD 830] - -000831|PLC|FAULT|[COD 831] - -000832|PLC|FAULT|[COD 832] - -000833|PLC|FAULT|[COD 833] - -000834|PLC|FAULT|[COD 834] - -000835|PLC|FAULT|[COD 835] - -000836|PLC|FAULT|[COD 836] - -000837|PLC|FAULT|[COD 837] - -000838|PLC|FAULT|[COD 838] - -000839|PLC|FAULT|[COD 839] - -000840|PLC|FAULT|[COD 840] - -000841|PLC|FAULT|[COD 841] - -000842|PLC|FAULT|[COD 842] - -000843|PLC|FAULT|[COD 843] - -000844|PLC|FAULT|[COD 844] - -000845|PLC|FAULT|[COD 845] - -000846|PLC|FAULT|[COD 846] - -000847|PLC|FAULT|[COD 847] - -000848|PLC|FAULT|[COD 848] - -000849|PLC|FAULT|[COD 849] - -000850|PLC|FAULT|[COD 850] - -000851|PLC|FAULT|[COD 851] - -000852|PLC|FAULT|[COD 852] - -000853|PLC|FAULT|[COD 853] - -000854|PLC|FAULT|[COD 854] - -000855|PLC|FAULT|[COD 855] - -000856|PLC|FAULT|[COD 856] - -000857|PLC|FAULT|[COD 857] - -000858|PLC|FAULT|[COD 858] - -000859|PLC|FAULT|[COD 859] - -000860|PLC|FAULT|[COD 860] - -000861|PLC|FAULT|[COD 861] - -000862|PLC|FAULT|[COD 862] - -000863|PLC|FAULT|[COD 863] - -000864|PLC|FAULT|[COD 864] - -000865|PLC|FAULT|[COD 865] - -000866|PLC|FAULT|[COD 866] - -000867|PLC|FAULT|[COD 867] - -000868|PLC|FAULT|[COD 868] - -000869|PLC|FAULT|[COD 869] - -000870|PLC|FAULT|[COD 870] - -000871|PLC|FAULT|[COD 871] - -000872|PLC|FAULT|[COD 872] - -000873|PLC|FAULT|[COD 873] - -000874|PLC|FAULT|[COD 874] - -000875|PLC|FAULT|[COD 875] - -000876|PLC|FAULT|[COD 876] - -000877|PLC|FAULT|[COD 877] - -000878|PLC|FAULT|[COD 878] - -000879|PLC|FAULT|[COD 879] - -000880|PLC|FAULT|[COD 880] - -000881|PLC|FAULT|[COD 881] - -000882|PLC|FAULT|[COD 882] - -000883|PLC|FAULT|[COD 883] - -000884|PLC|FAULT|[COD 884] - -000885|PLC|FAULT|[COD 885] - -000886|PLC|FAULT|[COD 886] - -000887|PLC|FAULT|[COD 887] - -000888|PLC|FAULT|[COD 888] - -000889|PLC|FAULT|[COD 889] - -000890|PLC|FAULT|[COD 890] - -000891|PLC|FAULT|[COD 891] - -000892|PLC|FAULT|[COD 892] - -000893|PLC|FAULT|[COD 893] - -000894|PLC|FAULT|[COD 894] - -000895|PLC|FAULT|[COD 895] - -000896|PLC|FAULT|[COD 896] - -000897|PLC|FAULT|[COD 897] - -000898|PLC|FAULT|[COD 898] - -000899|PLC|FAULT|[COD 899] - -000900|PLC|FAULT|[COD 900] - -000901|PLC|FAULT|[COD 901] - -000902|PLC|FAULT|[COD 902] - -000903|PLC|FAULT|[COD 903] - -000904|PLC|FAULT|[COD 904] - -000905|PLC|FAULT|[COD 905] - -000906|PLC|FAULT|[COD 906] - -000907|PLC|FAULT|[COD 907] - -000908|PLC|FAULT|[COD 908] - -000909|PLC|FAULT|[COD 909] - -000910|PLC|FAULT|[COD 910] - -000911|PLC|FAULT|[COD 911] - -000912|PLC|FAULT|[COD 912] - -000913|PLC|FAULT|[COD 913] - -000914|PLC|FAULT|[COD 914] - -000915|PLC|FAULT|[COD 915] - -000916|PLC|FAULT|[COD 916] - -000917|PLC|FAULT|[COD 917] - -000918|PLC|FAULT|[COD 918] - -000919|PLC|FAULT|[COD 919] - -000920|PLC|FAULT|[COD 920] - -000921|PLC|FAULT|[COD 921] - -000922|PLC|FAULT|[COD 922] - -000923|PLC|FAULT|[COD 923] - -000924|PLC|FAULT|[COD 924] - -000925|PLC|FAULT|[COD 925] - -000926|PLC|FAULT|[COD 926] - -000927|PLC|FAULT|[COD 927] - -000928|PLC|FAULT|[COD 928] - -000929|PLC|FAULT|[COD 929] - -000930|PLC|FAULT|[COD 930] - -000931|PLC|FAULT|[COD 931] - -000932|PLC|FAULT|[COD 932] - -000933|PLC|FAULT|[COD 933] - -000934|PLC|FAULT|[COD 934] - -000935|PLC|FAULT|[COD 935] - -000936|PLC|FAULT|[COD 936] - -000937|PLC|FAULT|[COD 937] - -000938|PLC|FAULT|[COD 938] - -000939|PLC|FAULT|[COD 939] - -000940|PLC|FAULT|[COD 940] - -000941|PLC|FAULT|[COD 941] - -000942|PLC|FAULT|[COD 942] - -000943|PLC|FAULT|[COD 943] - -000944|PLC|FAULT|[COD 944] - -000945|PLC|FAULT|[COD 945] - -000946|PLC|FAULT|[COD 946] - -000947|PLC|FAULT|[COD 947] - -000948|PLC|FAULT|[COD 948] - -000949|PLC|FAULT|[COD 949] - -000950|PLC|FAULT|[COD 950] - -000951|PLC|FAULT|[COD 951] - -000952|PLC|FAULT|[COD 952] - -000953|PLC|FAULT|[COD 953] - -000954|PLC|FAULT|[COD 954] - -000955|PLC|FAULT|[COD 955] - -000956|PLC|FAULT|[COD 956] - -000957|PLC|FAULT|[COD 957] - -000958|PLC|FAULT|[COD 958] - -000959|PLC|FAULT|[COD 959] - -000960|PLC|FAULT|[COD 960] - -000961|PLC|FAULT|[COD 961] - -000962|PLC|FAULT|[COD 962] - -000963|PLC|FAULT|[COD 963] - -000964|PLC|FAULT|[COD 964] - -000965|PLC|FAULT|[COD 965] - -000966|PLC|FAULT|[COD 966] - -000967|PLC|FAULT|[COD 967] - -000968|PLC|FAULT|[COD 968] - -000969|PLC|FAULT|[COD 969] - -000970|PLC|FAULT|[COD 970] - -000971|PLC|FAULT|[COD 971] - -000972|PLC|FAULT|[COD 972] - -000973|PLC|FAULT|[COD 973] - -000974|PLC|FAULT|[COD 974] - -000975|PLC|FAULT|[COD 975] - -000976|PLC|FAULT|[COD 976] - -000977|PLC|FAULT|[COD 977] - -000978|PLC|FAULT|[COD 978] - -000979|PLC|FAULT|[COD 979] - -000980|PLC|FAULT|[COD 980] - -000981|PLC|FAULT|[COD 981] - -000982|PLC|FAULT|[COD 982] - -000983|PLC|FAULT|[COD 983] - -000984|PLC|FAULT|[COD 984] - -000985|PLC|FAULT|[COD 985] - -000986|PLC|FAULT|[COD 986] - -000987|PLC|FAULT|[COD 987] - -000988|PLC|FAULT|[COD 988] - -000989|PLC|FAULT|[COD 989] - -000990|PLC|FAULT|[COD 990] - -000991|PLC|FAULT|[COD 991] - -000992|PLC|FAULT|[COD 992] - \ No newline at end of file +000001|PLC|FAULT|[COD 001000] - 334 ERRORE COMUNICAZIONE PROFIBUS +000002|PLC|FAULT|[COD 001001] - 700 TABELLE IN MODIFICA +000003|PLC|FAULT|[COD 001002] - 404 BILANCIAMENTO ASSE Z INSUFFICIENTE +000004|PLC|FAULT|[COD 001003] - 403 SURRISCALDAMENTO ARMADIO ELETTRICO +000005|PLC|FAULT|[COD 001004] - 173 CAMBIARE LA BATTERIA +000006|PLC|FAULT|[COD 001005] - 407 UNO O PIU ASSI IN EXTRA CORSA +000007|PLC|FAULT|[COD 001006] - 406 PULSANTI DI EMERGENZA +000008|PLC|FAULT|[COD 001007] - ... +000009|PLC|FAULT|[COD 001008] - 583 MACCHINA SPENTA +000010|PLC|FAULT|[COD 001009] - 782 RICHIESTA ESECUZIONE TEST DI SICUREZZA +000011|PLC|FAULT|[COD 001010] - 783 INCONSISTENZA SEGNALI DUALCHEK (PARATIA) +000012|PLC|FAULT|[COD 001011] - 784 SOVRACORRENTE MODULI I/O LINK +000013|PLC|FAULT|[COD 001012] - 667 CIRCUITO DI SICUREZZA GUASTO +000014|PLC|FAULT|[COD 001013] - 404 BILANCIAMENTO ASSE W INSUFFICIENTE +000015|PLC|FAULT|[COD 001014] - 584 PORTA DI SICUREZZA AUSILIARIA 1 NON CHIUSA +000016|PLC|FAULT|[COD 001015] - 584 PORTA DI SICUREZZA AUSILIARIA 2 NON CHIUSA +000017|PLC|FAULT|[COD 001016] - 001 HAI VERIFICATO TABELLE UTENSILI ? PREMERE SOFTKEY SI +000018|PLC|FAULT|[COD 001017] - 002 SEI SICURO ? PREMERE SOFTKEY SI +000019|PLC|FAULT|[COD 001018] - 666 MODULO CONTROLLO MANDRINO FERMO NON OK +000020|PLC|FAULT|[COD 001019] - 666 DISPOSITIVO DI SICUREZZA GUASTO +000021|PLC|FAULT|[COD 001020] - 689 STATUS UTENSILE NON OK +000022|PLC|FAULT|[COD 001021] - 688 ERRORE TOOLTABLE - SINCRONISMO DATI +000023|PLC|FAULT|[COD 001022] - 688 ERRORE TOOLTABLE - UTENSILE NON TROVATO +000024|PLC|FAULT|[COD 001023] - 688 ERRORE TOOLTABLE - PASTIGLIA NON TROVATA +000025|PLC|FAULT|[COD 001024] - 688 ERRORE TOOLTABLE - FAMIGLIA NON TROVATA +000026|PLC|FAULT|[COD 001025] - 688 ERRORE TOOLTABLE - MAGAZZINO/POSTO NON TROVATO +000027|PLC|FAULT|[COD 001026] - 688 ERRORE TOOLTABLE - VITA UT. ESAURITA PER FAMIGLIA +000028|PLC|FAULT|[COD 001027] - 688 ERRORE TOOLTABLE - POSTO MAGAZZINO NON TROVATO +000029|PLC|FAULT|[COD 001028] - ... +000030|PLC|FAULT|[COD 001029] - ... +000031|PLC|FAULT|[COD 001030] - ... +000032|PLC|FAULT|[COD 001031] - 146 FIELDBUS KO (375) +000033|PLC|FAULT|[COD 001032] - +000034|PLC|FAULT|[COD 001033] - +000035|PLC|FAULT|[COD 001034] - +000036|PLC|FAULT|[COD 001035] - +000037|PLC|FAULT|[COD 001036] - +000038|PLC|FAULT|[COD 001037] - +000039|PLC|FAULT|[COD 001038] - +000040|PLC|FAULT|[COD 001039] - +000041|PLC|FAULT|[COD 001040] - +000042|PLC|FAULT|[COD 001041] - +000043|PLC|FAULT|[COD 001042] - +000044|PLC|FAULT|[COD 001043] - +000045|PLC|FAULT|[COD 001044] - +000046|PLC|FAULT|[COD 001045] - +000047|PLC|FAULT|[COD 001046] - +000048|PLC|FAULT|[COD 001047] - +000049|PLC|FAULT|[COD 001048] - +000050|PLC|FAULT|[COD 001049] - +000051|PLC|FAULT|[COD 001050] - +000052|PLC|FAULT|[COD 001051] - +000053|PLC|FAULT|[COD 001052] - +000054|PLC|FAULT|[COD 001053] - +000055|PLC|FAULT|[COD 001054] - +000056|PLC|FAULT|[COD 001055] - +000057|PLC|FAULT|[COD 001056] - +000058|PLC|FAULT|[COD 001057] - +000059|PLC|FAULT|[COD 001058] - +000060|PLC|FAULT|[COD 001059] - +000061|PLC|FAULT|[COD 001060] - +000062|PLC|FAULT|[COD 001061] - +000063|PLC|FAULT|[COD 001062] - +000064|PLC|FAULT|[COD 001063] - +000065|PLC|FAULT|[COD 001064] - +000066|PLC|FAULT|[COD 001065] - +000067|PLC|FAULT|[COD 001066] - +000068|PLC|FAULT|[COD 001067] - +000069|PLC|FAULT|[COD 001068] - +000070|PLC|FAULT|[COD 001069] - +000071|PLC|FAULT|[COD 001070] - +000072|PLC|FAULT|[COD 001071] - +000073|PLC|FAULT|[COD 001072] - +000074|PLC|FAULT|[COD 001073] - +000075|PLC|FAULT|[COD 001074] - +000076|PLC|FAULT|[COD 001075] - +000077|PLC|FAULT|[COD 001076] - +000078|PLC|FAULT|[COD 001077] - +000079|PLC|FAULT|[COD 001078] - +000080|PLC|FAULT|[COD 001079] - +000081|PLC|FAULT|[COD 001080] - +000082|PLC|FAULT|[COD 001081] - +000083|PLC|FAULT|[COD 001082] - +000084|PLC|FAULT|[COD 001083] - +000085|PLC|FAULT|[COD 001084] - +000086|PLC|FAULT|[COD 001085] - +000087|PLC|FAULT|[COD 001086] - +000088|PLC|FAULT|[COD 001087] - +000089|PLC|FAULT|[COD 001088] - +000090|PLC|FAULT|[COD 001089] - +000091|PLC|FAULT|[COD 001090] - +000092|PLC|FAULT|[COD 001091] - +000093|PLC|FAULT|[COD 001092] - +000094|PLC|FAULT|[COD 001093] - +000095|PLC|FAULT|[COD 001094] - +000096|PLC|FAULT|[COD 001095] - +000097|PLC|FAULT|[COD 001096] - +000098|PLC|FAULT|[COD 001097] - +000099|PLC|FAULT|[COD 001098] - +000100|PLC|FAULT|[COD 001099] - +000101|PLC|FAULT|[COD 001100] - +000102|PLC|FAULT|[COD 001101] - +000103|PLC|FAULT|[COD 001102] - +000104|PLC|FAULT|[COD 001103] - +000105|PLC|FAULT|[COD 001104] - +000106|PLC|FAULT|[COD 001105] - +000107|PLC|FAULT|[COD 001106] - +000108|PLC|FAULT|[COD 001107] - +000109|PLC|FAULT|[COD 001108] - +000110|PLC|FAULT|[COD 001109] - +000111|PLC|FAULT|[COD 001110] - +000112|PLC|FAULT|[COD 001111] - +000113|PLC|FAULT|[COD 001112] - +000114|PLC|FAULT|[COD 001113] - +000115|PLC|FAULT|[COD 001114] - +000116|PLC|FAULT|[COD 001115] - +000117|PLC|FAULT|[COD 001116] - +000118|PLC|FAULT|[COD 001117] - +000119|PLC|FAULT|[COD 001118] - +000120|PLC|FAULT|[COD 001119] - +000121|PLC|FAULT|[COD 001120] - +000122|PLC|FAULT|[COD 001121] - +000123|PLC|FAULT|[COD 001122] - +000124|PLC|FAULT|[COD 001123] - +000125|PLC|FAULT|[COD 001124] - +000126|PLC|FAULT|[COD 001125] - +000127|PLC|FAULT|[COD 001126] - +000128|PLC|FAULT|[COD 001127] - +000129|PLC|FAULT|[COD 001128] - +000130|PLC|FAULT|[COD 001129] - +000131|PLC|FAULT|[COD 001130] - +000132|PLC|FAULT|[COD 001131] - +000133|PLC|FAULT|[COD 001132] - +000134|PLC|FAULT|[COD 001133] - +000135|PLC|FAULT|[COD 001134] - +000136|PLC|FAULT|[COD 001135] - +000137|PLC|FAULT|[COD 001136] - +000138|PLC|FAULT|[COD 001137] - +000139|PLC|FAULT|[COD 001138] - +000140|PLC|FAULT|[COD 001139] - +000141|PLC|FAULT|[COD 001140] - +000142|PLC|FAULT|[COD 001141] - +000143|PLC|FAULT|[COD 001142] - +000144|PLC|FAULT|[COD 001143] - +000145|PLC|FAULT|[COD 001144] - +000146|PLC|FAULT|[COD 001145] - +000147|PLC|FAULT|[COD 001146] - +000148|PLC|FAULT|[COD 001147] - +000149|PLC|FAULT|[COD 001148] - +000150|PLC|FAULT|[COD 001149] - +000151|PLC|FAULT|[COD 001150] - +000152|PLC|FAULT|[COD 001151] - +000153|PLC|FAULT|[COD 001152] - +000154|PLC|FAULT|[COD 001153] - +000155|PLC|FAULT|[COD 001154] - +000156|PLC|FAULT|[COD 001155] - +000157|PLC|FAULT|[COD 001156] - +000158|PLC|FAULT|[COD 001157] - +000159|PLC|FAULT|[COD 001158] - +000160|PLC|FAULT|[COD 001159] - +000161|PLC|FAULT|[COD 001160] - +000162|PLC|FAULT|[COD 001161] - +000163|PLC|FAULT|[COD 001162] - +000164|PLC|FAULT|[COD 001163] - +000165|PLC|FAULT|[COD 001164] - +000166|PLC|FAULT|[COD 001165] - +000167|PLC|FAULT|[COD 001166] - +000168|PLC|FAULT|[COD 001167] - +000169|PLC|FAULT|[COD 001168] - +000170|PLC|FAULT|[COD 001169] - +000171|PLC|FAULT|[COD 001170] - +000172|PLC|FAULT|[COD 001171] - +000173|PLC|FAULT|[COD 001172] - +000174|PLC|FAULT|[COD 001173] - +000175|PLC|FAULT|[COD 001174] - +000176|PLC|FAULT|[COD 001175] - +000177|PLC|FAULT|[COD 001176] - +000178|PLC|FAULT|[COD 001177] - +000179|PLC|FAULT|[COD 001178] - +000180|PLC|FAULT|[COD 001179] - +000181|PLC|FAULT|[COD 001180] - +000182|PLC|FAULT|[COD 001181] - +000183|PLC|FAULT|[COD 001182] - +000184|PLC|FAULT|[COD 001183] - +000185|PLC|FAULT|[COD 001184] - +000186|PLC|FAULT|[COD 001185] - +000187|PLC|FAULT|[COD 001186] - +000188|PLC|FAULT|[COD 001187] - +000189|PLC|FAULT|[COD 001188] - +000190|PLC|FAULT|[COD 001189] - +000191|PLC|FAULT|[COD 001190] - +000192|PLC|FAULT|[COD 001191] - +000193|PLC|FAULT|[COD 001192] - +000194|PLC|FAULT|[COD 001193] - +000195|PLC|FAULT|[COD 001194] - +000196|PLC|FAULT|[COD 001195] - +000197|PLC|FAULT|[COD 001196] - +000198|PLC|FAULT|[COD 001197] - +000199|PLC|FAULT|[COD 001198] - +000200|PLC|FAULT|[COD 001199] - +000201|PLC|FAULT|[COD 001200] - +000202|PLC|FAULT|[COD 001201] - +000203|PLC|FAULT|[COD 001202] - +000204|PLC|FAULT|[COD 001203] - +000205|PLC|FAULT|[COD 001204] - +000206|PLC|FAULT|[COD 001205] - +000207|PLC|FAULT|[COD 001206] - +000208|PLC|FAULT|[COD 001207] - +000209|PLC|FAULT|[COD 001208] - +000210|PLC|FAULT|[COD 001209] - +000211|PLC|FAULT|[COD 001210] - +000212|PLC|FAULT|[COD 001211] - +000213|PLC|FAULT|[COD 001212] - +000214|PLC|FAULT|[COD 001213] - +000215|PLC|FAULT|[COD 001214] - +000216|PLC|FAULT|[COD 001215] - +000217|PLC|FAULT|[COD 001216] - +000218|PLC|FAULT|[COD 001217] - +000219|PLC|FAULT|[COD 001218] - +000220|PLC|FAULT|[COD 001219] - +000221|PLC|FAULT|[COD 001220] - +000222|PLC|FAULT|[COD 001221] - +000223|PLC|FAULT|[COD 001222] - +000224|PLC|FAULT|[COD 001223] - +000225|PLC|FAULT|[COD 001224] - +000226|PLC|FAULT|[COD 001225] - +000227|PLC|FAULT|[COD 001226] - +000228|PLC|FAULT|[COD 001227] - +000229|PLC|FAULT|[COD 001228] - +000230|PLC|FAULT|[COD 001229] - +000231|PLC|FAULT|[COD 001230] - +000232|PLC|FAULT|[COD 001231] - +000233|PLC|FAULT|[COD 001232] - +000234|PLC|FAULT|[COD 001233] - +000235|PLC|FAULT|[COD 001234] - +000236|PLC|FAULT|[COD 001235] - +000237|PLC|FAULT|[COD 001236] - +000238|PLC|FAULT|[COD 001237] - +000239|PLC|FAULT|[COD 001238] - +000240|PLC|FAULT|[COD 001239] - +000241|PLC|FAULT|[COD 001240] - +000242|PLC|FAULT|[COD 001241] - +000243|PLC|FAULT|[COD 001242] - +000244|PLC|FAULT|[COD 001243] - +000245|PLC|FAULT|[COD 001244] - +000246|PLC|FAULT|[COD 001245] - +000247|PLC|FAULT|[COD 001246] - +000248|PLC|FAULT|[COD 001247] - +000249|PLC|FAULT|[COD 001248] - +000250|PLC|FAULT|[COD 001249] - +000251|PLC|FAULT|[COD 001250] - +000252|PLC|FAULT|[COD 001251] - +000253|PLC|FAULT|[COD 001252] - +000254|PLC|FAULT|[COD 001253] - +000255|PLC|FAULT|[COD 001254] - +000256|PLC|FAULT|[COD 001255] - +000257|PLC|FAULT|[COD 002000] - 444 PRESSIONE LIQUIDO DI RAFFREDDAMENTO INSUFFICIENTE +000258|PLC|FAULT|[COD 002001] - 441 MALFUNZIONAMENTO RAFFREDDAMENTO MANDRINI +000259|PLC|FAULT|[COD 002002] - 276 LIMITI SOFTWARE ASSE X NON ATTUALI +000260|PLC|FAULT|[COD 002003] - 512 CAMBIO ZONA INTERROTTO +000261|PLC|FAULT|[COD 002004] - 346 PARATIA NON IN POSIZIONE +000262|PLC|FAULT|[COD 002005] - 607 PREMERE PRENOTAZIONE CAMBIO ZONA +000263|PLC|FAULT|[COD 002006] - 150 AZIONAMENTI NON ABILITATI +000264|PLC|FAULT|[COD 002007] - 161 COMUNICAZIONE INVERTER IN ERRORE +000265|PLC|FAULT|[COD 002008] - 162 FATAL ERROR INVERTER +000266|PLC|FAULT|[COD 002009] - 398 PRESSIONE ARIA INSUFFICIENTE +000267|PLC|FAULT|[COD 002010] - 400 LUBRIFICAZIONE INEFFICIENTE +000268|PLC|FAULT|[COD 002011] - 460 ASSE B BLOCCATO +000269|PLC|FAULT|[COD 002012] - 458 ASSE B NON BLOCCATO +000270|PLC|FAULT|[COD 002013] - 460 ASSE C BLOCCATO +000271|PLC|FAULT|[COD 002014] - 458 ASSE C NON BLOCCATO +000272|PLC|FAULT|[COD 002015] - 105 MACCHINA IN HOLD +000273|PLC|FAULT|[COD 002016] - 614 PREMERE LA SOFTKEY RIPRISTINO ACCOPPIAMENTO Z-W +000274|PLC|FAULT|[COD 002017] - 593 PROTEZIONI DI SICUREZZA +000275|PLC|FAULT|[COD 002018] - 362 MONTANTE CENTRALE NON IN POSIZIONE +000276|PLC|FAULT|[COD 002019] - 157 SICUREZZE ANTICADUTA ASSE Z NON OK +000277|PLC|FAULT|[COD 002020] - 158 PIOLO ANTICADUTA ASSE Z NON IN POSIZIONE +000278|PLC|FAULT|[COD 002021] - 115 CONTROLLO VELOCITA MANDRINO +000279|PLC|FAULT|[COD 002022] - 135 CONVERTITORE IN BLOCCO +000280|PLC|FAULT|[COD 002023] - 514 PROTEZIONE SUPPORTO LASER NON IN POSIZIONE +000281|PLC|FAULT|[COD 002024] - 561 LASER NON IN POSIZIONE +000282|PLC|FAULT|[COD 002025] - 230 RELE TERMICO POMPA VUOTO 1 +000283|PLC|FAULT|[COD 002026] - 230 RELE TERMICO POMPA VUOTO 2 +000284|PLC|FAULT|[COD 002027] - 200 RELE TERMICO MANDRINO +000285|PLC|FAULT|[COD 002028] - 168 CONVERTITORE NON ABILITATO +000286|PLC|FAULT|[COD 002029] - 333 COMUNICAZIONE VOLANTINO IN ERRORE +000287|PLC|FAULT|[COD 002030] - 390 FUNZIONE T NON PERMESSA +000288|PLC|FAULT|[COD 002031] - 429 UTENSILE IN MANDRINO NON OK +000289|PLC|FAULT|[COD 002032] - 245 PROTEZIONE TERMICA ASSE A +000290|PLC|FAULT|[COD 002033] - 245 PROTEZIONE TERMICA ASSE C +000291|PLC|FAULT|[COD 002034] - 004 VUOI ATTIVARE IL PROGRAMMA? PREMERE LA SOFTKEY SI OPPURE RESET +000292|PLC|FAULT|[COD 002035] - 490 VERIFICA POSIZIONE UTENSILI +000293|PLC|FAULT|[COD 002036] - 522 NUMERO DI GIRI TROPPO ELEVATI +000294|PLC|FAULT|[COD 002037] - 498 CARICO MASSIMO SUL MANDRINO +000295|PLC|FAULT|[COD 002038] - 397 CIRCUITO REFRIGERANTE UTENSILE NON OK +000296|PLC|FAULT|[COD 002039] - 465 UTENSILE ROTTO +000297|PLC|FAULT|[COD 002040] - 559 LASER/TASTATORE IN MANDRINO +000298|PLC|FAULT|[COD 002041] - 572 TASTATORE NON PRONTO +000299|PLC|FAULT|[COD 002042] - 514 PROTEZIONE SUPPORTO TASTATORE NON IN POSIZIONE +000300|PLC|FAULT|[COD 002043] - 561 TASTATORE NON IN POSIZIONE +000301|PLC|FAULT|[COD 002044] - 163 FRENO CONVERTITORE NON OK +000302|PLC|FAULT|[COD 002045] - 572 RADIO PROBE - BATTERIA SCARICA +000303|PLC|FAULT|[COD 002046] - 640 TAVOLE NON IN POSIZIONE CORRETTA +000304|PLC|FAULT|[COD 002047] - 673 ASSE Z NON OK PER CAMBIO TAVOLA +000305|PLC|FAULT|[COD 002048] - 641 CAMBIO TAVOLA INTERROTTO +000306|PLC|FAULT|[COD 002049] - 130 PROBE DEVICE NON OK - DISATTIVARE DRY RUN +000307|PLC|FAULT|[COD 002050] - 276 LIMITI SOFTWARE ASSE C NON ATTUALI +000308|PLC|FAULT|[COD 002051] - 495 AZZERAMENTO ASSI CON UTENSILE NON CONSENTITO +000309|PLC|FAULT|[COD 002052] - 479 PORTELLE ASPIRAZIONE DESTRA NON IN POSIZIONE +000310|PLC|FAULT|[COD 002053] - 479 PORTELLE ASPIRAZIONE SINISTRA NON IN POSIZIONE +000311|PLC|FAULT|[COD 002054] - ... +000312|PLC|FAULT|[COD 002055] - ... +000313|PLC|FAULT|[COD 002056] - ... +000314|PLC|FAULT|[COD 002057] - ... +000315|PLC|FAULT|[COD 002058] - 444 PRESSIONE LIQUIDO DI RAFFREDDAMENTO MOTORI TORQUE INSUFFICIENTE(TORQUE) +000316|PLC|FAULT|[COD 002059] - 672 CIRCUITO LIQUIDO DI RAFFREDDAMENTO MOTORI TORQUE NON OK +000317|PLC|FAULT|[COD 002060] - 265 ASSE X NON IN POSIZIONE PER AZZERAMENTO +000318|PLC|FAULT|[COD 002061] - 265 ASSE Y NON IN POSIZIONE PER AZZERAMENTO +000319|PLC|FAULT|[COD 002062] - 265 ASSE Z NON IN POSIZIONE PER AZZERAMENTO +000320|PLC|FAULT|[COD 002063] - ... +000321|PLC|FAULT|[COD 002064] - 551 CONDIZIONI NON OK PER GRUPPO A FORARE +000322|PLC|FAULT|[COD 002065] - 265 ASSE B NON IN POSIZIONE PER AZZERAMENTO +000323|PLC|FAULT|[COD 002066] - 265 ASSE C NON IN POSIZIONE PER AZZERAMENTO +000324|PLC|FAULT|[COD 002067] - 270 RELE TERMICO GRUPPO DI FORATURA +000325|PLC|FAULT|[COD 002068] - ... +000326|PLC|FAULT|[COD 002069] - ... +000327|PLC|FAULT|[COD 002070] - 105 STOP DA DISPOSITIVO DI MONITORAGGIO +000328|PLC|FAULT|[COD 002071] - ... +000329|PLC|FAULT|[COD 002072] - 551 CONDIZIONI NON OK PER GRUPPO A FORARE +000330|PLC|FAULT|[COD 002073] - 265 ASSE B NON IN POSIZIONE PER AZZERAMENTO +000331|PLC|FAULT|[COD 002074] - 265 ASSE C NON IN POSIZIONE PER AZZERAMENTO +000332|PLC|FAULT|[COD 002075] - 270 RELE TERMICO GRUPPO DI FORATURA +000333|PLC|FAULT|[COD 002076] - ... +000334|PLC|FAULT|[COD 002077] - ... +000335|PLC|FAULT|[COD 002078] - 105 STOP DA DISPOSITIVO DI MONITORAGGIO +000336|PLC|FAULT|[COD 002079] - ... +000337|PLC|FAULT|[COD 002080] - +000338|PLC|FAULT|[COD 002081] - +000339|PLC|FAULT|[COD 002082] - +000340|PLC|FAULT|[COD 002083] - +000341|PLC|FAULT|[COD 002084] - +000342|PLC|FAULT|[COD 002085] - +000343|PLC|FAULT|[COD 002086] - +000344|PLC|FAULT|[COD 002087] - +000345|PLC|FAULT|[COD 002088] - +000346|PLC|FAULT|[COD 002089] - +000347|PLC|FAULT|[COD 002090] - +000348|PLC|FAULT|[COD 002091] - +000349|PLC|FAULT|[COD 002092] - +000350|PLC|FAULT|[COD 002093] - +000351|PLC|FAULT|[COD 002094] - +000352|PLC|FAULT|[COD 002095] - +000353|PLC|FAULT|[COD 002096] - +000354|PLC|FAULT|[COD 000000] - +000355|PLC|FAULT|[COD 000000] - +000356|PLC|FAULT|[COD 000000] - +000357|PLC|FAULT|[COD 000000] - +000358|PLC|FAULT|[COD 000000] - +000359|PLC|FAULT|[COD 000000] - +000360|PLC|FAULT|[COD 000000] - +000361|PLC|FAULT|[COD 000000] - +000362|PLC|FAULT|[COD 000000] - +000363|PLC|FAULT|[COD 000000] - +000364|PLC|FAULT|[COD 000000] - +000365|PLC|FAULT|[COD 000000] - +000366|PLC|FAULT|[COD 000000] - +000367|PLC|FAULT|[COD 000000] - +000368|PLC|FAULT|[COD 000000] - +000369|PLC|FAULT|[COD 002100] - 503 CAMBIO UTENSILE IN CORSO +000370|PLC|FAULT|[COD 002101] - 781 UNO O PIU ASSI SENZA RIFERIMENTO +000371|PLC|FAULT|[COD 002102] - 674 MACCHINA NON IN ZONA DI LAVORO +000372|PLC|FAULT|[COD 002103] - 785 CONSENSO APERTURA PORTE NEGATO +000373|PLC|FAULT|[COD 002104] - 520 FUNZIONE STALL MODE ATTIVA +000374|PLC|FAULT|[COD 002105] - 450 UTENSILE MANDRINO NON BLOCCATO +000375|PLC|FAULT|[COD 002106] - 780 STAZIONE OCCUPATA MAGAZZINO +000376|PLC|FAULT|[COD 002107] - 530 PULSANTIERA ESTERNA ABILITATA +000377|PLC|FAULT|[COD 002108] - 504 CAMBIO UTENSILE INTERROTTO +000378|PLC|FAULT|[COD 002109] - 363 MONTANTE CENTRALE ALTO +000379|PLC|FAULT|[COD 002110] - =--- PREALLARME TERMICO TORQUE A +000380|PLC|FAULT|[COD 002111] - 498 CARICO MASSIMO SUL MANDRINO SUPERATO SOGLIA S1 +000381|PLC|FAULT|[COD 002112] - --- PREALLARME TERMICO TORQUE C +000382|PLC|FAULT|[COD 002113] - 432 UTENSILE NON SGANCIATO +000383|PLC|FAULT|[COD 002114] - 475 CUFFIA ASPIRAZIONE NON IN POSIZIONE +000384|PLC|FAULT|[COD 002115] - 498 CARICO MASSIMO SUL MANDRINO SUPERATO SOGLIA S6 +000385|PLC|FAULT|[COD 002116] - 505 MOVIMENTO CONSENTITO Z+ +000386|PLC|FAULT|[COD 002117] - 545 ASSE Z NON IN POSIZIONE +000387|PLC|FAULT|[COD 002118] - 528 MODALITA PROVA PROGRAMMA ATTIVA +000388|PLC|FAULT|[COD 002119] - 351 MESSAGGI PLC INVIATO SMS +000389|PLC|FAULT|[COD 002120] - 603 INDICARE IL NOME DELL OPERATORE E CAUSA ARRESTO MACCHINA +000390|PLC|FAULT|[COD 002121] - 538 TAVOLA NON POSIZIONATA +000391|PLC|FAULT|[COD 002122] - 595 BARRIERE DI SICUREZZA +000392|PLC|FAULT|[COD 002123] - 689 AVVISO TOOLTABLE - T INTERPRETATA COME MANINA +000393|PLC|FAULT|[COD 002124] - 689 AVVISO TOOLTABLE - T INTERPRETATA COME ID UTENSILE +000394|PLC|FAULT|[COD 002125] - 260 REGOLAZIONE AUTOMATICA FEED OVERRIDE IN CORSO +000395|PLC|FAULT|[COD 002126] - 464 VITA UTENSILE ESAURITA +000396|PLC|FAULT|[COD 002127] - 003 SEI SICURO DI VOLER CAMBIARE ORIGINE ? PREMERE SOFTKEY SI O RESET +000397|PLC|FAULT|[COD 002128] - 305 BLOCCAGGIO A DEPRESSIONE 1 INEFFICIENTE +000398|PLC|FAULT|[COD 002129] - 305 BLOCCAGGIO A DEPRESSIONE 2 INEFFICIENTE +000399|PLC|FAULT|[COD 002130] - 300 BLOCCAGGIO A PRESSIONE 1 INEFFICIENTE +000400|PLC|FAULT|[COD 002131] - 300 BLOCCAGGIO A PRESSIONE 2 INEFFICIENTE +000401|PLC|FAULT|[COD 002132] - 305 BLOCCAGGIO A DEPRESSIONE SUPPLEMENTARE 1 INEFFICIENTE +000402|PLC|FAULT|[COD 002133] - 305 BLOCCAGGIO A DEPRESSIONE SUPPLEMENTARE 2 INEFFICIENTE +000403|PLC|FAULT|[COD 002134] - 584 PORTE DI SICUREZZA 1 NON CHIUSE +000404|PLC|FAULT|[COD 002135] - 584 PORTE DI SICUREZZA 2 NON CHIUSE +000405|PLC|FAULT|[COD 002136] - 406 PULSANTE POWER-OFF PREMUTO +000406|PLC|FAULT|[COD 002137] - 412 AZZERAMENTO AUTOMATICO ASSI IN CORSO +000407|PLC|FAULT|[COD 002138] - 689 AVVISO TOOLTABLE - RICHIESTA CONFERMA ATTREZZAGGIO +000408|PLC|FAULT|[COD 002139] - 700 TABELLE IN MODIFICA +000409|PLC|FAULT|[COD 002140] - 442 MAGAZZINO DISCO MOBILE NON IN POSIZIONE +000410|PLC|FAULT|[COD 002141] - 442 MAGAZZINO PICK-UP 1 NON IN POSIZIONE +000411|PLC|FAULT|[COD 002142] - 442 MAGAZZINO PICK-UP 2 NON IN POSIZIONE +000412|PLC|FAULT|[COD 002143] - 442 MAGAZINO LATERALE 1 NON IN POSIZIONE +000413|PLC|FAULT|[COD 002144] - 442 MAGAZINO LATERALE 2 NON IN POSIZIONE +000414|PLC|FAULT|[COD 002145] - 514 PROTEZIONE MAGAZZINO PICK-UP 1 NON IN POSIZIONE +000415|PLC|FAULT|[COD 002146] - 514 PROTEZIONE MAGAZZINO PICK-UP 2 NON IN POSIZIONE +000416|PLC|FAULT|[COD 002147] - 514 PROTEZIONE MAGAZZINO LATERALE 1 NON IN POSIZIONE +000417|PLC|FAULT|[COD 002148] - 514 PROTEZIONE MAGAZZINO LATERALE 2 NON IN POSIZIONE +000418|PLC|FAULT|[COD 002149] - 334 ERRORE COMUNICAZIONE CANBUS +000419|PLC|FAULT|[COD 002150] - 147 CAMBIO UTENSILE 1 IN ALLARME +000420|PLC|FAULT|[COD 002151] - 160 AZIONAMENTO CAMBIO UTENSILE 1 NON PRONTO +000421|PLC|FAULT|[COD 002152] - 151 AZIONAMENTO CAMBIO UTENSILE 1 NON ALIMENTATO +000422|PLC|FAULT|[COD 002153] - 442 MAGAZZINO UTENSILI DISCO 1 NON IN POSIZIONE +000423|PLC|FAULT|[COD 002154] - 289 ATTREZZAGGIO CAMBIO UTENSILE 1 IN CORSO +000424|PLC|FAULT|[COD 002155] - 584 PORTA DI SICUREZZA MAGAZZINO DISCO 1 NON CHIUSA +000425|PLC|FAULT|[COD 002156] - 514 PROTEZIONE MAGAZZINO DISCO 1 NON IN POSIZIONE +000426|PLC|FAULT|[COD 002157] - 147 CAMBIO UTENSILE 2 IN ALLARME +000427|PLC|FAULT|[COD 002158] - 160 AZIONAMENTO CAMBIO UTENSILE 2 NON PRONTO +000428|PLC|FAULT|[COD 002159] - 151 AZIONAMENTO CAMBIO UTENSILE 2 NON ALIMENTATO +000429|PLC|FAULT|[COD 002160] - 442 MAGAZZINO UTENSILI DISCO 2 NON IN POSIZIONE +000430|PLC|FAULT|[COD 002161] - 289 ATTREZZAGGIO CAMBIO UTENSILE 2 IN CORSO +000431|PLC|FAULT|[COD 002162] - 584 PORTA DI SICUREZZA MAGAZZINO DISCO 2 NON CHIUSA +000432|PLC|FAULT|[COD 002163] - 514 PROTEZIONE MAGAZZINO DISCO 2 NON IN POSIZIONE +000433|PLC|FAULT|[COD 002164] - +000434|PLC|FAULT|[COD 002165] - 550 GRUPPO DI FORATURA NON IN POSIZIONE +000435|PLC|FAULT|[COD 002166] - ... +000436|PLC|FAULT|[COD 002167] - ... +000437|PLC|FAULT|[COD 002168] - ... +000438|PLC|FAULT|[COD 002169] - ... +000439|PLC|FAULT|[COD 002170] - 250 CICLO DI ATTREZZAGGIO AUTOMATICO IN CORSO +000440|PLC|FAULT|[COD 002171] - 251 CICLO DI ATTREZZAGGIO AUTOMATICO INTERROTTO +000441|PLC|FAULT|[COD 002172] - 605 DISPOSITIVO DI REGISTRAZIONE DATI UTENSILI NON IN POSIZIONE +000442|PLC|FAULT|[COD 002173] - ... +000443|PLC|FAULT|[COD 002174] - ... +000444|PLC|FAULT|[COD 002175] - ... +000445|PLC|FAULT|[COD 002176] - 130 DISPOSITIVO MONITORAGGIO NON PRONTO +000446|PLC|FAULT|[COD 002177] - 773 LIMITE 1 MONITORAGGIO NON OK +000447|PLC|FAULT|[COD 002178] - 773 LIMITE 2 MONITORAGGIO NON OK +000448|PLC|FAULT|[COD 002179] - 773 LIMITE 3 MONITORAGGIO NON OK +000449|PLC|FAULT|[COD 002180] - ... +000450|PLC|FAULT|[COD 002181] - +000451|PLC|FAULT|[COD 002182] - +000452|PLC|FAULT|[COD 002183] - +000453|PLC|FAULT|[COD 002184] - +000454|PLC|FAULT|[COD 002185] - +000455|PLC|FAULT|[COD 002186] - +000456|PLC|FAULT|[COD 002187] - +000457|PLC|FAULT|[COD 002188] - +000458|PLC|FAULT|[COD 002189] - +000459|PLC|FAULT|[COD 002190] - +000460|PLC|FAULT|[COD 002191] - +000461|PLC|FAULT|[COD 002192] - +000462|PLC|FAULT|[COD 002193] - +000463|PLC|FAULT|[COD 002194] - +000464|PLC|FAULT|[COD 002195] - +000465|PLC|FAULT|[COD 000000] - +000466|PLC|FAULT|[COD 000000] - +000467|PLC|FAULT|[COD 000000] - +000468|PLC|FAULT|[COD 000000] - +000469|PLC|FAULT|[COD 000000] - +000470|PLC|FAULT|[COD 000000] - +000471|PLC|FAULT|[COD 000000] - +000472|PLC|FAULT|[COD 000000] - +000473|PLC|FAULT|[COD 000000] - +000474|PLC|FAULT|[COD 000000] - +000475|PLC|FAULT|[COD 000000] - +000476|PLC|FAULT|[COD 000000] - +000477|PLC|FAULT|[COD 000000] - +000478|PLC|FAULT|[COD 000000] - +000479|PLC|FAULT|[COD 000000] - +000480|PLC|FAULT|[COD 000000] - +000481|PLC|FAULT|[COD 000000] - +000482|PLC|FAULT|[COD 000000] - +000483|PLC|FAULT|[COD 000000] - +000484|PLC|FAULT|[COD 000000] - +000485|PLC|FAULT|[COD 000000] - +000486|PLC|FAULT|[COD 000000] - +000487|PLC|FAULT|[COD 000000] - +000488|PLC|FAULT|[COD 000000] - +000489|PLC|FAULT|[COD 000000] - +000490|PLC|FAULT|[COD 000000] - +000491|PLC|FAULT|[COD 000000] - +000492|PLC|FAULT|[COD 000000] - +000493|PLC|FAULT|[COD 000000] - +000494|PLC|FAULT|[COD 000000] - +000495|PLC|FAULT|[COD 000000] - +000496|PLC|FAULT|[COD 000000] - +000497|PLC|FAULT|[COD 000000] - +000498|PLC|FAULT|[COD 000000] - +000499|PLC|FAULT|[COD 000000] - +000500|PLC|FAULT|[COD 000000] - +000501|PLC|FAULT|[COD 000000] - +000502|PLC|FAULT|[COD 000000] - +000503|PLC|FAULT|[COD 000000] - +000504|PLC|FAULT|[COD 000000] - +000505|PLC|FAULT|[COD 000000] - +000506|PLC|FAULT|[COD 000000] - +000507|PLC|FAULT|[COD 000000] - +000508|PLC|FAULT|[COD 000000] - +000509|PLC|FAULT|[COD 000000] - +000510|PLC|FAULT|[COD 000000] - +000511|PLC|FAULT|[COD 000000] - +000512|PLC|FAULT|[COD 000000] - +000513|PLC|FAULT|[COD 000000] - +000514|PLC|FAULT|[COD 000000] - +000515|PLC|FAULT|[COD 000000] - +000516|PLC|FAULT|[COD 000000] - +000517|PLC|FAULT|[COD 000000] - +000518|PLC|FAULT|[COD 000000] - +000519|PLC|FAULT|[COD 000000] - +000520|PLC|FAULT|[COD 000000] - +000521|PLC|FAULT|[COD 000000] - +000522|PLC|FAULT|[COD 000000] - +000523|PLC|FAULT|[COD 000000] - +000524|PLC|FAULT|[COD 000000] - +000525|PLC|FAULT|[COD 000000] - +000526|PLC|FAULT|[COD 000000] - +000527|PLC|FAULT|[COD 000000] - +000528|PLC|FAULT|[COD 000000] - +000529|PLC|FAULT|[COD 000000] - +000530|PLC|FAULT|[COD 000000] - +000531|PLC|FAULT|[COD 000000] - +000532|PLC|FAULT|[COD 000000] - +000533|PLC|FAULT|[COD 000000] - +000534|PLC|FAULT|[COD 000000] - +000535|PLC|FAULT|[COD 000000] - +000536|PLC|FAULT|[COD 000000] - +000537|PLC|FAULT|[COD 000000] - +000538|PLC|FAULT|[COD 000000] - +000539|PLC|FAULT|[COD 000000] - +000540|PLC|FAULT|[COD 000000] - +000541|PLC|FAULT|[COD 000000] - +000542|PLC|FAULT|[COD 000000] - +000543|PLC|FAULT|[COD 000000] - +000544|PLC|FAULT|[COD 000000] - +000545|PLC|FAULT|[COD 000000] - +000546|PLC|FAULT|[COD 000000] - +000547|PLC|FAULT|[COD 000000] - +000548|PLC|FAULT|[COD 000000] - +000549|PLC|FAULT|[COD 000000] - +000550|PLC|FAULT|[COD 000000] - +000551|PLC|FAULT|[COD 000000] - +000552|PLC|FAULT|[COD 000000] - +000553|PLC|FAULT|[COD 000000] - +000554|PLC|FAULT|[COD 000000] - +000555|PLC|FAULT|[COD 000000] - +000556|PLC|FAULT|[COD 000000] - +000557|PLC|FAULT|[COD 000000] - +000558|PLC|FAULT|[COD 000000] - +000559|PLC|FAULT|[COD 000000] - +000560|PLC|FAULT|[COD 000000] - +000561|PLC|FAULT|[COD 000000] - +000562|PLC|FAULT|[COD 000000] - +000563|PLC|FAULT|[COD 000000] - +000564|PLC|FAULT|[COD 000000] - +000565|PLC|FAULT|[COD 000000] - +000566|PLC|FAULT|[COD 000000] - +000567|PLC|FAULT|[COD 000000] - +000568|PLC|FAULT|[COD 000000] - +000569|PLC|FAULT|[COD 000000] - +000570|PLC|FAULT|[COD 000000] - +000571|PLC|FAULT|[COD 000000] - +000572|PLC|FAULT|[COD 000000] - +000573|PLC|FAULT|[COD 000000] - +000574|PLC|FAULT|[COD 000000] - +000575|PLC|FAULT|[COD 000000] - +000576|PLC|FAULT|[COD 000000] - +000577|PLC|FAULT|[COD 000000] - +000578|PLC|FAULT|[COD 000000] - +000579|PLC|FAULT|[COD 000000] - +000580|PLC|FAULT|[COD 000000] - +000581|PLC|FAULT|[COD 000000] - +000582|PLC|FAULT|[COD 000000] - +000583|PLC|FAULT|[COD 000000] - +000584|PLC|FAULT|[COD 000000] - +000585|PLC|FAULT|[COD 000000] - +000586|PLC|FAULT|[COD 000000] - +000587|PLC|FAULT|[COD 000000] - +000588|PLC|FAULT|[COD 000000] - +000589|PLC|FAULT|[COD 000000] - +000590|PLC|FAULT|[COD 000000] - +000591|PLC|FAULT|[COD 000000] - +000592|PLC|FAULT|[COD 000000] - +000593|PLC|FAULT|[COD 000000] - +000594|PLC|FAULT|[COD 000000] - +000595|PLC|FAULT|[COD 000000] - +000596|PLC|FAULT|[COD 000000] - +000597|PLC|FAULT|[COD 000000] - +000598|PLC|FAULT|[COD 000000] - +000599|PLC|FAULT|[COD 000000] - +000600|PLC|FAULT|[COD 000000] - +000601|PLC|FAULT|[COD 000000] - +000602|PLC|FAULT|[COD 000000] - +000603|PLC|FAULT|[COD 000000] - +000604|PLC|FAULT|[COD 000000] - +000605|PLC|FAULT|[COD 000000] - +000606|PLC|FAULT|[COD 000000] - +000607|PLC|FAULT|[COD 000000] - +000608|PLC|FAULT|[COD 000000] - +000609|PLC|FAULT|[COD 000000] - +000610|PLC|FAULT|[COD 000000] - +000611|PLC|FAULT|[COD 000000] - +000612|PLC|FAULT|[COD 000000] - +000613|PLC|FAULT|[COD 000000] - +000614|PLC|FAULT|[COD 000000] - +000615|PLC|FAULT|[COD 000000] - +000616|PLC|FAULT|[COD 000000] - +000617|PLC|FAULT|[COD 000000] - +000618|PLC|FAULT|[COD 000000] - +000619|PLC|FAULT|[COD 000000] - +000620|PLC|FAULT|[COD 000000] - +000621|PLC|FAULT|[COD 000000] - +000622|PLC|FAULT|[COD 000000] - +000623|PLC|FAULT|[COD 000000] - +000624|PLC|FAULT|[COD 000000] - +000625|PLC|FAULT|[COD 000000] - +000626|PLC|FAULT|[COD 000000] - +000627|PLC|FAULT|[COD 000000] - +000628|PLC|FAULT|[COD 000000] - +000629|PLC|FAULT|[COD 000000] - +000630|PLC|FAULT|[COD 000000] - +000631|PLC|FAULT|[COD 000000] - +000632|PLC|FAULT|[COD 000000] - +000633|PLC|FAULT|[COD 000000] - +000634|PLC|FAULT|[COD 000000] - +000635|PLC|FAULT|[COD 000000] - +000636|PLC|FAULT|[COD 000000] - +000637|PLC|FAULT|[COD 000000] - +000638|PLC|FAULT|[COD 000000] - +000639|PLC|FAULT|[COD 000000] - +000640|PLC|FAULT|[COD 000000] - +000641|PLC|FAULT|[COD 000000] - +000642|PLC|FAULT|[COD 000000] - +000643|PLC|FAULT|[COD 000000] - +000644|PLC|FAULT|[COD 000000] - +000645|PLC|FAULT|[COD 000000] - +000646|PLC|FAULT|[COD 000000] - +000647|PLC|FAULT|[COD 000000] - +000648|PLC|FAULT|[COD 000000] - +000649|PLC|FAULT|[COD 000000] - +000650|PLC|FAULT|[COD 000000] - +000651|PLC|FAULT|[COD 000000] - +000652|PLC|FAULT|[COD 000000] - +000653|PLC|FAULT|[COD 000000] - +000654|PLC|FAULT|[COD 000000] - +000655|PLC|FAULT|[COD 000000] - +000656|PLC|FAULT|[COD 000000] - +000657|PLC|FAULT|[COD 000000] - +000658|PLC|FAULT|[COD 000000] - +000659|PLC|FAULT|[COD 000000] - +000660|PLC|FAULT|[COD 000000] - +000661|PLC|FAULT|[COD 000000] - +000662|PLC|FAULT|[COD 000000] - +000663|PLC|FAULT|[COD 000000] - +000664|PLC|FAULT|[COD 000000] - +000665|PLC|FAULT|[COD 000000] - +000666|PLC|FAULT|[COD 000000] - +000667|PLC|FAULT|[COD 000000] - +000668|PLC|FAULT|[COD 000000] - +000669|PLC|FAULT|[COD 000000] - +000670|PLC|FAULT|[COD 000000] - +000671|PLC|FAULT|[COD 000000] - +000672|PLC|FAULT|[COD 000000] - +000673|PLC|FAULT|[COD 000000] - +000674|PLC|FAULT|[COD 000000] - +000675|PLC|FAULT|[COD 000000] - +000676|PLC|FAULT|[COD 000000] - +000677|PLC|FAULT|[COD 000000] - +000678|PLC|FAULT|[COD 000000] - +000679|PLC|FAULT|[COD 000000] - +000680|PLC|FAULT|[COD 000000] - +000681|PLC|FAULT|[COD 000000] - +000682|PLC|FAULT|[COD 000000] - +000683|PLC|FAULT|[COD 000000] - +000684|PLC|FAULT|[COD 000000] - +000685|PLC|FAULT|[COD 000000] - +000686|PLC|FAULT|[COD 000000] - +000687|PLC|FAULT|[COD 000000] - +000688|PLC|FAULT|[COD 000000] - +000689|PLC|FAULT|[COD 000000] - +000690|PLC|FAULT|[COD 000000] - +000691|PLC|FAULT|[COD 000000] - +000692|PLC|FAULT|[COD 000000] - +000693|PLC|FAULT|[COD 000000] - +000694|PLC|FAULT|[COD 000000] - +000695|PLC|FAULT|[COD 000000] - +000696|PLC|FAULT|[COD 000000] - +000697|PLC|FAULT|[COD 000000] - +000698|PLC|FAULT|[COD 000000] - +000699|PLC|FAULT|[COD 000000] - +000700|PLC|FAULT|[COD 000000] - +000701|PLC|FAULT|[COD 000000] - +000702|PLC|FAULT|[COD 000000] - +000703|PLC|FAULT|[COD 000000] - +000704|PLC|FAULT|[COD 000000] - +000705|PLC|FAULT|[COD 000000] - +000706|PLC|FAULT|[COD 000000] - +000707|PLC|FAULT|[COD 000000] - +000708|PLC|FAULT|[COD 000000] - +000709|PLC|FAULT|[COD 000000] - +000710|PLC|FAULT|[COD 000000] - +000711|PLC|FAULT|[COD 000000] - +000712|PLC|FAULT|[COD 000000] - +000713|PLC|FAULT|[COD 000000] - +000714|PLC|FAULT|[COD 000000] - +000715|PLC|FAULT|[COD 000000] - +000716|PLC|FAULT|[COD 000000] - +000717|PLC|FAULT|[COD 000000] - +000718|PLC|FAULT|[COD 000000] - +000719|PLC|FAULT|[COD 000000] - +000720|PLC|FAULT|[COD 000000] - +000721|PLC|FAULT|[COD 000000] - +000722|PLC|FAULT|[COD 000000] - +000723|PLC|FAULT|[COD 000000] - +000724|PLC|FAULT|[COD 000000] - +000725|PLC|FAULT|[COD 000000] - +000726|PLC|FAULT|[COD 000000] - +000727|PLC|FAULT|[COD 000000] - +000728|PLC|FAULT|[COD 000000] - +000729|PLC|FAULT|[COD 000000] - +000730|PLC|FAULT|[COD 000000] - +000731|PLC|FAULT|[COD 000000] - +000732|PLC|FAULT|[COD 000000] - +000733|PLC|FAULT|[COD 000000] - +000734|PLC|FAULT|[COD 000000] - +000735|PLC|FAULT|[COD 000000] - +000736|PLC|FAULT|[COD 000000] - +000737|PLC|FAULT|[COD 000000] - +000738|PLC|FAULT|[COD 000000] - +000739|PLC|FAULT|[COD 000000] - +000740|PLC|FAULT|[COD 000000] - +000741|PLC|FAULT|[COD 000000] - +000742|PLC|FAULT|[COD 000000] - +000743|PLC|FAULT|[COD 000000] - +000744|PLC|FAULT|[COD 000000] - +000745|PLC|FAULT|[COD 000000] - +000746|PLC|FAULT|[COD 000000] - +000747|PLC|FAULT|[COD 000000] - +000748|PLC|FAULT|[COD 000000] - +000749|PLC|FAULT|[COD 000000] - +000750|PLC|FAULT|[COD 000000] - +000751|PLC|FAULT|[COD 000000] - +000752|PLC|FAULT|[COD 000000] - +000753|PLC|FAULT|[COD 000000] - +000754|PLC|FAULT|[COD 000000] - +000755|PLC|FAULT|[COD 000000] - +000756|PLC|FAULT|[COD 000000] - +000757|PLC|FAULT|[COD 000000] - +000758|PLC|FAULT|[COD 000000] - +000759|PLC|FAULT|[COD 000000] - +000760|PLC|FAULT|[COD 000000] - +000761|PLC|FAULT|[COD 000000] - +000762|PLC|FAULT|[COD 000000] - +000763|PLC|FAULT|[COD 000000] - +000764|PLC|FAULT|[COD 000000] - +000765|PLC|FAULT|[COD 000000] - +000766|PLC|FAULT|[COD 000000] - +000767|PLC|FAULT|[COD 000000] - +000768|PLC|FAULT|[COD 000000] - +000769|PLC|FAULT|[COD 000000] - +000770|PLC|FAULT|[COD 000000] - +000771|PLC|FAULT|[COD 000000] - +000772|PLC|FAULT|[COD 000000] - +000773|PLC|FAULT|[COD 000000] - +000774|PLC|FAULT|[COD 000000] - +000775|PLC|FAULT|[COD 000000] - +000776|PLC|FAULT|[COD 000000] - +000777|PLC|FAULT|[COD 000000] - +000778|PLC|FAULT|[COD 000000] - +000779|PLC|FAULT|[COD 000000] - +000780|PLC|FAULT|[COD 000000] - +000781|PLC|FAULT|[COD 000000] - +000782|PLC|FAULT|[COD 000000] - +000783|PLC|FAULT|[COD 000000] - +000784|PLC|FAULT|[COD 000000] - +000785|PLC|FAULT|[COD 000000] - +000786|PLC|FAULT|[COD 000000] - +000787|PLC|FAULT|[COD 000000] - +000788|PLC|FAULT|[COD 000000] - +000789|PLC|FAULT|[COD 000000] - +000790|PLC|FAULT|[COD 000000] - +000791|PLC|FAULT|[COD 000000] - +000792|PLC|FAULT|[COD 000000] - +000793|PLC|FAULT|[COD 000000] - +000794|PLC|FAULT|[COD 000000] - +000795|PLC|FAULT|[COD 000000] - +000796|PLC|FAULT|[COD 000000] - +000797|PLC|FAULT|[COD 000000] - +000798|PLC|FAULT|[COD 000000] - +000799|PLC|FAULT|[COD 000000] - +000800|PLC|FAULT|[COD 000000] - +000801|PLC|FAULT|[COD 000000] - +000802|PLC|FAULT|[COD 000000] - +000803|PLC|FAULT|[COD 000000] - +000804|PLC|FAULT|[COD 000000] - +000805|PLC|FAULT|[COD 000000] - +000806|PLC|FAULT|[COD 000000] - +000807|PLC|FAULT|[COD 000000] - +000808|PLC|FAULT|[COD 000000] - +000809|PLC|FAULT|[COD 000000] - +000810|PLC|FAULT|[COD 000000] - +000811|PLC|FAULT|[COD 000000] - +000812|PLC|FAULT|[COD 000000] - +000813|PLC|FAULT|[COD 000000] - +000814|PLC|FAULT|[COD 000000] - +000815|PLC|FAULT|[COD 000000] - +000816|PLC|FAULT|[COD 000000] - +000817|PLC|FAULT|[COD 000000] - +000818|PLC|FAULT|[COD 000000] - +000819|PLC|FAULT|[COD 000000] - +000820|PLC|FAULT|[COD 000000] - +000821|PLC|FAULT|[COD 000000] - +000822|PLC|FAULT|[COD 000000] - +000823|PLC|FAULT|[COD 000000] - +000824|PLC|FAULT|[COD 000000] - +000825|PLC|FAULT|[COD 000000] - +000826|PLC|FAULT|[COD 000000] - +000827|PLC|FAULT|[COD 000000] - +000828|PLC|FAULT|[COD 000000] - +000829|PLC|FAULT|[COD 000000] - +000830|PLC|FAULT|[COD 000000] - +000831|PLC|FAULT|[COD 000000] - +000832|PLC|FAULT|[COD 000000] - +000833|PLC|FAULT|[COD 000000] - +000834|PLC|FAULT|[COD 000000] - +000835|PLC|FAULT|[COD 000000] - +000836|PLC|FAULT|[COD 000000] - +000837|PLC|FAULT|[COD 000000] - +000838|PLC|FAULT|[COD 000000] - +000839|PLC|FAULT|[COD 000000] - +000840|PLC|FAULT|[COD 000000] - +000841|PLC|FAULT|[COD 000000] - +000842|PLC|FAULT|[COD 000000] - +000843|PLC|FAULT|[COD 000000] - +000844|PLC|FAULT|[COD 000000] - +000845|PLC|FAULT|[COD 000000] - +000846|PLC|FAULT|[COD 000000] - +000847|PLC|FAULT|[COD 000000] - +000848|PLC|FAULT|[COD 000000] - +000849|PLC|FAULT|[COD 000000] - +000850|PLC|FAULT|[COD 000000] - +000851|PLC|FAULT|[COD 000000] - +000852|PLC|FAULT|[COD 000000] - +000853|PLC|FAULT|[COD 000000] - +000854|PLC|FAULT|[COD 000000] - +000855|PLC|FAULT|[COD 000000] - +000856|PLC|FAULT|[COD 000000] - +000857|PLC|FAULT|[COD 000000] - +000858|PLC|FAULT|[COD 000000] - +000859|PLC|FAULT|[COD 000000] - +000860|PLC|FAULT|[COD 000000] - +000861|PLC|FAULT|[COD 000000] - +000862|PLC|FAULT|[COD 000000] - +000863|PLC|FAULT|[COD 000000] - +000864|PLC|FAULT|[COD 000000] - +000865|PLC|FAULT|[COD 000000] - +000866|PLC|FAULT|[COD 000000] - +000867|PLC|FAULT|[COD 000000] - +000868|PLC|FAULT|[COD 000000] - +000869|PLC|FAULT|[COD 000000] - +000870|PLC|FAULT|[COD 000000] - +000871|PLC|FAULT|[COD 000000] - +000872|PLC|FAULT|[COD 000000] - +000873|PLC|FAULT|[COD 000000] - +000874|PLC|FAULT|[COD 000000] - +000875|PLC|FAULT|[COD 000000] - +000876|PLC|FAULT|[COD 000000] - +000877|PLC|FAULT|[COD 000000] - +000878|PLC|FAULT|[COD 000000] - +000879|PLC|FAULT|[COD 000000] - +000880|PLC|FAULT|[COD 000000] - +000881|PLC|FAULT|[COD 000000] - +000882|PLC|FAULT|[COD 000000] - +000883|PLC|FAULT|[COD 000000] - +000884|PLC|FAULT|[COD 000000] - +000885|PLC|FAULT|[COD 000000] - +000886|PLC|FAULT|[COD 000000] - +000887|PLC|FAULT|[COD 000000] - +000888|PLC|FAULT|[COD 000000] - +000889|PLC|FAULT|[COD 000000] - +000890|PLC|FAULT|[COD 000000] - +000891|PLC|FAULT|[COD 000000] - +000892|PLC|FAULT|[COD 000000] - +000893|PLC|FAULT|[COD 000000] - +000894|PLC|FAULT|[COD 000000] - +000895|PLC|FAULT|[COD 000000] - +000896|PLC|FAULT|[COD 000000] - +000897|PLC|FAULT|[COD 000000] - +000898|PLC|FAULT|[COD 000000] - +000899|PLC|FAULT|[COD 000000] - +000900|PLC|FAULT|[COD 000000] - +000901|PLC|FAULT|[COD 000000] - +000902|PLC|FAULT|[COD 000000] - +000903|PLC|FAULT|[COD 000000] - +000904|PLC|FAULT|[COD 000000] - +000905|PLC|FAULT|[COD 000000] - +000906|PLC|FAULT|[COD 000000] - +000907|PLC|FAULT|[COD 000000] - +000908|PLC|FAULT|[COD 000000] - +000909|PLC|FAULT|[COD 000000] - +000910|PLC|FAULT|[COD 000000] - +000911|PLC|FAULT|[COD 000000] - +000912|PLC|FAULT|[COD 000000] - +000913|PLC|FAULT|[COD 000000] - +000914|PLC|FAULT|[COD 000000] - +000915|PLC|FAULT|[COD 000000] - +000916|PLC|FAULT|[COD 000000] - +000917|PLC|FAULT|[COD 000000] - +000918|PLC|FAULT|[COD 000000] - +000919|PLC|FAULT|[COD 000000] - +000920|PLC|FAULT|[COD 000000] - +000921|PLC|FAULT|[COD 000000] - +000922|PLC|FAULT|[COD 000000] - +000923|PLC|FAULT|[COD 000000] - +000924|PLC|FAULT|[COD 000000] - +000925|PLC|FAULT|[COD 000000] - +000926|PLC|FAULT|[COD 000000] - +000927|PLC|FAULT|[COD 000000] - +000928|PLC|FAULT|[COD 000000] - +000929|PLC|FAULT|[COD 000000] - +000930|PLC|FAULT|[COD 000000] - +000931|PLC|FAULT|[COD 000000] - +000932|PLC|FAULT|[COD 000000] - +000933|PLC|FAULT|[COD 000000] - +000934|PLC|FAULT|[COD 000000] - +000935|PLC|FAULT|[COD 000000] - +000936|PLC|FAULT|[COD 000000] - +000937|PLC|FAULT|[COD 000000] - +000938|PLC|FAULT|[COD 000000] - +000939|PLC|FAULT|[COD 000000] - +000940|PLC|FAULT|[COD 000000] - +000941|PLC|FAULT|[COD 000000] - +000942|PLC|FAULT|[COD 000000] - +000943|PLC|FAULT|[COD 000000] - +000944|PLC|FAULT|[COD 000000] - +000945|PLC|FAULT|[COD 000000] - +000946|PLC|FAULT|[COD 000000] - +000947|PLC|FAULT|[COD 000000] - +000948|PLC|FAULT|[COD 000000] - +000949|PLC|FAULT|[COD 000000] - +000950|PLC|FAULT|[COD 000000] - +000951|PLC|FAULT|[COD 000000] - +000952|PLC|FAULT|[COD 000000] - +000953|PLC|FAULT|[COD 000000] - +000954|PLC|FAULT|[COD 000000] - +000955|PLC|FAULT|[COD 000000] - +000956|PLC|FAULT|[COD 000000] - +000957|PLC|FAULT|[COD 000000] - +000958|PLC|FAULT|[COD 000000] - +000959|PLC|FAULT|[COD 000000] - +000960|PLC|FAULT|[COD 000000] - +000961|PLC|FAULT|[COD 000000] - +000962|PLC|FAULT|[COD 000000] - +000963|PLC|FAULT|[COD 000000] - +000964|PLC|FAULT|[COD 000000] - +000965|PLC|FAULT|[COD 000000] - +000966|PLC|FAULT|[COD 000000] - +000967|PLC|FAULT|[COD 000000] - +000968|PLC|FAULT|[COD 000000] - +000969|PLC|FAULT|[COD 000000] - +000970|PLC|FAULT|[COD 000000] - +000971|PLC|FAULT|[COD 000000] - +000972|PLC|FAULT|[COD 000000] - +000973|PLC|FAULT|[COD 000000] - +000974|PLC|FAULT|[COD 000000] - +000975|PLC|FAULT|[COD 000000] - +000976|PLC|FAULT|[COD 000000] - +000977|PLC|FAULT|[COD 000000] - +000978|PLC|FAULT|[COD 000000] - +000979|PLC|FAULT|[COD 000000] - +000980|PLC|FAULT|[COD 000000] - +000981|PLC|FAULT|[COD 000000] - +000982|PLC|FAULT|[COD 000000] - +000983|PLC|FAULT|[COD 000000] - +000984|PLC|FAULT|[COD 000000] - +000985|PLC|FAULT|[COD 000000] - +000986|PLC|FAULT|[COD 000000] - +000987|PLC|FAULT|[COD 000000] - +000988|PLC|FAULT|[COD 000000] - +000989|PLC|FAULT|[COD 000000] - +000990|PLC|FAULT|[COD 000000] - +000991|PLC|FAULT|[COD 000000] - +000992|PLC|FAULT|[COD 000000] - +000993|PLC|FAULT|[COD 000000] - +000994|PLC|FAULT|[COD 000000] - +000995|PLC|FAULT|[COD 000000] - +000996|PLC|FAULT|[COD 000000] - +000997|PLC|FAULT|[COD 000000] - +000998|PLC|FAULT|[COD 000000] - +000999|PLC|FAULT|[COD 000000] - +001000|PLC|FAULT|[COD 000000] - +001001|PLC|FAULT|[COD 000000] - +001002|PLC|FAULT|[COD 000000] - +001003|PLC|FAULT|[COD 000000] - +001004|PLC|FAULT|[COD 000000] - +001005|PLC|FAULT|[COD 000000] - +001006|PLC|FAULT|[COD 000000] - +001007|PLC|FAULT|[COD 000000] - +001008|PLC|FAULT|[COD 000000] - +001009|PLC|FAULT|[COD 000000] - +001010|PLC|FAULT|[COD 000000] - +001011|PLC|FAULT|[COD 000000] - +001012|PLC|FAULT|[COD 000000] - +001013|PLC|FAULT|[COD 000000] - +001014|PLC|FAULT|[COD 000000] - +001015|PLC|FAULT|[COD 000000] - +001016|PLC|FAULT|[COD 000000] - +001017|PLC|FAULT|[COD 000000] - +001018|PLC|FAULT|[COD 000000] - +001019|PLC|FAULT|[COD 000000] - +001020|PLC|FAULT|[COD 000000] - +001021|PLC|FAULT|[COD 000000] - +001022|PLC|FAULT|[COD 000000] - +001023|PLC|FAULT|[COD 000000] - +001024|PLC|FAULT|[COD 000000] - \ No newline at end of file diff --git a/MTC_Adapter/MTC_Adapter/DATA/CONF/AnalogData.map b/MTC_Adapter/MTC_Adapter/DATA/CONF/AnalogData.map index 9e81ede..9177953 100644 --- a/MTC_Adapter/MTC_Adapter/DATA/CONF/AnalogData.map +++ b/MTC_Adapter/MTC_Adapter/DATA/CONF/AnalogData.map @@ -1,7 +1 @@ -# Commenti con cancelletto, struttura un variabile per riga, tipo chiave|valore (occhio che il separatore è configurato da .cofig come "testCharSep"); spazi e tabulazioni dovrei trimmarli in acquisizione (qui inseriti per comodità di lettura) -001|Axis_01_Load |NUM -002|Axis_02_Load |NUM -003|Axis_03_Load |NUM -004|Axis_04_Load |NUM -005|Axis_05_Load |NUM -006|Axis_06_Load |NUM \ No newline at end of file +# Commenti con cancelletto, struttura un variabile per riga, tipo chiave|valore (occhio che il separatore è configurato da .cofig come "testCharSep"); spazi e tabulazioni dovrei trimmarli in acquisizione (qui inseriti per comodità di lettura) \ No newline at end of file diff --git a/MTC_Adapter/MTC_Adapter/DATA/CONF/CounterList.map b/MTC_Adapter/MTC_Adapter/DATA/CONF/CounterList.map index 9958ec4..064fc1a 100644 --- a/MTC_Adapter/MTC_Adapter/DATA/CONF/CounterList.map +++ b/MTC_Adapter/MTC_Adapter/DATA/CONF/CounterList.map @@ -22,40 +22,14 @@ 021|Lubro_01_Num |COUNT 022|SlittaTastatore_Count |COUNT 023|SlittaMagazzino_01_Count |COUNT -024|UnOp_01_NumCambiUT |COUNT -025|UnOp_02_NumCambiUT |COUNT +024|ProtMagazzino_01_Count |COUNT +025|UnOp_01_NumCambiUT |COUNT 026|Axis_01_AccTime |COUNT 027|Axis_02_AccTime |COUNT 028|Axis_03_AccTime |COUNT 029|Axis_04_AccTime |COUNT 030|Axis_05_AccTime |COUNT 031|Axis_06_AccTime |COUNT -032|Path_02_PZ_TOT |COUNT -033|Axis_07_DistDone |METER -034|Axis_07_Invers |COUNT -035|Axis_08_DistDone |METER -036|Axis_08_Invers |COUNT -037|Axis_09_DistDone |METER -038|Axis_09_Invers |COUNT -039|Axis_10_DistDone |COUNT -040|Axis_10_Invers |COUNT -041|Axis_11_DistDone |COUNT -042|Axis_11_Invers |COUNT -043|Axis_12_DistDone |METER -044|Axis_12_Invers |COUNT -045|UnOp_02_AccTime |COUNT -046|UnOp_03_AccTime |COUNT -047|UnOp_04_AccTime |COUNT -048|UnOp_05_AccTime |COUNT -049|UnOp_06_AccTime |COUNT -050|UnOp_07_AccTime |COUNT -051|UnOp_08_AccTime |COUNT -052|Axis_07_AccTime |COUNT -053|Axis_08_AccTime |COUNT -054|Axis_09_AccTime |COUNT -055|Axis_10_AccTime |COUNT -056|Axis_11_AccTime |COUNT -057|Axis_12_AccTime |COUNT -058|Lubro_02_Num |COUNT -059|BloccaggioMorseTav1_Count |COUNT -060|BloccaggioMorseTav2_Count |COUNT \ No newline at end of file +032|Counter_001 |COUNT +033|Counter_002 |COUNT +034|Counter_003 |COUNT \ No newline at end of file diff --git a/MTC_Adapter/MTC_Adapter/DATA/CONF/StatusList.map b/MTC_Adapter/MTC_Adapter/DATA/CONF/StatusList.map index 3fe4898..223c046 100644 --- a/MTC_Adapter/MTC_Adapter/DATA/CONF/StatusList.map +++ b/MTC_Adapter/MTC_Adapter/DATA/CONF/StatusList.map @@ -4,12 +4,4 @@ 003|VacPump_02_Status |BIT 004|Cooler_01_Status |BIT 005|Cooler_02_Status |BIT -006|UnOp_01_Status |BIT -007|UnOp_02_Status |BIT -008|UnOp_03_Status |BIT -009|UnOp_04_Status |BIT -010|UnOp_05_Status |BIT -011|UnOp_06_Status |BIT -012|UnOp_07_Status |BIT -013|UnOp_08_Status |BIT -014|Press_OK |BIT \ No newline at end of file +006|UnOp_01_Status |BIT \ No newline at end of file diff --git a/MTC_Adapter/MTC_Adapter/MainForm.cs b/MTC_Adapter/MTC_Adapter/MainForm.cs index d319f44..4bc0054 100644 --- a/MTC_Adapter/MTC_Adapter/MainForm.cs +++ b/MTC_Adapter/MTC_Adapter/MainForm.cs @@ -21,1709 +21,1709 @@ using System.Windows.Forms; namespace MTC_Adapter { - public partial class MainForm : Form + public partial class MainForm : Form + { + #region inizializzazione contatori + + /// + /// contatore veloce + /// + protected int fastCount; + /// + /// contatore normale + /// + protected int normCount; + /// + /// contatore lento + /// + protected int slowCount; + /// + /// contatore sync allarmi + /// + protected int alarmSyncCount; + /// + /// timer base in avvio + /// + protected int startTimerMs = 250; + /// + /// ultimo tentativo riavvio... + /// + protected DateTime lastStartTry; + + #endregion + + #region inizializzazione oggetti base + + /// + /// oggetto logging + /// + public static Logger lg; + + /// + /// Oggetto x gestione dell'adapter GENERICO (x poter usare metodi di ognuno...) + /// + AdapterGeneric agObj; + /// + /// configurazione caricata + /// + AdapterConf adpConf; + /// + /// tipo di adapter prescelto... + /// + public tipoAdapter tipoScelto = tipoAdapter.DEMO; + + #endregion + + + #region utils ed helpers + + public static void EnableTab(TabPage page, bool enable) { - #region inizializzazione contatori + EnableControls(page.Controls, enable); + } + private static void EnableControls(Control.ControlCollection ctls, bool enable) + { + foreach (Control ctl in ctls) + { + ctl.Enabled = enable; + EnableControls(ctl.Controls, enable); + } + } + private class Item + { + public string Name; + public int Value; + public Item(string name, int value) + { + Name = name; Value = value; + } + } + /// + /// mostra un testo sulla status bar ed attende startTimerMs + /// + /// + public void displayTaskAndWait(string txt2show) + { + lblStatus.Text = txt2show; + lg.Info(txt2show); + Thread.Sleep(startTimerMs); + } + /// + /// Mostra update delle statistiche di comunicazione (numero chiamate, tempo medio...) + /// + /// + public void updateComStats(string txt2show) + { + lblComStats.Text = string.Format("{0} | ", txt2show); + } - /// - /// contatore veloce - /// - protected int fastCount; - /// - /// contatore normale - /// - protected int normCount; - /// - /// contatore lento - /// - protected int slowCount; - /// - /// contatore sync allarmi - /// - protected int alarmSyncCount; - /// - /// timer base in avvio - /// - protected int startTimerMs = 250; - /// - /// ultimo tentativo riavvio... - /// - protected DateTime lastStartTry; + #endregion - #endregion + #region gestione form e visibilità - #region inizializzazione oggetti base + /// + /// Gestione form principale + /// + public MainForm() + { + InitializeComponent(); + lblStatus.Text = "Loading"; - /// - /// oggetto logging - /// - public static Logger lg; + lastStartTry = DateTime.Now; - /// - /// Oggetto x gestione dell'adapter GENERICO (x poter usare metodi di ognuno...) - /// - AdapterGeneric agObj; - /// - /// configurazione caricata - /// - AdapterConf adpConf; - /// - /// tipo di adapter prescelto... - /// - public tipoAdapter tipoScelto = tipoAdapter.DEMO; + // fix icon! + notifyIcon1.Text = string.Format("MTC Adapter | {0}", System.Reflection.Assembly.GetExecutingAssembly().GetName().Version); + Icon = Icon.ExtractAssociatedIcon(defIconFilePath); + notifyIcon1.Icon = Icon.ExtractAssociatedIcon(defIconFilePath); - #endregion + // fix versione! + lblApp.Text = string.Format("{0}", ConfigurationManager.AppSettings.Get("appName")); + lblVers.Text = string.Format(" v.{0}", System.Reflection.Assembly.GetExecutingAssembly().GetName().Version); - - #region utils ed helpers - - public static void EnableTab(TabPage page, bool enable) - { - EnableControls(page.Controls, enable); - } - private static void EnableControls(Control.ControlCollection ctls, bool enable) - { - foreach (Control ctl in ctls) - { - ctl.Enabled = enable; - EnableControls(ctl.Controls, enable); - } - } - private class Item - { - public string Name; - public int Value; - public Item(string name, int value) - { - Name = name; Value = value; - } - } - /// - /// mostra un testo sulla status bar ed attende startTimerMs - /// - /// - public void displayTaskAndWait(string txt2show) - { - lblStatus.Text = txt2show; - lg.Info(txt2show); - Thread.Sleep(startTimerMs); - } - /// - /// Mostra update delle statistiche di comunicazione (numero chiamate, tempo medio...) - /// - /// - public void updateComStats(string txt2show) - { - lblComStats.Text = string.Format("{0} | ", txt2show); - } - - #endregion - - #region gestione form e visibilità - - /// - /// Gestione form principale - /// - public MainForm() - { - InitializeComponent(); - lblStatus.Text = "Loading"; - - lastStartTry = DateTime.Now; - - // fix icon! - notifyIcon1.Text = string.Format("MTC Adapter | {0}", System.Reflection.Assembly.GetExecutingAssembly().GetName().Version); - Icon = Icon.ExtractAssociatedIcon(defIconFilePath); - notifyIcon1.Icon = Icon.ExtractAssociatedIcon(defIconFilePath); - - // fix versione! - lblApp.Text = string.Format("{0}", ConfigurationManager.AppSettings.Get("appName")); - lblVers.Text = string.Format(" v.{0}", System.Reflection.Assembly.GetExecutingAssembly().GetName().Version); - - startTimerMs = utils.CRI("startTimerMs"); + startTimerMs = utils.CRI("startTimerMs"); #if DEBUG - // Setup the logging view for Sentinel - http://sentinel.codeplex.com - var sentinalTarget = new NLogViewerTarget() - { - Name = "sentinal", - Address = "udp://127.0.0.1:9999", - IncludeNLogData = false - }; - var sentinalRule = new LoggingRule("*", LogLevel.Trace, sentinalTarget); - LogManager.Configuration.AddTarget("sentinal", sentinalTarget); - LogManager.Configuration.LoggingRules.Add(sentinalRule); + // Setup the logging view for Sentinel - http://sentinel.codeplex.com + var sentinalTarget = new NLogViewerTarget() + { + Name = "sentinal", + Address = "udp://127.0.0.1:9999", + IncludeNLogData = false + }; + var sentinalRule = new LoggingRule("*", LogLevel.Trace, sentinalTarget); + LogManager.Configuration.AddTarget("sentinal", sentinalTarget); + LogManager.Configuration.LoggingRules.Add(sentinalRule); #endif - LogManager.ReconfigExistingLoggers(); - - lg = LogManager.GetCurrentClassLogger(); - displayTaskAndWait("Starting MainForm"); - - // inizio con tab control disabilitati - EnableTab(tabCtrlMain.TabPages[1], false); - EnableTab(tabCtrlMain.TabPages[2], false); - - // se abilitato autoload conf leggo file corretto... - if (utils.CRB("autoLoadConf")) - { - loadXmlFile(defConfFilePath); - lg.Info("XML LOADED"); - loadPersistLayer(defPersLayerFile); - lg.Info("PersLayerFile READ"); - agObj.loadPersData(); - lg.Info("PersLayerFile LOADED"); - } - else - { - // definisco e avvio tipo adapter generico - tipoScelto = tipoAdapter.ND; - adpConf = new AdapterConf(); - loadAdapterType(); - displayTaskAndWait("Waiting for config file selection"); - } - - // Start timer periodico - gather.Interval = utils.CRI("timerIntMs"); - gather.Enabled = true; - - displayTaskAndWait("Program Running"); - createTrayMenu(); - displayTaskAndWait("Tray Menu OK"); - - // avvio minimizzato se richiesto - if (utils.CRB("startMinimized")) - { - // imposto minimized se necessario! - if (WindowState != FormWindowState.Minimized) - { - WindowState = FormWindowState.Minimized; - } - displayTaskAndWait("Minimized"); - } - - displayTaskAndWait("Main Form OK"); - } - /// - /// Verifica finale a fine show... - /// - /// - /// - private void MainForm_Shown(object sender, EventArgs e) - { - // avvio minimizzato se richiesto - if (utils.CRB("startMinimized")) - { - // controllo e mando a tray... - sendToTray(); - } - displayTaskAndWait("Main Form SHOWN"); - } - /// - /// crea menù tray x applicazione - /// - private void createTrayMenu() - { - // Fix testi menù tray... - trayMenu.Items.Clear(); - // SE permessa massimizzazione... - if (utils.CRB("windowCanMax")) - { - trayMenu.Items.Add("Show MTC Adapter"); - } - // se è permesso tray close... - if (utils.CRB("trayClose")) - { - trayMenu.Items.Add("Close MTC Adapter"); - } - } - - /// - /// doppio click su tray icon - /// - /// - /// - private void notifyIcon1_DoubleClick(object sender, EventArgs e) - { - // SOLO SE PERMESSO mostrare full... - if (utils.CRB("windowCanMax")) - { - Show(); - WindowState = FormWindowState.Normal; - } - } - /// - /// evento resize - /// - /// - /// - private void MainForm_Resize(object sender, EventArgs e) - { - checkFormVisibility(); - } - /// - /// Verifica stato windows (minimized/normal) e visibilità con tray... - /// - private void checkFormVisibility() - { - // se non può massimizzare imposto COMUNQUE a minimized... - if (!utils.CRB("windowCanMax")) - { - WindowState = FormWindowState.Minimized; - } - // controllo cosa devo mostrare... - if (WindowState == FormWindowState.Minimized) - { - notifyIcon1.Visible = false; - sendToTray(); - } - else - { - notifyIcon1.Visible = false; - } - - } - /// - /// Gestisce "andata nel tray" della form - /// - private void sendToTray() - { - if (!notifyIcon1.Visible) - { - notifyIcon1.BalloonTipTitle = utils.CRS("appName"); - notifyIcon1.BalloonTipText = string.Format("{0} running on tray", utils.CRS("appName")); - notifyIcon1.Visible = true; - notifyIcon1.ShowBalloonTip(100); - } - Hide(); - } - /// - /// click su menù contestuale in tray - /// - /// - /// - private void trayMenu_ItemClicked(object sender, ToolStripItemClickedEventArgs e) - { - if (e.ClickedItem.Text.StartsWith("Close")) - { - // stop adapter... - closeAdapter(); - // chiudo! - Close(); - } - else if (e.ClickedItem.Text.StartsWith("Show")) - { - if (utils.CRB("windowCanMax")) - { - Show(); - WindowState = FormWindowState.Normal; - } - } - - } - - #endregion - - protected string defConfFilePath - { - get - { - return string.Format(@"{0}\{1}", utils.confDir, utils.CRS("defaultConfFile")); - } - } - /// - /// File persistenza generale - /// - protected string defPersLayerFile - { - get - { - return string.Format(@"{0}\{1}", utils.dataDatDir, utils.CRS("defaultPersLayerFile")); - } - } - protected string defIconFilePath - { - get - { - return string.Format(@"{0}\MTCA.ico", utils.resxDir); - } - } - - /// - /// carica adapter richiesto - /// - private void loadAdapterType() - { - switch (tipoScelto) - { - case tipoAdapter.DEMO: - agObj = new AdapterDemo(this, adpConf); - EnableTab(tabCtrlMain.TabPages[1], true); - EnableTab(tabCtrlMain.TabPages[2], true); - start.Enabled = true; - break; - case tipoAdapter.ESAGV: - agObj = new AdapterESA(this, adpConf); - EnableTab(tabCtrlMain.TabPages[1], true); - EnableTab(tabCtrlMain.TabPages[2], false); - start.Enabled = true; - break; - case tipoAdapter.FANUC: - agObj = new AdapterFanuc(this, adpConf); - EnableTab(tabCtrlMain.TabPages[1], true); - EnableTab(tabCtrlMain.TabPages[2], false); - start.Enabled = true; - break; - case tipoAdapter.OSAI: - agObj = new AdapterOsai(this, adpConf); - EnableTab(tabCtrlMain.TabPages[1], true); - EnableTab(tabCtrlMain.TabPages[2], false); - start.Enabled = true; - break; - case tipoAdapter.SIEMENS: - agObj = new AdapterSiemens(this, adpConf); - EnableTab(tabCtrlMain.TabPages[1], true); - EnableTab(tabCtrlMain.TabPages[2], false); - start.Enabled = true; - break; - case tipoAdapter.ND: - default: - agObj = new AdapterDemo(this, adpConf); - EnableTab(tabCtrlMain.TabPages[1], false); - EnableTab(tabCtrlMain.TabPages[2], false); - start.Enabled = false; - break; - } - lblCurrAdapt.Text = string.Format("Adapter loaded: {0}", tipoScelto.ToString().ToUpper()); - - // carico i default values su interfaccia - setDefaults(); - - displayTaskAndWait(string.Format("Caricata conf per adapter {0}", tipoScelto)); - } - - /// - /// impostazione valori defaults - /// - private void setDefaults() - { - stop.Enabled = false; - dump.Enabled = false; - - D1_NAME.Text = "DEMO MACHINE"; // utils.CRS("D1_NAME"); - D1_ID.Text = "DEMO ID"; //utils.CRS("D1_ID"); - D1_UUID.Text = "DEMO UUID"; // utils.CRS("D1_UUID"); - - program.Text = "DEMO PRG"; // utils.CRS("D1_PROGRAM"); - PROG_ROW_NUM.Text = "0"; - partID.Text = "DEMO PART-ID"; // utils.CRS("PartID"); - - pzOk = 0; - pzKo = 0; - Power = 1000; - AccTime = 1440 * 365; - - OPERATOR_ID.Text = "OPxxxx"; - - STATUS_STRB_DW0.Text = utils.binaryForm(0); - STATUS_STRB_DW1.Text = utils.binaryForm(0); - STATUS_STRB_DW2.Text = utils.binaryForm(0); - STATUS_STRB_DW3.Text = utils.binaryForm(0); - - STATUS_ACK_DW0.Text = utils.binaryForm(0); - STATUS_ACK_DW1.Text = utils.binaryForm(0); - STATUS_ACK_DW2.Text = utils.binaryForm(0); - STATUS_ACK_DW3.Text = utils.binaryForm(0); - - MainProgrBar.Minimum = 0; - MainProgrBar.Maximum = 1000; - MainProgrBar.Value = 0; - MainProgrBar.Step = 1; - - // compilo combobox causali fermo... - string[] contenuto = File.ReadAllLines(utils.confDir + "\\HaltTypeList.map"); - - System.Collections.Generic.Dictionary comboSource = new Dictionary(); - foreach (var line in contenuto) - { - // se la linea non è commento e non è vuota... - if (line.Length > 0 && line[0] != '#') - { - string[] tokens = line.Split(':'); - comboSource.Add(tokens[0], tokens[1]); - } - } - functionalMode.DataSource = new BindingSource(comboSource, null); - functionalMode.DisplayMember = "Value"; - functionalMode.ValueMember = "Key"; - - - string[] row = { "0", "0", "0", "0", "0", "0" }; - PosAct.Rows.Add(row); - - // fix componenti vettoriali PATH, UNOP, ASSI... - for (int i = 0; i < adpConf.nPath; i++) - { - cbPathSel.Items.Insert(i, adpConf.Path[i].ident); - } - if (adpConf.nPath > 0) cbPathSel.SelectedIndex = 0; - - for (int i = 0; i < adpConf.nUnOp; i++) - { - cbUnOpSel.Items.Insert(i, adpConf.UnOp[i].ident); - } - if (adpConf.nUnOp > 0) cbUnOpSel.SelectedIndex = 0; - - for (int i = 0; i < adpConf.nAxis; i++) - { - cbAxNum.Items.Insert(i, adpConf.Axis[i].ident); - } - if (adpConf.nAxis > 0) cbAxNum.SelectedIndex = 0; - - - } - - /// - /// Avvio dell'adapter - /// - /// - /// - private void start_Click(object sender, EventArgs e) - { - avviaAdapter(); - agObj.loadPersData(); - // salvo che ho avviato adapter - lg.Info("Completato LOAD Adapter"); - } - - public void avviaAdapter() - { - displayTaskAndWait("Adapter starting"); - // se NON sta girando... - if (!agObj.adpRunning) - { - int porta = Convert.ToInt32(port.Text); - agObj.startAdapter(porta); - displayTaskAndWait("Adapter started!"); - - // fix buttons start/stop/dump - start.Enabled = false; - stop.Enabled = true; - dump.Enabled = true; - if (utils.CRB("openDumpOnStart")) - { - displayTaskAndWait("Dump Window starting"); - apriDumpAgent(); - displayTaskAndWait("Dump Windows OK"); - } - - displayTaskAndWait("Start Timers"); - // inizializzo contatori fast/mid/slow - fastCount = utils.CRI("fastCount"); - normCount = utils.CRI("normCount"); - slowCount = utils.CRI("slowCount"); - alarmSyncCount = utils.CRI("alarmSyncCount"); - displayTaskAndWait("Adapter Running..."); - // forzo check allarmi.. - agObj.forceAlarmCheck(); - } - else - { - displayTaskAndWait("Adapter STILL Running..."); - } - } - - /// - /// fermata dell'adapter - /// - /// - /// - private void stop_Click(object sender, EventArgs e) - { - fermaAdapter(false); - // salvo che ho fermato adapter - lg.Info("UNLOAD Adapter"); - } - /// - /// Ferma l'adapter - /// - /// determina se si debba tentare riavvio automatico (per caduta connessione) - public void fermaAdapter(bool tryRestart) - { - fermaTutto(false, tryRestart); - } - - private void gather_Tick(object sender, EventArgs e) - { - // eseguo cicli attivi SOLO se adapter è in EFFETTIVO running... - if (agObj.adpRunning) - { - // inizio a riportare che sto eseguendo.. - advProgBar(); - if (agObj.connectionOk) - { - // check esecuzione FastTask - checkFastTask(); - // check esecuzione NormTask - checkNormTask(); - // check esecuzione SlowTask - checkSlowTask(); - // check esecuzione AlarmSync - checkAlarmSync(); - // check esecuzione SendTask (VHF) - checkSendTask(); - if (utils.CRI("waitEndCycle") > 0) - { - Thread.Sleep(utils.CRI("waitEndCycle")); - } - } - else - { - double currWait = DateTime.Now.Subtract(lastStartTry).TotalMilliseconds; - if (agObj.adpTryRestart && currWait > utils.CRI("waitRecMSec")) - { - lastStartTry = DateTime.Now; - agObj.tryConnect(); - agObj.loadPersData(); - } - } - // se è arrivato a MAX resetto... - if (MainProgrBar.Value >= MainProgrBar.Maximum) - { - MainProgrBar.Value = 0; - } - } - else - { - // verifico SE debba tentare il riavvio, ovvero NON running ma tryReconn e non ho riprovato x oltre waitRecMSec - double currWait = DateTime.Now.Subtract(lastStartTry).TotalMilliseconds; - if (agObj.adpTryRestart && currWait > utils.CRI("waitRecMSec")) - { - lastStartTry = DateTime.Now; - avviaAdapter(); - agObj.loadPersData(); - } - } - } - - public void resetProgBar() - { - MainProgrBar.Value = 0; - } - /// - /// Visualizzazione stato di comunicazione attiva con PLC - /// - public bool commPlcActive - { - set - { - // se true --> comunica/verde, altrimenti grigio - lblApp.ForeColor = value ? Color.SeaGreen : Color.Black; - lblVers.ForeColor = value ? Color.SeaGreen : Color.DarkSlateGray; - statusStrip1.Refresh(); - } - } - - private void checkAlarmSync() - { - - alarmSyncCount--; - if (alarmSyncCount <= 0) - { - alarmSyncCount = utils.CRI("alarmSyncCount"); - - // avvio fase raccolta dati e invio con adapter - agObj.gaterAndSend(gatherCycle.VLF); - } - } - private void checkSlowTask() - { - slowCount--; - if (slowCount <= 0) - { - slowCount = utils.CRI("slowCount"); - - // avvio fase raccolta dati e invio con adapter - agObj.gaterAndSend(gatherCycle.LF); - - // refresh stringhe code M/S/T - refreshCodeMST(); - - // effettua salvataggio del file di conf con i valori ATTUALI dei parametri ove applicabile/aggiornati (es ore utilizzo, KM assi percorsi...) --> sia file corrente che file "history" - persistData(); - } - } - - /// - /// file persistenza generale - /// - public string histPersLayerFile - { - get - { - return string.Format(@"{0}\{1:yyyy}\{1:yyyy-MM-dd}.mtc", utils.dataDatDir, DateTime.Now); - } - } - /// - /// file persistenza generale data attuale ANTICIPATA di xx giorni - /// - /// num DD di anticipo - /// - public string prevPersLayerFile(int numDD) - { - return string.Format(@"{0}\{1:yyyy}\{1:yyyy-MM-dd}.mtc", utils.dataDatDir, DateTime.Now.AddDays(-numDD)); - } - /// - /// salva i valori attuali del file di conf sia in file corrente che in cartella valori storici - /// - public void persistData() - { - // salvo ogni "autoSaveSec" secondi dall'ultimo salvataggio... - TimeSpan tempoMod = new TimeSpan(0); - if (File.Exists(defPersLayerFile)) - { - DateTime adesso = DateTime.Now; - tempoMod = DateTime.Now.Subtract(File.GetLastWriteTime(defPersLayerFile)); - } - if (tempoMod.TotalSeconds > utils.CRI("autoSaveSec")) - { - savePersistLayer(defPersLayerFile); - savePersistLayer(histPersLayerFile); - } - } - - private void checkNormTask() - { - - // decremento... - normCount--; - // se il counter è a zero eseguo... - if (normCount <= 0) - { - normCount = utils.CRI("normCount"); - - // avvio fase raccolta dati e invio con adapter - agObj.gaterAndSend(gatherCycle.MF); - } - } - /// - /// Avanza la barra di stato... - /// - public void advProgBar() - { - try - { - MainProgrBar.PerformStep(); - MainProgrBar.Invalidate(); - } - catch - { } - } - - private void checkSendTask() - { - // avvio fase invio con adapter (code MST) - agObj.gaterAndSend(gatherCycle.VHF); - } - private void checkFastTask() - { - // decremento... - fastCount--; - // se il counter è a zero eseguo... - if (fastCount <= 0) - { - fastCount = utils.CRI("fastCount"); - - // avvio fase raccolta dati e invio con adapter - agObj.gaterAndSend(gatherCycle.HF); - - refreshVisualStrobes(); - } - } - - private void message_Leave(object sender, EventArgs e) - { - } - - // apro eseguibile dump - private void dump_Click(object sender, EventArgs e) - { - apriDumpAgent(); - } - /// - /// apre agent di dump in CMD - /// - private static void apriDumpAgent() - { - string path = Application.StartupPath; - try - { - Process.Start(string.Format(@"{0}\..\..\dump\dump.exe", path)); - } - catch - { - Process.Start(string.Format(@"{0}\dump\dump.exe", path)); - } - } - - #region classi x simulazione valori vari - - /// - /// simula alcuni dati generando ad esempio numeri casuali... SE abilitato e SE adapter è DEMO - /// - private void simulateData() - { - if (enableDataSim.Checked && tipoScelto == tipoAdapter.DEMO) - { - DateTime adesso = DateTime.Now; - Random rnd = new Random(); - // 10% casi cambia riga - if (rnd.Next(0, 100) > 90) - { - PROG_ROW_NUM.Text = rnd.Next(1, 10000).ToString(); - } - - - // cambio posizioni 6% casi: aggiungo codici M - if (rnd.Next(0, 100) > 95) - { - agObj.appendCodeMST("M", rnd.Next(1, 30).ToString(), 0); - } - - // cambio posizioni 3% casi: aggiungo codici S - if (rnd.Next(0, 100) > 97) - { - agObj.appendCodeMST("S", rnd.Next(100, 10000).ToString(), 0); - } - // cambio posizioni 3% casi: aggiungo codici T - if (rnd.Next(0, 100) > 97) - { - agObj.appendCodeMST("T", rnd.Next(1, 100).ToString(), 0); - } - - - // aggiungo 1 pz al totale nel 0.3% dei casi (-->TC circa 333 x tick)... - if (rnd.Next(0, 1000) > 997) - { - pzOk++; - agObj.STROBE_PLC = agObj.STROBE_PLC | Strobe.PZ_OK; - } - - // cambio posizioni XYZ/ijk nel 20% dei casi x ogni terna... - if (rnd.Next(0, 100) > 80) - { - PosAct.Rows[0].Cells[0].Value = rnd.Next(0, 100); - PosAct.Rows[0].Cells[1].Value = rnd.Next(0, 100); - PosAct.Rows[0].Cells[2].Value = rnd.Next(0, 100); - agObj.STROBE_PLC = agObj.STROBE_PLC | Strobe.POS_ACT; - } - if (rnd.Next(0, 100) > 80) - { - PosAct.Rows[0].Cells[3].Value = rnd.Next(0, 100); - PosAct.Rows[0].Cells[4].Value = rnd.Next(0, 100); - PosAct.Rows[0].Cells[5].Value = rnd.Next(0, 100); - agObj.STROBE_PLC = agObj.STROBE_PLC | Strobe.POS_ACT; - } - - - // cambio power nel 15% dei casi... - if (rnd.Next(0, 100) > 85) - { - Power += rnd.Next(-10, 10); - } - // aggiungo 1 min AccTime nel 0.1% dei casi - if (rnd.Next(0, 1000) > 999) - { - AccTime++; - } - - // toggle 1 allarme sys nello 0.5% dei casi - if (rnd.Next(0, 1000) > 995) - { - int codAlarm = rnd.Next(1, 3); - switch (codAlarm) - { - case 1: - SysErr_01.Checked = !SysErr_01.Checked; - break; - case 2: - SysErr_02.Checked = !SysErr_02.Checked; - break; - default: - SysErr_03.Checked = !SysErr_03.Checked; - break; - } - agObj.STATUS_FLAG = agObj.STATUS_FLAG | StatusBitMap.AL01; - } - // toggle 1 allarme PLC nello 0.4% dei casi - if (rnd.Next(0, 1000) > 996) - { - int codAlarm = rnd.Next(1, 3); - switch (codAlarm) - { - case 1: - PlcErr_01.Checked = !PlcErr_01.Checked; - break; - case 2: - PlcErr_02.Checked = !PlcErr_02.Checked; - break; - default: - PlcErr_03.Checked = !PlcErr_03.Checked; - break; - } - agObj.STATUS_FLAG = agObj.STATUS_FLAG | StatusBitMap.AL02; - } - // toggle 1 allarme CNC nello 0.3% dei casi - if (rnd.Next(0, 1000) > 997) - { - int codAlarm = rnd.Next(1, 3); - switch (codAlarm) - { - case 1: - CncErr_01.Checked = !CncErr_01.Checked; - break; - case 2: - CncErr_02.Checked = !CncErr_02.Checked; - break; - default: - CncErr_03.Checked = !CncErr_03.Checked; - break; - } - agObj.STATUS_FLAG = agObj.STATUS_FLAG | StatusBitMap.AL03; - } - - // nel 2% dei casi imposto un RUN MODE diverso da RUN - if (rnd.Next(0, 100) > 98) - { - int codSel = rnd.Next(1, 3); - switch (codSel) - { - case 1: - manual.Checked = true; - break; - case 2: - mdi.Checked = true; - break; - default: - edit.Checked = true; - break; - } - } - // nel 3% degli altri casi riporto RUN MODE a RUN - else - { - if (rnd.Next(0, 100) > 97) - { - automatic.Checked = true; - } - } - - - // nel 2% dei casi imposto un EXE MODE diverso da AUTO - if (rnd.Next(0, 100) > 98) - { - int codSel = rnd.Next(1, 3); - switch (codSel) - { - case 1: - ready.Checked = true; - break; - case 2: - stopped.Checked = true; - break; - default: - feedhold.Checked = true; - break; - } - } - // nel 3% degli altri casi riporto EXE MODE a AUTO - else - { - if (rnd.Next(0, 100) > 97) - { - running.Checked = true; - } - } - - - - // controllo se ci sia il flag di lettura di un evento M/S/T nel qual caso lo abbasso... - if (utils.IsSetAll(agObj.STROBE_ADP, Strobe.M_CODE)) - { - if (utils.IsSetAll(agObj.STROBE_PLC, Strobe.M_CODE)) agObj.STROBE_PLC -= Strobe.M_CODE; - } - if (utils.IsSetAll(agObj.STROBE_ADP, Strobe.S_CODE)) - { - if (utils.IsSetAll(agObj.STROBE_PLC, Strobe.S_CODE)) agObj.STROBE_PLC -= Strobe.S_CODE; - } - if (utils.IsSetAll(agObj.STROBE_ADP, Strobe.T_CODE)) - { - if (utils.IsSetAll(agObj.STROBE_PLC, Strobe.T_CODE)) agObj.STROBE_PLC -= Strobe.T_CODE; - } - - // controllo se ci sia il flag di lettura di un evento pz ok/ko nel qual caso lo abbasso... - if (utils.IsSetAll(agObj.STROBE_ADP, Strobe.PZ_OK)) - { - if (utils.IsSetAll(agObj.STROBE_PLC, Strobe.PZ_OK)) agObj.STROBE_PLC -= Strobe.PZ_OK; - } - if (utils.IsSetAll(agObj.STROBE_ADP, Strobe.PZ_KO)) - { - if (utils.IsSetAll(agObj.STROBE_PLC, Strobe.PZ_KO)) agObj.STROBE_PLC -= Strobe.PZ_KO; - } - - // controllo se ci sia il flag di lettura di un evento FEED_SPEED nel qual caso lo abbasso... - if (utils.IsSetAll(agObj.STROBE_ADP, Strobe.FEED_SPEED)) - { - if (utils.IsSetAll(agObj.STROBE_PLC, Strobe.FEED_SPEED)) agObj.STROBE_PLC -= Strobe.FEED_SPEED; - } - - // controllo se ci sia il flag di lettura di un evento POS_ACT nel qual caso lo abbasso... - if (utils.IsSetAll(agObj.STROBE_ADP, Strobe.POS_ACT)) - { - if (utils.IsSetAll(agObj.STROBE_PLC, Strobe.POS_ACT)) agObj.STROBE_PLC -= Strobe.POS_ACT; - } - - refreshVisualStrobes(); - refreshCodeMST(); - } - } - - private void refreshVisualStrobes() - { - // aggiorno visualizzazione strobe! - STATUS_STRB_DW0.Text = utils.binaryForm((int)agObj.STRB_DW0); - STATUS_STRB_DW1.Text = utils.binaryForm((int)agObj.STRB_DW1); - STATUS_STRB_DW2.Text = utils.binaryForm((int)agObj.STRB_DW2); - STATUS_STRB_DW3.Text = utils.binaryForm((int)agObj.STRB_DW3); - - STATUS_ACK_DW0.Text = utils.binaryForm((int)agObj.ACK_DW0); - STATUS_ACK_DW1.Text = utils.binaryForm((int)agObj.ACK_DW1); - STATUS_ACK_DW2.Text = utils.binaryForm((int)agObj.ACK_DW2); - STATUS_ACK_DW3.Text = utils.binaryForm((int)agObj.ACK_DW3); - } - - - - /// - /// aggiorna visualizzazione code... - /// - private void refreshCodeMST() - { - lblCodaM.Text = string.Join(",", agObj.codaM[0].ToArray()); - lblCodaT.Text = string.Join(",", agObj.codaT[0].ToArray()); - lblCodaS.Text = string.Join(",", agObj.codaS[0].ToArray()); - } - - private void accodaCodM() - { - if (addCodM.Text.Trim() != "") - { - agObj.appendCodeMST("M", addCodM.Text.Trim(), 0); - addCodM.Text = ""; - } - refreshCodeMST(); - } - private void accodaCodS() - { - if (addCodS.Text.Trim() != "") - { - agObj.appendCodeMST("S", addCodS.Text.Trim(), 0); - addCodS.Text = ""; - } - refreshCodeMST(); - } - private void accodaCodT() - { - if (addCodT.Text.Trim() != "") - { - agObj.appendCodeMST("T", addCodT.Text.Trim(), 0); - addCodT.Text = ""; - } - refreshCodeMST(); - } - - private void addCodM_KeyDown(object sender, KeyEventArgs e) - { - if (e.KeyCode == Keys.Enter) - { - // accodo testo - accodaCodM(); - } - else if (e.KeyCode == Keys.Escape) - { - // svuoto! - addCodM.Text = ""; - } - } - private void addCodM_Leave(object sender, EventArgs e) - { - accodaCodM(); - } - private void addCodS_KeyDown(object sender, KeyEventArgs e) - { - - if (e.KeyCode == Keys.Enter) - { - // accodo testo - accodaCodS(); - } - else if (e.KeyCode == Keys.Escape) - { - // svuoto! - addCodS.Text = ""; - } - } - private void addCodS_Leave(object sender, EventArgs e) - { - accodaCodS(); - } - private void addCodT_KeyDown(object sender, KeyEventArgs e) - { - - if (e.KeyCode == Keys.Enter) - { - // accodo testo - accodaCodT(); - } - else if (e.KeyCode == Keys.Escape) - { - // svuoto! - addCodT.Text = ""; - } - } - private void addCodT_Leave(object sender, EventArgs e) - { - accodaCodT(); - } - - - - #endregion - - private void txtPathFeed_TextChanged(object sender, EventArgs e) - { - hsPathFeed.Value = Convert.ToInt32(txtPathFeed.Text); - } - - private void txtPathFeedOver_TextChanged(object sender, EventArgs e) - { - hsPathFeedOver.Value = Convert.ToInt32(txtPathFeedOver.Text); - } - - private void txtPathSpeedOver_TextChanged(object sender, EventArgs e) - { - hsPathSpeedOver.Value = Convert.ToInt32(txtPathSpeedOver.Text); - } - - private void raiseFlag_FEED_SPEED() - { - // se non c'è flag lo alzo... - if (!utils.IsSetAll(agObj.STROBE_PLC, Strobe.FEED_SPEED)) - { - agObj.STROBE_PLC = agObj.STROBE_PLC | Strobe.FEED_SPEED; - } - } - - private void hsPathFeed_ValueChanged(object sender, EventArgs e) - { - txtPathFeed.Text = hsPathFeed.Value.ToString(); - raiseFlag_FEED_SPEED(); - } - - private void hsPathFeedOver_ValueChanged(object sender, EventArgs e) - { - txtPathFeedOver.Text = hsPathFeedOver.Value.ToString(); - raiseFlag_FEED_SPEED(); - } - - private void hsPathSpeedOver_ValueChanged(object sender, EventArgs e) - { - txtPathSpeedOver.Text = hsPathSpeedOver.Value.ToString(); - raiseFlag_FEED_SPEED(); - } - - #region gestione load conf - - private void mConfGen_Click(object sender, EventArgs e) - { - SetupAdapter setupWIndow = new SetupAdapter(); - setupWIndow.Show(this); - } - - private void mLoadAdaptConf_Click(object sender, EventArgs e) - { - // mostro selettore file x leggere adapter.. - OpenFileDialog openFileDial = new OpenFileDialog(); - - // directory iniziale - openFileDial.InitialDirectory = utils.confDir; // string.Format(@"{0}\{1}", Application.StartupPath, utils.CRS("dataConfPath")); - // Set filter options and filter index. - openFileDial.Filter = "XML Files (.xml)|*.xml|All Files (*.*)|*.*"; - openFileDial.FilterIndex = 1; - // altre opzioni - openFileDial.Multiselect = false; - - // Call the ShowDialog method to show the dialog box. - DialogResult userClickedOK = openFileDial.ShowDialog(); - - // Process input if the user clicked OK. - if (userClickedOK == DialogResult.OK) - { - string XmlConfFile = openFileDial.FileName; - loadXmlFile(XmlConfFile); - lg.Info("XML LOADED"); - loadPersistLayer(defPersLayerFile); - lg.Info("PersLayerFile READ"); - agObj.loadPersData(); - lg.Info("PersLayerFile LOADED"); - } - } - /// - /// Carica file XML della configurazione richiesta - /// - /// - private void loadXmlFile(string XmlConfFile) - { - displayTaskAndWait(string.Format("Loading XML: {0}", XmlConfFile)); - - // Read the configuration object from a file - adpConf = AdapterConf.Deserialize(XmlConfFile); - - // indico quale sia il tipo di adapter - tipoScelto = adpConf.TipoAdapt; - loadAdapterType(); - // carico file XML in web browser... - wbXmlConf.DocumentText = AdapterConf.rawXml(XmlConfFile); - displayTaskAndWait("XML loaded"); - - // avvio macchina con adapter specificato... - if (utils.CRB("autoStartOnLoad")) - { - displayTaskAndWait("Auto Starting..."); - // avvio! - avviaAdapter(); - displayTaskAndWait("Auto Started!"); - } - } - /// - /// salva su file l'oggetto AdapterConf - /// - /// - public void saveXmlFile(string XmlConfFile) - { - AdapterConf.Serialize(XmlConfFile, agObj.currAdpConf); - } - /// - /// Salva su file l'oggetto di persistenza dati - /// - /// - public void savePersistLayer(string filePath) - { - // in primis check semaforo salvataggio... - if (!agObj.adpSaving) - { - // alzo semaforo salvataggio - agObj.adpSaving = true; - // se HO dei dati... - if (agObj.persistenceLayer != null) - { - try - { - utils.WritePlain(agObj.persistenceLayer, filePath); - } - catch (Exception exc) - { - lg.Error(string.Format("Errore salvataggio file{0}{1}", Environment.NewLine, exc)); - } - } - else - { - lg.Info("persistenceLayer null, non salvato..."); - } - // abbasso semaforo salvataggio - agObj.adpSaving = false; - } - } - /// - /// Carica da file l'oggetto di persistenza dati - /// - /// - public void loadPersistLayer(string filePath) - { - // inizializzo prima di leggere... - agObj.persistenceLayer = new Dictionary(); - agObj.persistenceLayer = utils.ReadPlain(filePath); - - // 2017.03.23 check problema files corrotti... - if (agObj.persistenceLayer.Count == 0) - { - // se avesse letto un valore NON coerente (senza righe) PROVA a leggere a ritroso vecchi files... da histPersLayerFile e precedenti... - int numDD = 0; - int maxNumDD = utils.CRI("maxNumDD"); - Dictionary lastRead = new Dictionary(); - // continuo fino a che non leggo almeno 1 riga valida e non ho raggiunto maxDD - while (numDD < maxNumDD && lastRead.Count == 0) - { - // leggo il file storico alla data anticipata... (ci provo...) - try - { - lastRead = utils.ReadPlain(prevPersLayerFile(numDD)); - } - catch - { } - numDD++; - } - // se sono uscito PROVO a passare il file storico letto buono (oppure vuoto...) - agObj.persistenceLayer = lastRead; - } - } - - #endregion - - #region accesso dati produzione - - /// - /// Dati di produzione (su form) - /// - public prodData datiProd - { - get - { - prodData answ = new prodData(); - // carico da form - answ.Operator = OPERATOR_ID.Text; - - // variabili lette da + controlli - answ.Status = stop.Enabled; - answ.Power = Power; - answ.AccTime = AccTime; - answ.EmrStop = estop.Checked; - - answ.FuncMode = ((KeyValuePair)functionalMode.SelectedItem).Key; - - answ.MessageCode = messageCode.Text; - answ.MessageText = messageText.Text; - - // parto vuoto con StatusBitMap... - agObj.STATUS_FLAG = 0; - // aggiorno status flag in base a valori... - if (answ.EmrStop) agObj.STATUS_FLAG = agObj.STATUS_FLAG | StatusBitMap.ESTOP; - if (automatic.Checked) agObj.STATUS_FLAG = agObj.STATUS_FLAG | StatusBitMap.RM_AUTO; - else if (mdi.Checked) agObj.STATUS_FLAG = agObj.STATUS_FLAG | StatusBitMap.RM_MDI; - else if (edit.Checked) agObj.STATUS_FLAG = agObj.STATUS_FLAG | StatusBitMap.RM_EDIT; - else agObj.STATUS_FLAG = agObj.STATUS_FLAG | StatusBitMap.RM_MANUAL; - - if (running.Checked) agObj.STATUS_FLAG = agObj.STATUS_FLAG | StatusBitMap.EM_RUN; - else if (feedhold.Checked) agObj.STATUS_FLAG = agObj.STATUS_FLAG | StatusBitMap.EM_FEEDHOLD; - else if (stopped.Checked) agObj.STATUS_FLAG = agObj.STATUS_FLAG | StatusBitMap.EM_STOP; - else if (ready.Checked) agObj.STATUS_FLAG = agObj.STATUS_FLAG | StatusBitMap.EM_READY; - if (answ.FuncMode != "1") agObj.STATUS_FLAG = agObj.STATUS_FLAG | StatusBitMap.HM; - - // ritorno oggetto! - return answ; - } - } - - private void pzKo_TextChanged(object sender, EventArgs e) - { - agObj.STROBE_PLC = agObj.STROBE_PLC | Strobe.PZ_KO; - txtPzTot.Text = pzTot.ToString(); - } - protected int Power - { - get - { - int answ = 0; - try - { - answ = Convert.ToInt32(txtPower.Text.Trim()); - } - catch - { } - return answ; - } - set - { - txtPower.Text = value.ToString(); - } - } - protected int AccTime - { - get - { - int answ = 0; - try - { - answ = Convert.ToInt32(txtAccTime.Text.Trim()); - } - catch - { } - return answ; - } - set - { - txtAccTime.Text = value.ToString(); - } - } - protected int pzOk - { - get - { - int answ = 0; - try - { - answ = Convert.ToInt32(txtPzOk.Text.Trim()); - } - catch - { } - return answ; - } - set - { - txtPzOk.Text = value.ToString(); - txtPzTot.Text = pzTot.ToString(); - } - } - protected int pzKo - { - get - { - int answ = 0; - try - { - answ = Convert.ToInt32(txtPzKo.Text.Trim()); - } - catch - { } - return answ; - } - set - { - txtPzKo.Text = value.ToString(); - txtPzTot.Text = pzTot.ToString(); - } - } - protected int pzTot - { - get - { - return pzOk + pzKo; - } - } - - #endregion - - #region gestione Path - - - private void cbPathSel_SelectedIndexChanged(object sender, EventArgs e) - { - hsPathFeed.Value = 50; - hsPathFeedOver.Value = 50; - hsPathSpeedOver.Value = 50; - Random rnd = new Random(); - PosAct.Rows[0].Cells[0].Value = rnd.Next(0, 1000); - PosAct.Rows[0].Cells[1].Value = rnd.Next(0, 1000); - PosAct.Rows[0].Cells[2].Value = rnd.Next(0, 1000); - PosAct.Rows[0].Cells[3].Value = rnd.Next(0, 360); - PosAct.Rows[0].Cells[4].Value = rnd.Next(0, 360); - PosAct.Rows[0].Cells[5].Value = rnd.Next(0, 360); - } - - /// - /// Dati PATH - /// - public PathData CurrPath - { - get - { - PathData answ = new PathData(); - - // modifiche dati portati da macchina a path... - answ.ProgramName = program.Text; - answ.ProgrRow = PROG_ROW_NUM.Text; - answ.PartId = partID.Text; - answ.PathType = "LAVORO"; - // pezzi - answ.pzTot = pzOk + pzKo; - - if (automatic.Checked) answ.RunMode = "AUTOMATIC"; - else if (mdi.Checked) answ.RunMode = "MANUAL_DATA_INPUT"; - else if (edit.Checked) answ.RunMode = "EDIT"; - else answ.RunMode = "MANUAL"; - - if (running.Checked) answ.ExeMode = "ACTIVE"; - else if (feedhold.Checked) answ.ExeMode = "FEED_HOLD"; - else if (stopped.Checked) answ.ExeMode = "STOPPED"; - else if (ready.Checked) answ.ExeMode = "READY"; - - answ.ActiveAxes = "1 2 3 4 5 6"; // lascio sempre tutti attivi... - - answ.PathSel = cbPathSel.SelectedIndex; - // FEED/SPEED - answ.PathFeedrate = hsPathFeed.Value; - answ.PathFeedrateOver = hsPathFeedOver.Value; - answ.PathRapidOver = hsPathSpeedOver.Value; - - // posizione attuale - position posAct = new position(); - DataGridViewCellCollection cells = PosAct.Rows[0].Cells; - float.TryParse(cells[0].Value.ToString(), out posAct.x); - float.TryParse(cells[1].Value.ToString(), out posAct.y); - float.TryParse(cells[2].Value.ToString(), out posAct.z); - float.TryParse(cells[3].Value.ToString(), out posAct.i); - float.TryParse(cells[4].Value.ToString(), out posAct.j); - float.TryParse(cells[5].Value.ToString(), out posAct.k); - answ.PathPosAct = posAct; - - // aggiungo altri oggetti... - answ.CodG_Act = "G01 G10 G34 G60"; - answ.SubMode = string.Format("# Asse selezionato {0} #", cbAxNum.SelectedIndex); - - // ritorno oggetto! - return answ; - } - } - - #endregion - - #region gestione UnOp - - - private void cbUnOpSel_SelectedIndexChanged(object sender, EventArgs e) - { - uoToolId.Text = "1"; - uoNumCU.Text = "2"; - uoStatus.Text = "RUN"; - uoVitaRes.Text = "100"; - uoSpeed.Text = "80"; - uoLoad.Text = "80"; - uoAccTime.Text = "0"; - } - - /// - /// Dati UnOp - /// - public UnOpData CurrUnOp - { - get - { - UnOpData answ = new UnOpData(); - - answ.UnOpSel = cbUnOpSel.SelectedIndex; - - int.TryParse(uoToolId.Text, out answ.UnOpToolId); - int.TryParse(uoNumCU.Text, out answ.UnOpNumCU); - answ.UnOpStatus = uoStatus.Text; - int.TryParse(uoVitaRes.Text, out answ.UnOpVitaRes); - answ.UnOpSpeed = uoSpeed.Value; - answ.UnOpLoad = uoLoad.Value; - int.TryParse(uoAccTime.Text, out answ.UnOpAccTime); - - // ritorno oggetto! - return answ; - } - } - - private void uoLoad_Scroll(object sender, ScrollEventArgs e) - { - uoLoadVal.Text = uoLoad.Value.ToString(); - } - - private void uoSpeed_Scroll(object sender, ScrollEventArgs e) - { - uoSpeedVal.Text = uoSpeed.Value.ToString(); - } - - #endregion - - #region gestione assi - - private void cbAxNum_SelectedIndexChanged(object sender, EventArgs e) - { - // aggiorna visualizzazione asse... imposto valori standard x controlli - AxMainProc.Text = "1"; - AxIsMaster.Checked = false; - AxMastId.Text = "0"; - cbAxType.SelectedIndex = 0; - AxDir.Text = "1"; - AxLoad.Value = 50; - AxPosition.Value = 50; - AxFeedAct.Value = 50; - AxFeedOver.Value = 100; - AxAccelAct.Text = "0"; - AxAccTime.Text = "0"; - AxBatt.Text = "100"; - } - - /// - /// Dati di produzione (su form) - /// - public AxisData CurrAxis - { - get - { - Random rnd = new Random(); - AxisData answ = new AxisData(); - answ.AxisSel = cbAxNum.SelectedIndex; - answ.AxisMainProc = AxMainProc.Text; - answ.AxisIsMaster = AxIsMaster.Checked; - answ.AxisMastId = AxMastId.Text; - answ.AxisType = AxisType; - answ.AxisDir = AxDir.Text; - answ.AxisLoad = AxLoad.Value; - answ.AxisPosAct = AxPosition.Value;// + rnd.Next(-2, 2); - answ.AxisPosTgt = AxPosition.Value; - answ.AxisFeedAct = AxFeedAct.Value; - answ.AxisFeedOver = AxFeedOver.Value; - answ.AxisAccel = AxAccelAct.Text; - answ.AxisAccTime = AxAccTime.Text; - answ.AxisBattery = AxBatt.Text; - - // restituisco oggetto - return answ; - } - } - - protected string AxisType - { - get - { - string answ = ""; - try - { - answ = cbAxType.SelectedItem.ToString(); ; - } - catch - { } - return answ; - } - } - - private void xLoad_Scroll(object sender, ScrollEventArgs e) - { - AxLoadValue.Text = AxLoad.Value.ToString(); - } - - private void xPosition_Scroll(object sender, ScrollEventArgs e) - { - - AxPositionValue.Text = AxPosition.Value.ToString(); - } - - private void cLoad_Scroll(object sender, ScrollEventArgs e) - { - AxFeedActValue.Text = AxFeedAct.Value.ToString(); - } - - private void cSpeed_Scroll(object sender, ScrollEventArgs e) - { - AxFeedOverValue.Text = AxFeedOver.Value.ToString(); - } - - #endregion - - - /// - /// Stringa dati monitoraggio mostrata (1 SX)... - /// - public string dataMonitor_1 - { - get - { - return lblOutMessage.Text; - } - set - { - lblOutMessage.Text = value; - } - } - /// - /// Stringa dati monitoraggio mostrata (2 centro)... - /// - public string dataMonitor_2 - { - get - { - return lblOutMessage2.Text; - } - set - { - lblOutMessage2.Text = value; - } - } - /// - /// Stringa dati monitoraggio mostrata (3 dx)... - /// - public string dataMonitor_3 - { - get - { - return lblOutMessage3.Text; - } - set - { - lblOutMessage3.Text = value; - } - } - private void SysErr_01_CheckedChanged(object sender, EventArgs e) - { - // aggiorno il vettore allarmi (da 128 byte) sulla base della selezione dei checkbox (per i primi 9...) - ultimi 3 selezionano 8 allarmi ciascuno... - BitArray bitArray = new BitArray(1024); - - bitArray[7] = SysErr_01.Checked; - bitArray[6] = SysErr_02.Checked; - bitArray[5] = SysErr_03.Checked; - bitArray[4] = PlcErr_01.Checked; - bitArray[3] = PlcErr_02.Checked; - bitArray[2] = PlcErr_03.Checked; - bitArray[1] = CncErr_01.Checked; - bitArray[0] = CncErr_02.Checked; - bitArray[15] = CncErr_03.Checked; - - // ne assegno 8 alla volta... - for (int i = 0; i < 8; i++) - { - bitArray[16 + i] = ErrRT_01.Checked; - bitArray[24 + i] = ErrRT_02.Checked; - bitArray[32 + i] = ErrRT_03.Checked; - } - byte[] newAlarm = utils.ToByteArray(bitArray); - Buffer.BlockCopy(newAlarm, 0, agObj.AlarmFlags, 0, 32); - } - - private void MainForm_FormClosing(object sender, FormClosingEventArgs e) - { - closeAdapter(); - } - - private void closeAdapter() - { - fermaTutto(true, false); - } - /// - /// Ferma tutti i componenti adapter + update buttons - /// - /// determina se fermare il timer (gather) principale (solo se non si chiude) - /// determina se tentare di riconnettersi - private void fermaTutto(bool stopTimer, bool tryRestart) - { - agObj.stopAdapter(tryRestart); - // salvo! - savePersistLayer(defPersLayerFile); - savePersistLayer(histPersLayerFile); - - stop.Enabled = false; - dump.Enabled = false; - start.Enabled = true; - - if (stopTimer) - { - gather.Enabled = false; - agObj.tryDisconnect(); - } - } + LogManager.ReconfigExistingLoggers(); + + lg = LogManager.GetCurrentClassLogger(); + displayTaskAndWait("Starting MainForm"); + + // inizio con tab control disabilitati + EnableTab(tabCtrlMain.TabPages[1], false); + EnableTab(tabCtrlMain.TabPages[2], false); + + // se abilitato autoload conf leggo file corretto... + if (utils.CRB("autoLoadConf")) + { + loadXmlFile(defConfFilePath); + lg.Info("XML LOADED"); + loadPersistLayer(defPersLayerFile); + lg.Info("PersLayerFile READ"); + agObj.loadPersData(); + lg.Info("PersLayerFile LOADED"); + } + else + { + // definisco e avvio tipo adapter generico + tipoScelto = tipoAdapter.ND; + adpConf = new AdapterConf(); + loadAdapterType(); + displayTaskAndWait("Waiting for config file selection"); + } + + // Start timer periodico + gather.Interval = utils.CRI("timerIntMs"); + gather.Enabled = true; + + displayTaskAndWait("Program Running"); + createTrayMenu(); + displayTaskAndWait("Tray Menu OK"); + + // avvio minimizzato se richiesto + if (utils.CRB("startMinimized")) + { + // imposto minimized se necessario! + if (WindowState != FormWindowState.Minimized) + { + WindowState = FormWindowState.Minimized; + } + displayTaskAndWait("Minimized"); + } + + displayTaskAndWait("Main Form OK"); + } + /// + /// Verifica finale a fine show... + /// + /// + /// + private void MainForm_Shown(object sender, EventArgs e) + { + // avvio minimizzato se richiesto + if (utils.CRB("startMinimized")) + { + // controllo e mando a tray... + sendToTray(); + } + displayTaskAndWait("Main Form SHOWN"); + } + /// + /// crea menù tray x applicazione + /// + private void createTrayMenu() + { + // Fix testi menù tray... + trayMenu.Items.Clear(); + // SE permessa massimizzazione... + if (utils.CRB("windowCanMax")) + { + trayMenu.Items.Add("Show MTC Adapter"); + } + // se è permesso tray close... + if (utils.CRB("trayClose")) + { + trayMenu.Items.Add("Close MTC Adapter"); + } + } + + /// + /// doppio click su tray icon + /// + /// + /// + private void notifyIcon1_DoubleClick(object sender, EventArgs e) + { + // SOLO SE PERMESSO mostrare full... + if (utils.CRB("windowCanMax")) + { + Show(); + WindowState = FormWindowState.Normal; + } + } + /// + /// evento resize + /// + /// + /// + private void MainForm_Resize(object sender, EventArgs e) + { + checkFormVisibility(); + } + /// + /// Verifica stato windows (minimized/normal) e visibilità con tray... + /// + private void checkFormVisibility() + { + // se non può massimizzare imposto COMUNQUE a minimized... + if (!utils.CRB("windowCanMax")) + { + WindowState = FormWindowState.Minimized; + } + // controllo cosa devo mostrare... + if (WindowState == FormWindowState.Minimized) + { + notifyIcon1.Visible = false; + sendToTray(); + } + else + { + notifyIcon1.Visible = false; + } } + /// + /// Gestisce "andata nel tray" della form + /// + private void sendToTray() + { + if (!notifyIcon1.Visible) + { + notifyIcon1.BalloonTipTitle = utils.CRS("appName"); + notifyIcon1.BalloonTipText = string.Format("{0} running on tray", utils.CRS("appName")); + notifyIcon1.Visible = true; + notifyIcon1.ShowBalloonTip(100); + } + Hide(); + } + /// + /// click su menù contestuale in tray + /// + /// + /// + private void trayMenu_ItemClicked(object sender, ToolStripItemClickedEventArgs e) + { + if (e.ClickedItem.Text.StartsWith("Close")) + { + // stop adapter... + closeAdapter(); + // chiudo! + Close(); + } + else if (e.ClickedItem.Text.StartsWith("Show")) + { + if (utils.CRB("windowCanMax")) + { + Show(); + WindowState = FormWindowState.Normal; + } + } + + } + + #endregion + + protected string defConfFilePath + { + get + { + return string.Format(@"{0}\{1}", utils.confDir, utils.CRS("defaultConfFile")); + } + } + /// + /// File persistenza generale + /// + protected string defPersLayerFile + { + get + { + return string.Format(@"{0}\{1}", utils.dataDatDir, utils.CRS("defaultPersLayerFile")); + } + } + protected string defIconFilePath + { + get + { + return string.Format(@"{0}\MTCA.ico", utils.resxDir); + } + } + + /// + /// carica adapter richiesto + /// + private void loadAdapterType() + { + switch (tipoScelto) + { + case tipoAdapter.DEMO: + agObj = new AdapterDemo(this, adpConf); + EnableTab(tabCtrlMain.TabPages[1], true); + EnableTab(tabCtrlMain.TabPages[2], true); + start.Enabled = true; + break; + case tipoAdapter.ESAGV: + agObj = new AdapterESA(this, adpConf); + EnableTab(tabCtrlMain.TabPages[1], true); + EnableTab(tabCtrlMain.TabPages[2], false); + start.Enabled = true; + break; + case tipoAdapter.FANUC: + agObj = new AdapterFanuc(this, adpConf); + EnableTab(tabCtrlMain.TabPages[1], true); + EnableTab(tabCtrlMain.TabPages[2], false); + start.Enabled = true; + break; + case tipoAdapter.OSAI: + agObj = new AdapterOsai(this, adpConf); + EnableTab(tabCtrlMain.TabPages[1], true); + EnableTab(tabCtrlMain.TabPages[2], false); + start.Enabled = true; + break; + case tipoAdapter.SIEMENS: + agObj = new AdapterSiemens(this, adpConf); + EnableTab(tabCtrlMain.TabPages[1], true); + EnableTab(tabCtrlMain.TabPages[2], false); + start.Enabled = true; + break; + case tipoAdapter.ND: + default: + agObj = new AdapterDemo(this, adpConf); + EnableTab(tabCtrlMain.TabPages[1], false); + EnableTab(tabCtrlMain.TabPages[2], false); + start.Enabled = false; + break; + } + lblCurrAdapt.Text = string.Format("Adapter loaded: {0}", tipoScelto.ToString().ToUpper()); + + // carico i default values su interfaccia + setDefaults(); + + displayTaskAndWait(string.Format("Caricata conf per adapter {0}", tipoScelto)); + } + + /// + /// impostazione valori defaults + /// + private void setDefaults() + { + stop.Enabled = false; + dump.Enabled = false; + + D1_NAME.Text = "DEMO MACHINE"; // utils.CRS("D1_NAME"); + D1_ID.Text = "DEMO ID"; //utils.CRS("D1_ID"); + D1_UUID.Text = "DEMO UUID"; // utils.CRS("D1_UUID"); + + program.Text = "DEMO PRG"; // utils.CRS("D1_PROGRAM"); + PROG_ROW_NUM.Text = "0"; + partID.Text = "DEMO PART-ID"; // utils.CRS("PartID"); + + pzOk = 0; + pzKo = 0; + Power = 1000; + AccTime = 1440 * 365; + + OPERATOR_ID.Text = "OPxxxx"; + + STATUS_STRB_DW0.Text = utils.binaryForm(0); + STATUS_STRB_DW1.Text = utils.binaryForm(0); + STATUS_STRB_DW2.Text = utils.binaryForm(0); + STATUS_STRB_DW3.Text = utils.binaryForm(0); + + STATUS_ACK_DW0.Text = utils.binaryForm(0); + STATUS_ACK_DW1.Text = utils.binaryForm(0); + STATUS_ACK_DW2.Text = utils.binaryForm(0); + STATUS_ACK_DW3.Text = utils.binaryForm(0); + + MainProgrBar.Minimum = 0; + MainProgrBar.Maximum = 1000; + MainProgrBar.Value = 0; + MainProgrBar.Step = 1; + + // compilo combobox causali fermo... + string[] contenuto = File.ReadAllLines(utils.confDir + "\\HaltTypeList.map"); + + System.Collections.Generic.Dictionary comboSource = new Dictionary(); + foreach (var line in contenuto) + { + // se la linea non è commento e non è vuota... + if (line.Length > 0 && line[0] != '#') + { + string[] tokens = line.Split(':'); + comboSource.Add(tokens[0], tokens[1]); + } + } + functionalMode.DataSource = new BindingSource(comboSource, null); + functionalMode.DisplayMember = "Value"; + functionalMode.ValueMember = "Key"; + + + string[] row = { "0", "0", "0", "0", "0", "0" }; + PosAct.Rows.Add(row); + + // fix componenti vettoriali PATH, UNOP, ASSI... + for (int i = 0; i < adpConf.nPath; i++) + { + cbPathSel.Items.Insert(i, adpConf.Path[i].ident); + } + if (adpConf.nPath > 0) cbPathSel.SelectedIndex = 0; + + for (int i = 0; i < adpConf.nUnOp; i++) + { + cbUnOpSel.Items.Insert(i, adpConf.UnOp[i].ident); + } + if (adpConf.nUnOp > 0) cbUnOpSel.SelectedIndex = 0; + + for (int i = 0; i < adpConf.nAxis; i++) + { + cbAxNum.Items.Insert(i, adpConf.Axis[i].ident); + } + if (adpConf.nAxis > 0) cbAxNum.SelectedIndex = 0; + + + } + + /// + /// Avvio dell'adapter + /// + /// + /// + private void start_Click(object sender, EventArgs e) + { + avviaAdapter(); + agObj.loadPersData(); + // salvo che ho avviato adapter + lg.Info("Completato LOAD Adapter"); + } + + public void avviaAdapter() + { + displayTaskAndWait("Adapter starting"); + // se NON sta girando... + if (!agObj.adpRunning) + { + int porta = Convert.ToInt32(port.Text); + agObj.startAdapter(porta); + displayTaskAndWait("Adapter started!"); + + // fix buttons start/stop/dump + start.Enabled = false; + stop.Enabled = true; + dump.Enabled = true; + if (utils.CRB("openDumpOnStart")) + { + displayTaskAndWait("Dump Window starting"); + apriDumpAgent(); + displayTaskAndWait("Dump Windows OK"); + } + + displayTaskAndWait("Start Timers"); + // inizializzo contatori fast/mid/slow + fastCount = utils.CRI("fastCount"); + normCount = utils.CRI("normCount"); + slowCount = utils.CRI("slowCount"); + alarmSyncCount = utils.CRI("alarmSyncCount"); + displayTaskAndWait("Adapter Running..."); + // forzo check allarmi.. + agObj.forceAlarmCheck(); + } + else + { + displayTaskAndWait("Adapter STILL Running..."); + } + } + + /// + /// fermata dell'adapter + /// + /// + /// + private void stop_Click(object sender, EventArgs e) + { + fermaAdapter(false); + // salvo che ho fermato adapter + lg.Info("UNLOAD Adapter"); + } + /// + /// Ferma l'adapter + /// + /// determina se si debba tentare riavvio automatico (per caduta connessione) + public void fermaAdapter(bool tryRestart) + { + fermaTutto(false, tryRestart); + } + + private void gather_Tick(object sender, EventArgs e) + { + // eseguo cicli attivi SOLO se adapter è in EFFETTIVO running... + if (agObj.adpRunning) + { + // inizio a riportare che sto eseguendo.. + advProgBar(); + if (agObj.connectionOk) + { + // check esecuzione FastTask + checkFastTask(); + // check esecuzione NormTask + checkNormTask(); + // check esecuzione SlowTask + checkSlowTask(); + // check esecuzione AlarmSync + checkAlarmSync(); + // check esecuzione SendTask (VHF) + checkSendTask(); + if (utils.CRI("waitEndCycle") > 0) + { + Thread.Sleep(utils.CRI("waitEndCycle")); + } + } + else + { + double currWait = DateTime.Now.Subtract(lastStartTry).TotalMilliseconds; + if (agObj.adpTryRestart && currWait > utils.CRI("waitRecMSec")) + { + lastStartTry = DateTime.Now; + agObj.tryConnect(); + agObj.loadPersData(); + } + } + // se è arrivato a MAX resetto... + if (MainProgrBar.Value >= MainProgrBar.Maximum) + { + MainProgrBar.Value = 0; + } + } + else + { + // verifico SE debba tentare il riavvio, ovvero NON running ma tryReconn e non ho riprovato x oltre waitRecMSec + double currWait = DateTime.Now.Subtract(lastStartTry).TotalMilliseconds; + if (agObj.adpTryRestart && currWait > utils.CRI("waitRecMSec")) + { + lastStartTry = DateTime.Now; + avviaAdapter(); + agObj.loadPersData(); + } + } + } + + public void resetProgBar() + { + MainProgrBar.Value = 0; + } + /// + /// Visualizzazione stato di comunicazione attiva con PLC + /// + public bool commPlcActive + { + set + { + // se true --> comunica/verde, altrimenti grigio + lblApp.ForeColor = value ? Color.SeaGreen : Color.Black; + lblVers.ForeColor = value ? Color.SeaGreen : Color.DarkSlateGray; + statusStrip1.Refresh(); + } + } + + private void checkAlarmSync() + { + + alarmSyncCount--; + if (alarmSyncCount <= 0) + { + alarmSyncCount = utils.CRI("alarmSyncCount"); + + // avvio fase raccolta dati e invio con adapter + agObj.gaterAndSend(gatherCycle.VLF); + } + } + private void checkSlowTask() + { + slowCount--; + if (slowCount <= 0) + { + slowCount = utils.CRI("slowCount"); + + // avvio fase raccolta dati e invio con adapter + agObj.gaterAndSend(gatherCycle.LF); + + // refresh stringhe code M/S/T + refreshCodeMST(); + + // effettua salvataggio del file di conf con i valori ATTUALI dei parametri ove applicabile/aggiornati (es ore utilizzo, KM assi percorsi...) --> sia file corrente che file "history" + persistData(); + } + } + + /// + /// file persistenza generale + /// + public string histPersLayerFile + { + get + { + return string.Format(@"{0}\{1:yyyy}\{1:yyyy-MM-dd}.mtc", utils.dataDatDir, DateTime.Now); + } + } + /// + /// file persistenza generale data attuale ANTICIPATA di xx giorni + /// + /// num DD di anticipo + /// + public string prevPersLayerFile(int numDD) + { + return string.Format(@"{0}\{1:yyyy}\{1:yyyy-MM-dd}.mtc", utils.dataDatDir, DateTime.Now.AddDays(-numDD)); + } + /// + /// salva i valori attuali del file di conf sia in file corrente che in cartella valori storici + /// + public void persistData() + { + // salvo ogni "autoSaveSec" secondi dall'ultimo salvataggio... + TimeSpan tempoMod = new TimeSpan(0); + if (File.Exists(defPersLayerFile)) + { + DateTime adesso = DateTime.Now; + tempoMod = DateTime.Now.Subtract(File.GetLastWriteTime(defPersLayerFile)); + } + if (tempoMod.TotalSeconds > utils.CRI("autoSaveSec")) + { + savePersistLayer(defPersLayerFile); + savePersistLayer(histPersLayerFile); + } + } + + private void checkNormTask() + { + + // decremento... + normCount--; + // se il counter è a zero eseguo... + if (normCount <= 0) + { + normCount = utils.CRI("normCount"); + + // avvio fase raccolta dati e invio con adapter + agObj.gaterAndSend(gatherCycle.MF); + } + } + /// + /// Avanza la barra di stato... + /// + public void advProgBar() + { + try + { + MainProgrBar.PerformStep(); + MainProgrBar.Invalidate(); + } + catch + { } + } + + private void checkSendTask() + { + // avvio fase invio con adapter (code MST) + agObj.gaterAndSend(gatherCycle.VHF); + } + private void checkFastTask() + { + // decremento... + fastCount--; + // se il counter è a zero eseguo... + if (fastCount <= 0) + { + fastCount = utils.CRI("fastCount"); + + // avvio fase raccolta dati e invio con adapter + agObj.gaterAndSend(gatherCycle.HF); + + refreshVisualStrobes(); + } + } + + private void message_Leave(object sender, EventArgs e) + { + } + + // apro eseguibile dump + private void dump_Click(object sender, EventArgs e) + { + apriDumpAgent(); + } + /// + /// apre agent di dump in CMD + /// + private static void apriDumpAgent() + { + string path = Application.StartupPath; + try + { + Process.Start(string.Format(@"{0}\..\..\dump\dump.exe", path)); + } + catch + { + Process.Start(string.Format(@"{0}\dump\dump.exe", path)); + } + } + + #region classi x simulazione valori vari + + /// + /// simula alcuni dati generando ad esempio numeri casuali... SE abilitato e SE adapter è DEMO + /// + private void simulateData() + { + if (enableDataSim.Checked && tipoScelto == tipoAdapter.DEMO) + { + DateTime adesso = DateTime.Now; + Random rnd = new Random(); + // 10% casi cambia riga + if (rnd.Next(0, 100) > 90) + { + PROG_ROW_NUM.Text = rnd.Next(1, 10000).ToString(); + } + + + // cambio posizioni 6% casi: aggiungo codici M + if (rnd.Next(0, 100) > 95) + { + agObj.appendCodeMST("M", rnd.Next(1, 30).ToString(), 0); + } + + // cambio posizioni 3% casi: aggiungo codici S + if (rnd.Next(0, 100) > 97) + { + agObj.appendCodeMST("S", rnd.Next(100, 10000).ToString(), 0); + } + // cambio posizioni 3% casi: aggiungo codici T + if (rnd.Next(0, 100) > 97) + { + agObj.appendCodeMST("T", rnd.Next(1, 100).ToString(), 0); + } + + + // aggiungo 1 pz al totale nel 0.3% dei casi (-->TC circa 333 x tick)... + if (rnd.Next(0, 1000) > 997) + { + pzOk++; + agObj.STROBE_PLC = agObj.STROBE_PLC | Strobe.PZ_OK; + } + + // cambio posizioni XYZ/ijk nel 20% dei casi x ogni terna... + if (rnd.Next(0, 100) > 80) + { + PosAct.Rows[0].Cells[0].Value = rnd.Next(0, 100); + PosAct.Rows[0].Cells[1].Value = rnd.Next(0, 100); + PosAct.Rows[0].Cells[2].Value = rnd.Next(0, 100); + agObj.STROBE_PLC = agObj.STROBE_PLC | Strobe.POS_ACT; + } + if (rnd.Next(0, 100) > 80) + { + PosAct.Rows[0].Cells[3].Value = rnd.Next(0, 100); + PosAct.Rows[0].Cells[4].Value = rnd.Next(0, 100); + PosAct.Rows[0].Cells[5].Value = rnd.Next(0, 100); + agObj.STROBE_PLC = agObj.STROBE_PLC | Strobe.POS_ACT; + } + + + // cambio power nel 15% dei casi... + if (rnd.Next(0, 100) > 85) + { + Power += rnd.Next(-10, 10); + } + // aggiungo 1 min AccTime nel 0.1% dei casi + if (rnd.Next(0, 1000) > 999) + { + AccTime++; + } + + // toggle 1 allarme sys nello 0.5% dei casi + if (rnd.Next(0, 1000) > 995) + { + int codAlarm = rnd.Next(1, 3); + switch (codAlarm) + { + case 1: + SysErr_01.Checked = !SysErr_01.Checked; + break; + case 2: + SysErr_02.Checked = !SysErr_02.Checked; + break; + default: + SysErr_03.Checked = !SysErr_03.Checked; + break; + } + agObj.STATUS_FLAG = agObj.STATUS_FLAG | StatusBitMap.AL01; + } + // toggle 1 allarme PLC nello 0.4% dei casi + if (rnd.Next(0, 1000) > 996) + { + int codAlarm = rnd.Next(1, 3); + switch (codAlarm) + { + case 1: + PlcErr_01.Checked = !PlcErr_01.Checked; + break; + case 2: + PlcErr_02.Checked = !PlcErr_02.Checked; + break; + default: + PlcErr_03.Checked = !PlcErr_03.Checked; + break; + } + agObj.STATUS_FLAG = agObj.STATUS_FLAG | StatusBitMap.AL02; + } + // toggle 1 allarme CNC nello 0.3% dei casi + if (rnd.Next(0, 1000) > 997) + { + int codAlarm = rnd.Next(1, 3); + switch (codAlarm) + { + case 1: + CncErr_01.Checked = !CncErr_01.Checked; + break; + case 2: + CncErr_02.Checked = !CncErr_02.Checked; + break; + default: + CncErr_03.Checked = !CncErr_03.Checked; + break; + } + agObj.STATUS_FLAG = agObj.STATUS_FLAG | StatusBitMap.AL03; + } + + // nel 2% dei casi imposto un RUN MODE diverso da RUN + if (rnd.Next(0, 100) > 98) + { + int codSel = rnd.Next(1, 3); + switch (codSel) + { + case 1: + manual.Checked = true; + break; + case 2: + mdi.Checked = true; + break; + default: + edit.Checked = true; + break; + } + } + // nel 3% degli altri casi riporto RUN MODE a RUN + else + { + if (rnd.Next(0, 100) > 97) + { + automatic.Checked = true; + } + } + + + // nel 2% dei casi imposto un EXE MODE diverso da AUTO + if (rnd.Next(0, 100) > 98) + { + int codSel = rnd.Next(1, 3); + switch (codSel) + { + case 1: + ready.Checked = true; + break; + case 2: + stopped.Checked = true; + break; + default: + feedhold.Checked = true; + break; + } + } + // nel 3% degli altri casi riporto EXE MODE a AUTO + else + { + if (rnd.Next(0, 100) > 97) + { + running.Checked = true; + } + } + + + + // controllo se ci sia il flag di lettura di un evento M/S/T nel qual caso lo abbasso... + if (utils.IsSetAll(agObj.STROBE_ADP, Strobe.M_CODE)) + { + if (utils.IsSetAll(agObj.STROBE_PLC, Strobe.M_CODE)) agObj.STROBE_PLC -= Strobe.M_CODE; + } + if (utils.IsSetAll(agObj.STROBE_ADP, Strobe.S_CODE)) + { + if (utils.IsSetAll(agObj.STROBE_PLC, Strobe.S_CODE)) agObj.STROBE_PLC -= Strobe.S_CODE; + } + if (utils.IsSetAll(agObj.STROBE_ADP, Strobe.T_CODE)) + { + if (utils.IsSetAll(agObj.STROBE_PLC, Strobe.T_CODE)) agObj.STROBE_PLC -= Strobe.T_CODE; + } + + // controllo se ci sia il flag di lettura di un evento pz ok/ko nel qual caso lo abbasso... + if (utils.IsSetAll(agObj.STROBE_ADP, Strobe.PZ_OK)) + { + if (utils.IsSetAll(agObj.STROBE_PLC, Strobe.PZ_OK)) agObj.STROBE_PLC -= Strobe.PZ_OK; + } + if (utils.IsSetAll(agObj.STROBE_ADP, Strobe.PZ_KO)) + { + if (utils.IsSetAll(agObj.STROBE_PLC, Strobe.PZ_KO)) agObj.STROBE_PLC -= Strobe.PZ_KO; + } + + // controllo se ci sia il flag di lettura di un evento FEED_SPEED nel qual caso lo abbasso... + if (utils.IsSetAll(agObj.STROBE_ADP, Strobe.FEED_SPEED)) + { + if (utils.IsSetAll(agObj.STROBE_PLC, Strobe.FEED_SPEED)) agObj.STROBE_PLC -= Strobe.FEED_SPEED; + } + + // controllo se ci sia il flag di lettura di un evento POS_ACT nel qual caso lo abbasso... + if (utils.IsSetAll(agObj.STROBE_ADP, Strobe.POS_ACT)) + { + if (utils.IsSetAll(agObj.STROBE_PLC, Strobe.POS_ACT)) agObj.STROBE_PLC -= Strobe.POS_ACT; + } + + refreshVisualStrobes(); + refreshCodeMST(); + } + } + + private void refreshVisualStrobes() + { + // aggiorno visualizzazione strobe! + STATUS_STRB_DW0.Text = utils.binaryForm((int)agObj.STRB_DW0); + STATUS_STRB_DW1.Text = utils.binaryForm((int)agObj.STRB_DW1); + STATUS_STRB_DW2.Text = utils.binaryForm((int)agObj.STRB_DW2); + STATUS_STRB_DW3.Text = utils.binaryForm((int)agObj.STRB_DW3); + + STATUS_ACK_DW0.Text = utils.binaryForm((int)agObj.ACK_DW0); + STATUS_ACK_DW1.Text = utils.binaryForm((int)agObj.ACK_DW1); + STATUS_ACK_DW2.Text = utils.binaryForm((int)agObj.ACK_DW2); + STATUS_ACK_DW3.Text = utils.binaryForm((int)agObj.ACK_DW3); + } + + + + /// + /// aggiorna visualizzazione code... + /// + private void refreshCodeMST() + { + lblCodaM.Text = string.Join(",", agObj.codaM[0].ToArray()); + lblCodaT.Text = string.Join(",", agObj.codaT[0].ToArray()); + lblCodaS.Text = string.Join(",", agObj.codaS[0].ToArray()); + } + + private void accodaCodM() + { + if (addCodM.Text.Trim() != "") + { + agObj.appendCodeMST("M", addCodM.Text.Trim(), 0); + addCodM.Text = ""; + } + refreshCodeMST(); + } + private void accodaCodS() + { + if (addCodS.Text.Trim() != "") + { + agObj.appendCodeMST("S", addCodS.Text.Trim(), 0); + addCodS.Text = ""; + } + refreshCodeMST(); + } + private void accodaCodT() + { + if (addCodT.Text.Trim() != "") + { + agObj.appendCodeMST("T", addCodT.Text.Trim(), 0); + addCodT.Text = ""; + } + refreshCodeMST(); + } + + private void addCodM_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + // accodo testo + accodaCodM(); + } + else if (e.KeyCode == Keys.Escape) + { + // svuoto! + addCodM.Text = ""; + } + } + private void addCodM_Leave(object sender, EventArgs e) + { + accodaCodM(); + } + private void addCodS_KeyDown(object sender, KeyEventArgs e) + { + + if (e.KeyCode == Keys.Enter) + { + // accodo testo + accodaCodS(); + } + else if (e.KeyCode == Keys.Escape) + { + // svuoto! + addCodS.Text = ""; + } + } + private void addCodS_Leave(object sender, EventArgs e) + { + accodaCodS(); + } + private void addCodT_KeyDown(object sender, KeyEventArgs e) + { + + if (e.KeyCode == Keys.Enter) + { + // accodo testo + accodaCodT(); + } + else if (e.KeyCode == Keys.Escape) + { + // svuoto! + addCodT.Text = ""; + } + } + private void addCodT_Leave(object sender, EventArgs e) + { + accodaCodT(); + } + + + + #endregion + + private void txtPathFeed_TextChanged(object sender, EventArgs e) + { + hsPathFeed.Value = Convert.ToInt32(txtPathFeed.Text); + } + + private void txtPathFeedOver_TextChanged(object sender, EventArgs e) + { + hsPathFeedOver.Value = Convert.ToInt32(txtPathFeedOver.Text); + } + + private void txtPathSpeedOver_TextChanged(object sender, EventArgs e) + { + hsPathSpeedOver.Value = Convert.ToInt32(txtPathSpeedOver.Text); + } + + private void raiseFlag_FEED_SPEED() + { + // se non c'è flag lo alzo... + if (!utils.IsSetAll(agObj.STROBE_PLC, Strobe.FEED_SPEED)) + { + agObj.STROBE_PLC = agObj.STROBE_PLC | Strobe.FEED_SPEED; + } + } + + private void hsPathFeed_ValueChanged(object sender, EventArgs e) + { + txtPathFeed.Text = hsPathFeed.Value.ToString(); + raiseFlag_FEED_SPEED(); + } + + private void hsPathFeedOver_ValueChanged(object sender, EventArgs e) + { + txtPathFeedOver.Text = hsPathFeedOver.Value.ToString(); + raiseFlag_FEED_SPEED(); + } + + private void hsPathSpeedOver_ValueChanged(object sender, EventArgs e) + { + txtPathSpeedOver.Text = hsPathSpeedOver.Value.ToString(); + raiseFlag_FEED_SPEED(); + } + + #region gestione load conf + + private void mConfGen_Click(object sender, EventArgs e) + { + SetupAdapter setupWIndow = new SetupAdapter(); + setupWIndow.Show(this); + } + + private void mLoadAdaptConf_Click(object sender, EventArgs e) + { + // mostro selettore file x leggere adapter.. + OpenFileDialog openFileDial = new OpenFileDialog(); + + // directory iniziale + openFileDial.InitialDirectory = utils.confDir; // string.Format(@"{0}\{1}", Application.StartupPath, utils.CRS("dataConfPath")); + // Set filter options and filter index. + openFileDial.Filter = "XML Files (.xml)|*.xml|All Files (*.*)|*.*"; + openFileDial.FilterIndex = 1; + // altre opzioni + openFileDial.Multiselect = false; + + // Call the ShowDialog method to show the dialog box. + DialogResult userClickedOK = openFileDial.ShowDialog(); + + // Process input if the user clicked OK. + if (userClickedOK == DialogResult.OK) + { + string XmlConfFile = openFileDial.FileName; + loadXmlFile(XmlConfFile); + lg.Info("XML LOADED"); + loadPersistLayer(defPersLayerFile); + lg.Info("PersLayerFile READ"); + agObj.loadPersData(); + lg.Info("PersLayerFile LOADED"); + } + } + /// + /// Carica file XML della configurazione richiesta + /// + /// + private void loadXmlFile(string XmlConfFile) + { + displayTaskAndWait(string.Format("Loading XML: {0}", XmlConfFile)); + + // Read the configuration object from a file + adpConf = AdapterConf.Deserialize(XmlConfFile); + + // indico quale sia il tipo di adapter + tipoScelto = adpConf.TipoAdapt; + loadAdapterType(); + // carico file XML in web browser... + wbXmlConf.DocumentText = AdapterConf.rawXml(XmlConfFile); + displayTaskAndWait("XML loaded"); + + // avvio macchina con adapter specificato... + if (utils.CRB("autoStartOnLoad")) + { + displayTaskAndWait("Auto Starting..."); + // avvio! + avviaAdapter(); + displayTaskAndWait("Auto Started!"); + } + } + /// + /// salva su file l'oggetto AdapterConf + /// + /// + public void saveXmlFile(string XmlConfFile) + { + AdapterConf.Serialize(XmlConfFile, agObj.currAdpConf); + } + /// + /// Salva su file l'oggetto di persistenza dati + /// + /// + public void savePersistLayer(string filePath) + { + // in primis check semaforo salvataggio... + if (!agObj.adpSaving) + { + // alzo semaforo salvataggio + agObj.adpSaving = true; + // se HO dei dati... + if (agObj.persistenceLayer != null) + { + try + { + utils.WritePlain(agObj.persistenceLayer, filePath); + } + catch (Exception exc) + { + lg.Error(string.Format("Errore salvataggio file{0}{1}", Environment.NewLine, exc)); + } + } + else + { + lg.Info("persistenceLayer null, non salvato..."); + } + // abbasso semaforo salvataggio + agObj.adpSaving = false; + } + } + /// + /// Carica da file l'oggetto di persistenza dati + /// + /// + public void loadPersistLayer(string filePath) + { + // inizializzo prima di leggere... + agObj.persistenceLayer = new Dictionary(); + agObj.persistenceLayer = utils.ReadPlain(filePath); + + // 2017.03.23 check problema files corrotti... + if (agObj.persistenceLayer.Count == 0) + { + // se avesse letto un valore NON coerente (senza righe) PROVA a leggere a ritroso vecchi files... da histPersLayerFile e precedenti... + int numDD = 0; + int maxNumDD = utils.CRI("maxNumDD"); + Dictionary lastRead = new Dictionary(); + // continuo fino a che non leggo almeno 1 riga valida e non ho raggiunto maxDD + while (numDD < maxNumDD && lastRead.Count == 0) + { + // leggo il file storico alla data anticipata... (ci provo...) + try + { + lastRead = utils.ReadPlain(prevPersLayerFile(numDD)); + } + catch + { } + numDD++; + } + // se sono uscito PROVO a passare il file storico letto buono (oppure vuoto...) + agObj.persistenceLayer = lastRead; + } + } + + #endregion + + #region accesso dati produzione + + /// + /// Dati di produzione (su form) + /// + public prodData datiProd + { + get + { + prodData answ = new prodData(); + // carico da form + answ.Operator = OPERATOR_ID.Text; + + // variabili lette da + controlli + answ.Status = stop.Enabled; + answ.Power = Power; + answ.AccTime = AccTime; + answ.EmrStop = estop.Checked; + + answ.FuncMode = ((KeyValuePair)functionalMode.SelectedItem).Key; + + answ.MessageCode = messageCode.Text; + answ.MessageText = messageText.Text; + + // parto vuoto con StatusBitMap... + agObj.STATUS_FLAG = 0; + // aggiorno status flag in base a valori... + if (answ.EmrStop) agObj.STATUS_FLAG = agObj.STATUS_FLAG | StatusBitMap.ESTOP; + if (automatic.Checked) agObj.STATUS_FLAG = agObj.STATUS_FLAG | StatusBitMap.RM_AUTO; + else if (mdi.Checked) agObj.STATUS_FLAG = agObj.STATUS_FLAG | StatusBitMap.RM_MDI; + else if (edit.Checked) agObj.STATUS_FLAG = agObj.STATUS_FLAG | StatusBitMap.RM_EDIT; + else agObj.STATUS_FLAG = agObj.STATUS_FLAG | StatusBitMap.RM_MANUAL; + + if (running.Checked) agObj.STATUS_FLAG = agObj.STATUS_FLAG | StatusBitMap.EM_RUN; + else if (feedhold.Checked) agObj.STATUS_FLAG = agObj.STATUS_FLAG | StatusBitMap.EM_FEEDHOLD; + else if (stopped.Checked) agObj.STATUS_FLAG = agObj.STATUS_FLAG | StatusBitMap.EM_STOP; + else if (ready.Checked) agObj.STATUS_FLAG = agObj.STATUS_FLAG | StatusBitMap.EM_READY; + if (answ.FuncMode != "1") agObj.STATUS_FLAG = agObj.STATUS_FLAG | StatusBitMap.HM; + + // ritorno oggetto! + return answ; + } + } + + private void pzKo_TextChanged(object sender, EventArgs e) + { + agObj.STROBE_PLC = agObj.STROBE_PLC | Strobe.PZ_KO; + txtPzTot.Text = pzTot.ToString(); + } + protected int Power + { + get + { + int answ = 0; + try + { + answ = Convert.ToInt32(txtPower.Text.Trim()); + } + catch + { } + return answ; + } + set + { + txtPower.Text = value.ToString(); + } + } + protected int AccTime + { + get + { + int answ = 0; + try + { + answ = Convert.ToInt32(txtAccTime.Text.Trim()); + } + catch + { } + return answ; + } + set + { + txtAccTime.Text = value.ToString(); + } + } + protected int pzOk + { + get + { + int answ = 0; + try + { + answ = Convert.ToInt32(txtPzOk.Text.Trim()); + } + catch + { } + return answ; + } + set + { + txtPzOk.Text = value.ToString(); + txtPzTot.Text = pzTot.ToString(); + } + } + protected int pzKo + { + get + { + int answ = 0; + try + { + answ = Convert.ToInt32(txtPzKo.Text.Trim()); + } + catch + { } + return answ; + } + set + { + txtPzKo.Text = value.ToString(); + txtPzTot.Text = pzTot.ToString(); + } + } + protected int pzTot + { + get + { + return pzOk + pzKo; + } + } + + #endregion + + #region gestione Path + + + private void cbPathSel_SelectedIndexChanged(object sender, EventArgs e) + { + hsPathFeed.Value = 50; + hsPathFeedOver.Value = 50; + hsPathSpeedOver.Value = 50; + Random rnd = new Random(); + PosAct.Rows[0].Cells[0].Value = rnd.Next(0, 1000); + PosAct.Rows[0].Cells[1].Value = rnd.Next(0, 1000); + PosAct.Rows[0].Cells[2].Value = rnd.Next(0, 1000); + PosAct.Rows[0].Cells[3].Value = rnd.Next(0, 360); + PosAct.Rows[0].Cells[4].Value = rnd.Next(0, 360); + PosAct.Rows[0].Cells[5].Value = rnd.Next(0, 360); + } + + /// + /// Dati PATH + /// + public PathData CurrPath + { + get + { + PathData answ = new PathData(); + + // modifiche dati portati da macchina a path... + answ.ProgramName = program.Text; + answ.ProgrRow = PROG_ROW_NUM.Text; + answ.PartId = partID.Text; + answ.PathType = "LAVORO"; + // pezzi + answ.pzTot = pzOk + pzKo; + + if (automatic.Checked) answ.RunMode = "AUTOMATIC"; + else if (mdi.Checked) answ.RunMode = "MANUAL_DATA_INPUT"; + else if (edit.Checked) answ.RunMode = "EDIT"; + else answ.RunMode = "MANUAL"; + + if (running.Checked) answ.ExeMode = "ACTIVE"; + else if (feedhold.Checked) answ.ExeMode = "FEED_HOLD"; + else if (stopped.Checked) answ.ExeMode = "STOPPED"; + else if (ready.Checked) answ.ExeMode = "READY"; + + answ.ActiveAxes = "1 2 3 4 5 6"; // lascio sempre tutti attivi... + + answ.PathSel = cbPathSel.SelectedIndex; + // FEED/SPEED + answ.PathFeedrate = hsPathFeed.Value; + answ.PathFeedrateOver = hsPathFeedOver.Value; + answ.PathRapidOver = hsPathSpeedOver.Value; + + // posizione attuale + position posAct = new position(); + DataGridViewCellCollection cells = PosAct.Rows[0].Cells; + float.TryParse(cells[0].Value.ToString(), out posAct.x); + float.TryParse(cells[1].Value.ToString(), out posAct.y); + float.TryParse(cells[2].Value.ToString(), out posAct.z); + float.TryParse(cells[3].Value.ToString(), out posAct.i); + float.TryParse(cells[4].Value.ToString(), out posAct.j); + float.TryParse(cells[5].Value.ToString(), out posAct.k); + answ.PathPosAct = posAct; + + // aggiungo altri oggetti... + answ.CodG_Act = "G01 G10 G34 G60"; + answ.SubMode = string.Format("# Asse selezionato {0} #", cbAxNum.SelectedIndex); + + // ritorno oggetto! + return answ; + } + } + + #endregion + + #region gestione UnOp + + + private void cbUnOpSel_SelectedIndexChanged(object sender, EventArgs e) + { + uoToolId.Text = "1"; + uoNumCU.Text = "2"; + uoStatus.Text = "RUN"; + uoVitaRes.Text = "100"; + uoSpeed.Text = "80"; + uoLoad.Text = "80"; + uoAccTime.Text = "0"; + } + + /// + /// Dati UnOp + /// + public UnOpData CurrUnOp + { + get + { + UnOpData answ = new UnOpData(); + + answ.UnOpSel = cbUnOpSel.SelectedIndex; + + int.TryParse(uoToolId.Text, out answ.UnOpToolId); + int.TryParse(uoNumCU.Text, out answ.UnOpNumCU); + answ.UnOpStatus = uoStatus.Text; + int.TryParse(uoVitaRes.Text, out answ.UnOpVitaRes); + answ.UnOpSpeed = uoSpeed.Value; + answ.UnOpLoad = uoLoad.Value; + int.TryParse(uoAccTime.Text, out answ.UnOpAccTime); + + // ritorno oggetto! + return answ; + } + } + + private void uoLoad_Scroll(object sender, ScrollEventArgs e) + { + uoLoadVal.Text = uoLoad.Value.ToString(); + } + + private void uoSpeed_Scroll(object sender, ScrollEventArgs e) + { + uoSpeedVal.Text = uoSpeed.Value.ToString(); + } + + #endregion + + #region gestione assi + + private void cbAxNum_SelectedIndexChanged(object sender, EventArgs e) + { + // aggiorna visualizzazione asse... imposto valori standard x controlli + AxMainProc.Text = "1"; + AxIsMaster.Checked = false; + AxMastId.Text = "0"; + cbAxType.SelectedIndex = 0; + AxDir.Text = "1"; + AxLoad.Value = 50; + AxPosition.Value = 50; + AxFeedAct.Value = 50; + AxFeedOver.Value = 100; + AxAccelAct.Text = "0"; + AxAccTime.Text = "0"; + AxBatt.Text = "100"; + } + + /// + /// Dati di produzione (su form) + /// + public AxisData CurrAxis + { + get + { + Random rnd = new Random(); + AxisData answ = new AxisData(); + answ.AxisSel = cbAxNum.SelectedIndex; + answ.AxisMainProc = AxMainProc.Text; + answ.AxisIsMaster = AxIsMaster.Checked; + answ.AxisMastId = AxMastId.Text; + answ.AxisType = AxisType; + answ.AxisDir = AxDir.Text; + answ.AxisLoad = AxLoad.Value; + answ.AxisPosAct = AxPosition.Value;// + rnd.Next(-2, 2); + answ.AxisPosTgt = AxPosition.Value; + answ.AxisFeedAct = AxFeedAct.Value; + answ.AxisFeedOver = AxFeedOver.Value; + answ.AxisAccel = AxAccelAct.Text; + answ.AxisAccTime = AxAccTime.Text; + answ.AxisBattery = AxBatt.Text; + + // restituisco oggetto + return answ; + } + } + + protected string AxisType + { + get + { + string answ = ""; + try + { + answ = cbAxType.SelectedItem.ToString(); ; + } + catch + { } + return answ; + } + } + + private void xLoad_Scroll(object sender, ScrollEventArgs e) + { + AxLoadValue.Text = AxLoad.Value.ToString(); + } + + private void xPosition_Scroll(object sender, ScrollEventArgs e) + { + + AxPositionValue.Text = AxPosition.Value.ToString(); + } + + private void cLoad_Scroll(object sender, ScrollEventArgs e) + { + AxFeedActValue.Text = AxFeedAct.Value.ToString(); + } + + private void cSpeed_Scroll(object sender, ScrollEventArgs e) + { + AxFeedOverValue.Text = AxFeedOver.Value.ToString(); + } + + #endregion + + + /// + /// Stringa dati monitoraggio mostrata (1 SX)... + /// + public string dataMonitor_1 + { + get + { + return lblOutMessage.Text; + } + set + { + lblOutMessage.Text = value; + } + } + /// + /// Stringa dati monitoraggio mostrata (2 centro)... + /// + public string dataMonitor_2 + { + get + { + return lblOutMessage2.Text; + } + set + { + lblOutMessage2.Text = value; + } + } + /// + /// Stringa dati monitoraggio mostrata (3 dx)... + /// + public string dataMonitor_3 + { + get + { + return lblOutMessage3.Text; + } + set + { + lblOutMessage3.Text = value; + } + } + private void SysErr_01_CheckedChanged(object sender, EventArgs e) + { + // aggiorno il vettore allarmi (da 128 byte) sulla base della selezione dei checkbox (per i primi 9...) - ultimi 3 selezionano 8 allarmi ciascuno... + BitArray bitArray = new BitArray(1024); + + bitArray[7] = SysErr_01.Checked; + bitArray[6] = SysErr_02.Checked; + bitArray[5] = SysErr_03.Checked; + bitArray[4] = PlcErr_01.Checked; + bitArray[3] = PlcErr_02.Checked; + bitArray[2] = PlcErr_03.Checked; + bitArray[1] = CncErr_01.Checked; + bitArray[0] = CncErr_02.Checked; + bitArray[15] = CncErr_03.Checked; + + // ne assegno 8 alla volta... + for (int i = 0; i < 8; i++) + { + bitArray[16 + i] = ErrRT_01.Checked; + bitArray[24 + i] = ErrRT_02.Checked; + bitArray[32 + i] = ErrRT_03.Checked; + } + byte[] newAlarm = utils.ToByteArray(bitArray); + Buffer.BlockCopy(newAlarm, 0, agObj.AlarmFlags, 0, 32); + } + + private void MainForm_FormClosing(object sender, FormClosingEventArgs e) + { + closeAdapter(); + } + + private void closeAdapter() + { + fermaTutto(true, false); + } + /// + /// Ferma tutti i componenti adapter + update buttons + /// + /// determina se fermare il timer (gather) principale (solo se non si chiude) + /// determina se tentare di riconnettersi + private void fermaTutto(bool stopTimer, bool tryRestart) + { + agObj.stopAdapter(tryRestart); + // salvo! + savePersistLayer(defPersLayerFile); + savePersistLayer(histPersLayerFile); + + stop.Enabled = false; + dump.Enabled = false; + start.Enabled = true; + + if (stopTimer) + { + gather.Enabled = false; + agObj.tryDisconnect(); + } + } + + } }