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();
+ }
+ }
+
+ }
}