From e616552dcde765288d45850f21b25c6d2e1fe653 Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Thu, 29 Jun 2017 10:36:45 +0200 Subject: [PATCH 01/21] test su FANUC, fix visualizzaizone debug --- MTC_Adapter/MTC_Adapter/App.config | 6 +- .../DATA/CONF/Adapter_ItemList.xml | 14 +- .../MTC_Adapter/DATA/CONF/AlarmList.map | 1526 ++++-- .../MTC_Adapter/DATA/CONF/AnalogData.map | 8 +- .../MTC_Adapter/DATA/CONF/CounterList.map | 4 +- MTC_Adapter/MTC_Adapter/MainForm.Designer.cs | 4584 +++++++++-------- MTC_Adapter/MTC_Adapter/MainForm.resx | 18 + 7 files changed, 3348 insertions(+), 2812 deletions(-) diff --git a/MTC_Adapter/MTC_Adapter/App.config b/MTC_Adapter/MTC_Adapter/App.config index afdd4a0..f25d26a 100644 --- a/MTC_Adapter/MTC_Adapter/App.config +++ b/MTC_Adapter/MTC_Adapter/App.config @@ -40,9 +40,11 @@ ipPLC = "192.168.139.1"--> - + + + - + diff --git a/MTC_Adapter/MTC_Adapter/DATA/CONF/Adapter_ItemList.xml b/MTC_Adapter/MTC_Adapter/DATA/CONF/Adapter_ItemList.xml index a3cdf8c..9bf8da6 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 - ADAPTER_OSAI - OSAI + ADAPTER_FANUC + FANUC 0 0 0 @@ -41,11 +41,13 @@ ProtMagazzino_01 + + - ProtMagazzino_02 + SlittaMagazzino_ - + Cooler_01 @@ -81,10 +83,6 @@ Path_01 - - Path_02 - - diff --git a/MTC_Adapter/MTC_Adapter/DATA/CONF/AlarmList.map b/MTC_Adapter/MTC_Adapter/DATA/CONF/AlarmList.map index 98bcf27..c799ba6 100644 --- a/MTC_Adapter/MTC_Adapter/DATA/CONF/AlarmList.map +++ b/MTC_Adapter/MTC_Adapter/DATA/CONF/AlarmList.map @@ -1,503 +1,1025 @@ # Commenti con "#", elenco tipo COD_NUM|GRUPPO|LEVEL|DESCRIZIONE completa -000001|PLC|FAULT|[COD 001] - 152 AXIS X DRIVING GEAR NOT READY -000002|PLC|FAULT|[COD 002] - 152 AXIS Y DRIVING GEAR NOT READY -000003|PLC|FAULT|[COD 003] - 152 AXIS Z DRIVING GEAR NOT READY -000004|PLC|FAULT|[COD 004] - 152 AXIS V DRIVING GEAR NOT READY -000005|PLC|FAULT|[COD 005] - 152 AXIS B DRIVING GEAR NOT READY -000006|PLC|FAULT|[COD 006] - 152 AXIS C DRIVING GEAR NOT READY -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] - Potenza spenta -000066|PLC|FAULT|[COD 066] - Assi non riferiti -000067|PLC|FAULT|[COD 067] - Errore nel ciclo azzeramento assi -000068|PLC|FAULT|[COD 068] - Errore abilitazione assi -000069|PLC|FAULT|[COD 069] - Assi non abilitati -000070|PLC|FAULT|[COD 070] - Errore preset origini -000071|PLC|FAULT|[COD 071] - Livello minimo lubrificazione -000072|PLC|FAULT|[COD 072] - Contr.tempo esecuzione background -000073|PLC|FAULT|[COD 073] - Pulsante di start rifiutato -000074|PLC|FAULT|[COD 074] - Troppi assi selezionati -000075|PLC|FAULT|[COD 075] - Teach pendant abilitata -000076|PLC|FAULT|[COD 076] - -000077|PLC|FAULT|[COD 077] - Errore salvataggio file XML -000078|PLC|FAULT|[COD 078] - Parametri AMP assi sovrascritti -000079|PLC|FAULT|[COD 079] - Azion.OsWire in attesa rapid-halt -000080|PLC|FAULT|[COD 080] - Azion.OsWire attesa I/O emer.man. -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] - Err. gestione file mappatura I/O -000085|PLC|FAULT|[COD 085] - Azionamenti guasti -000086|PLC|FAULT|[COD 086] - Errore durante l'inizializzazione -000087|PLC|FAULT|[COD 087] - Watch dog console Top 5 -000088|PLC|FAULT|[COD 088] - Errore gestione reset -000089|PLC|FAULT|[COD 089] - Errore file XML configuraz. PLC -000090|PLC|FAULT|[COD 090] - Errore file XML configuraz. assi -000091|PLC|FAULT|[COD 091] - Errore Ethercat -000092|PLC|FAULT|[COD 092] - -000093|PLC|FAULT|[COD 093] - Azionamento mandrino 4 guasto -000094|PLC|FAULT|[COD 094] - Azionamento mandrino 3 guasto -000095|PLC|FAULT|[COD 095] - Azionamento mandrino 2 guasto -000096|PLC|FAULT|[COD 096] - Azionamento mandrino 1 guasto -000097|PLC|FAULT|[COD 097] - Ripari aperti -000098|PLC|FAULT|[COD 098] - Mancanza pressostato aria -000099|PLC|FAULT|[COD 099] - Intervento termici generici -000100|PLC|FAULT|[COD 100] - Oltrecorsa asse ausiliario -000101|PLC|FAULT|[COD 101] - Teach pendant liveman -000102|PLC|FAULT|[COD 102] - Disabilitazione assi -000103|PLC|FAULT|[COD 103] - -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] - -000111|PLC|FAULT|[COD 111] - -000112|PLC|FAULT|[COD 112] - -000113|PLC|FAULT|[COD 113] - Rotaz. mandr. 1 con pezzo sbloc. -000114|PLC|FAULT|[COD 114] - Rotaz. mandr. 1 con utens. sbloc. -000115|PLC|FAULT|[COD 115] - Err.paritŕ sensori uten.1 blo/sbl -000116|PLC|FAULT|[COD 116] - Memoria utens. in mandr. 1 errata -000117|PLC|FAULT|[COD 117] - Rotaz. mandr. 1 con riferim. alti -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] - -000123|PLC|FAULT|[COD 123] - -000124|PLC|FAULT|[COD 124] - -000125|PLC|FAULT|[COD 125] - -000126|PLC|FAULT|[COD 126] - -000127|PLC|FAULT|[COD 127] - -000128|PLC|FAULT|[COD 128] - -000129|PLC|FAULT|[COD 129] - Pezzo 1 non bloccato -000130|PLC|FAULT|[COD 130] - Pezzo 1 non sbloccato -000131|PLC|FAULT|[COD 131] - Utensile 1 non sbloccato -000132|PLC|FAULT|[COD 132] - Utensile 1 non bloccato -000133|PLC|FAULT|[COD 133] - Cambio utensile 1 fuori fase -000134|PLC|FAULT|[COD 134] - Cappa aspirazione non alta -000135|PLC|FAULT|[COD 135] - Cappa aspirazione non bassa -000136|PLC|FAULT|[COD 136] - Uten.mand.1 non allineato con RCM -000137|PLC|FAULT|[COD 137] - -000138|PLC|FAULT|[COD 138] - -000139|PLC|FAULT|[COD 139] - -000140|PLC|FAULT|[COD 140] - -000141|PLC|FAULT|[COD 141] - -000142|PLC|FAULT|[COD 142] - -000143|PLC|FAULT|[COD 143] - -000144|PLC|FAULT|[COD 144] - -000145|PLC|FAULT|[COD 145] - Errore gestione asse ausiliario w -000146|PLC|FAULT|[COD 146] - Messaggio dal processo 1 -000147|PLC|FAULT|[COD 147] - Pulsante sblocco uten.1 rifiutato -000148|PLC|FAULT|[COD 148] - Rotazione G96 non ammessa Mandr.1 -000149|PLC|FAULT|[COD 149] - Attesa mandrino 1 a regime -000150|PLC|FAULT|[COD 150] - Errore gestione mandrino 1 -000151|PLC|FAULT|[COD 151] - Modalitŕ rotaz.G96/G97 variata P1 -000152|PLC|FAULT|[COD 152] - Errore funzione T programmata Pr1 -000153|PLC|FAULT|[COD 153] - Errore aggiornamento offset ut. 1 -000154|PLC|FAULT|[COD 154] - Errore gestione assi condivisi -000155|PLC|FAULT|[COD 155] - Premere start per iniziare RCM -000156|PLC|FAULT|[COD 156] - Premere start per riprendere lav. -000157|PLC|FAULT|[COD 157] - Errore nel ciclo di ricerca mem. -000158|PLC|FAULT|[COD 158] - Attesa sistema pronto SW/HW -000159|PLC|FAULT|[COD 159] - -000160|PLC|FAULT|[COD 160] - -000161|PLC|FAULT|[COD 161] - Rotaz. mandr. 2 con pezzo sbloc. -000162|PLC|FAULT|[COD 162] - Rotaz. mandr. 2 con utens. sbloc. -000163|PLC|FAULT|[COD 163] - Err.paritŕ sensori uten.2 blo/sbl -000164|PLC|FAULT|[COD 164] - Memoria utens. in mandr. 2 errata -000165|PLC|FAULT|[COD 165] - -000166|PLC|FAULT|[COD 166] - -000167|PLC|FAULT|[COD 167] - --- ATTESA CONFERMA CMS CONTROL -000168|PLC|FAULT|[COD 168] - --- ADAPTER MTCONNECT NON DISPONIBILE -000169|PLC|FAULT|[COD 169] - 720 LIQUIDO NEBULIZZATORE NON OK -000170|PLC|FAULT|[COD 170] - 666 SPINDLE 2 SAFETY DEVICE FAILURE -000171|PLC|FAULT|[COD 171] - 546 B-Z AXIS NOT IN ZERO POSITION -000172|PLC|FAULT|[COD 172] - 229 THERMAL RELAY HYDRAULIC PUMP 2 -000173|PLC|FAULT|[COD 173] - 120 RANGE ACTIVATION NOT OK 2 -000174|PLC|FAULT|[COD 174] - 135 CONVERTER 2 IN WARNING -000175|PLC|FAULT|[COD 175] - 135 CONVERTER 2 IN FAULT -000176|PLC|FAULT|[COD 176] - 520 STALL MODE FUNCTION ACTIVE 2 -000177|PLC|FAULT|[COD 177] - 135 CONVERTER 2 BLOCKED -000178|PLC|FAULT|[COD 178] - 168 CONVERTER 2 DISABLED -000179|PLC|FAULT|[COD 179] - 163 CONVERTER 2 BRAKE OUT OF ORDER -000180|PLC|FAULT|[COD 180] - 100 CONVERTER 2 OFF -000181|PLC|FAULT|[COD 181] - 514 TOOL CRIB 4 PROTECTION NOT IN POSITION -000182|PLC|FAULT|[COD 182] - 181 TOOL CHANGE 2 PROGRAM NOT CALLD -000183|PLC|FAULT|[COD 183] - 489 COUPLING 2 FAILURE -000184|PLC|FAULT|[COD 184] - 177 SERVO-DRIVE BRAKING MODULE OUT OF ORDER A -000185|PLC|FAULT|[COD 185] - 177 SERVO-DRIVE BRAKING MODULE OUT OF ORDER B -000186|PLC|FAULT|[COD 186] - 228 THERMAL RELAY TOOL COOLANT PUMP 2 -000187|PLC|FAULT|[COD 187] - 487 SPINDLE 2 JOINT INSUFFICIENT WATER -000188|PLC|FAULT|[COD 188] - 488 INSUFFICIENT TOOL 2 COOLING -000189|PLC|FAULT|[COD 189] - 493 A+ AXIS ONLY ENABLED TO MOVEMENT -000190|PLC|FAULT|[COD 190] - 490 TOOLS POSITION CHECK 2 -000191|PLC|FAULT|[COD 191] - 432 TOOL 2 NOT UNCLAMPED -000192|PLC|FAULT|[COD 192] - 450 TOOL 2 NOT LOCKED -000193|PLC|FAULT|[COD 193] - 407 OVER EXTRA-STROKE A AXIS -000194|PLC|FAULT|[COD 194] - 407 OVER EXTRA-STROKE B AXIS -000195|PLC|FAULT|[COD 195] - 818 DOORS OPENED WITH SLAB ON MANIPULATOR -000196|PLC|FAULT|[COD 196] - 514 PROTEZIONE MAGAZZINO 3 NON IN POSIZIONE -000197|PLC|FAULT|[COD 197] - 545 UTENSILE ERRATO PER APERTURA MANIPOLATORE -000198|PLC|FAULT|[COD 198] - 545 ROTATION WITHOUT WATER NOT ALLOWED -000199|PLC|FAULT|[COD 199] - 561 LASER NOT IN POSITION -000200|PLC|FAULT|[COD 200] - --- VENTOSA SINCR. 1 NON OK -000201|PLC|FAULT|[COD 201] - --- VENTOSA SINCR. 2 NON OK -000202|PLC|FAULT|[COD 202] - --- VENTOSA SINCR. 3 NON OK -000203|PLC|FAULT|[COD 203] - --- VENTOSA SINCR. 4 NON OK -000204|PLC|FAULT|[COD 204] - --- VENTOSA SINCR. 5 NON OK -000205|PLC|FAULT|[COD 205] - --- VENTOSA SINCR. 6 NON OK -000206|PLC|FAULT|[COD 206] - --- VENTOSA SINCR. 7 NON OK -000207|PLC|FAULT|[COD 207] - --- VENTOSA SINCR. 8 NON OK -000208|PLC|FAULT|[COD 208] - --- VENTOSA SINCR. 9 NON OK -000209|PLC|FAULT|[COD 209] - --- VENTOSA SINCR. 10 NON OK -000210|PLC|FAULT|[COD 210] - --- VENTOSA SINCR. 11 NON OK -000211|PLC|FAULT|[COD 211] - --- VENTOSA SINCR. 12 NON OK -000212|PLC|FAULT|[COD 212] - --- VENTOSA SINCR. 13 NON OK -000213|PLC|FAULT|[COD 213] - --- VENTOSA SINCR. 14 NON OK -000214|PLC|FAULT|[COD 214] - --- VENTOSA SINCR. 15 NON OK -000215|PLC|FAULT|[COD 215] - --- VENTOSA SINCR. 16 NON OK -000216|PLC|FAULT|[COD 216] - --- VENTOSA SINCR. 17 NON OK -000217|PLC|FAULT|[COD 217] - --- VENTOSA SINCR. 18 NON OK -000218|PLC|FAULT|[COD 218] - --- VENTOSA SINCR. 19 NON OK -000219|PLC|FAULT|[COD 219] - --- VENTOSA SINCR. 20 NON OK -000220|PLC|FAULT|[COD 220] - --- VENTOSA SINCR. 21 NON OK -000221|PLC|FAULT|[COD 221] - --- VENTOSA SINCR. 22 NON OK -000222|PLC|FAULT|[COD 222] - --- VENTOSA SINCR. 23 NON OK -000223|PLC|FAULT|[COD 223] - --- VENTOSA SINCR. 24 NON OK -000224|PLC|FAULT|[COD 224] - 534 VENTOSE IN MOVIMENTO -000225|PLC|FAULT|[COD 225] - 503 PULIZIA CONI IN CORSO -000226|PLC|FAULT|[COD 226] - 177 MODULO FRENATURA AZIONAMENTO ASSE U NON OK -000227|PLC|FAULT|[COD 227] - 488 RECYCLED WATER NOT OK -000228|PLC|FAULT|[COD 228] - 443 RAFFREDDAMENTO POMPA VUOTO 2 NON OK -000229|PLC|FAULT|[COD 229] - 538 ROTARY TABLE NOT IN POSITION -000230|PLC|FAULT|[COD 230] - 346 PARATIA NON IN POSIZIONE -000231|PLC|FAULT|[COD 231] - 595 SAFETY BARRIERS -000232|PLC|FAULT|[COD 232] - 666 SETTING FEED ERROR -000233|PLC|FAULT|[COD 233] - 805 SAFETY DOOR LOCK ERROR -000234|PLC|FAULT|[COD 234] - 666 AXES FEED OUT OF RANGE -000235|PLC|FAULT|[COD 235] - 124 INCORRECT VECTRON DATASET CONFIGURATION FILE -000236|PLC|FAULT|[COD 236] - 442 BLADE CRIB 1 NOT IN POSITION -000237|PLC|FAULT|[COD 237] - 442 BLADE CRIB 2 NOT IN POSITION -000238|PLC|FAULT|[COD 238] - 125 VECTRON PARAMETERS WRITING IN PROGRESS -000239|PLC|FAULT|[COD 239] - 546 Z AXIS NOT IN POSITION -000240|PLC|FAULT|[COD 240] - 285 THERMAL RELAY LOAD ROLLER HYDRAULIC PUMP MOTOR -000241|PLC|FAULT|[COD 241] - --- AUTOMATIC ZEROING HEIDENAHIN NOT OK -000242|PLC|FAULT|[COD 242] - --- HEIDENAHIN ACTIVATION NOT ALLOWED WITH TOOL -000243|PLC|FAULT|[COD 243] - 561 HEIDENAHIN NOT IN POSITION -000244|PLC|FAULT|[COD 244] - 442 BLADE CRIB NOT IN POSITION -000245|PLC|FAULT|[COD 245] - 533 COLLET NOT IN POSITION -000246|PLC|FAULT|[COD 246] - 199 SPINDLE 1 NOT IN POSITION -000247|PLC|FAULT|[COD 247] - 124 INCORRECT TRANSPORTS CONFIGURATION FILE -000248|PLC|FAULT|[COD 248] - 556 INTERRUPTED LOAD/UNLOAD CYCLE -000249|PLC|FAULT|[COD 249] - 553 LOADING/UNLOADING CYCLE BLOCKED -000250|PLC|FAULT|[COD 250] - 575 PIECE IN LOADING/UNLOADING PHASE -000251|PLC|FAULT|[COD 251] - 548 ROLLER LOADER NOT IN POSITION -000252|PLC|FAULT|[COD 252] - 576 PIECE-LOADER EMPTY -000253|PLC|FAULT|[COD 253] - 135 CONVERTER UNLOAD BELT NOT READY -000254|PLC|FAULT|[COD 254] - 135 CONVERTER MACHINE BELT NOT READY -000255|PLC|FAULT|[COD 255] - 135 CONVERTER LOAD BELT NOT READY -000256|PLC|FAULT|[COD 256] - 135 CONVERTER UNLOAD ROLLER NOT READY -000257|PLC|FAULT|[COD 257] - 135 CONVERTER MACHINE ROLLER NOT READY -000258|PLC|FAULT|[COD 258] - 135 CONVERTER LOAD ROLLER NOT READY -000259|PLC|FAULT|[COD 259] - 549 SAFETY UNLOAD BELT -000260|PLC|FAULT|[COD 260] - 549 SAFETY MACHINE BELT -000261|PLC|FAULT|[COD 261] - 549 SAFETY LOAD BELT -000262|PLC|FAULT|[COD 262] - 549 SAFETY UNLOAD ROLLER -000263|PLC|FAULT|[COD 263] - 549 SAFETY MACHINE ROLLER -000264|PLC|FAULT|[COD 264] - 549 SAFETY LOAD ROLLER -000265|PLC|FAULT|[COD 265] - 599 MANUAL MOVEMENT UNLOAD BELT NOT ALLOWED -000266|PLC|FAULT|[COD 266] - 599 MANUAL MOVEMENT MACHINE BELT NOT ALLOWED -000267|PLC|FAULT|[COD 267] - 599 MANUAL MOVEMENT LOAD BELT NOT ALLOWED -000268|PLC|FAULT|[COD 268] - 599 MANUAL MOVEMENT UNLOAD ROLLER NOT ALLOWED -000269|PLC|FAULT|[COD 269] - 599 MANUAL MOVEMENT MACHINE ROLLER NOT ALLOWED -000270|PLC|FAULT|[COD 270] - 599 MANUAL MOVEMENT LOAD ROLLER NOT ALLOWED -000271|PLC|FAULT|[COD 271] - 125 UNLOAD BELT PARAMETERS ERROR -000272|PLC|FAULT|[COD 272] - 125 MACHINE BELT PARAMETERS ERROR -000273|PLC|FAULT|[COD 273] - 125 LOAD BELT PARAMETERS ERROR -000274|PLC|FAULT|[COD 274] - 125 UNLOAD ROLLER PARAMETERS ERROR -000275|PLC|FAULT|[COD 275] - 125 MACHINE ROLLER PARAMETERS ERROR -000276|PLC|FAULT|[COD 276] - 125 LOAD ROLLER PARAMETERS ERROR -000277|PLC|FAULT|[COD 277] - 285 THERMAL RELAY MACHINE ROLLER MOTOR -000278|PLC|FAULT|[COD 278] - 285 THERMAL RELAY UNLOAD ROLLER MOTOR -000279|PLC|FAULT|[COD 279] - 285 THERMAL RELAY LOAD BELT MOTOR -000280|PLC|FAULT|[COD 280] - 285 THERMAL RELAY MACHINE BELT MOTOR -000281|PLC|FAULT|[COD 281] - 285 THERMAL RELAY UNLOAD BELT MOTOR -000282|PLC|FAULT|[COD 282] - 125 SAVING FGE POINTS -000283|PLC|FAULT|[COD 283] - 287 PROTEZIONE TERMICA IMPIANTO CERIO -000284|PLC|FAULT|[COD 284] - 659 ACCENSIONE PROLUNGATA POMPA CERIO -000285|PLC|FAULT|[COD 285] - 705 AMP SETTINGS FOR N.T.S. ERROR -000286|PLC|FAULT|[COD 286] - 779 NTS IN LOW POSITION -000287|PLC|FAULT|[COD 287] - 779 NTS NOT IN POSITION -000288|PLC|FAULT|[COD 288] - 599 Q MOVEMENT NOT ALLOWED -000289|PLC|FAULT|[COD 289] - 493 Q+ AXIS ONLY ENABLED TO MOVEMENT -000290|PLC|FAULT|[COD 290] - 493 Q- AXIS ONLY ENABLED TO MOVEMENT -000291|PLC|FAULT|[COD 291] - 250 SHAPES DETECTOR ON SPINDLE -000292|PLC|FAULT|[COD 292] - 250 PULIZIA PIANO IN CORSO -000293|PLC|FAULT|[COD 293] - 124 ERRORE FILE CONFIGURAZINE SICU-CU -000294|PLC|FAULT|[COD 294] - 442 TOOL CRIB 2 NOT IN POSITION -000295|PLC|FAULT|[COD 295] - 514 TOOL CRIB 2 PROTECTION NOT IN POSITION -000296|PLC|FAULT|[COD 296] - 545 AXES NOT IN PROBING POSITION -000297|PLC|FAULT|[COD 297] - 251 PROBE CYCLE INTERRUPTED -000298|PLC|FAULT|[COD 298] - 251 PRESETTING LASER CYCLE INTERRUPTED -000299|PLC|FAULT|[COD 299] - 495 SINGLE AXIS ZEROING NOT ENABLE -000300|PLC|FAULT|[COD 300] - 285 RELAIS THERMIQUE ROULEAUX MACHINE -000301|PLC|FAULT|[COD 301] - 438 SPINDLE OFF WITH PROBE ACTIVATED -000302|PLC|FAULT|[COD 302] - 538 TABLE NOT POSITIONED -000303|PLC|FAULT|[COD 303] - 294 SUCTION CUPS NOT IN POSITION -000304|PLC|FAULT|[COD 304] - 547 COLLISION MANIPULATOR AND PROBE -000305|PLC|FAULT|[COD 305] - 197 REMOVE PARTS FROM MANIPULATOR -000306|PLC|FAULT|[COD 306] - 545 AXES NOT IN POSITION TO OPEN MANIPULATOR -000307|PLC|FAULT|[COD 307] - 538 AXIS MOVEMENT NOT ALLOWED WITH MANIPULATOR OPEN -000308|PLC|FAULT|[COD 308] - 305 MANIPLATOR VACUUM CLAMPS NOT OK -000309|PLC|FAULT|[COD 309] - 197 PART NOT LOCKED BY MANIPULATOR -000310|PLC|FAULT|[COD 310] - 785 CONSENSO APERTURA PORTE NEGATO -000311|PLC|FAULT|[COD 311] - 482 PIECE CLEANING WATER NOT OK -000312|PLC|FAULT|[COD 312] - 488 INSUFFICIENT TOOL DRILL COOLING -000313|PLC|FAULT|[COD 313] - 482 MANIPULATOR WATER NOT OK -000314|PLC|FAULT|[COD 314] - 146 FIELDBUS KO (375) -000315|PLC|FAULT|[COD 315] - 250 CICLO RAVVIVA FORETTI IN CORSO -000316|PLC|FAULT|[COD 316] - 250 CICLO RAVVIVA MOLE IN CORSO -000317|PLC|FAULT|[COD 317] - 407 OVER EXTRA-STROKE X AXIS -000318|PLC|FAULT|[COD 318] - 407 OVER EXTRA-STROKE Y AXIS -000319|PLC|FAULT|[COD 319] - 407 OVER EXTRA-STROKE Z AXIS -000320|PLC|FAULT|[COD 320] - 407 OVER EXTRA-STROKE V AXIS -000321|PLC|FAULT|[COD 321] - 148 AXES PRE-ALERTED -000322|PLC|FAULT|[COD 322] - 147 AXES ALERTED -000323|PLC|FAULT|[COD 323] - 149 Z AXIS PRE-ALERTED -000324|PLC|FAULT|[COD 324] - 149 W AXIS PRE-ALERTED -000325|PLC|FAULT|[COD 325] - 747 LAYING THE TOOL DOWN TO THE FLOOR (START) -000326|PLC|FAULT|[COD 326] - 748 TAKE UP TOOL FROM THE FLOOR (START) -000327|PLC|FAULT|[COD 327] - 151 DRIVING GEARS NOT POWERED -000328|PLC|FAULT|[COD 328] - 150 SERVO DRIVES NOT ENABLED -000329|PLC|FAULT|[COD 329] - 656 CLUTCH LOCKED -000330|PLC|FAULT|[COD 330] - 655 CLUTCH NOT LOCKED -000331|PLC|FAULT|[COD 331] - 404 Z-AXIS BALANCING INSUFFICIENT -000332|PLC|FAULT|[COD 332] - 464 TOOL LIFE EXHAUSTED -000333|PLC|FAULT|[COD 333] - 484 MACHINE STOPPED -000334|PLC|FAULT|[COD 334] - 177 SERVO-DRIVE BRAKING MODULE OUT OF ORDER X -000335|PLC|FAULT|[COD 335] - 177 SERVO-DRIVE BRAKING MODULE OUT OF ORDER Y -000336|PLC|FAULT|[COD 336] - 177 SERVO-DRIVE BRAKING MODULE OUT OF ORDER Z -000337|PLC|FAULT|[COD 337] - 305 VACUUM CLAMPING INEFFICIENT -000338|PLC|FAULT|[COD 338] - 177 SERVO-DRIVE BRAKING MODULE OUT OF ORDER V -000339|PLC|FAULT|[COD 339] - 593 SAFETY GUARDS -000340|PLC|FAULT|[COD 340] - 594 CHECK DOORS SECURITY -000341|PLC|FAULT|[COD 341] - 584 OPENING DOORS REQUEST -000342|PLC|FAULT|[COD 342] - 487 SPINDLE JOINT INSUFFICIENT WATER -000343|PLC|FAULT|[COD 343] - 488 INSUFFICIENT TOOL COOLING -000344|PLC|FAULT|[COD 344] - 594 FRONT DOORS NOT LOCKED -000345|PLC|FAULT|[COD 345] - 594 BACK DOORS NOT LOCKED -000346|PLC|FAULT|[COD 346] - 584 LATERAL DOOR NOT LOCKED -000347|PLC|FAULT|[COD 347] - 124 INCORRECT PLC CONFIGURATION FILE -000348|PLC|FAULT|[COD 348] - 124 INCORRECT I/O FILE -000349|PLC|FAULT|[COD 349] - AXES AMP PARAMETER OVERWRITE -000350|PLC|FAULT|[COD 350] - ERROR DURING BOOT -000351|PLC|FAULT|[COD 351] - 124 INCORRECT CONFIG.COLLISIONI FILE -000352|PLC|FAULT|[COD 352] - 124 INCORRECT CONFIG.COMPENSAZIONE FILE -000353|PLC|FAULT|[COD 353] - 124 INCORRECT CONFIG.MACCHINA FILE -000354|PLC|FAULT|[COD 354] - 489 COUPLING FAILURE -000355|PLC|FAULT|[COD 355] - 146 BUS ETHERCAT NOT OK -000356|PLC|FAULT|[COD 356] - 145 AXIS BOARDS NOT READY -000357|PLC|FAULT|[COD 357] - 583 MACHINE OFF -000358|PLC|FAULT|[COD 358] - 443 VACUUM PUMP COOLING SYSTEM MALFUNCTION -000359|PLC|FAULT|[COD 359] - 406 EMERGENCY PUSH-BUTTON -000360|PLC|FAULT|[COD 360] - 583 E-STOP CONTACT OPEN -000361|PLC|FAULT|[COD 361] - 667 SAFETY CIRCUIT FAILURE -000362|PLC|FAULT|[COD 362] - 666 SAFETY DEVICE FAILURE -000363|PLC|FAULT|[COD 363] - 127 OVERRIDE AT ZERO -000364|PLC|FAULT|[COD 364] - 305 VACUUM CLAMPING 2 INEFFICIENT -000365|PLC|FAULT|[COD 365] - 127 RAPID OVERRIDE AT ZERO -000366|PLC|FAULT|[COD 366] - 406 POWER OFF BUTTON PUSHED -000367|PLC|FAULT|[COD 367] - 577 TABLE IN MOTION -000368|PLC|FAULT|[COD 368] - 590 FRONT DOORS NOT CLOSED -000369|PLC|FAULT|[COD 369] - 590 BACK DOORS NOT CLOSED -000370|PLC|FAULT|[COD 370] - 230 THERMAL RELAY VACUUM PUMP 1 -000371|PLC|FAULT|[COD 371] - 230 THERMAL RELAY VACUUM PUMP 2 -000372|PLC|FAULT|[COD 372] - 229 THERMAL RELAY HYDRAULIC PUMP -000373|PLC|FAULT|[COD 373] - 641 TABLE CHANGE INTERRUPTED -000374|PLC|FAULT|[COD 374] - 534 TABLE LOCKING PIN NOT UP -000375|PLC|FAULT|[COD 375] - 534 TABLE LOCKING PIN NOT DOWN -000376|PLC|FAULT|[COD 376] - 403 OVERHEATING ELECTRICAL BOX -000377|PLC|FAULT|[COD 377] - 260 AUTOMATIC ADJUSTMENT OF FEED OVERRIDE IN PROGRESS -000378|PLC|FAULT|[COD 378] - 305 VACUUM CLAMPING 1 INEFFICIENT -000379|PLC|FAULT|[COD 379] - 611 TOOL CHANGE MOTOR NON IN POSITION -000380|PLC|FAULT|[COD 380] - 459 B AXIS LOCKED -000381|PLC|FAULT|[COD 381] - 458 B AXIS UNLOCKED -000382|PLC|FAULT|[COD 382] - 459 C AXIS LOCKED -000383|PLC|FAULT|[COD 383] - 458 C AXIS UNLOCKED -000384|PLC|FAULT|[COD 384] - 305 VACUUM CLAMPING INC. PLANE 1 INEFFICIENT -000385|PLC|FAULT|[COD 385] - 305 VACUUM CLAMPING INC. PLANE 2 INEFFICIENT -000386|PLC|FAULT|[COD 386] - 229 THERMAL RELAY RECYCLE WATER PUMP -000387|PLC|FAULT|[COD 387] - 228 THERMAL RELAY TOOL COOLANT PUMP -000388|PLC|FAULT|[COD 388] - 590 CABIN DOOR NOT CLOSED -000389|PLC|FAULT|[COD 389] - 179 TOOL CHANGE MOTOR NOT POWERED/ENABLED -000390|PLC|FAULT|[COD 390] - 300 RIGHT PRESSURE CLAMPING INEFFICIENT -000391|PLC|FAULT|[COD 391] - 300 LEFT PRESSURE CLAMPING INEFFICIENT -000392|PLC|FAULT|[COD 392] - 360 REFERENCE CYLINDERS 1 NOT IN POSITION -000393|PLC|FAULT|[COD 393] - 360 REFERENCE CYLINDERS 2 NOT IN POSITION -000394|PLC|FAULT|[COD 394] - 124 INCORRECT CONFIG.MOTORI CANBUS -000395|PLC|FAULT|[COD 395] - 135 TOOL CHANGE CONVERTER BLOCKED -000396|PLC|FAULT|[COD 396] - 135 TOOL CHANGE CONVERTER ON WARNIG -000397|PLC|FAULT|[COD 397] - 530 EXTERNAL MACHINE PANEL ENABLED -000398|PLC|FAULT|[COD 398] - 412 AXIS AUTOMATIC ZEROING UNDER WAY -000399|PLC|FAULT|[COD 399] - 442 TOOL CRIB 1 NOT IN POSITION -000400|PLC|FAULT|[COD 400] - 514 TOOL CRIB 1 PROTECTION NOT IN POSITION -000401|PLC|FAULT|[COD 401] - 495 AXIS ZEROING WITH TOOL IN ELECTROSPINDLE -000402|PLC|FAULT|[COD 402] - 606 PART-PROGRAM NOT FOUND (PC) -000403|PLC|FAULT|[COD 403] - 163 CONVERTER BRAKE OUT OF ORDER -000404|PLC|FAULT|[COD 404] - 603 PRESS START CYCLE -000405|PLC|FAULT|[COD 405] - 001 TOOLTABLES CHECKED? PRESS SOFTKEY «YES» -000406|PLC|FAULT|[COD 406] - 002 ARE YOU SURE? PRESS SOFTKEY «YES» -000407|PLC|FAULT|[COD 407] - 606 PART-PROGRAM NOT FOUND -000408|PLC|FAULT|[COD 408] - 135 CONVERTER BLOCKED -000409|PLC|FAULT|[COD 409] - 106 STOP FROM EXTERNAL PUSH-BUTTON PANEL -000410|PLC|FAULT|[COD 410] - 105 MACHINE IN HOLD STATUS -000411|PLC|FAULT|[COD 411] - 168 CONVERTER DISABLED -000412|PLC|FAULT|[COD 412] - 700 TABLES UNDER MODIFICATION -000413|PLC|FAULT|[COD 413] - 161 VECTRON COMMUNICATION ERROR -000414|PLC|FAULT|[COD 414] - 162 VECTRON FATAL ERROR: STOP THE MACHINE -000415|PLC|FAULT|[COD 415] - 176 FAULTY SPINDLE POWER SUPPLY -000416|PLC|FAULT|[COD 416] - 125 WEAR CONSTANT OUT OF RANGE -000417|PLC|FAULT|[COD 417] - 125 WRONG PARAMETER READING -000418|PLC|FAULT|[COD 418] - 125 PRESSURE RANGE NOT CORRECT -000419|PLC|FAULT|[COD 419] - 106 STOP FROM EXTERNAL PUSH-BUTTON CONTROL PANEL -000420|PLC|FAULT|[COD 420] - 125 COMPENSATION VERSOR ERROR -000421|PLC|FAULT|[COD 421] - 245 THERMAL CUT-OUT TOOL CRIB PROTECTION -000422|PLC|FAULT|[COD 422] - 741 TOOL CHANGE CODE PROCESS NOT SELECTED -000423|PLC|FAULT|[COD 423] - 390 T FUNCTION NOT PERMITTED -000424|PLC|FAULT|[COD 424] - 804 MOVE FEED/RAPID OVERRIDE -000425|PLC|FAULT|[COD 425] - 661 UNLOAD THE TOOL AND LOAD IT IN HIS POSITION ON THE TOOL CRIB -000426|PLC|FAULT|[COD 426] - 657 PLATFORM BALANCE HEAD NOT IN POSITION -000427|PLC|FAULT|[COD 427] - 741 HEADS 1 NOT SELECTED -000428|PLC|FAULT|[COD 428] - 488 RAFFREDDAMENTO DISCO INFERIORE -000429|PLC|FAULT|[COD 429] - 294 DISCO TAGLIO INFERIORE NON IN POSIZIONE -000430|PLC|FAULT|[COD 430] - 181 TOOL CHANGE PROGRAM NOT CALLED -000431|PLC|FAULT|[COD 431] - 546 Z AXIS NOT IN ZERO POSITION -000432|PLC|FAULT|[COD 432] - 545 B AXIS NOT IN POSITION -000433|PLC|FAULT|[COD 433] - 689 TOOLMANAGER WARNING -000434|PLC|FAULT|[COD 434] - 689 TOOLMANAGER WARNING -000435|PLC|FAULT|[COD 435] - 250 PRESETTING LASER ENABLED -000436|PLC|FAULT|[COD 436] - 817 HEADS SELECTION ERROR -000437|PLC|FAULT|[COD 437] - 517 INCORRECT VALUE FROM TABLE -000438|PLC|FAULT|[COD 438] - 390 M07 FUNCTION NOT PERMITTED -000439|PLC|FAULT|[COD 439] - 411 AXES WITHOUT ZERO POINTS (M97-HOME) -000440|PLC|FAULT|[COD 440] - 390 T FUNCTION NOT PERMITTED -000441|PLC|FAULT|[COD 441] - 399 GREASE TANK EMPTY -000442|PLC|FAULT|[COD 442] - 400 LUBRICATION INEFFICIENT -000443|PLC|FAULT|[COD 443] - 152 DRIVING GEARS NOT READY -000444|PLC|FAULT|[COD 444] - 530 SETTING MODE ENABLED -000445|PLC|FAULT|[COD 445] - 398 INSUFFICIENT AIR PRESSURE -000446|PLC|FAULT|[COD 446] - 528 “PROGRAM TEST” MODE ACTIVE -000447|PLC|FAULT|[COD 447] - 125 FLOATING WRONG PARAMETER -000448|PLC|FAULT|[COD 448] - 561 PROBE NOT IN POSITION -000449|PLC|FAULT|[COD 449] - 100 CONVERTER OFF -000450|PLC|FAULT|[COD 450] - 520 STALL MODE FUNCTION ACTIVE -000451|PLC|FAULT|[COD 451] - 120 RANGE ACTIVATION NOT OK -000452|PLC|FAULT|[COD 452] - 135 CONVERTER IN FAULT -000453|PLC|FAULT|[COD 453] - 135 CONVERTER IN WARNING -000454|PLC|FAULT|[COD 454] - 235 SPINDLE THERMAL PROTECTION -000455|PLC|FAULT|[COD 455] - 522 SPINDLE R.P.M. TOO HIGH -000456|PLC|FAULT|[COD 456] - 115 SPINDLE SPEED CONTROL -000457|PLC|FAULT|[COD 457] - 498 MAXIMAL CHARGE ON THE SPINDLE -000458|PLC|FAULT|[COD 458] - 441 SPINDLE COOLING SYSTEM MALFUNCTION -000459|PLC|FAULT|[COD 459] - 672 COOLANT CIRCUIT OUT OF ORDER -000460|PLC|FAULT|[COD 460] - 490 TOOLS POSITION CHECK -000461|PLC|FAULT|[COD 461] - 666 SPINDLE SAFETY DEVICE FAILURE -000462|PLC|FAULT|[COD 462] - --- TURNING OFF --- -000463|PLC|FAULT|[COD 463] - 450 TOOL NOT LOCKED -000464|PLC|FAULT|[COD 464] - 432 TOOL NOT UNCLAMPED -000465|PLC|FAULT|[COD 465] - 503 TOOL-CHANGE IN EXECUTION -000466|PLC|FAULT|[COD 466] - 504 TOOL-CHANGE INTERRUPTED -000467|PLC|FAULT|[COD 467] - 493 Z+ AXIS ONLY ENABLED TO MOVEMENT -000468|PLC|FAULT|[COD 468] - 493 Z- AXIS ONLY ENABLED TO MOVEMENT -000469|PLC|FAULT|[COD 469] - 493 Y+ AXIS ONLY ENABLED TO MOVEMENT -000470|PLC|FAULT|[COD 470] - 493 Y- AXIS ONLY ENABLED TO MOVEMENT -000471|PLC|FAULT|[COD 471] - 493 X+ AXIS ONLY ENABLED TO MOVEMENT -000472|PLC|FAULT|[COD 472] - 493 X- AXIS ONLY ENABLED TO MOVEMENT -000473|PLC|FAULT|[COD 473] - 493 C+ AXIS ONLY ENABLED TO MOVEMENT -000474|PLC|FAULT|[COD 474] - 493 C- AXIS ONLY ENABLED TO MOVEMENT -000475|PLC|FAULT|[COD 475] - 493 B+ AXIS ONLY ENABLED TO MOVEMENT -000476|PLC|FAULT|[COD 476] - 493 B- AXIS ONLY ENABLED TO MOVEMENT -000477|PLC|FAULT|[COD 477] - 484 MACHINE STOPPED BY LUBRICATION INEFFICIENT -000478|PLC|FAULT|[COD 478] - 654 VERIFY AXES COLLISION -000479|PLC|FAULT|[COD 479] - --- SAFETY COLLISION FUNCTION OFF --- -000480|PLC|FAULT|[COD 480] - 573 POSITIVE OVERSTROKE FLOATING AXIS -000481|PLC|FAULT|[COD 481] - 573 NEGATIVE OVERSTROKE FLOATING AXIS -000482|PLC|FAULT|[COD 482] - 538 TABLE MOVEMENT NOT ALLOWED -000483|PLC|FAULT|[COD 483] - 538 TABLE RELEASE NOT ALLOWED -000484|PLC|FAULT|[COD 484] - 235 SONDA TERMICA MANDRINO 2 -000485|PLC|FAULT|[COD 485] - 522 GIRI TROPPO ELEVATI MANDRINO 2 -000486|PLC|FAULT|[COD 486] - 115 CONTROLLO VELOCITŔ MANDRINO 2 -000487|PLC|FAULT|[COD 487] - 498 CARICO MASSIMO SUL MANDRINO 2 -000488|PLC|FAULT|[COD 488] - 176 MANDRINO 2 NON INIZIALIZZATO -000489|PLC|FAULT|[COD 489] - 741 UNITŔ OPERATRICE 2: MANDRINO NON SELEZIONATO O IN CAMBIO UTENSIL -000490|PLC|FAULT|[COD 490] - 538 AXES MOVEMENT NOT ENABLED-PROBE IN POSITION -000491|PLC|FAULT|[COD 491] - 595 SAFETY LOAD BARRIERS -000492|PLC|FAULT|[COD 492] - 595 SAFETY UNLOAD BARRIERS -000493|PLC|FAULT|[COD 493] - 550 CHECK POPUP MODULE -000494|PLC|FAULT|[COD 494] - 550 ASCENT POPUP MODULE NOT ALLOWE -000495|PLC|FAULT|[COD 495] - 550 POPUP MODULE UP -000496|PLC|FAULT|[COD 496] - 552 CHECK INPUT BULKHEAD -000497|PLC|FAULT|[COD 497] - 552 CHECK OUTPUT BULKHEAD -000498|PLC|FAULT|[COD 498] - 551 WAITING INPUT BULKHEAD OPEN -000499|PLC|FAULT|[COD 499] - 551 WAITING INPUT BULKHEAD CLOSE -000500|PLC|FAULT|[COD 500] - 551 WAITING OUTPUT BULKHEAD OPEN -000501|PLC|FAULT|[COD 501] - 551 WAITING OUTPUT BULKHEAD CLOSE -000502|PLC|FAULT|[COD 502] - 550 WAITING POPUP IN POSITION \ 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 55e0c09..59c12a6 100644 --- a/MTC_Adapter/MTC_Adapter/DATA/CONF/CounterList.map +++ b/MTC_Adapter/MTC_Adapter/DATA/CONF/CounterList.map @@ -21,8 +21,8 @@ 020|VacAct_02_Count |COUNT 021|Lubro_01_Num |COUNT 022|SlittaTastatore_Count |COUNT -023|ProtMagazzino_01_Count |COUNT -024|ProtMagazzino_02_Count |COUNT +023|SlittaMagazzino_01_Count |COUNT +024|ProtMagazzino_01_Count |COUNT 025|UnOp_01_NumCambiUT |COUNT 026|Axis_01_AccTime |COUNT 027|Axis_02_AccTime |COUNT diff --git a/MTC_Adapter/MTC_Adapter/MainForm.Designer.cs b/MTC_Adapter/MTC_Adapter/MainForm.Designer.cs index dd4688e..9f9ef86 100644 --- a/MTC_Adapter/MTC_Adapter/MainForm.Designer.cs +++ b/MTC_Adapter/MTC_Adapter/MainForm.Designer.cs @@ -28,2316 +28,2318 @@ /// private void InitializeComponent() { - this.components = new System.ComponentModel.Container(); - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm)); - this.PlcErr_02 = new System.Windows.Forms.CheckBox(); - this.gather = new System.Windows.Forms.Timer(this.components); - this.groupBox4 = new System.Windows.Forms.GroupBox(); - this.label8 = new System.Windows.Forms.Label(); - this.label7 = new System.Windows.Forms.Label(); - this.messageText = new System.Windows.Forms.TextBox(); - this.messageCode = new System.Windows.Forms.TextBox(); - this.label6 = new System.Windows.Forms.Label(); - this.AxFeedOverValue = new System.Windows.Forms.TextBox(); - this.AxFeedActValue = new System.Windows.Forms.TextBox(); - this.label9 = new System.Windows.Forms.Label(); - this.AxFeedOver = new System.Windows.Forms.HScrollBar(); - this.label10 = new System.Windows.Forms.Label(); - this.AxFeedAct = new System.Windows.Forms.HScrollBar(); - this.partID = new System.Windows.Forms.TextBox(); - this.label13 = new System.Windows.Forms.Label(); - this.functionalMode = new System.Windows.Forms.ComboBox(); - this.label12 = new System.Windows.Forms.Label(); - this.PosAct = new System.Windows.Forms.DataGridView(); - this.X = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.Y = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.Z = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.I = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.J = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.K = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.PlcErr_03 = new System.Windows.Forms.CheckBox(); - this.PlcErr_01 = new System.Windows.Forms.CheckBox(); - this.groupBox3 = new System.Windows.Forms.GroupBox(); - this.ErrRT_03 = new System.Windows.Forms.CheckBox(); - this.ErrRT_02 = new System.Windows.Forms.CheckBox(); - this.CncErr_02 = new System.Windows.Forms.CheckBox(); - this.CncErr_03 = new System.Windows.Forms.CheckBox(); - this.CncErr_01 = new System.Windows.Forms.CheckBox(); - this.SysErr_03 = new System.Windows.Forms.CheckBox(); - this.ErrRT_01 = new System.Windows.Forms.CheckBox(); - this.SysErr_02 = new System.Windows.Forms.CheckBox(); - this.SysErr_01 = new System.Windows.Forms.CheckBox(); - this.groupBox2 = new System.Windows.Forms.GroupBox(); - this.AxAccelAct = new System.Windows.Forms.TextBox(); - this.label37 = new System.Windows.Forms.Label(); - this.AxBatt = new System.Windows.Forms.TextBox(); - this.label36 = new System.Windows.Forms.Label(); - this.AxAccTime = new System.Windows.Forms.TextBox(); - this.label11 = new System.Windows.Forms.Label(); - this.AxDir = new System.Windows.Forms.TextBox(); - this.label35 = new System.Windows.Forms.Label(); - this.label34 = new System.Windows.Forms.Label(); - this.cbAxType = new System.Windows.Forms.ComboBox(); - this.AxMastId = new System.Windows.Forms.TextBox(); - this.label33 = new System.Windows.Forms.Label(); - this.AxIsMaster = new System.Windows.Forms.CheckBox(); - this.AxMainProc = new System.Windows.Forms.TextBox(); - this.label32 = new System.Windows.Forms.Label(); - this.cbAxNum = new System.Windows.Forms.ComboBox(); - this.label31 = new System.Windows.Forms.Label(); - this.AxPositionValue = new System.Windows.Forms.TextBox(); - this.AxLoadValue = new System.Windows.Forms.TextBox(); - this.label5 = new System.Windows.Forms.Label(); - this.AxPosition = new System.Windows.Forms.HScrollBar(); - this.label4 = new System.Windows.Forms.Label(); - this.label3 = new System.Windows.Forms.Label(); - this.AxLoad = new System.Windows.Forms.HScrollBar(); - this.program = new System.Windows.Forms.TextBox(); - this.label2 = new System.Windows.Forms.Label(); - this.groupBox9 = new System.Windows.Forms.GroupBox(); - this.txtPzKo = new System.Windows.Forms.TextBox(); - this.label25 = new System.Windows.Forms.Label(); - this.txtPzOk = new System.Windows.Forms.TextBox(); - this.label23 = new System.Windows.Forms.Label(); - this.txtPzTot = new System.Windows.Forms.TextBox(); - this.label21 = new System.Windows.Forms.Label(); - this.OPERATOR_ID = new System.Windows.Forms.TextBox(); - this.label19 = new System.Windows.Forms.Label(); - this.PROG_ROW_NUM = new System.Windows.Forms.TextBox(); - this.label17 = new System.Windows.Forms.Label(); - this.groupBox11 = new System.Windows.Forms.GroupBox(); - this.STATUS_STRB_DW3 = new System.Windows.Forms.TextBox(); - this.label49 = new System.Windows.Forms.Label(); - this.STATUS_STRB_DW2 = new System.Windows.Forms.TextBox(); - this.label47 = new System.Windows.Forms.Label(); - this.STATUS_STRB_DW1 = new System.Windows.Forms.TextBox(); - this.label18 = new System.Windows.Forms.Label(); - this.STATUS_STRB_DW0 = new System.Windows.Forms.TextBox(); - this.lblPLC_ADP = new System.Windows.Forms.Label(); - this.statusStrip1 = new System.Windows.Forms.StatusStrip(); - this.lblApp = new System.Windows.Forms.ToolStripStatusLabel(); - this.lblVers = new System.Windows.Forms.ToolStripStatusLabel(); - this.MainProgrBar = new System.Windows.Forms.ToolStripProgressBar(); - this.lblComStats = new System.Windows.Forms.ToolStripStatusLabel(); - this.lblStatus = new System.Windows.Forms.ToolStripStatusLabel(); - this.groupBox13 = new System.Windows.Forms.GroupBox(); - this.cbPathSel = new System.Windows.Forms.ComboBox(); - this.label38 = new System.Windows.Forms.Label(); - this.label29 = new System.Windows.Forms.Label(); - this.txtPathSpeedOver = new System.Windows.Forms.TextBox(); - this.label28 = new System.Windows.Forms.Label(); - this.hsPathSpeedOver = new System.Windows.Forms.HScrollBar(); - this.txtPathFeedOver = new System.Windows.Forms.TextBox(); - this.label27 = new System.Windows.Forms.Label(); - this.hsPathFeedOver = new System.Windows.Forms.HScrollBar(); - this.txtPathFeed = new System.Windows.Forms.TextBox(); - this.label26 = new System.Windows.Forms.Label(); - this.hsPathFeed = new System.Windows.Forms.HScrollBar(); - this.menuStrip1 = new System.Windows.Forms.MenuStrip(); - this.fILEToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.mLoadAdaptConf = new System.Windows.Forms.ToolStripMenuItem(); - this.sETUPToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.mConfGen = new System.Windows.Forms.ToolStripMenuItem(); - this.lblCurrAdapt = new System.Windows.Forms.Label(); - this.tabCtrlMain = new System.Windows.Forms.TabControl(); - this.tpStatus = new System.Windows.Forms.TabPage(); - this.gbMonitor = new System.Windows.Forms.GroupBox(); - this.lblOutMessage3 = new System.Windows.Forms.Label(); - this.lblOutMessage = new System.Windows.Forms.Label(); - this.lblOutMessage2 = new System.Windows.Forms.Label(); - this.groupBox6 = new System.Windows.Forms.GroupBox(); - this.STATUS_ACK_DW3 = new System.Windows.Forms.TextBox(); - this.label52 = new System.Windows.Forms.Label(); - this.STATUS_ACK_DW2 = new System.Windows.Forms.TextBox(); - this.label51 = new System.Windows.Forms.Label(); - this.STATUS_ACK_DW1 = new System.Windows.Forms.TextBox(); - this.label50 = new System.Windows.Forms.Label(); - this.STATUS_ACK_DW0 = new System.Windows.Forms.TextBox(); - this.label48 = new System.Windows.Forms.Label(); - this.groupBox1 = new System.Windows.Forms.GroupBox(); - this.dump = new System.Windows.Forms.Button(); - this.stop = new System.Windows.Forms.Button(); - this.start = new System.Windows.Forms.Button(); - this.port = new System.Windows.Forms.TextBox(); - this.label1 = new System.Windows.Forms.Label(); - this.tbConf = new System.Windows.Forms.TabPage(); - this.wbXmlConf = new System.Windows.Forms.WebBrowser(); - this.tpSIM = new System.Windows.Forms.TabPage(); - this.groupBox5 = new System.Windows.Forms.GroupBox(); - this.uoSpeedVal = new System.Windows.Forms.TextBox(); - this.uoLoadVal = new System.Windows.Forms.TextBox(); - this.label45 = new System.Windows.Forms.Label(); - this.uoSpeed = new System.Windows.Forms.HScrollBar(); - this.label46 = new System.Windows.Forms.Label(); - this.uoLoad = new System.Windows.Forms.HScrollBar(); - this.uoVitaRes = new System.Windows.Forms.TextBox(); - this.label43 = new System.Windows.Forms.Label(); - this.uoAccTime = new System.Windows.Forms.TextBox(); - this.label44 = new System.Windows.Forms.Label(); - this.uoToolId = new System.Windows.Forms.TextBox(); - this.label40 = new System.Windows.Forms.Label(); - this.uoStatus = new System.Windows.Forms.TextBox(); - this.label41 = new System.Windows.Forms.Label(); - this.uoNumCU = new System.Windows.Forms.TextBox(); - this.label42 = new System.Windows.Forms.Label(); - this.cbUnOpSel = new System.Windows.Forms.ComboBox(); - this.label39 = new System.Windows.Forms.Label(); - this.Execution = new System.Windows.Forms.GroupBox(); - this.ready = new System.Windows.Forms.RadioButton(); - this.feedhold = new System.Windows.Forms.RadioButton(); - this.stopped = new System.Windows.Forms.RadioButton(); - this.running = new System.Windows.Forms.RadioButton(); - this.mode = new System.Windows.Forms.GroupBox(); - this.edit = new System.Windows.Forms.RadioButton(); - this.mdi = new System.Windows.Forms.RadioButton(); - this.manual = new System.Windows.Forms.RadioButton(); - this.automatic = new System.Windows.Forms.RadioButton(); - this.groupBox7 = new System.Windows.Forms.GroupBox(); - this.D1_UUID = new System.Windows.Forms.Label(); - this.D1_ID = new System.Windows.Forms.Label(); - this.D1_NAME = new System.Windows.Forms.Label(); - this.lblAT = new System.Windows.Forms.Label(); - this.txtAccTime = new System.Windows.Forms.TextBox(); - this.label30 = new System.Windows.Forms.Label(); - this.txtPower = new System.Windows.Forms.TextBox(); - this.label16 = new System.Windows.Forms.Label(); - this.label15 = new System.Windows.Forms.Label(); - this.label14 = new System.Windows.Forms.Label(); - this.groupBox10 = new System.Windows.Forms.GroupBox(); - this.enableDataSim = new System.Windows.Forms.CheckBox(); - this.groupBox8 = new System.Windows.Forms.GroupBox(); - this.estop = new System.Windows.Forms.CheckBox(); - this.groupBox12 = new System.Windows.Forms.GroupBox(); - this.lblCodaT = new System.Windows.Forms.Label(); - this.addCodT = new System.Windows.Forms.TextBox(); - this.label24 = new System.Windows.Forms.Label(); - this.lblCodaS = new System.Windows.Forms.Label(); - this.addCodS = new System.Windows.Forms.TextBox(); - this.label22 = new System.Windows.Forms.Label(); - this.lblCodaM = new System.Windows.Forms.Label(); - this.addCodM = new System.Windows.Forms.TextBox(); - this.label20 = new System.Windows.Forms.Label(); - this.notifyIcon1 = new System.Windows.Forms.NotifyIcon(this.components); - this.trayMenu = new System.Windows.Forms.ContextMenuStrip(this.components); - this.groupBox4.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.PosAct)).BeginInit(); - this.groupBox3.SuspendLayout(); - this.groupBox2.SuspendLayout(); - this.groupBox9.SuspendLayout(); - this.groupBox11.SuspendLayout(); - this.statusStrip1.SuspendLayout(); - this.groupBox13.SuspendLayout(); - this.menuStrip1.SuspendLayout(); - this.tabCtrlMain.SuspendLayout(); - this.tpStatus.SuspendLayout(); - this.gbMonitor.SuspendLayout(); - this.groupBox6.SuspendLayout(); - this.groupBox1.SuspendLayout(); - this.tbConf.SuspendLayout(); - this.tpSIM.SuspendLayout(); - this.groupBox5.SuspendLayout(); - this.Execution.SuspendLayout(); - this.mode.SuspendLayout(); - this.groupBox7.SuspendLayout(); - this.groupBox10.SuspendLayout(); - this.groupBox8.SuspendLayout(); - this.groupBox12.SuspendLayout(); - this.SuspendLayout(); - // - // PlcErr_02 - // - this.PlcErr_02.AutoSize = true; - this.PlcErr_02.Location = new System.Drawing.Point(128, 53); - this.PlcErr_02.Margin = new System.Windows.Forms.Padding(4); - this.PlcErr_02.Name = "PlcErr_02"; - this.PlcErr_02.Size = new System.Drawing.Size(92, 21); - this.PlcErr_02.TabIndex = 6; - this.PlcErr_02.Text = "PlcErr_05"; - this.PlcErr_02.UseVisualStyleBackColor = true; - this.PlcErr_02.CheckedChanged += new System.EventHandler(this.SysErr_01_CheckedChanged); - // - // gather - // - this.gather.Tick += new System.EventHandler(this.gather_Tick); - // - // groupBox4 - // - this.groupBox4.Controls.Add(this.label8); - this.groupBox4.Controls.Add(this.label7); - this.groupBox4.Controls.Add(this.messageText); - this.groupBox4.Controls.Add(this.messageCode); - this.groupBox4.Location = new System.Drawing.Point(5, 514); - this.groupBox4.Margin = new System.Windows.Forms.Padding(4); - this.groupBox4.Name = "groupBox4"; - this.groupBox4.Padding = new System.Windows.Forms.Padding(4); - this.groupBox4.Size = new System.Drawing.Size(505, 64); - this.groupBox4.TabIndex = 44; - this.groupBox4.TabStop = false; - this.groupBox4.Text = "Message"; - // - // label8 - // - this.label8.AutoSize = true; - this.label8.Location = new System.Drawing.Point(157, 32); - this.label8.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label8.Name = "label8"; - this.label8.Size = new System.Drawing.Size(35, 17); - this.label8.TabIndex = 19; - this.label8.Text = "Text"; - // - // label7 - // - this.label7.AutoSize = true; - this.label7.Location = new System.Drawing.Point(5, 32); - this.label7.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label7.Name = "label7"; - this.label7.Size = new System.Drawing.Size(41, 17); - this.label7.TabIndex = 18; - this.label7.Text = "Code"; - // - // messageText - // - this.messageText.Location = new System.Drawing.Point(201, 28); - this.messageText.Margin = new System.Windows.Forms.Padding(4); - this.messageText.Name = "messageText"; - this.messageText.Size = new System.Drawing.Size(285, 22); - this.messageText.TabIndex = 14; - this.messageText.Leave += new System.EventHandler(this.message_Leave); - // - // messageCode - // - this.messageCode.Location = new System.Drawing.Point(67, 28); - this.messageCode.Margin = new System.Windows.Forms.Padding(4); - this.messageCode.Name = "messageCode"; - this.messageCode.Size = new System.Drawing.Size(81, 22); - this.messageCode.TabIndex = 13; - // - // label6 - // - this.label6.AutoSize = true; - this.label6.Location = new System.Drawing.Point(16, 452); - this.label6.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label6.Name = "label6"; - this.label6.Size = new System.Drawing.Size(0, 17); - this.label6.TabIndex = 43; - // - // AxFeedOverValue - // - this.AxFeedOverValue.Location = new System.Drawing.Point(353, 201); - this.AxFeedOverValue.Margin = new System.Windows.Forms.Padding(4); - this.AxFeedOverValue.Name = "AxFeedOverValue"; - this.AxFeedOverValue.Size = new System.Drawing.Size(132, 22); - this.AxFeedOverValue.TabIndex = 26; - // - // AxFeedActValue - // - this.AxFeedActValue.Location = new System.Drawing.Point(353, 175); - this.AxFeedActValue.Margin = new System.Windows.Forms.Padding(4); - this.AxFeedActValue.Name = "AxFeedActValue"; - this.AxFeedActValue.Size = new System.Drawing.Size(132, 22); - this.AxFeedActValue.TabIndex = 25; - // - // label9 - // - this.label9.AutoSize = true; - this.label9.Location = new System.Drawing.Point(16, 204); - this.label9.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label9.Name = "label9"; - this.label9.Size = new System.Drawing.Size(75, 17); - this.label9.TabIndex = 24; - this.label9.Text = "Feed Over"; - // - // AxFeedOver - // - this.AxFeedOver.Location = new System.Drawing.Point(108, 201); - this.AxFeedOver.Maximum = 150; - this.AxFeedOver.Name = "AxFeedOver"; - this.AxFeedOver.Size = new System.Drawing.Size(224, 18); - this.AxFeedOver.TabIndex = 23; - this.AxFeedOver.Scroll += new System.Windows.Forms.ScrollEventHandler(this.cSpeed_Scroll); - // - // label10 - // - this.label10.AutoSize = true; - this.label10.Location = new System.Drawing.Point(16, 178); - this.label10.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label10.Name = "label10"; - this.label10.Size = new System.Drawing.Size(64, 17); - this.label10.TabIndex = 22; - this.label10.Text = "Feed Act"; - // - // AxFeedAct - // - this.AxFeedAct.Location = new System.Drawing.Point(108, 175); - this.AxFeedAct.Name = "AxFeedAct"; - this.AxFeedAct.Size = new System.Drawing.Size(224, 18); - this.AxFeedAct.TabIndex = 20; - this.AxFeedAct.Scroll += new System.Windows.Forms.ScrollEventHandler(this.cLoad_Scroll); - // - // partID - // - this.partID.Location = new System.Drawing.Point(107, 55); - this.partID.Margin = new System.Windows.Forms.Padding(4); - this.partID.Name = "partID"; - this.partID.Size = new System.Drawing.Size(132, 22); - this.partID.TabIndex = 49; - // - // label13 - // - this.label13.AutoSize = true; - this.label13.Location = new System.Drawing.Point(41, 59); - this.label13.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label13.Name = "label13"; - this.label13.Size = new System.Drawing.Size(51, 17); - this.label13.TabIndex = 48; - this.label13.Text = "Part ID"; - // - // functionalMode - // - this.functionalMode.FormattingEnabled = true; - this.functionalMode.Location = new System.Drawing.Point(107, 87); - this.functionalMode.Margin = new System.Windows.Forms.Padding(4); - this.functionalMode.Name = "functionalMode"; - this.functionalMode.Size = new System.Drawing.Size(389, 24); - this.functionalMode.TabIndex = 47; - // - // label12 - // - this.label12.AutoSize = true; - this.label12.Location = new System.Drawing.Point(20, 91); - this.label12.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label12.Name = "label12"; - this.label12.Size = new System.Drawing.Size(69, 17); - this.label12.TabIndex = 46; - this.label12.Text = "Halt Type"; - // - // PosAct - // - this.PosAct.AllowUserToAddRows = false; - this.PosAct.AllowUserToDeleteRows = false; - this.PosAct.AllowUserToResizeColumns = false; - this.PosAct.AllowUserToResizeRows = false; - this.PosAct.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; - this.PosAct.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm)); + this.PlcErr_02 = new System.Windows.Forms.CheckBox(); + this.gather = new System.Windows.Forms.Timer(this.components); + this.groupBox4 = new System.Windows.Forms.GroupBox(); + this.label8 = new System.Windows.Forms.Label(); + this.label7 = new System.Windows.Forms.Label(); + this.messageText = new System.Windows.Forms.TextBox(); + this.messageCode = new System.Windows.Forms.TextBox(); + this.label6 = new System.Windows.Forms.Label(); + this.AxFeedOverValue = new System.Windows.Forms.TextBox(); + this.AxFeedActValue = new System.Windows.Forms.TextBox(); + this.label9 = new System.Windows.Forms.Label(); + this.AxFeedOver = new System.Windows.Forms.HScrollBar(); + this.label10 = new System.Windows.Forms.Label(); + this.AxFeedAct = new System.Windows.Forms.HScrollBar(); + this.partID = new System.Windows.Forms.TextBox(); + this.label13 = new System.Windows.Forms.Label(); + this.functionalMode = new System.Windows.Forms.ComboBox(); + this.label12 = new System.Windows.Forms.Label(); + this.PosAct = new System.Windows.Forms.DataGridView(); + this.X = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Y = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Z = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.I = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.J = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.K = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.PlcErr_03 = new System.Windows.Forms.CheckBox(); + this.PlcErr_01 = new System.Windows.Forms.CheckBox(); + this.groupBox3 = new System.Windows.Forms.GroupBox(); + this.ErrRT_03 = new System.Windows.Forms.CheckBox(); + this.ErrRT_02 = new System.Windows.Forms.CheckBox(); + this.CncErr_02 = new System.Windows.Forms.CheckBox(); + this.CncErr_03 = new System.Windows.Forms.CheckBox(); + this.CncErr_01 = new System.Windows.Forms.CheckBox(); + this.SysErr_03 = new System.Windows.Forms.CheckBox(); + this.ErrRT_01 = new System.Windows.Forms.CheckBox(); + this.SysErr_02 = new System.Windows.Forms.CheckBox(); + this.SysErr_01 = new System.Windows.Forms.CheckBox(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.AxAccelAct = new System.Windows.Forms.TextBox(); + this.label37 = new System.Windows.Forms.Label(); + this.AxBatt = new System.Windows.Forms.TextBox(); + this.label36 = new System.Windows.Forms.Label(); + this.AxAccTime = new System.Windows.Forms.TextBox(); + this.label11 = new System.Windows.Forms.Label(); + this.AxDir = new System.Windows.Forms.TextBox(); + this.label35 = new System.Windows.Forms.Label(); + this.label34 = new System.Windows.Forms.Label(); + this.cbAxType = new System.Windows.Forms.ComboBox(); + this.AxMastId = new System.Windows.Forms.TextBox(); + this.label33 = new System.Windows.Forms.Label(); + this.AxIsMaster = new System.Windows.Forms.CheckBox(); + this.AxMainProc = new System.Windows.Forms.TextBox(); + this.label32 = new System.Windows.Forms.Label(); + this.cbAxNum = new System.Windows.Forms.ComboBox(); + this.label31 = new System.Windows.Forms.Label(); + this.AxPositionValue = new System.Windows.Forms.TextBox(); + this.AxLoadValue = new System.Windows.Forms.TextBox(); + this.label5 = new System.Windows.Forms.Label(); + this.AxPosition = new System.Windows.Forms.HScrollBar(); + this.label4 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.AxLoad = new System.Windows.Forms.HScrollBar(); + this.program = new System.Windows.Forms.TextBox(); + this.label2 = new System.Windows.Forms.Label(); + this.groupBox9 = new System.Windows.Forms.GroupBox(); + this.txtPzKo = new System.Windows.Forms.TextBox(); + this.label25 = new System.Windows.Forms.Label(); + this.txtPzOk = new System.Windows.Forms.TextBox(); + this.label23 = new System.Windows.Forms.Label(); + this.txtPzTot = new System.Windows.Forms.TextBox(); + this.label21 = new System.Windows.Forms.Label(); + this.OPERATOR_ID = new System.Windows.Forms.TextBox(); + this.label19 = new System.Windows.Forms.Label(); + this.PROG_ROW_NUM = new System.Windows.Forms.TextBox(); + this.label17 = new System.Windows.Forms.Label(); + this.groupBox11 = new System.Windows.Forms.GroupBox(); + this.STATUS_STRB_DW3 = new System.Windows.Forms.TextBox(); + this.label49 = new System.Windows.Forms.Label(); + this.STATUS_STRB_DW2 = new System.Windows.Forms.TextBox(); + this.label47 = new System.Windows.Forms.Label(); + this.STATUS_STRB_DW1 = new System.Windows.Forms.TextBox(); + this.label18 = new System.Windows.Forms.Label(); + this.STATUS_STRB_DW0 = new System.Windows.Forms.TextBox(); + this.lblPLC_ADP = new System.Windows.Forms.Label(); + this.statusStrip1 = new System.Windows.Forms.StatusStrip(); + this.lblApp = new System.Windows.Forms.ToolStripStatusLabel(); + this.lblVers = new System.Windows.Forms.ToolStripStatusLabel(); + this.MainProgrBar = new System.Windows.Forms.ToolStripProgressBar(); + this.lblComStats = new System.Windows.Forms.ToolStripStatusLabel(); + this.lblStatus = new System.Windows.Forms.ToolStripStatusLabel(); + this.groupBox13 = new System.Windows.Forms.GroupBox(); + this.cbPathSel = new System.Windows.Forms.ComboBox(); + this.label38 = new System.Windows.Forms.Label(); + this.label29 = new System.Windows.Forms.Label(); + this.txtPathSpeedOver = new System.Windows.Forms.TextBox(); + this.label28 = new System.Windows.Forms.Label(); + this.hsPathSpeedOver = new System.Windows.Forms.HScrollBar(); + this.txtPathFeedOver = new System.Windows.Forms.TextBox(); + this.label27 = new System.Windows.Forms.Label(); + this.hsPathFeedOver = new System.Windows.Forms.HScrollBar(); + this.txtPathFeed = new System.Windows.Forms.TextBox(); + this.label26 = new System.Windows.Forms.Label(); + this.hsPathFeed = new System.Windows.Forms.HScrollBar(); + this.menuStrip1 = new System.Windows.Forms.MenuStrip(); + this.fILEToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.mLoadAdaptConf = new System.Windows.Forms.ToolStripMenuItem(); + this.sETUPToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.mConfGen = new System.Windows.Forms.ToolStripMenuItem(); + this.lblCurrAdapt = new System.Windows.Forms.Label(); + this.tabCtrlMain = new System.Windows.Forms.TabControl(); + this.tpStatus = new System.Windows.Forms.TabPage(); + this.gbMonitor = new System.Windows.Forms.GroupBox(); + this.lblOutMessage3 = new System.Windows.Forms.Label(); + this.lblOutMessage = new System.Windows.Forms.Label(); + this.lblOutMessage2 = new System.Windows.Forms.Label(); + this.groupBox6 = new System.Windows.Forms.GroupBox(); + this.STATUS_ACK_DW3 = new System.Windows.Forms.TextBox(); + this.label52 = new System.Windows.Forms.Label(); + this.STATUS_ACK_DW2 = new System.Windows.Forms.TextBox(); + this.label51 = new System.Windows.Forms.Label(); + this.STATUS_ACK_DW1 = new System.Windows.Forms.TextBox(); + this.label50 = new System.Windows.Forms.Label(); + this.STATUS_ACK_DW0 = new System.Windows.Forms.TextBox(); + this.label48 = new System.Windows.Forms.Label(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.dump = new System.Windows.Forms.Button(); + this.stop = new System.Windows.Forms.Button(); + this.start = new System.Windows.Forms.Button(); + this.port = new System.Windows.Forms.TextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.tbConf = new System.Windows.Forms.TabPage(); + this.wbXmlConf = new System.Windows.Forms.WebBrowser(); + this.tpSIM = new System.Windows.Forms.TabPage(); + this.groupBox5 = new System.Windows.Forms.GroupBox(); + this.uoSpeedVal = new System.Windows.Forms.TextBox(); + this.uoLoadVal = new System.Windows.Forms.TextBox(); + this.label45 = new System.Windows.Forms.Label(); + this.uoSpeed = new System.Windows.Forms.HScrollBar(); + this.label46 = new System.Windows.Forms.Label(); + this.uoLoad = new System.Windows.Forms.HScrollBar(); + this.uoVitaRes = new System.Windows.Forms.TextBox(); + this.label43 = new System.Windows.Forms.Label(); + this.uoAccTime = new System.Windows.Forms.TextBox(); + this.label44 = new System.Windows.Forms.Label(); + this.uoToolId = new System.Windows.Forms.TextBox(); + this.label40 = new System.Windows.Forms.Label(); + this.uoStatus = new System.Windows.Forms.TextBox(); + this.label41 = new System.Windows.Forms.Label(); + this.uoNumCU = new System.Windows.Forms.TextBox(); + this.label42 = new System.Windows.Forms.Label(); + this.cbUnOpSel = new System.Windows.Forms.ComboBox(); + this.label39 = new System.Windows.Forms.Label(); + this.Execution = new System.Windows.Forms.GroupBox(); + this.ready = new System.Windows.Forms.RadioButton(); + this.feedhold = new System.Windows.Forms.RadioButton(); + this.stopped = new System.Windows.Forms.RadioButton(); + this.running = new System.Windows.Forms.RadioButton(); + this.mode = new System.Windows.Forms.GroupBox(); + this.edit = new System.Windows.Forms.RadioButton(); + this.mdi = new System.Windows.Forms.RadioButton(); + this.manual = new System.Windows.Forms.RadioButton(); + this.automatic = new System.Windows.Forms.RadioButton(); + this.groupBox7 = new System.Windows.Forms.GroupBox(); + this.D1_UUID = new System.Windows.Forms.Label(); + this.D1_ID = new System.Windows.Forms.Label(); + this.D1_NAME = new System.Windows.Forms.Label(); + this.lblAT = new System.Windows.Forms.Label(); + this.txtAccTime = new System.Windows.Forms.TextBox(); + this.label30 = new System.Windows.Forms.Label(); + this.txtPower = new System.Windows.Forms.TextBox(); + this.label16 = new System.Windows.Forms.Label(); + this.label15 = new System.Windows.Forms.Label(); + this.label14 = new System.Windows.Forms.Label(); + this.groupBox10 = new System.Windows.Forms.GroupBox(); + this.enableDataSim = new System.Windows.Forms.CheckBox(); + this.groupBox8 = new System.Windows.Forms.GroupBox(); + this.estop = new System.Windows.Forms.CheckBox(); + this.groupBox12 = new System.Windows.Forms.GroupBox(); + this.lblCodaT = new System.Windows.Forms.Label(); + this.addCodT = new System.Windows.Forms.TextBox(); + this.label24 = new System.Windows.Forms.Label(); + this.lblCodaS = new System.Windows.Forms.Label(); + this.addCodS = new System.Windows.Forms.TextBox(); + this.label22 = new System.Windows.Forms.Label(); + this.lblCodaM = new System.Windows.Forms.Label(); + this.addCodM = new System.Windows.Forms.TextBox(); + this.label20 = new System.Windows.Forms.Label(); + this.notifyIcon1 = new System.Windows.Forms.NotifyIcon(this.components); + this.trayMenu = new System.Windows.Forms.ContextMenuStrip(this.components); + this.groupBox4.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.PosAct)).BeginInit(); + this.groupBox3.SuspendLayout(); + this.groupBox2.SuspendLayout(); + this.groupBox9.SuspendLayout(); + this.groupBox11.SuspendLayout(); + this.statusStrip1.SuspendLayout(); + this.groupBox13.SuspendLayout(); + this.menuStrip1.SuspendLayout(); + this.tabCtrlMain.SuspendLayout(); + this.tpStatus.SuspendLayout(); + this.gbMonitor.SuspendLayout(); + this.groupBox6.SuspendLayout(); + this.groupBox1.SuspendLayout(); + this.tbConf.SuspendLayout(); + this.tpSIM.SuspendLayout(); + this.groupBox5.SuspendLayout(); + this.Execution.SuspendLayout(); + this.mode.SuspendLayout(); + this.groupBox7.SuspendLayout(); + this.groupBox10.SuspendLayout(); + this.groupBox8.SuspendLayout(); + this.groupBox12.SuspendLayout(); + this.SuspendLayout(); + // + // PlcErr_02 + // + this.PlcErr_02.AutoSize = true; + this.PlcErr_02.Location = new System.Drawing.Point(128, 53); + this.PlcErr_02.Margin = new System.Windows.Forms.Padding(4); + this.PlcErr_02.Name = "PlcErr_02"; + this.PlcErr_02.Size = new System.Drawing.Size(92, 21); + this.PlcErr_02.TabIndex = 6; + this.PlcErr_02.Text = "PlcErr_05"; + this.PlcErr_02.UseVisualStyleBackColor = true; + this.PlcErr_02.CheckedChanged += new System.EventHandler(this.SysErr_01_CheckedChanged); + // + // gather + // + this.gather.Tick += new System.EventHandler(this.gather_Tick); + // + // groupBox4 + // + this.groupBox4.Controls.Add(this.label8); + this.groupBox4.Controls.Add(this.label7); + this.groupBox4.Controls.Add(this.messageText); + this.groupBox4.Controls.Add(this.messageCode); + this.groupBox4.Location = new System.Drawing.Point(5, 514); + this.groupBox4.Margin = new System.Windows.Forms.Padding(4); + this.groupBox4.Name = "groupBox4"; + this.groupBox4.Padding = new System.Windows.Forms.Padding(4); + this.groupBox4.Size = new System.Drawing.Size(505, 64); + this.groupBox4.TabIndex = 44; + this.groupBox4.TabStop = false; + this.groupBox4.Text = "Message"; + // + // label8 + // + this.label8.AutoSize = true; + this.label8.Location = new System.Drawing.Point(157, 32); + this.label8.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(35, 17); + this.label8.TabIndex = 19; + this.label8.Text = "Text"; + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Location = new System.Drawing.Point(5, 32); + this.label7.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(41, 17); + this.label7.TabIndex = 18; + this.label7.Text = "Code"; + // + // messageText + // + this.messageText.Location = new System.Drawing.Point(201, 28); + this.messageText.Margin = new System.Windows.Forms.Padding(4); + this.messageText.Name = "messageText"; + this.messageText.Size = new System.Drawing.Size(285, 22); + this.messageText.TabIndex = 14; + this.messageText.Leave += new System.EventHandler(this.message_Leave); + // + // messageCode + // + this.messageCode.Location = new System.Drawing.Point(67, 28); + this.messageCode.Margin = new System.Windows.Forms.Padding(4); + this.messageCode.Name = "messageCode"; + this.messageCode.Size = new System.Drawing.Size(81, 22); + this.messageCode.TabIndex = 13; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(16, 452); + this.label6.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(0, 17); + this.label6.TabIndex = 43; + // + // AxFeedOverValue + // + this.AxFeedOverValue.Location = new System.Drawing.Point(353, 201); + this.AxFeedOverValue.Margin = new System.Windows.Forms.Padding(4); + this.AxFeedOverValue.Name = "AxFeedOverValue"; + this.AxFeedOverValue.Size = new System.Drawing.Size(132, 22); + this.AxFeedOverValue.TabIndex = 26; + // + // AxFeedActValue + // + this.AxFeedActValue.Location = new System.Drawing.Point(353, 175); + this.AxFeedActValue.Margin = new System.Windows.Forms.Padding(4); + this.AxFeedActValue.Name = "AxFeedActValue"; + this.AxFeedActValue.Size = new System.Drawing.Size(132, 22); + this.AxFeedActValue.TabIndex = 25; + // + // label9 + // + this.label9.AutoSize = true; + this.label9.Location = new System.Drawing.Point(16, 204); + this.label9.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(75, 17); + this.label9.TabIndex = 24; + this.label9.Text = "Feed Over"; + // + // AxFeedOver + // + this.AxFeedOver.Location = new System.Drawing.Point(108, 201); + this.AxFeedOver.Maximum = 150; + this.AxFeedOver.Name = "AxFeedOver"; + this.AxFeedOver.Size = new System.Drawing.Size(224, 18); + this.AxFeedOver.TabIndex = 23; + this.AxFeedOver.Scroll += new System.Windows.Forms.ScrollEventHandler(this.cSpeed_Scroll); + // + // label10 + // + this.label10.AutoSize = true; + this.label10.Location = new System.Drawing.Point(16, 178); + this.label10.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(64, 17); + this.label10.TabIndex = 22; + this.label10.Text = "Feed Act"; + // + // AxFeedAct + // + this.AxFeedAct.Location = new System.Drawing.Point(108, 175); + this.AxFeedAct.Name = "AxFeedAct"; + this.AxFeedAct.Size = new System.Drawing.Size(224, 18); + this.AxFeedAct.TabIndex = 20; + this.AxFeedAct.Scroll += new System.Windows.Forms.ScrollEventHandler(this.cLoad_Scroll); + // + // partID + // + this.partID.Location = new System.Drawing.Point(107, 55); + this.partID.Margin = new System.Windows.Forms.Padding(4); + this.partID.Name = "partID"; + this.partID.Size = new System.Drawing.Size(132, 22); + this.partID.TabIndex = 49; + // + // label13 + // + this.label13.AutoSize = true; + this.label13.Location = new System.Drawing.Point(41, 59); + this.label13.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label13.Name = "label13"; + this.label13.Size = new System.Drawing.Size(51, 17); + this.label13.TabIndex = 48; + this.label13.Text = "Part ID"; + // + // functionalMode + // + this.functionalMode.FormattingEnabled = true; + this.functionalMode.Location = new System.Drawing.Point(107, 87); + this.functionalMode.Margin = new System.Windows.Forms.Padding(4); + this.functionalMode.Name = "functionalMode"; + this.functionalMode.Size = new System.Drawing.Size(389, 24); + this.functionalMode.TabIndex = 47; + // + // label12 + // + this.label12.AutoSize = true; + this.label12.Location = new System.Drawing.Point(20, 91); + this.label12.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(69, 17); + this.label12.TabIndex = 46; + this.label12.Text = "Halt Type"; + // + // PosAct + // + this.PosAct.AllowUserToAddRows = false; + this.PosAct.AllowUserToDeleteRows = false; + this.PosAct.AllowUserToResizeColumns = false; + this.PosAct.AllowUserToResizeRows = false; + this.PosAct.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.PosAct.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { this.X, this.Y, this.Z, this.I, this.J, this.K}); - this.PosAct.Location = new System.Drawing.Point(107, 142); - this.PosAct.Margin = new System.Windows.Forms.Padding(4); - this.PosAct.Name = "PosAct"; - this.PosAct.ScrollBars = System.Windows.Forms.ScrollBars.None; - this.PosAct.Size = new System.Drawing.Size(389, 50); - this.PosAct.TabIndex = 32; - // - // X - // - this.X.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.DisplayedCells; - this.X.HeaderText = "X"; - this.X.Name = "X"; - this.X.Width = 46; - // - // Y - // - this.Y.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.DisplayedCells; - this.Y.HeaderText = "Y"; - this.Y.Name = "Y"; - this.Y.Width = 46; - // - // Z - // - this.Z.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.DisplayedCells; - this.Z.HeaderText = "Z"; - this.Z.Name = "Z"; - this.Z.Width = 46; - // - // I - // - this.I.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.DisplayedCells; - this.I.HeaderText = "I"; - this.I.Name = "I"; - this.I.Width = 40; - // - // J - // - this.J.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.DisplayedCells; - this.J.HeaderText = "J"; - this.J.Name = "J"; - this.J.Width = 44; - // - // K - // - this.K.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.DisplayedCells; - this.K.HeaderText = "K"; - this.K.Name = "K"; - this.K.Width = 46; - // - // PlcErr_03 - // - this.PlcErr_03.AutoSize = true; - this.PlcErr_03.Location = new System.Drawing.Point(128, 81); - this.PlcErr_03.Margin = new System.Windows.Forms.Padding(4); - this.PlcErr_03.Name = "PlcErr_03"; - this.PlcErr_03.Size = new System.Drawing.Size(92, 21); - this.PlcErr_03.TabIndex = 5; - this.PlcErr_03.Text = "PlcErr_06"; - this.PlcErr_03.UseVisualStyleBackColor = true; - this.PlcErr_03.CheckedChanged += new System.EventHandler(this.SysErr_01_CheckedChanged); - // - // PlcErr_01 - // - this.PlcErr_01.AutoSize = true; - this.PlcErr_01.Location = new System.Drawing.Point(128, 25); - this.PlcErr_01.Margin = new System.Windows.Forms.Padding(4); - this.PlcErr_01.Name = "PlcErr_01"; - this.PlcErr_01.Size = new System.Drawing.Size(92, 21); - this.PlcErr_01.TabIndex = 4; - this.PlcErr_01.Text = "PlcErr_04"; - this.PlcErr_01.UseVisualStyleBackColor = true; - this.PlcErr_01.CheckedChanged += new System.EventHandler(this.SysErr_01_CheckedChanged); - // - // groupBox3 - // - this.groupBox3.Controls.Add(this.ErrRT_03); - this.groupBox3.Controls.Add(this.ErrRT_02); - this.groupBox3.Controls.Add(this.CncErr_02); - this.groupBox3.Controls.Add(this.CncErr_03); - this.groupBox3.Controls.Add(this.CncErr_01); - this.groupBox3.Controls.Add(this.PlcErr_02); - this.groupBox3.Controls.Add(this.PlcErr_03); - this.groupBox3.Controls.Add(this.PlcErr_01); - this.groupBox3.Controls.Add(this.SysErr_03); - this.groupBox3.Controls.Add(this.ErrRT_01); - this.groupBox3.Controls.Add(this.SysErr_02); - this.groupBox3.Controls.Add(this.SysErr_01); - this.groupBox3.Location = new System.Drawing.Point(4, 620); - this.groupBox3.Margin = new System.Windows.Forms.Padding(4); - this.groupBox3.Name = "groupBox3"; - this.groupBox3.Padding = new System.Windows.Forms.Padding(4); - this.groupBox3.Size = new System.Drawing.Size(505, 140); - this.groupBox3.TabIndex = 41; - this.groupBox3.TabStop = false; - this.groupBox3.Text = "Alarms"; - // - // ErrRT_03 - // - this.ErrRT_03.AutoSize = true; - this.ErrRT_03.Location = new System.Drawing.Point(357, 81); - this.ErrRT_03.Margin = new System.Windows.Forms.Padding(4); - this.ErrRT_03.Name = "ErrRT_03"; - this.ErrRT_03.Size = new System.Drawing.Size(83, 21); - this.ErrRT_03.TabIndex = 11; - this.ErrRT_03.Text = "ERR_12"; - this.ErrRT_03.UseVisualStyleBackColor = true; - this.ErrRT_03.CheckedChanged += new System.EventHandler(this.SysErr_01_CheckedChanged); - // - // ErrRT_02 - // - this.ErrRT_02.AutoSize = true; - this.ErrRT_02.Location = new System.Drawing.Point(357, 53); - this.ErrRT_02.Margin = new System.Windows.Forms.Padding(4); - this.ErrRT_02.Name = "ErrRT_02"; - this.ErrRT_02.Size = new System.Drawing.Size(83, 21); - this.ErrRT_02.TabIndex = 10; - this.ErrRT_02.Text = "ERR_11"; - this.ErrRT_02.UseVisualStyleBackColor = true; - this.ErrRT_02.CheckedChanged += new System.EventHandler(this.SysErr_01_CheckedChanged); - // - // CncErr_02 - // - this.CncErr_02.AutoSize = true; - this.CncErr_02.Location = new System.Drawing.Point(241, 53); - this.CncErr_02.Margin = new System.Windows.Forms.Padding(4); - this.CncErr_02.Name = "CncErr_02"; - this.CncErr_02.Size = new System.Drawing.Size(97, 21); - this.CncErr_02.TabIndex = 9; - this.CncErr_02.Text = "CncErr_08"; - this.CncErr_02.UseVisualStyleBackColor = true; - this.CncErr_02.CheckedChanged += new System.EventHandler(this.SysErr_01_CheckedChanged); - // - // CncErr_03 - // - this.CncErr_03.AutoSize = true; - this.CncErr_03.Location = new System.Drawing.Point(241, 81); - this.CncErr_03.Margin = new System.Windows.Forms.Padding(4); - this.CncErr_03.Name = "CncErr_03"; - this.CncErr_03.Size = new System.Drawing.Size(97, 21); - this.CncErr_03.TabIndex = 8; - this.CncErr_03.Text = "CncErr_09"; - this.CncErr_03.UseVisualStyleBackColor = true; - this.CncErr_03.CheckedChanged += new System.EventHandler(this.SysErr_01_CheckedChanged); - // - // CncErr_01 - // - this.CncErr_01.AutoSize = true; - this.CncErr_01.Location = new System.Drawing.Point(241, 25); - this.CncErr_01.Margin = new System.Windows.Forms.Padding(4); - this.CncErr_01.Name = "CncErr_01"; - this.CncErr_01.Size = new System.Drawing.Size(97, 21); - this.CncErr_01.TabIndex = 7; - this.CncErr_01.Text = "CncErr_07"; - this.CncErr_01.UseVisualStyleBackColor = true; - this.CncErr_01.CheckedChanged += new System.EventHandler(this.SysErr_01_CheckedChanged); - // - // SysErr_03 - // - this.SysErr_03.AutoSize = true; - this.SysErr_03.Location = new System.Drawing.Point(9, 81); - this.SysErr_03.Margin = new System.Windows.Forms.Padding(4); - this.SysErr_03.Name = "SysErr_03"; - this.SysErr_03.Size = new System.Drawing.Size(96, 21); - this.SysErr_03.TabIndex = 3; - this.SysErr_03.Text = "SysErr_03"; - this.SysErr_03.UseVisualStyleBackColor = true; - this.SysErr_03.CheckedChanged += new System.EventHandler(this.SysErr_01_CheckedChanged); - // - // ErrRT_01 - // - this.ErrRT_01.AutoSize = true; - this.ErrRT_01.Location = new System.Drawing.Point(357, 25); - this.ErrRT_01.Margin = new System.Windows.Forms.Padding(4); - this.ErrRT_01.Name = "ErrRT_01"; - this.ErrRT_01.Size = new System.Drawing.Size(83, 21); - this.ErrRT_01.TabIndex = 2; - this.ErrRT_01.Text = "ERR_10"; - this.ErrRT_01.UseVisualStyleBackColor = true; - this.ErrRT_01.CheckedChanged += new System.EventHandler(this.SysErr_01_CheckedChanged); - // - // SysErr_02 - // - this.SysErr_02.AutoSize = true; - this.SysErr_02.Location = new System.Drawing.Point(9, 53); - this.SysErr_02.Margin = new System.Windows.Forms.Padding(4); - this.SysErr_02.Name = "SysErr_02"; - this.SysErr_02.Size = new System.Drawing.Size(96, 21); - this.SysErr_02.TabIndex = 1; - this.SysErr_02.Text = "SysErr_02"; - this.SysErr_02.UseVisualStyleBackColor = true; - this.SysErr_02.CheckedChanged += new System.EventHandler(this.SysErr_01_CheckedChanged); - // - // SysErr_01 - // - this.SysErr_01.AutoSize = true; - this.SysErr_01.Location = new System.Drawing.Point(9, 25); - this.SysErr_01.Margin = new System.Windows.Forms.Padding(4); - this.SysErr_01.Name = "SysErr_01"; - this.SysErr_01.Size = new System.Drawing.Size(96, 21); - this.SysErr_01.TabIndex = 0; - this.SysErr_01.Text = "SysErr_01"; - this.SysErr_01.UseVisualStyleBackColor = true; - this.SysErr_01.CheckedChanged += new System.EventHandler(this.SysErr_01_CheckedChanged); - // - // groupBox2 - // - this.groupBox2.Controls.Add(this.AxAccelAct); - this.groupBox2.Controls.Add(this.label37); - this.groupBox2.Controls.Add(this.AxBatt); - this.groupBox2.Controls.Add(this.label36); - this.groupBox2.Controls.Add(this.AxAccTime); - this.groupBox2.Controls.Add(this.label11); - this.groupBox2.Controls.Add(this.AxFeedOverValue); - this.groupBox2.Controls.Add(this.AxDir); - this.groupBox2.Controls.Add(this.AxFeedActValue); - this.groupBox2.Controls.Add(this.label35); - this.groupBox2.Controls.Add(this.label9); - this.groupBox2.Controls.Add(this.label34); - this.groupBox2.Controls.Add(this.AxFeedOver); - this.groupBox2.Controls.Add(this.cbAxType); - this.groupBox2.Controls.Add(this.label10); - this.groupBox2.Controls.Add(this.AxMastId); - this.groupBox2.Controls.Add(this.label33); - this.groupBox2.Controls.Add(this.AxFeedAct); - this.groupBox2.Controls.Add(this.AxIsMaster); - this.groupBox2.Controls.Add(this.AxMainProc); - this.groupBox2.Controls.Add(this.label32); - this.groupBox2.Controls.Add(this.cbAxNum); - this.groupBox2.Controls.Add(this.label31); - this.groupBox2.Controls.Add(this.AxPositionValue); - this.groupBox2.Controls.Add(this.AxLoadValue); - this.groupBox2.Controls.Add(this.label5); - this.groupBox2.Controls.Add(this.AxPosition); - this.groupBox2.Controls.Add(this.label4); - this.groupBox2.Controls.Add(this.label3); - this.groupBox2.Controls.Add(this.AxLoad); - this.groupBox2.Location = new System.Drawing.Point(513, 514); - this.groupBox2.Margin = new System.Windows.Forms.Padding(4); - this.groupBox2.Name = "groupBox2"; - this.groupBox2.Padding = new System.Windows.Forms.Padding(4); - this.groupBox2.Size = new System.Drawing.Size(500, 277); - this.groupBox2.TabIndex = 40; - this.groupBox2.TabStop = false; - this.groupBox2.Text = "Axis"; - // - // AxAccelAct - // - this.AxAccelAct.Location = new System.Drawing.Point(107, 226); - this.AxAccelAct.Margin = new System.Windows.Forms.Padding(4); - this.AxAccelAct.Name = "AxAccelAct"; - this.AxAccelAct.Size = new System.Drawing.Size(60, 22); - this.AxAccelAct.TabIndex = 43; - // - // label37 - // - this.label37.AutoSize = true; - this.label37.Location = new System.Drawing.Point(13, 230); - this.label37.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label37.Name = "label37"; - this.label37.Size = new System.Drawing.Size(66, 17); - this.label37.TabIndex = 42; - this.label37.Text = "Accel Act"; - // - // AxBatt - // - this.AxBatt.Location = new System.Drawing.Point(405, 226); - this.AxBatt.Margin = new System.Windows.Forms.Padding(4); - this.AxBatt.Name = "AxBatt"; - this.AxBatt.Size = new System.Drawing.Size(80, 22); - this.AxBatt.TabIndex = 41; - // - // label36 - // - this.label36.AutoSize = true; - this.label36.Location = new System.Drawing.Point(349, 230); - this.label36.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label36.Name = "label36"; - this.label36.Size = new System.Drawing.Size(53, 17); - this.label36.TabIndex = 40; - this.label36.Text = "Battery"; - // - // AxAccTime - // - this.AxAccTime.Location = new System.Drawing.Point(263, 226); - this.AxAccTime.Margin = new System.Windows.Forms.Padding(4); - this.AxAccTime.Name = "AxAccTime"; - this.AxAccTime.Size = new System.Drawing.Size(68, 22); - this.AxAccTime.TabIndex = 39; - // - // label11 - // - this.label11.AutoSize = true; - this.label11.Location = new System.Drawing.Point(169, 230); - this.label11.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label11.Name = "label11"; - this.label11.Size = new System.Drawing.Size(85, 17); - this.label11.TabIndex = 38; - this.label11.Text = "Accum Time"; - // - // AxDir - // - this.AxDir.Location = new System.Drawing.Point(353, 82); - this.AxDir.Margin = new System.Windows.Forms.Padding(4); - this.AxDir.Name = "AxDir"; - this.AxDir.Size = new System.Drawing.Size(105, 22); - this.AxDir.TabIndex = 37; - this.AxDir.Text = "1"; - // - // label35 - // - this.label35.AutoSize = true; - this.label35.Location = new System.Drawing.Point(291, 87); - this.label35.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label35.Name = "label35"; - this.label35.Size = new System.Drawing.Size(64, 17); - this.label35.TabIndex = 36; - this.label35.Text = "Direction"; - // - // label34 - // - this.label34.AutoSize = true; - this.label34.Location = new System.Drawing.Point(16, 89); - this.label34.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label34.Name = "label34"; - this.label34.Size = new System.Drawing.Size(69, 17); - this.label34.TabIndex = 35; - this.label34.Text = "Axis Type"; - // - // cbAxType - // - this.cbAxType.FormattingEnabled = true; - this.cbAxType.Items.AddRange(new object[] { + this.PosAct.Location = new System.Drawing.Point(107, 142); + this.PosAct.Margin = new System.Windows.Forms.Padding(4); + this.PosAct.Name = "PosAct"; + this.PosAct.ScrollBars = System.Windows.Forms.ScrollBars.None; + this.PosAct.Size = new System.Drawing.Size(389, 50); + this.PosAct.TabIndex = 32; + // + // X + // + this.X.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.DisplayedCells; + this.X.HeaderText = "X"; + this.X.Name = "X"; + this.X.Width = 46; + // + // Y + // + this.Y.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.DisplayedCells; + this.Y.HeaderText = "Y"; + this.Y.Name = "Y"; + this.Y.Width = 46; + // + // Z + // + this.Z.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.DisplayedCells; + this.Z.HeaderText = "Z"; + this.Z.Name = "Z"; + this.Z.Width = 46; + // + // I + // + this.I.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.DisplayedCells; + this.I.HeaderText = "I"; + this.I.Name = "I"; + this.I.Width = 40; + // + // J + // + this.J.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.DisplayedCells; + this.J.HeaderText = "J"; + this.J.Name = "J"; + this.J.Width = 44; + // + // K + // + this.K.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.DisplayedCells; + this.K.HeaderText = "K"; + this.K.Name = "K"; + this.K.Width = 46; + // + // PlcErr_03 + // + this.PlcErr_03.AutoSize = true; + this.PlcErr_03.Location = new System.Drawing.Point(128, 81); + this.PlcErr_03.Margin = new System.Windows.Forms.Padding(4); + this.PlcErr_03.Name = "PlcErr_03"; + this.PlcErr_03.Size = new System.Drawing.Size(92, 21); + this.PlcErr_03.TabIndex = 5; + this.PlcErr_03.Text = "PlcErr_06"; + this.PlcErr_03.UseVisualStyleBackColor = true; + this.PlcErr_03.CheckedChanged += new System.EventHandler(this.SysErr_01_CheckedChanged); + // + // PlcErr_01 + // + this.PlcErr_01.AutoSize = true; + this.PlcErr_01.Location = new System.Drawing.Point(128, 25); + this.PlcErr_01.Margin = new System.Windows.Forms.Padding(4); + this.PlcErr_01.Name = "PlcErr_01"; + this.PlcErr_01.Size = new System.Drawing.Size(92, 21); + this.PlcErr_01.TabIndex = 4; + this.PlcErr_01.Text = "PlcErr_04"; + this.PlcErr_01.UseVisualStyleBackColor = true; + this.PlcErr_01.CheckedChanged += new System.EventHandler(this.SysErr_01_CheckedChanged); + // + // groupBox3 + // + this.groupBox3.Controls.Add(this.ErrRT_03); + this.groupBox3.Controls.Add(this.ErrRT_02); + this.groupBox3.Controls.Add(this.CncErr_02); + this.groupBox3.Controls.Add(this.CncErr_03); + this.groupBox3.Controls.Add(this.CncErr_01); + this.groupBox3.Controls.Add(this.PlcErr_02); + this.groupBox3.Controls.Add(this.PlcErr_03); + this.groupBox3.Controls.Add(this.PlcErr_01); + this.groupBox3.Controls.Add(this.SysErr_03); + this.groupBox3.Controls.Add(this.ErrRT_01); + this.groupBox3.Controls.Add(this.SysErr_02); + this.groupBox3.Controls.Add(this.SysErr_01); + this.groupBox3.Location = new System.Drawing.Point(4, 620); + this.groupBox3.Margin = new System.Windows.Forms.Padding(4); + this.groupBox3.Name = "groupBox3"; + this.groupBox3.Padding = new System.Windows.Forms.Padding(4); + this.groupBox3.Size = new System.Drawing.Size(505, 140); + this.groupBox3.TabIndex = 41; + this.groupBox3.TabStop = false; + this.groupBox3.Text = "Alarms"; + // + // ErrRT_03 + // + this.ErrRT_03.AutoSize = true; + this.ErrRT_03.Location = new System.Drawing.Point(357, 81); + this.ErrRT_03.Margin = new System.Windows.Forms.Padding(4); + this.ErrRT_03.Name = "ErrRT_03"; + this.ErrRT_03.Size = new System.Drawing.Size(83, 21); + this.ErrRT_03.TabIndex = 11; + this.ErrRT_03.Text = "ERR_12"; + this.ErrRT_03.UseVisualStyleBackColor = true; + this.ErrRT_03.CheckedChanged += new System.EventHandler(this.SysErr_01_CheckedChanged); + // + // ErrRT_02 + // + this.ErrRT_02.AutoSize = true; + this.ErrRT_02.Location = new System.Drawing.Point(357, 53); + this.ErrRT_02.Margin = new System.Windows.Forms.Padding(4); + this.ErrRT_02.Name = "ErrRT_02"; + this.ErrRT_02.Size = new System.Drawing.Size(83, 21); + this.ErrRT_02.TabIndex = 10; + this.ErrRT_02.Text = "ERR_11"; + this.ErrRT_02.UseVisualStyleBackColor = true; + this.ErrRT_02.CheckedChanged += new System.EventHandler(this.SysErr_01_CheckedChanged); + // + // CncErr_02 + // + this.CncErr_02.AutoSize = true; + this.CncErr_02.Location = new System.Drawing.Point(241, 53); + this.CncErr_02.Margin = new System.Windows.Forms.Padding(4); + this.CncErr_02.Name = "CncErr_02"; + this.CncErr_02.Size = new System.Drawing.Size(97, 21); + this.CncErr_02.TabIndex = 9; + this.CncErr_02.Text = "CncErr_08"; + this.CncErr_02.UseVisualStyleBackColor = true; + this.CncErr_02.CheckedChanged += new System.EventHandler(this.SysErr_01_CheckedChanged); + // + // CncErr_03 + // + this.CncErr_03.AutoSize = true; + this.CncErr_03.Location = new System.Drawing.Point(241, 81); + this.CncErr_03.Margin = new System.Windows.Forms.Padding(4); + this.CncErr_03.Name = "CncErr_03"; + this.CncErr_03.Size = new System.Drawing.Size(97, 21); + this.CncErr_03.TabIndex = 8; + this.CncErr_03.Text = "CncErr_09"; + this.CncErr_03.UseVisualStyleBackColor = true; + this.CncErr_03.CheckedChanged += new System.EventHandler(this.SysErr_01_CheckedChanged); + // + // CncErr_01 + // + this.CncErr_01.AutoSize = true; + this.CncErr_01.Location = new System.Drawing.Point(241, 25); + this.CncErr_01.Margin = new System.Windows.Forms.Padding(4); + this.CncErr_01.Name = "CncErr_01"; + this.CncErr_01.Size = new System.Drawing.Size(97, 21); + this.CncErr_01.TabIndex = 7; + this.CncErr_01.Text = "CncErr_07"; + this.CncErr_01.UseVisualStyleBackColor = true; + this.CncErr_01.CheckedChanged += new System.EventHandler(this.SysErr_01_CheckedChanged); + // + // SysErr_03 + // + this.SysErr_03.AutoSize = true; + this.SysErr_03.Location = new System.Drawing.Point(9, 81); + this.SysErr_03.Margin = new System.Windows.Forms.Padding(4); + this.SysErr_03.Name = "SysErr_03"; + this.SysErr_03.Size = new System.Drawing.Size(96, 21); + this.SysErr_03.TabIndex = 3; + this.SysErr_03.Text = "SysErr_03"; + this.SysErr_03.UseVisualStyleBackColor = true; + this.SysErr_03.CheckedChanged += new System.EventHandler(this.SysErr_01_CheckedChanged); + // + // ErrRT_01 + // + this.ErrRT_01.AutoSize = true; + this.ErrRT_01.Location = new System.Drawing.Point(357, 25); + this.ErrRT_01.Margin = new System.Windows.Forms.Padding(4); + this.ErrRT_01.Name = "ErrRT_01"; + this.ErrRT_01.Size = new System.Drawing.Size(83, 21); + this.ErrRT_01.TabIndex = 2; + this.ErrRT_01.Text = "ERR_10"; + this.ErrRT_01.UseVisualStyleBackColor = true; + this.ErrRT_01.CheckedChanged += new System.EventHandler(this.SysErr_01_CheckedChanged); + // + // SysErr_02 + // + this.SysErr_02.AutoSize = true; + this.SysErr_02.Location = new System.Drawing.Point(9, 53); + this.SysErr_02.Margin = new System.Windows.Forms.Padding(4); + this.SysErr_02.Name = "SysErr_02"; + this.SysErr_02.Size = new System.Drawing.Size(96, 21); + this.SysErr_02.TabIndex = 1; + this.SysErr_02.Text = "SysErr_02"; + this.SysErr_02.UseVisualStyleBackColor = true; + this.SysErr_02.CheckedChanged += new System.EventHandler(this.SysErr_01_CheckedChanged); + // + // SysErr_01 + // + this.SysErr_01.AutoSize = true; + this.SysErr_01.Location = new System.Drawing.Point(9, 25); + this.SysErr_01.Margin = new System.Windows.Forms.Padding(4); + this.SysErr_01.Name = "SysErr_01"; + this.SysErr_01.Size = new System.Drawing.Size(96, 21); + this.SysErr_01.TabIndex = 0; + this.SysErr_01.Text = "SysErr_01"; + this.SysErr_01.UseVisualStyleBackColor = true; + this.SysErr_01.CheckedChanged += new System.EventHandler(this.SysErr_01_CheckedChanged); + // + // groupBox2 + // + this.groupBox2.Controls.Add(this.AxAccelAct); + this.groupBox2.Controls.Add(this.label37); + this.groupBox2.Controls.Add(this.AxBatt); + this.groupBox2.Controls.Add(this.label36); + this.groupBox2.Controls.Add(this.AxAccTime); + this.groupBox2.Controls.Add(this.label11); + this.groupBox2.Controls.Add(this.AxFeedOverValue); + this.groupBox2.Controls.Add(this.AxDir); + this.groupBox2.Controls.Add(this.AxFeedActValue); + this.groupBox2.Controls.Add(this.label35); + this.groupBox2.Controls.Add(this.label9); + this.groupBox2.Controls.Add(this.label34); + this.groupBox2.Controls.Add(this.AxFeedOver); + this.groupBox2.Controls.Add(this.cbAxType); + this.groupBox2.Controls.Add(this.label10); + this.groupBox2.Controls.Add(this.AxMastId); + this.groupBox2.Controls.Add(this.label33); + this.groupBox2.Controls.Add(this.AxFeedAct); + this.groupBox2.Controls.Add(this.AxIsMaster); + this.groupBox2.Controls.Add(this.AxMainProc); + this.groupBox2.Controls.Add(this.label32); + this.groupBox2.Controls.Add(this.cbAxNum); + this.groupBox2.Controls.Add(this.label31); + this.groupBox2.Controls.Add(this.AxPositionValue); + this.groupBox2.Controls.Add(this.AxLoadValue); + this.groupBox2.Controls.Add(this.label5); + this.groupBox2.Controls.Add(this.AxPosition); + this.groupBox2.Controls.Add(this.label4); + this.groupBox2.Controls.Add(this.label3); + this.groupBox2.Controls.Add(this.AxLoad); + this.groupBox2.Location = new System.Drawing.Point(513, 514); + this.groupBox2.Margin = new System.Windows.Forms.Padding(4); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Padding = new System.Windows.Forms.Padding(4); + this.groupBox2.Size = new System.Drawing.Size(500, 277); + this.groupBox2.TabIndex = 40; + this.groupBox2.TabStop = false; + this.groupBox2.Text = "Axis"; + // + // AxAccelAct + // + this.AxAccelAct.Location = new System.Drawing.Point(107, 226); + this.AxAccelAct.Margin = new System.Windows.Forms.Padding(4); + this.AxAccelAct.Name = "AxAccelAct"; + this.AxAccelAct.Size = new System.Drawing.Size(60, 22); + this.AxAccelAct.TabIndex = 43; + // + // label37 + // + this.label37.AutoSize = true; + this.label37.Location = new System.Drawing.Point(13, 230); + this.label37.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label37.Name = "label37"; + this.label37.Size = new System.Drawing.Size(66, 17); + this.label37.TabIndex = 42; + this.label37.Text = "Accel Act"; + // + // AxBatt + // + this.AxBatt.Location = new System.Drawing.Point(405, 226); + this.AxBatt.Margin = new System.Windows.Forms.Padding(4); + this.AxBatt.Name = "AxBatt"; + this.AxBatt.Size = new System.Drawing.Size(80, 22); + this.AxBatt.TabIndex = 41; + // + // label36 + // + this.label36.AutoSize = true; + this.label36.Location = new System.Drawing.Point(349, 230); + this.label36.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label36.Name = "label36"; + this.label36.Size = new System.Drawing.Size(53, 17); + this.label36.TabIndex = 40; + this.label36.Text = "Battery"; + // + // AxAccTime + // + this.AxAccTime.Location = new System.Drawing.Point(263, 226); + this.AxAccTime.Margin = new System.Windows.Forms.Padding(4); + this.AxAccTime.Name = "AxAccTime"; + this.AxAccTime.Size = new System.Drawing.Size(68, 22); + this.AxAccTime.TabIndex = 39; + // + // label11 + // + this.label11.AutoSize = true; + this.label11.Location = new System.Drawing.Point(169, 230); + this.label11.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(85, 17); + this.label11.TabIndex = 38; + this.label11.Text = "Accum Time"; + // + // AxDir + // + this.AxDir.Location = new System.Drawing.Point(353, 82); + this.AxDir.Margin = new System.Windows.Forms.Padding(4); + this.AxDir.Name = "AxDir"; + this.AxDir.Size = new System.Drawing.Size(105, 22); + this.AxDir.TabIndex = 37; + this.AxDir.Text = "1"; + // + // label35 + // + this.label35.AutoSize = true; + this.label35.Location = new System.Drawing.Point(291, 87); + this.label35.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label35.Name = "label35"; + this.label35.Size = new System.Drawing.Size(64, 17); + this.label35.TabIndex = 36; + this.label35.Text = "Direction"; + // + // label34 + // + this.label34.AutoSize = true; + this.label34.Location = new System.Drawing.Point(16, 89); + this.label34.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label34.Name = "label34"; + this.label34.Size = new System.Drawing.Size(69, 17); + this.label34.TabIndex = 35; + this.label34.Text = "Axis Type"; + // + // cbAxType + // + this.cbAxType.FormattingEnabled = true; + this.cbAxType.Items.AddRange(new object[] { "LINEAR", "ROTARY"}); - this.cbAxType.Location = new System.Drawing.Point(108, 85); - this.cbAxType.Margin = new System.Windows.Forms.Padding(4); - this.cbAxType.Name = "cbAxType"; - this.cbAxType.Size = new System.Drawing.Size(119, 24); - this.cbAxType.TabIndex = 34; - // - // AxMastId - // - this.AxMastId.Location = new System.Drawing.Point(380, 50); - this.AxMastId.Margin = new System.Windows.Forms.Padding(4); - this.AxMastId.Name = "AxMastId"; - this.AxMastId.Size = new System.Drawing.Size(105, 22); - this.AxMastId.TabIndex = 33; - // - // label33 - // - this.label33.AutoSize = true; - this.label33.Location = new System.Drawing.Point(317, 55); - this.label33.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label33.Name = "label33"; - this.label33.Size = new System.Drawing.Size(55, 17); - this.label33.TabIndex = 32; - this.label33.Text = "Mast ID"; - // - // AxIsMaster - // - this.AxIsMaster.AutoSize = true; - this.AxIsMaster.Location = new System.Drawing.Point(237, 54); - this.AxIsMaster.Margin = new System.Windows.Forms.Padding(4); - this.AxIsMaster.Name = "AxIsMaster"; - this.AxIsMaster.Size = new System.Drawing.Size(73, 21); - this.AxIsMaster.TabIndex = 31; - this.AxIsMaster.Text = "Master"; - this.AxIsMaster.UseVisualStyleBackColor = true; - // - // AxMainProc - // - this.AxMainProc.Location = new System.Drawing.Point(108, 50); - this.AxMainProc.Margin = new System.Windows.Forms.Padding(4); - this.AxMainProc.Name = "AxMainProc"; - this.AxMainProc.Size = new System.Drawing.Size(60, 22); - this.AxMainProc.TabIndex = 30; - // - // label32 - // - this.label32.AutoSize = true; - this.label32.Location = new System.Drawing.Point(15, 54); - this.label32.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label32.Name = "label32"; - this.label32.Size = new System.Drawing.Size(71, 17); - this.label32.TabIndex = 29; - this.label32.Text = "Main Proc"; - // - // cbAxNum - // - this.cbAxNum.DisplayMember = "Name"; - this.cbAxNum.FormattingEnabled = true; - this.cbAxNum.Location = new System.Drawing.Point(108, 18); - this.cbAxNum.Margin = new System.Windows.Forms.Padding(4); - this.cbAxNum.Name = "cbAxNum"; - this.cbAxNum.Size = new System.Drawing.Size(160, 24); - this.cbAxNum.TabIndex = 28; - this.cbAxNum.ValueMember = "Value"; - this.cbAxNum.SelectedIndexChanged += new System.EventHandler(this.cbAxNum_SelectedIndexChanged); - // - // label31 - // - this.label31.AutoSize = true; - this.label31.Location = new System.Drawing.Point(16, 23); - this.label31.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label31.Name = "label31"; - this.label31.Size = new System.Drawing.Size(66, 17); - this.label31.TabIndex = 27; - this.label31.Text = "Axis Num"; - // - // AxPositionValue - // - this.AxPositionValue.Location = new System.Drawing.Point(353, 149); - this.AxPositionValue.Margin = new System.Windows.Forms.Padding(4); - this.AxPositionValue.Name = "AxPositionValue"; - this.AxPositionValue.Size = new System.Drawing.Size(132, 22); - this.AxPositionValue.TabIndex = 26; - // - // AxLoadValue - // - this.AxLoadValue.Location = new System.Drawing.Point(353, 123); - this.AxLoadValue.Margin = new System.Windows.Forms.Padding(4); - this.AxLoadValue.Name = "AxLoadValue"; - this.AxLoadValue.Size = new System.Drawing.Size(132, 22); - this.AxLoadValue.TabIndex = 25; - // - // label5 - // - this.label5.AutoSize = true; - this.label5.Location = new System.Drawing.Point(16, 153); - this.label5.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label5.Name = "label5"; - this.label5.Size = new System.Drawing.Size(58, 17); - this.label5.TabIndex = 24; - this.label5.Text = "Position"; - // - // AxPosition - // - this.AxPosition.Location = new System.Drawing.Point(108, 149); - this.AxPosition.Name = "AxPosition"; - this.AxPosition.Size = new System.Drawing.Size(224, 18); - this.AxPosition.TabIndex = 23; - this.AxPosition.Scroll += new System.Windows.Forms.ScrollEventHandler(this.xPosition_Scroll); - // - // label4 - // - this.label4.AutoSize = true; - this.label4.Location = new System.Drawing.Point(16, 127); - this.label4.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label4.Name = "label4"; - this.label4.Size = new System.Drawing.Size(40, 17); - this.label4.TabIndex = 22; - this.label4.Text = "Load"; - // - // label3 - // - this.label3.AutoSize = true; - this.label3.Location = new System.Drawing.Point(116, 117); - this.label3.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label3.Name = "label3"; - this.label3.Size = new System.Drawing.Size(0, 17); - this.label3.TabIndex = 21; - // - // AxLoad - // - this.AxLoad.Location = new System.Drawing.Point(108, 123); - this.AxLoad.Name = "AxLoad"; - this.AxLoad.Size = new System.Drawing.Size(224, 18); - this.AxLoad.TabIndex = 20; - this.AxLoad.Scroll += new System.Windows.Forms.ScrollEventHandler(this.xLoad_Scroll); - // - // program - // - this.program.Location = new System.Drawing.Point(107, 23); - this.program.Margin = new System.Windows.Forms.Padding(4); - this.program.Name = "program"; - this.program.Size = new System.Drawing.Size(203, 22); - this.program.TabIndex = 39; - // - // label2 - // - this.label2.AutoSize = true; - this.label2.Location = new System.Drawing.Point(9, 27); - this.label2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(93, 17); - this.label2.TabIndex = 38; - this.label2.Text = "Curr Program"; - // - // groupBox9 - // - this.groupBox9.Controls.Add(this.txtPzKo); - this.groupBox9.Controls.Add(this.label25); - this.groupBox9.Controls.Add(this.txtPzOk); - this.groupBox9.Controls.Add(this.label23); - this.groupBox9.Controls.Add(this.txtPzTot); - this.groupBox9.Controls.Add(this.label21); - this.groupBox9.Controls.Add(this.OPERATOR_ID); - this.groupBox9.Controls.Add(this.label19); - this.groupBox9.Controls.Add(this.PROG_ROW_NUM); - this.groupBox9.Controls.Add(this.label17); - this.groupBox9.Controls.Add(this.program); - this.groupBox9.Controls.Add(this.label2); - this.groupBox9.Controls.Add(this.partID); - this.groupBox9.Controls.Add(this.label13); - this.groupBox9.Controls.Add(this.functionalMode); - this.groupBox9.Controls.Add(this.label12); - this.groupBox9.Location = new System.Drawing.Point(4, 182); - this.groupBox9.Margin = new System.Windows.Forms.Padding(4); - this.groupBox9.Name = "groupBox9"; - this.groupBox9.Padding = new System.Windows.Forms.Padding(4); - this.groupBox9.Size = new System.Drawing.Size(505, 194); - this.groupBox9.TabIndex = 55; - this.groupBox9.TabStop = false; - this.groupBox9.Text = "Produzione"; - // - // txtPzKo - // - this.txtPzKo.Location = new System.Drawing.Point(417, 121); - this.txtPzKo.Margin = new System.Windows.Forms.Padding(4); - this.txtPzKo.Name = "txtPzKo"; - this.txtPzKo.Size = new System.Drawing.Size(79, 22); - this.txtPzKo.TabIndex = 59; - this.txtPzKo.TextChanged += new System.EventHandler(this.pzKo_TextChanged); - // - // label25 - // - this.label25.AutoSize = true; - this.label25.Location = new System.Drawing.Point(359, 124); - this.label25.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label25.Name = "label25"; - this.label25.Size = new System.Drawing.Size(48, 17); - this.label25.TabIndex = 58; - this.label25.Text = "Pz KO"; - // - // txtPzOk - // - this.txtPzOk.Enabled = false; - this.txtPzOk.Location = new System.Drawing.Point(268, 121); - this.txtPzOk.Margin = new System.Windows.Forms.Padding(4); - this.txtPzOk.Name = "txtPzOk"; - this.txtPzOk.Size = new System.Drawing.Size(79, 22); - this.txtPzOk.TabIndex = 57; - // - // label23 - // - this.label23.AutoSize = true; - this.label23.Location = new System.Drawing.Point(209, 124); - this.label23.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label23.Name = "label23"; - this.label23.Size = new System.Drawing.Size(48, 17); - this.label23.TabIndex = 56; - this.label23.Text = "Pz OK"; - // - // txtPzTot - // - this.txtPzTot.Enabled = false; - this.txtPzTot.Location = new System.Drawing.Point(107, 121); - this.txtPzTot.Margin = new System.Windows.Forms.Padding(4); - this.txtPzTot.Name = "txtPzTot"; - this.txtPzTot.Size = new System.Drawing.Size(79, 22); - this.txtPzTot.TabIndex = 55; - // - // label21 - // - this.label21.AutoSize = true; - this.label21.Location = new System.Drawing.Point(44, 124); - this.label21.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label21.Name = "label21"; - this.label21.Size = new System.Drawing.Size(49, 17); - this.label21.TabIndex = 54; - this.label21.Text = "Pz Tot"; - // - // OPERATOR_ID - // - this.OPERATOR_ID.Location = new System.Drawing.Point(364, 55); - this.OPERATOR_ID.Margin = new System.Windows.Forms.Padding(4); - this.OPERATOR_ID.Name = "OPERATOR_ID"; - this.OPERATOR_ID.Size = new System.Drawing.Size(132, 22); - this.OPERATOR_ID.TabIndex = 53; - // - // label19 - // - this.label19.AutoSize = true; - this.label19.Location = new System.Drawing.Point(296, 59); - this.label19.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label19.Name = "label19"; - this.label19.Size = new System.Drawing.Size(58, 17); - this.label19.TabIndex = 52; - this.label19.Text = "ID oper."; - // - // PROG_ROW_NUM - // - this.PROG_ROW_NUM.Location = new System.Drawing.Point(417, 23); - this.PROG_ROW_NUM.Margin = new System.Windows.Forms.Padding(4); - this.PROG_ROW_NUM.Name = "PROG_ROW_NUM"; - this.PROG_ROW_NUM.Size = new System.Drawing.Size(79, 22); - this.PROG_ROW_NUM.TabIndex = 51; - // - // label17 - // - this.label17.AutoSize = true; - this.label17.Location = new System.Drawing.Point(337, 27); - this.label17.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label17.Name = "label17"; - this.label17.Size = new System.Drawing.Size(68, 17); - this.label17.TabIndex = 50; - this.label17.Text = "Row Num"; - // - // groupBox11 - // - this.groupBox11.Controls.Add(this.STATUS_STRB_DW3); - this.groupBox11.Controls.Add(this.label49); - this.groupBox11.Controls.Add(this.STATUS_STRB_DW2); - this.groupBox11.Controls.Add(this.label47); - this.groupBox11.Controls.Add(this.STATUS_STRB_DW1); - this.groupBox11.Controls.Add(this.label18); - this.groupBox11.Controls.Add(this.STATUS_STRB_DW0); - this.groupBox11.Controls.Add(this.lblPLC_ADP); - this.groupBox11.Location = new System.Drawing.Point(11, 71); - this.groupBox11.Margin = new System.Windows.Forms.Padding(4); - this.groupBox11.Name = "groupBox11"; - this.groupBox11.Padding = new System.Windows.Forms.Padding(4); - this.groupBox11.Size = new System.Drawing.Size(509, 191); - this.groupBox11.TabIndex = 57; - this.groupBox11.TabStop = false; - this.groupBox11.Text = "Strobes PLC --> ADP"; - // - // STATUS_STRB_DW3 - // - this.STATUS_STRB_DW3.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.STATUS_STRB_DW3.Location = new System.Drawing.Point(113, 146); - this.STATUS_STRB_DW3.Margin = new System.Windows.Forms.Padding(4); - this.STATUS_STRB_DW3.Name = "STATUS_STRB_DW3"; - this.STATUS_STRB_DW3.Size = new System.Drawing.Size(387, 28); - this.STATUS_STRB_DW3.TabIndex = 59; - // - // label49 - // - this.label49.AutoSize = true; - this.label49.Location = new System.Drawing.Point(20, 154); - this.label49.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label49.Name = "label49"; - this.label49.Size = new System.Drawing.Size(84, 17); - this.label49.TabIndex = 58; - this.label49.Text = "STRB_DW3"; - // - // STATUS_STRB_DW2 - // - this.STATUS_STRB_DW2.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.STATUS_STRB_DW2.Location = new System.Drawing.Point(113, 103); - this.STATUS_STRB_DW2.Margin = new System.Windows.Forms.Padding(4); - this.STATUS_STRB_DW2.Name = "STATUS_STRB_DW2"; - this.STATUS_STRB_DW2.Size = new System.Drawing.Size(387, 28); - this.STATUS_STRB_DW2.TabIndex = 57; - // - // label47 - // - this.label47.AutoSize = true; - this.label47.Location = new System.Drawing.Point(20, 111); - this.label47.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label47.Name = "label47"; - this.label47.Size = new System.Drawing.Size(84, 17); - this.label47.TabIndex = 56; - this.label47.Text = "STRB_DW2"; - // - // STATUS_STRB_DW1 - // - this.STATUS_STRB_DW1.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.STATUS_STRB_DW1.Location = new System.Drawing.Point(113, 60); - this.STATUS_STRB_DW1.Margin = new System.Windows.Forms.Padding(4); - this.STATUS_STRB_DW1.Name = "STATUS_STRB_DW1"; - this.STATUS_STRB_DW1.Size = new System.Drawing.Size(387, 28); - this.STATUS_STRB_DW1.TabIndex = 55; - // - // label18 - // - this.label18.AutoSize = true; - this.label18.Location = new System.Drawing.Point(20, 68); - this.label18.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label18.Name = "label18"; - this.label18.Size = new System.Drawing.Size(84, 17); - this.label18.TabIndex = 54; - this.label18.Text = "STRB_DW1"; - // - // STATUS_STRB_DW0 - // - this.STATUS_STRB_DW0.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.STATUS_STRB_DW0.Location = new System.Drawing.Point(113, 17); - this.STATUS_STRB_DW0.Margin = new System.Windows.Forms.Padding(4); - this.STATUS_STRB_DW0.Name = "STATUS_STRB_DW0"; - this.STATUS_STRB_DW0.Size = new System.Drawing.Size(387, 28); - this.STATUS_STRB_DW0.TabIndex = 53; - // - // lblPLC_ADP - // - this.lblPLC_ADP.AutoSize = true; - this.lblPLC_ADP.Location = new System.Drawing.Point(20, 27); - this.lblPLC_ADP.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.lblPLC_ADP.Name = "lblPLC_ADP"; - this.lblPLC_ADP.Size = new System.Drawing.Size(84, 17); - this.lblPLC_ADP.TabIndex = 52; - this.lblPLC_ADP.Text = "STRB_DW0"; - // - // statusStrip1 - // - this.statusStrip1.ImageScalingSize = new System.Drawing.Size(20, 20); - this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.cbAxType.Location = new System.Drawing.Point(108, 85); + this.cbAxType.Margin = new System.Windows.Forms.Padding(4); + this.cbAxType.Name = "cbAxType"; + this.cbAxType.Size = new System.Drawing.Size(119, 24); + this.cbAxType.TabIndex = 34; + // + // AxMastId + // + this.AxMastId.Location = new System.Drawing.Point(380, 50); + this.AxMastId.Margin = new System.Windows.Forms.Padding(4); + this.AxMastId.Name = "AxMastId"; + this.AxMastId.Size = new System.Drawing.Size(105, 22); + this.AxMastId.TabIndex = 33; + // + // label33 + // + this.label33.AutoSize = true; + this.label33.Location = new System.Drawing.Point(317, 55); + this.label33.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label33.Name = "label33"; + this.label33.Size = new System.Drawing.Size(55, 17); + this.label33.TabIndex = 32; + this.label33.Text = "Mast ID"; + // + // AxIsMaster + // + this.AxIsMaster.AutoSize = true; + this.AxIsMaster.Location = new System.Drawing.Point(237, 54); + this.AxIsMaster.Margin = new System.Windows.Forms.Padding(4); + this.AxIsMaster.Name = "AxIsMaster"; + this.AxIsMaster.Size = new System.Drawing.Size(73, 21); + this.AxIsMaster.TabIndex = 31; + this.AxIsMaster.Text = "Master"; + this.AxIsMaster.UseVisualStyleBackColor = true; + // + // AxMainProc + // + this.AxMainProc.Location = new System.Drawing.Point(108, 50); + this.AxMainProc.Margin = new System.Windows.Forms.Padding(4); + this.AxMainProc.Name = "AxMainProc"; + this.AxMainProc.Size = new System.Drawing.Size(60, 22); + this.AxMainProc.TabIndex = 30; + // + // label32 + // + this.label32.AutoSize = true; + this.label32.Location = new System.Drawing.Point(15, 54); + this.label32.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label32.Name = "label32"; + this.label32.Size = new System.Drawing.Size(71, 17); + this.label32.TabIndex = 29; + this.label32.Text = "Main Proc"; + // + // cbAxNum + // + this.cbAxNum.DisplayMember = "Name"; + this.cbAxNum.FormattingEnabled = true; + this.cbAxNum.Location = new System.Drawing.Point(108, 18); + this.cbAxNum.Margin = new System.Windows.Forms.Padding(4); + this.cbAxNum.Name = "cbAxNum"; + this.cbAxNum.Size = new System.Drawing.Size(160, 24); + this.cbAxNum.TabIndex = 28; + this.cbAxNum.ValueMember = "Value"; + this.cbAxNum.SelectedIndexChanged += new System.EventHandler(this.cbAxNum_SelectedIndexChanged); + // + // label31 + // + this.label31.AutoSize = true; + this.label31.Location = new System.Drawing.Point(16, 23); + this.label31.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label31.Name = "label31"; + this.label31.Size = new System.Drawing.Size(66, 17); + this.label31.TabIndex = 27; + this.label31.Text = "Axis Num"; + // + // AxPositionValue + // + this.AxPositionValue.Location = new System.Drawing.Point(353, 149); + this.AxPositionValue.Margin = new System.Windows.Forms.Padding(4); + this.AxPositionValue.Name = "AxPositionValue"; + this.AxPositionValue.Size = new System.Drawing.Size(132, 22); + this.AxPositionValue.TabIndex = 26; + // + // AxLoadValue + // + this.AxLoadValue.Location = new System.Drawing.Point(353, 123); + this.AxLoadValue.Margin = new System.Windows.Forms.Padding(4); + this.AxLoadValue.Name = "AxLoadValue"; + this.AxLoadValue.Size = new System.Drawing.Size(132, 22); + this.AxLoadValue.TabIndex = 25; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(16, 153); + this.label5.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(58, 17); + this.label5.TabIndex = 24; + this.label5.Text = "Position"; + // + // AxPosition + // + this.AxPosition.Location = new System.Drawing.Point(108, 149); + this.AxPosition.Name = "AxPosition"; + this.AxPosition.Size = new System.Drawing.Size(224, 18); + this.AxPosition.TabIndex = 23; + this.AxPosition.Scroll += new System.Windows.Forms.ScrollEventHandler(this.xPosition_Scroll); + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(16, 127); + this.label4.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(40, 17); + this.label4.TabIndex = 22; + this.label4.Text = "Load"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(116, 117); + this.label3.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(0, 17); + this.label3.TabIndex = 21; + // + // AxLoad + // + this.AxLoad.Location = new System.Drawing.Point(108, 123); + this.AxLoad.Name = "AxLoad"; + this.AxLoad.Size = new System.Drawing.Size(224, 18); + this.AxLoad.TabIndex = 20; + this.AxLoad.Scroll += new System.Windows.Forms.ScrollEventHandler(this.xLoad_Scroll); + // + // program + // + this.program.Location = new System.Drawing.Point(107, 23); + this.program.Margin = new System.Windows.Forms.Padding(4); + this.program.Name = "program"; + this.program.Size = new System.Drawing.Size(203, 22); + this.program.TabIndex = 39; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(9, 27); + this.label2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(93, 17); + this.label2.TabIndex = 38; + this.label2.Text = "Curr Program"; + // + // groupBox9 + // + this.groupBox9.Controls.Add(this.txtPzKo); + this.groupBox9.Controls.Add(this.label25); + this.groupBox9.Controls.Add(this.txtPzOk); + this.groupBox9.Controls.Add(this.label23); + this.groupBox9.Controls.Add(this.txtPzTot); + this.groupBox9.Controls.Add(this.label21); + this.groupBox9.Controls.Add(this.OPERATOR_ID); + this.groupBox9.Controls.Add(this.label19); + this.groupBox9.Controls.Add(this.PROG_ROW_NUM); + this.groupBox9.Controls.Add(this.label17); + this.groupBox9.Controls.Add(this.program); + this.groupBox9.Controls.Add(this.label2); + this.groupBox9.Controls.Add(this.partID); + this.groupBox9.Controls.Add(this.label13); + this.groupBox9.Controls.Add(this.functionalMode); + this.groupBox9.Controls.Add(this.label12); + this.groupBox9.Location = new System.Drawing.Point(4, 182); + this.groupBox9.Margin = new System.Windows.Forms.Padding(4); + this.groupBox9.Name = "groupBox9"; + this.groupBox9.Padding = new System.Windows.Forms.Padding(4); + this.groupBox9.Size = new System.Drawing.Size(505, 194); + this.groupBox9.TabIndex = 55; + this.groupBox9.TabStop = false; + this.groupBox9.Text = "Produzione"; + // + // txtPzKo + // + this.txtPzKo.Location = new System.Drawing.Point(417, 121); + this.txtPzKo.Margin = new System.Windows.Forms.Padding(4); + this.txtPzKo.Name = "txtPzKo"; + this.txtPzKo.Size = new System.Drawing.Size(79, 22); + this.txtPzKo.TabIndex = 59; + this.txtPzKo.TextChanged += new System.EventHandler(this.pzKo_TextChanged); + // + // label25 + // + this.label25.AutoSize = true; + this.label25.Location = new System.Drawing.Point(359, 124); + this.label25.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label25.Name = "label25"; + this.label25.Size = new System.Drawing.Size(48, 17); + this.label25.TabIndex = 58; + this.label25.Text = "Pz KO"; + // + // txtPzOk + // + this.txtPzOk.Enabled = false; + this.txtPzOk.Location = new System.Drawing.Point(268, 121); + this.txtPzOk.Margin = new System.Windows.Forms.Padding(4); + this.txtPzOk.Name = "txtPzOk"; + this.txtPzOk.Size = new System.Drawing.Size(79, 22); + this.txtPzOk.TabIndex = 57; + // + // label23 + // + this.label23.AutoSize = true; + this.label23.Location = new System.Drawing.Point(209, 124); + this.label23.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label23.Name = "label23"; + this.label23.Size = new System.Drawing.Size(48, 17); + this.label23.TabIndex = 56; + this.label23.Text = "Pz OK"; + // + // txtPzTot + // + this.txtPzTot.Enabled = false; + this.txtPzTot.Location = new System.Drawing.Point(107, 121); + this.txtPzTot.Margin = new System.Windows.Forms.Padding(4); + this.txtPzTot.Name = "txtPzTot"; + this.txtPzTot.Size = new System.Drawing.Size(79, 22); + this.txtPzTot.TabIndex = 55; + // + // label21 + // + this.label21.AutoSize = true; + this.label21.Location = new System.Drawing.Point(44, 124); + this.label21.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label21.Name = "label21"; + this.label21.Size = new System.Drawing.Size(49, 17); + this.label21.TabIndex = 54; + this.label21.Text = "Pz Tot"; + // + // OPERATOR_ID + // + this.OPERATOR_ID.Location = new System.Drawing.Point(364, 55); + this.OPERATOR_ID.Margin = new System.Windows.Forms.Padding(4); + this.OPERATOR_ID.Name = "OPERATOR_ID"; + this.OPERATOR_ID.Size = new System.Drawing.Size(132, 22); + this.OPERATOR_ID.TabIndex = 53; + // + // label19 + // + this.label19.AutoSize = true; + this.label19.Location = new System.Drawing.Point(296, 59); + this.label19.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label19.Name = "label19"; + this.label19.Size = new System.Drawing.Size(58, 17); + this.label19.TabIndex = 52; + this.label19.Text = "ID oper."; + // + // PROG_ROW_NUM + // + this.PROG_ROW_NUM.Location = new System.Drawing.Point(417, 23); + this.PROG_ROW_NUM.Margin = new System.Windows.Forms.Padding(4); + this.PROG_ROW_NUM.Name = "PROG_ROW_NUM"; + this.PROG_ROW_NUM.Size = new System.Drawing.Size(79, 22); + this.PROG_ROW_NUM.TabIndex = 51; + // + // label17 + // + this.label17.AutoSize = true; + this.label17.Location = new System.Drawing.Point(337, 27); + this.label17.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label17.Name = "label17"; + this.label17.Size = new System.Drawing.Size(68, 17); + this.label17.TabIndex = 50; + this.label17.Text = "Row Num"; + // + // groupBox11 + // + this.groupBox11.Controls.Add(this.STATUS_STRB_DW3); + this.groupBox11.Controls.Add(this.label49); + this.groupBox11.Controls.Add(this.STATUS_STRB_DW2); + this.groupBox11.Controls.Add(this.label47); + this.groupBox11.Controls.Add(this.STATUS_STRB_DW1); + this.groupBox11.Controls.Add(this.label18); + this.groupBox11.Controls.Add(this.STATUS_STRB_DW0); + this.groupBox11.Controls.Add(this.lblPLC_ADP); + this.groupBox11.Location = new System.Drawing.Point(11, 71); + this.groupBox11.Margin = new System.Windows.Forms.Padding(4); + this.groupBox11.Name = "groupBox11"; + this.groupBox11.Padding = new System.Windows.Forms.Padding(4); + this.groupBox11.Size = new System.Drawing.Size(509, 191); + this.groupBox11.TabIndex = 57; + this.groupBox11.TabStop = false; + this.groupBox11.Text = "Strobes PLC --> ADP"; + // + // STATUS_STRB_DW3 + // + this.STATUS_STRB_DW3.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.STATUS_STRB_DW3.Location = new System.Drawing.Point(113, 146); + this.STATUS_STRB_DW3.Margin = new System.Windows.Forms.Padding(4); + this.STATUS_STRB_DW3.Name = "STATUS_STRB_DW3"; + this.STATUS_STRB_DW3.Size = new System.Drawing.Size(387, 28); + this.STATUS_STRB_DW3.TabIndex = 59; + // + // label49 + // + this.label49.AutoSize = true; + this.label49.Location = new System.Drawing.Point(20, 154); + this.label49.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label49.Name = "label49"; + this.label49.Size = new System.Drawing.Size(84, 17); + this.label49.TabIndex = 58; + this.label49.Text = "STRB_DW3"; + // + // STATUS_STRB_DW2 + // + this.STATUS_STRB_DW2.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.STATUS_STRB_DW2.Location = new System.Drawing.Point(113, 103); + this.STATUS_STRB_DW2.Margin = new System.Windows.Forms.Padding(4); + this.STATUS_STRB_DW2.Name = "STATUS_STRB_DW2"; + this.STATUS_STRB_DW2.Size = new System.Drawing.Size(387, 28); + this.STATUS_STRB_DW2.TabIndex = 57; + // + // label47 + // + this.label47.AutoSize = true; + this.label47.Location = new System.Drawing.Point(20, 111); + this.label47.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label47.Name = "label47"; + this.label47.Size = new System.Drawing.Size(84, 17); + this.label47.TabIndex = 56; + this.label47.Text = "STRB_DW2"; + // + // STATUS_STRB_DW1 + // + this.STATUS_STRB_DW1.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.STATUS_STRB_DW1.Location = new System.Drawing.Point(113, 60); + this.STATUS_STRB_DW1.Margin = new System.Windows.Forms.Padding(4); + this.STATUS_STRB_DW1.Name = "STATUS_STRB_DW1"; + this.STATUS_STRB_DW1.Size = new System.Drawing.Size(387, 28); + this.STATUS_STRB_DW1.TabIndex = 55; + // + // label18 + // + this.label18.AutoSize = true; + this.label18.Location = new System.Drawing.Point(20, 68); + this.label18.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label18.Name = "label18"; + this.label18.Size = new System.Drawing.Size(84, 17); + this.label18.TabIndex = 54; + this.label18.Text = "STRB_DW1"; + // + // STATUS_STRB_DW0 + // + this.STATUS_STRB_DW0.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.STATUS_STRB_DW0.Location = new System.Drawing.Point(113, 17); + this.STATUS_STRB_DW0.Margin = new System.Windows.Forms.Padding(4); + this.STATUS_STRB_DW0.Name = "STATUS_STRB_DW0"; + this.STATUS_STRB_DW0.Size = new System.Drawing.Size(387, 28); + this.STATUS_STRB_DW0.TabIndex = 53; + // + // lblPLC_ADP + // + this.lblPLC_ADP.AutoSize = true; + this.lblPLC_ADP.Location = new System.Drawing.Point(20, 27); + this.lblPLC_ADP.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblPLC_ADP.Name = "lblPLC_ADP"; + this.lblPLC_ADP.Size = new System.Drawing.Size(84, 17); + this.lblPLC_ADP.TabIndex = 52; + this.lblPLC_ADP.Text = "STRB_DW0"; + // + // statusStrip1 + // + this.statusStrip1.ImageScalingSize = new System.Drawing.Size(20, 20); + this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.lblApp, this.lblVers, this.MainProgrBar, this.lblComStats, this.lblStatus}); - this.statusStrip1.Location = new System.Drawing.Point(0, 669); - this.statusStrip1.Name = "statusStrip1"; - this.statusStrip1.Padding = new System.Windows.Forms.Padding(1, 0, 19, 0); - this.statusStrip1.Size = new System.Drawing.Size(1047, 29); - this.statusStrip1.TabIndex = 59; - this.statusStrip1.Text = "statusStrip1"; - // - // lblApp - // - this.lblApp.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold); - this.lblApp.ForeColor = System.Drawing.SystemColors.ControlText; - this.lblApp.Name = "lblApp"; - this.lblApp.Size = new System.Drawing.Size(21, 24); - this.lblApp.Text = "..."; - // - // lblVers - // - this.lblVers.Font = new System.Drawing.Font("Segoe UI", 8F); - this.lblVers.ForeColor = System.Drawing.SystemColors.ControlDarkDark; - this.lblVers.Name = "lblVers"; - this.lblVers.Size = new System.Drawing.Size(18, 24); - this.lblVers.Text = "..."; - // - // MainProgrBar - // - this.MainProgrBar.BackColor = System.Drawing.SystemColors.Control; - this.MainProgrBar.Name = "MainProgrBar"; - this.MainProgrBar.Size = new System.Drawing.Size(133, 23); - this.MainProgrBar.Step = 1; - // - // lblComStats - // - this.lblComStats.Name = "lblComStats"; - this.lblComStats.Size = new System.Drawing.Size(39, 24); - this.lblComStats.Text = "stats"; - // - // lblStatus - // - this.lblStatus.Name = "lblStatus"; - this.lblStatus.Size = new System.Drawing.Size(27, 24); - this.lblStatus.Text = "---"; - // - // groupBox13 - // - this.groupBox13.Controls.Add(this.cbPathSel); - this.groupBox13.Controls.Add(this.label38); - this.groupBox13.Controls.Add(this.label29); - this.groupBox13.Controls.Add(this.PosAct); - this.groupBox13.Controls.Add(this.txtPathSpeedOver); - this.groupBox13.Controls.Add(this.label28); - this.groupBox13.Controls.Add(this.hsPathSpeedOver); - this.groupBox13.Controls.Add(this.txtPathFeedOver); - this.groupBox13.Controls.Add(this.label27); - this.groupBox13.Controls.Add(this.hsPathFeedOver); - this.groupBox13.Controls.Add(this.txtPathFeed); - this.groupBox13.Controls.Add(this.label26); - this.groupBox13.Controls.Add(this.hsPathFeed); - this.groupBox13.Location = new System.Drawing.Point(513, 103); - this.groupBox13.Margin = new System.Windows.Forms.Padding(4); - this.groupBox13.Name = "groupBox13"; - this.groupBox13.Padding = new System.Windows.Forms.Padding(4); - this.groupBox13.Size = new System.Drawing.Size(505, 206); - this.groupBox13.TabIndex = 60; - this.groupBox13.TabStop = false; - this.groupBox13.Text = "PATH"; - // - // cbPathSel - // - this.cbPathSel.DisplayMember = "Name"; - this.cbPathSel.FormattingEnabled = true; - this.cbPathSel.Location = new System.Drawing.Point(107, 20); - this.cbPathSel.Margin = new System.Windows.Forms.Padding(4); - this.cbPathSel.Name = "cbPathSel"; - this.cbPathSel.Size = new System.Drawing.Size(160, 24); - this.cbPathSel.TabIndex = 63; - this.cbPathSel.ValueMember = "Value"; - this.cbPathSel.SelectedIndexChanged += new System.EventHandler(this.cbPathSel_SelectedIndexChanged); - // - // label38 - // - this.label38.AutoSize = true; - this.label38.Location = new System.Drawing.Point(15, 25); - this.label38.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label38.Name = "label38"; - this.label38.Size = new System.Drawing.Size(70, 17); - this.label38.TabIndex = 62; - this.label38.Text = "Path Num"; - // - // label29 - // - this.label29.AutoSize = true; - this.label29.Location = new System.Drawing.Point(16, 164); - this.label29.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label29.Name = "label29"; - this.label29.Size = new System.Drawing.Size(66, 17); - this.label29.TabIndex = 33; - this.label29.Text = "Posiz Act"; - // - // txtPathSpeedOver - // - this.txtPathSpeedOver.Location = new System.Drawing.Point(397, 108); - this.txtPathSpeedOver.Margin = new System.Windows.Forms.Padding(4); - this.txtPathSpeedOver.Name = "txtPathSpeedOver"; - this.txtPathSpeedOver.Size = new System.Drawing.Size(97, 22); - this.txtPathSpeedOver.TabIndex = 32; - this.txtPathSpeedOver.TextChanged += new System.EventHandler(this.txtPathSpeedOver_TextChanged); - // - // label28 - // - this.label28.AutoSize = true; - this.label28.Location = new System.Drawing.Point(13, 112); - this.label28.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label28.Name = "label28"; - this.label28.Size = new System.Drawing.Size(84, 17); - this.label28.TabIndex = 31; - this.label28.Text = "Rapid Over."; - // - // hsPathSpeedOver - // - this.hsPathSpeedOver.Location = new System.Drawing.Point(107, 112); - this.hsPathSpeedOver.Maximum = 150; - this.hsPathSpeedOver.Name = "hsPathSpeedOver"; - this.hsPathSpeedOver.Size = new System.Drawing.Size(284, 18); - this.hsPathSpeedOver.TabIndex = 30; - this.hsPathSpeedOver.ValueChanged += new System.EventHandler(this.hsPathSpeedOver_ValueChanged); - // - // txtPathFeedOver - // - this.txtPathFeedOver.Location = new System.Drawing.Point(397, 78); - this.txtPathFeedOver.Margin = new System.Windows.Forms.Padding(4); - this.txtPathFeedOver.Name = "txtPathFeedOver"; - this.txtPathFeedOver.Size = new System.Drawing.Size(97, 22); - this.txtPathFeedOver.TabIndex = 29; - this.txtPathFeedOver.TextChanged += new System.EventHandler(this.txtPathFeedOver_TextChanged); - // - // label27 - // - this.label27.AutoSize = true; - this.label27.Location = new System.Drawing.Point(13, 81); - this.label27.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label27.Name = "label27"; - this.label27.Size = new System.Drawing.Size(79, 17); - this.label27.TabIndex = 28; - this.label27.Text = "Feed Over."; - // - // hsPathFeedOver - // - this.hsPathFeedOver.Location = new System.Drawing.Point(107, 81); - this.hsPathFeedOver.Maximum = 150; - this.hsPathFeedOver.Name = "hsPathFeedOver"; - this.hsPathFeedOver.Size = new System.Drawing.Size(284, 18); - this.hsPathFeedOver.TabIndex = 27; - this.hsPathFeedOver.ValueChanged += new System.EventHandler(this.hsPathFeedOver_ValueChanged); - // - // txtPathFeed - // - this.txtPathFeed.Location = new System.Drawing.Point(397, 46); - this.txtPathFeed.Margin = new System.Windows.Forms.Padding(4); - this.txtPathFeed.Name = "txtPathFeed"; - this.txtPathFeed.Size = new System.Drawing.Size(97, 22); - this.txtPathFeed.TabIndex = 26; - this.txtPathFeed.TextChanged += new System.EventHandler(this.txtPathFeed_TextChanged); - // - // label26 - // - this.label26.AutoSize = true; - this.label26.Location = new System.Drawing.Point(13, 49); - this.label26.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label26.Name = "label26"; - this.label26.Size = new System.Drawing.Size(65, 17); - this.label26.TabIndex = 24; - this.label26.Text = "Feedrate"; - // - // hsPathFeed - // - this.hsPathFeed.Location = new System.Drawing.Point(107, 49); - this.hsPathFeed.Maximum = 150; - this.hsPathFeed.Name = "hsPathFeed"; - this.hsPathFeed.Size = new System.Drawing.Size(284, 18); - this.hsPathFeed.TabIndex = 23; - this.hsPathFeed.ValueChanged += new System.EventHandler(this.hsPathFeed_ValueChanged); - // - // menuStrip1 - // - this.menuStrip1.ImageScalingSize = new System.Drawing.Size(20, 20); - this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.statusStrip1.Location = new System.Drawing.Point(0, 669); + this.statusStrip1.Name = "statusStrip1"; + this.statusStrip1.Padding = new System.Windows.Forms.Padding(1, 0, 19, 0); + this.statusStrip1.Size = new System.Drawing.Size(1047, 29); + this.statusStrip1.TabIndex = 59; + this.statusStrip1.Text = "statusStrip1"; + // + // lblApp + // + this.lblApp.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold); + this.lblApp.ForeColor = System.Drawing.SystemColors.ControlText; + this.lblApp.Name = "lblApp"; + this.lblApp.Size = new System.Drawing.Size(21, 24); + this.lblApp.Text = "..."; + // + // lblVers + // + this.lblVers.Font = new System.Drawing.Font("Segoe UI", 8F); + this.lblVers.ForeColor = System.Drawing.SystemColors.ControlDarkDark; + this.lblVers.Name = "lblVers"; + this.lblVers.Size = new System.Drawing.Size(18, 24); + this.lblVers.Text = "..."; + // + // MainProgrBar + // + this.MainProgrBar.BackColor = System.Drawing.SystemColors.Control; + this.MainProgrBar.Name = "MainProgrBar"; + this.MainProgrBar.Size = new System.Drawing.Size(133, 23); + this.MainProgrBar.Step = 1; + // + // lblComStats + // + this.lblComStats.Name = "lblComStats"; + this.lblComStats.Size = new System.Drawing.Size(39, 24); + this.lblComStats.Text = "stats"; + // + // lblStatus + // + this.lblStatus.Name = "lblStatus"; + this.lblStatus.Size = new System.Drawing.Size(27, 24); + this.lblStatus.Text = "---"; + // + // groupBox13 + // + this.groupBox13.Controls.Add(this.cbPathSel); + this.groupBox13.Controls.Add(this.label38); + this.groupBox13.Controls.Add(this.label29); + this.groupBox13.Controls.Add(this.PosAct); + this.groupBox13.Controls.Add(this.txtPathSpeedOver); + this.groupBox13.Controls.Add(this.label28); + this.groupBox13.Controls.Add(this.hsPathSpeedOver); + this.groupBox13.Controls.Add(this.txtPathFeedOver); + this.groupBox13.Controls.Add(this.label27); + this.groupBox13.Controls.Add(this.hsPathFeedOver); + this.groupBox13.Controls.Add(this.txtPathFeed); + this.groupBox13.Controls.Add(this.label26); + this.groupBox13.Controls.Add(this.hsPathFeed); + this.groupBox13.Location = new System.Drawing.Point(513, 103); + this.groupBox13.Margin = new System.Windows.Forms.Padding(4); + this.groupBox13.Name = "groupBox13"; + this.groupBox13.Padding = new System.Windows.Forms.Padding(4); + this.groupBox13.Size = new System.Drawing.Size(505, 206); + this.groupBox13.TabIndex = 60; + this.groupBox13.TabStop = false; + this.groupBox13.Text = "PATH"; + // + // cbPathSel + // + this.cbPathSel.DisplayMember = "Name"; + this.cbPathSel.FormattingEnabled = true; + this.cbPathSel.Location = new System.Drawing.Point(107, 20); + this.cbPathSel.Margin = new System.Windows.Forms.Padding(4); + this.cbPathSel.Name = "cbPathSel"; + this.cbPathSel.Size = new System.Drawing.Size(160, 24); + this.cbPathSel.TabIndex = 63; + this.cbPathSel.ValueMember = "Value"; + this.cbPathSel.SelectedIndexChanged += new System.EventHandler(this.cbPathSel_SelectedIndexChanged); + // + // label38 + // + this.label38.AutoSize = true; + this.label38.Location = new System.Drawing.Point(15, 25); + this.label38.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label38.Name = "label38"; + this.label38.Size = new System.Drawing.Size(70, 17); + this.label38.TabIndex = 62; + this.label38.Text = "Path Num"; + // + // label29 + // + this.label29.AutoSize = true; + this.label29.Location = new System.Drawing.Point(16, 164); + this.label29.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label29.Name = "label29"; + this.label29.Size = new System.Drawing.Size(66, 17); + this.label29.TabIndex = 33; + this.label29.Text = "Posiz Act"; + // + // txtPathSpeedOver + // + this.txtPathSpeedOver.Location = new System.Drawing.Point(397, 108); + this.txtPathSpeedOver.Margin = new System.Windows.Forms.Padding(4); + this.txtPathSpeedOver.Name = "txtPathSpeedOver"; + this.txtPathSpeedOver.Size = new System.Drawing.Size(97, 22); + this.txtPathSpeedOver.TabIndex = 32; + this.txtPathSpeedOver.TextChanged += new System.EventHandler(this.txtPathSpeedOver_TextChanged); + // + // label28 + // + this.label28.AutoSize = true; + this.label28.Location = new System.Drawing.Point(13, 112); + this.label28.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label28.Name = "label28"; + this.label28.Size = new System.Drawing.Size(84, 17); + this.label28.TabIndex = 31; + this.label28.Text = "Rapid Over."; + // + // hsPathSpeedOver + // + this.hsPathSpeedOver.Location = new System.Drawing.Point(107, 112); + this.hsPathSpeedOver.Maximum = 150; + this.hsPathSpeedOver.Name = "hsPathSpeedOver"; + this.hsPathSpeedOver.Size = new System.Drawing.Size(284, 18); + this.hsPathSpeedOver.TabIndex = 30; + this.hsPathSpeedOver.ValueChanged += new System.EventHandler(this.hsPathSpeedOver_ValueChanged); + // + // txtPathFeedOver + // + this.txtPathFeedOver.Location = new System.Drawing.Point(397, 78); + this.txtPathFeedOver.Margin = new System.Windows.Forms.Padding(4); + this.txtPathFeedOver.Name = "txtPathFeedOver"; + this.txtPathFeedOver.Size = new System.Drawing.Size(97, 22); + this.txtPathFeedOver.TabIndex = 29; + this.txtPathFeedOver.TextChanged += new System.EventHandler(this.txtPathFeedOver_TextChanged); + // + // label27 + // + this.label27.AutoSize = true; + this.label27.Location = new System.Drawing.Point(13, 81); + this.label27.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label27.Name = "label27"; + this.label27.Size = new System.Drawing.Size(79, 17); + this.label27.TabIndex = 28; + this.label27.Text = "Feed Over."; + // + // hsPathFeedOver + // + this.hsPathFeedOver.Location = new System.Drawing.Point(107, 81); + this.hsPathFeedOver.Maximum = 150; + this.hsPathFeedOver.Name = "hsPathFeedOver"; + this.hsPathFeedOver.Size = new System.Drawing.Size(284, 18); + this.hsPathFeedOver.TabIndex = 27; + this.hsPathFeedOver.ValueChanged += new System.EventHandler(this.hsPathFeedOver_ValueChanged); + // + // txtPathFeed + // + this.txtPathFeed.Location = new System.Drawing.Point(397, 46); + this.txtPathFeed.Margin = new System.Windows.Forms.Padding(4); + this.txtPathFeed.Name = "txtPathFeed"; + this.txtPathFeed.Size = new System.Drawing.Size(97, 22); + this.txtPathFeed.TabIndex = 26; + this.txtPathFeed.TextChanged += new System.EventHandler(this.txtPathFeed_TextChanged); + // + // label26 + // + this.label26.AutoSize = true; + this.label26.Location = new System.Drawing.Point(13, 49); + this.label26.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label26.Name = "label26"; + this.label26.Size = new System.Drawing.Size(65, 17); + this.label26.TabIndex = 24; + this.label26.Text = "Feedrate"; + // + // hsPathFeed + // + this.hsPathFeed.Location = new System.Drawing.Point(107, 49); + this.hsPathFeed.Maximum = 150; + this.hsPathFeed.Name = "hsPathFeed"; + this.hsPathFeed.Size = new System.Drawing.Size(284, 18); + this.hsPathFeed.TabIndex = 23; + this.hsPathFeed.ValueChanged += new System.EventHandler(this.hsPathFeed_ValueChanged); + // + // menuStrip1 + // + this.menuStrip1.ImageScalingSize = new System.Drawing.Size(20, 20); + this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.fILEToolStripMenuItem, this.sETUPToolStripMenuItem}); - this.menuStrip1.Location = new System.Drawing.Point(0, 0); - this.menuStrip1.Name = "menuStrip1"; - this.menuStrip1.Padding = new System.Windows.Forms.Padding(8, 2, 0, 2); - this.menuStrip1.Size = new System.Drawing.Size(1047, 28); - this.menuStrip1.TabIndex = 61; - this.menuStrip1.Text = "menuStrip1"; - // - // fILEToolStripMenuItem - // - this.fILEToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.menuStrip1.Location = new System.Drawing.Point(0, 0); + this.menuStrip1.Name = "menuStrip1"; + this.menuStrip1.Padding = new System.Windows.Forms.Padding(8, 2, 0, 2); + this.menuStrip1.Size = new System.Drawing.Size(1047, 28); + this.menuStrip1.TabIndex = 61; + this.menuStrip1.Text = "menuStrip1"; + // + // fILEToolStripMenuItem + // + this.fILEToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.mLoadAdaptConf}); - this.fILEToolStripMenuItem.Name = "fILEToolStripMenuItem"; - this.fILEToolStripMenuItem.Size = new System.Drawing.Size(47, 24); - this.fILEToolStripMenuItem.Text = "FILE"; - // - // mLoadAdaptConf - // - this.mLoadAdaptConf.Name = "mLoadAdaptConf"; - this.mLoadAdaptConf.Size = new System.Drawing.Size(233, 26); - this.mLoadAdaptConf.Text = "LOAD ADAPTER CONF"; - this.mLoadAdaptConf.Click += new System.EventHandler(this.mLoadAdaptConf_Click); - // - // sETUPToolStripMenuItem - // - this.sETUPToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.fILEToolStripMenuItem.Name = "fILEToolStripMenuItem"; + this.fILEToolStripMenuItem.Size = new System.Drawing.Size(47, 24); + this.fILEToolStripMenuItem.Text = "FILE"; + // + // mLoadAdaptConf + // + this.mLoadAdaptConf.Name = "mLoadAdaptConf"; + this.mLoadAdaptConf.Size = new System.Drawing.Size(232, 26); + this.mLoadAdaptConf.Text = "LOAD ADAPTER CONF"; + this.mLoadAdaptConf.Click += new System.EventHandler(this.mLoadAdaptConf_Click); + // + // sETUPToolStripMenuItem + // + this.sETUPToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.mConfGen}); - this.sETUPToolStripMenuItem.Name = "sETUPToolStripMenuItem"; - this.sETUPToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.S))); - this.sETUPToolStripMenuItem.Size = new System.Drawing.Size(63, 24); - this.sETUPToolStripMenuItem.Text = "SETUP"; - // - // mConfGen - // - this.mConfGen.Name = "mConfGen"; - this.mConfGen.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.T))); - this.mConfGen.Size = new System.Drawing.Size(336, 26); - this.mConfGen.Text = "TEMPLATE CONF GENERATOR"; - this.mConfGen.Click += new System.EventHandler(this.mConfGen_Click); - // - // lblCurrAdapt - // - this.lblCurrAdapt.Dock = System.Windows.Forms.DockStyle.Top; - this.lblCurrAdapt.Font = new System.Drawing.Font("Microsoft Sans Serif", 16F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lblCurrAdapt.Location = new System.Drawing.Point(0, 28); - this.lblCurrAdapt.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.lblCurrAdapt.Name = "lblCurrAdapt"; - this.lblCurrAdapt.Size = new System.Drawing.Size(1047, 32); - this.lblCurrAdapt.TabIndex = 64; - this.lblCurrAdapt.Text = "Adapter loaded: N.A."; - this.lblCurrAdapt.TextAlign = System.Drawing.ContentAlignment.TopCenter; - // - // tabCtrlMain - // - this.tabCtrlMain.Controls.Add(this.tpStatus); - this.tabCtrlMain.Controls.Add(this.tbConf); - this.tabCtrlMain.Controls.Add(this.tpSIM); - this.tabCtrlMain.Dock = System.Windows.Forms.DockStyle.Fill; - this.tabCtrlMain.Location = new System.Drawing.Point(0, 60); - this.tabCtrlMain.Margin = new System.Windows.Forms.Padding(4); - this.tabCtrlMain.Name = "tabCtrlMain"; - this.tabCtrlMain.SelectedIndex = 0; - this.tabCtrlMain.Size = new System.Drawing.Size(1047, 609); - this.tabCtrlMain.TabIndex = 65; - // - // tpStatus - // - this.tpStatus.BackColor = System.Drawing.Color.WhiteSmoke; - this.tpStatus.Controls.Add(this.gbMonitor); - this.tpStatus.Controls.Add(this.groupBox6); - this.tpStatus.Controls.Add(this.groupBox1); - this.tpStatus.Controls.Add(this.groupBox11); - this.tpStatus.Location = new System.Drawing.Point(4, 25); - this.tpStatus.Margin = new System.Windows.Forms.Padding(4); - this.tpStatus.Name = "tpStatus"; - this.tpStatus.Padding = new System.Windows.Forms.Padding(4); - this.tpStatus.Size = new System.Drawing.Size(1039, 580); - this.tpStatus.TabIndex = 0; - this.tpStatus.Text = "STATUS"; - // - // gbMonitor - // - this.gbMonitor.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + this.sETUPToolStripMenuItem.Name = "sETUPToolStripMenuItem"; + this.sETUPToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.S))); + this.sETUPToolStripMenuItem.Size = new System.Drawing.Size(63, 24); + this.sETUPToolStripMenuItem.Text = "SETUP"; + // + // mConfGen + // + this.mConfGen.Name = "mConfGen"; + this.mConfGen.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.T))); + this.mConfGen.Size = new System.Drawing.Size(327, 26); + this.mConfGen.Text = "TEMPLATE CONF GENERATOR"; + this.mConfGen.Click += new System.EventHandler(this.mConfGen_Click); + // + // lblCurrAdapt + // + this.lblCurrAdapt.Dock = System.Windows.Forms.DockStyle.Top; + this.lblCurrAdapt.Font = new System.Drawing.Font("Microsoft Sans Serif", 16F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblCurrAdapt.Location = new System.Drawing.Point(0, 28); + this.lblCurrAdapt.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblCurrAdapt.Name = "lblCurrAdapt"; + this.lblCurrAdapt.Size = new System.Drawing.Size(1047, 32); + this.lblCurrAdapt.TabIndex = 64; + this.lblCurrAdapt.Text = "Adapter loaded: N.A."; + this.lblCurrAdapt.TextAlign = System.Drawing.ContentAlignment.TopCenter; + // + // tabCtrlMain + // + this.tabCtrlMain.Controls.Add(this.tpStatus); + this.tabCtrlMain.Controls.Add(this.tbConf); + this.tabCtrlMain.Controls.Add(this.tpSIM); + this.tabCtrlMain.Dock = System.Windows.Forms.DockStyle.Fill; + this.tabCtrlMain.Location = new System.Drawing.Point(0, 60); + this.tabCtrlMain.Margin = new System.Windows.Forms.Padding(4); + this.tabCtrlMain.Name = "tabCtrlMain"; + this.tabCtrlMain.SelectedIndex = 0; + this.tabCtrlMain.Size = new System.Drawing.Size(1047, 609); + this.tabCtrlMain.TabIndex = 65; + // + // tpStatus + // + this.tpStatus.BackColor = System.Drawing.Color.WhiteSmoke; + this.tpStatus.Controls.Add(this.gbMonitor); + this.tpStatus.Controls.Add(this.groupBox6); + this.tpStatus.Controls.Add(this.groupBox1); + this.tpStatus.Controls.Add(this.groupBox11); + this.tpStatus.Location = new System.Drawing.Point(4, 25); + this.tpStatus.Margin = new System.Windows.Forms.Padding(4); + this.tpStatus.Name = "tpStatus"; + this.tpStatus.Padding = new System.Windows.Forms.Padding(4); + this.tpStatus.Size = new System.Drawing.Size(1039, 580); + this.tpStatus.TabIndex = 0; + this.tpStatus.Text = "STATUS"; + // + // gbMonitor + // + this.gbMonitor.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - this.gbMonitor.BackColor = System.Drawing.Color.Black; - this.gbMonitor.Controls.Add(this.lblOutMessage3); - this.gbMonitor.Controls.Add(this.lblOutMessage); - this.gbMonitor.Controls.Add(this.lblOutMessage2); - this.gbMonitor.ForeColor = System.Drawing.SystemColors.Control; - this.gbMonitor.Location = new System.Drawing.Point(0, 266); - this.gbMonitor.Margin = new System.Windows.Forms.Padding(0); - this.gbMonitor.Name = "gbMonitor"; - this.gbMonitor.Padding = new System.Windows.Forms.Padding(0); - this.gbMonitor.Size = new System.Drawing.Size(1039, 311); - this.gbMonitor.TabIndex = 62; - this.gbMonitor.TabStop = false; - this.gbMonitor.Text = "Monitor variabili"; - // - // lblOutMessage3 - // - this.lblOutMessage3.AutoSize = true; - this.lblOutMessage3.Font = new System.Drawing.Font("Arial Narrow", 7F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lblOutMessage3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(0))))); - this.lblOutMessage3.Location = new System.Drawing.Point(607, 15); - this.lblOutMessage3.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.lblOutMessage3.Name = "lblOutMessage3"; - this.lblOutMessage3.Size = new System.Drawing.Size(17, 16); - this.lblOutMessage3.TabIndex = 62; - this.lblOutMessage3.Text = "..."; - // - // lblOutMessage - // - this.lblOutMessage.AutoSize = true; - this.lblOutMessage.Font = new System.Drawing.Font("Arial Narrow", 7F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lblOutMessage.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(128)))), ((int)(((byte)(255)))), ((int)(((byte)(128))))); - this.lblOutMessage.Location = new System.Drawing.Point(4, 15); - this.lblOutMessage.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.lblOutMessage.Name = "lblOutMessage"; - this.lblOutMessage.Size = new System.Drawing.Size(17, 16); - this.lblOutMessage.TabIndex = 60; - this.lblOutMessage.Text = "..."; - // - // lblOutMessage2 - // - this.lblOutMessage2.AutoSize = true; - this.lblOutMessage2.Font = new System.Drawing.Font("Arial Narrow", 7F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lblOutMessage2.ForeColor = System.Drawing.Color.Yellow; - this.lblOutMessage2.Location = new System.Drawing.Point(315, 15); - this.lblOutMessage2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.lblOutMessage2.Name = "lblOutMessage2"; - this.lblOutMessage2.Size = new System.Drawing.Size(17, 16); - this.lblOutMessage2.TabIndex = 61; - this.lblOutMessage2.Text = "..."; - // - // groupBox6 - // - this.groupBox6.Controls.Add(this.STATUS_ACK_DW3); - this.groupBox6.Controls.Add(this.label52); - this.groupBox6.Controls.Add(this.STATUS_ACK_DW2); - this.groupBox6.Controls.Add(this.label51); - this.groupBox6.Controls.Add(this.STATUS_ACK_DW1); - this.groupBox6.Controls.Add(this.label50); - this.groupBox6.Controls.Add(this.STATUS_ACK_DW0); - this.groupBox6.Controls.Add(this.label48); - this.groupBox6.Location = new System.Drawing.Point(523, 71); - this.groupBox6.Margin = new System.Windows.Forms.Padding(4); - this.groupBox6.Name = "groupBox6"; - this.groupBox6.Padding = new System.Windows.Forms.Padding(4); - this.groupBox6.Size = new System.Drawing.Size(512, 191); - this.groupBox6.TabIndex = 58; - this.groupBox6.TabStop = false; - this.groupBox6.Text = "ACK ADP --> PLC"; - // - // STATUS_ACK_DW3 - // - this.STATUS_ACK_DW3.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.STATUS_ACK_DW3.Location = new System.Drawing.Point(113, 145); - this.STATUS_ACK_DW3.Margin = new System.Windows.Forms.Padding(4); - this.STATUS_ACK_DW3.Name = "STATUS_ACK_DW3"; - this.STATUS_ACK_DW3.Size = new System.Drawing.Size(389, 28); - this.STATUS_ACK_DW3.TabIndex = 59; - // - // label52 - // - this.label52.AutoSize = true; - this.label52.Location = new System.Drawing.Point(20, 155); - this.label52.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label52.Name = "label52"; - this.label52.Size = new System.Drawing.Size(74, 17); - this.label52.TabIndex = 58; - this.label52.Text = "ACK_DW3"; - // - // STATUS_ACK_DW2 - // - this.STATUS_ACK_DW2.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.STATUS_ACK_DW2.Location = new System.Drawing.Point(113, 102); - this.STATUS_ACK_DW2.Margin = new System.Windows.Forms.Padding(4); - this.STATUS_ACK_DW2.Name = "STATUS_ACK_DW2"; - this.STATUS_ACK_DW2.Size = new System.Drawing.Size(389, 28); - this.STATUS_ACK_DW2.TabIndex = 57; - // - // label51 - // - this.label51.AutoSize = true; - this.label51.Location = new System.Drawing.Point(20, 112); - this.label51.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label51.Name = "label51"; - this.label51.Size = new System.Drawing.Size(74, 17); - this.label51.TabIndex = 56; - this.label51.Text = "ACK_DW2"; - // - // STATUS_ACK_DW1 - // - this.STATUS_ACK_DW1.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.STATUS_ACK_DW1.Location = new System.Drawing.Point(113, 59); - this.STATUS_ACK_DW1.Margin = new System.Windows.Forms.Padding(4); - this.STATUS_ACK_DW1.Name = "STATUS_ACK_DW1"; - this.STATUS_ACK_DW1.Size = new System.Drawing.Size(389, 28); - this.STATUS_ACK_DW1.TabIndex = 55; - // - // label50 - // - this.label50.AutoSize = true; - this.label50.Location = new System.Drawing.Point(20, 69); - this.label50.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label50.Name = "label50"; - this.label50.Size = new System.Drawing.Size(74, 17); - this.label50.TabIndex = 54; - this.label50.Text = "ACK_DW1"; - // - // STATUS_ACK_DW0 - // - this.STATUS_ACK_DW0.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.STATUS_ACK_DW0.Location = new System.Drawing.Point(113, 18); - this.STATUS_ACK_DW0.Margin = new System.Windows.Forms.Padding(4); - this.STATUS_ACK_DW0.Name = "STATUS_ACK_DW0"; - this.STATUS_ACK_DW0.Size = new System.Drawing.Size(389, 28); - this.STATUS_ACK_DW0.TabIndex = 53; - // - // label48 - // - this.label48.AutoSize = true; - this.label48.Location = new System.Drawing.Point(20, 23); - this.label48.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label48.Name = "label48"; - this.label48.Size = new System.Drawing.Size(74, 17); - this.label48.TabIndex = 52; - this.label48.Text = "ACK_DW0"; - // - // groupBox1 - // - this.groupBox1.Controls.Add(this.dump); - this.groupBox1.Controls.Add(this.stop); - this.groupBox1.Controls.Add(this.start); - this.groupBox1.Controls.Add(this.port); - this.groupBox1.Controls.Add(this.label1); - this.groupBox1.Location = new System.Drawing.Point(8, 7); - this.groupBox1.Margin = new System.Windows.Forms.Padding(4); - this.groupBox1.Name = "groupBox1"; - this.groupBox1.Padding = new System.Windows.Forms.Padding(4); - this.groupBox1.Size = new System.Drawing.Size(505, 53); - this.groupBox1.TabIndex = 35; - this.groupBox1.TabStop = false; - this.groupBox1.Text = "Server Info"; - // - // dump - // - this.dump.Location = new System.Drawing.Point(397, 18); - this.dump.Margin = new System.Windows.Forms.Padding(4); - this.dump.Name = "dump"; - this.dump.Size = new System.Drawing.Size(100, 28); - this.dump.TabIndex = 4; - this.dump.Text = "Show Dump"; - this.dump.UseVisualStyleBackColor = true; - this.dump.Click += new System.EventHandler(this.dump_Click); - // - // stop - // - this.stop.Location = new System.Drawing.Point(269, 18); - this.stop.Margin = new System.Windows.Forms.Padding(4); - this.stop.Name = "stop"; - this.stop.Size = new System.Drawing.Size(100, 28); - this.stop.TabIndex = 3; - this.stop.Text = "Stop"; - this.stop.UseVisualStyleBackColor = true; - this.stop.Click += new System.EventHandler(this.stop_Click); - // - // start - // - this.start.Location = new System.Drawing.Point(161, 18); - this.start.Margin = new System.Windows.Forms.Padding(4); - this.start.Name = "start"; - this.start.Size = new System.Drawing.Size(100, 28); - this.start.TabIndex = 2; - this.start.Text = "Start"; - this.start.UseVisualStyleBackColor = true; - this.start.Click += new System.EventHandler(this.start_Click); - // - // port - // - this.port.Location = new System.Drawing.Point(67, 21); - this.port.Margin = new System.Windows.Forms.Padding(4); - this.port.Name = "port"; - this.port.Size = new System.Drawing.Size(81, 22); - this.port.TabIndex = 1; - this.port.Text = "7878"; - this.port.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; - // - // label1 - // - this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(24, 25); - this.label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(34, 17); - this.label1.TabIndex = 0; - this.label1.Text = "Port"; - // - // tbConf - // - this.tbConf.BackColor = System.Drawing.Color.Maroon; - this.tbConf.Controls.Add(this.wbXmlConf); - this.tbConf.Location = new System.Drawing.Point(4, 25); - this.tbConf.Margin = new System.Windows.Forms.Padding(4); - this.tbConf.Name = "tbConf"; - this.tbConf.Padding = new System.Windows.Forms.Padding(4); - this.tbConf.Size = new System.Drawing.Size(1039, 580); - this.tbConf.TabIndex = 1; - this.tbConf.Text = "XML CONFIG"; - // - // wbXmlConf - // - this.wbXmlConf.Dock = System.Windows.Forms.DockStyle.Fill; - this.wbXmlConf.Location = new System.Drawing.Point(4, 4); - this.wbXmlConf.Margin = new System.Windows.Forms.Padding(4); - this.wbXmlConf.MinimumSize = new System.Drawing.Size(27, 25); - this.wbXmlConf.Name = "wbXmlConf"; - this.wbXmlConf.Size = new System.Drawing.Size(1031, 572); - this.wbXmlConf.TabIndex = 0; - // - // tpSIM - // - this.tpSIM.BackColor = System.Drawing.Color.LightGray; - this.tpSIM.Controls.Add(this.groupBox5); - this.tpSIM.Controls.Add(this.Execution); - this.tpSIM.Controls.Add(this.mode); - this.tpSIM.Controls.Add(this.groupBox13); - this.tpSIM.Controls.Add(this.groupBox7); - this.tpSIM.Controls.Add(this.groupBox10); - this.tpSIM.Controls.Add(this.groupBox3); - this.tpSIM.Controls.Add(this.groupBox8); - this.tpSIM.Controls.Add(this.groupBox4); - this.tpSIM.Controls.Add(this.groupBox9); - this.tpSIM.Controls.Add(this.groupBox2); - this.tpSIM.Controls.Add(this.groupBox12); - this.tpSIM.Location = new System.Drawing.Point(4, 25); - this.tpSIM.Margin = new System.Windows.Forms.Padding(4); - this.tpSIM.Name = "tpSIM"; - this.tpSIM.Size = new System.Drawing.Size(1039, 580); - this.tpSIM.TabIndex = 2; - this.tpSIM.Text = "SIMULATION"; - // - // groupBox5 - // - this.groupBox5.Controls.Add(this.uoSpeedVal); - this.groupBox5.Controls.Add(this.uoLoadVal); - this.groupBox5.Controls.Add(this.label45); - this.groupBox5.Controls.Add(this.uoSpeed); - this.groupBox5.Controls.Add(this.label46); - this.groupBox5.Controls.Add(this.uoLoad); - this.groupBox5.Controls.Add(this.uoVitaRes); - this.groupBox5.Controls.Add(this.label43); - this.groupBox5.Controls.Add(this.uoAccTime); - this.groupBox5.Controls.Add(this.label44); - this.groupBox5.Controls.Add(this.uoToolId); - this.groupBox5.Controls.Add(this.label40); - this.groupBox5.Controls.Add(this.uoStatus); - this.groupBox5.Controls.Add(this.label41); - this.groupBox5.Controls.Add(this.uoNumCU); - this.groupBox5.Controls.Add(this.label42); - this.groupBox5.Controls.Add(this.cbUnOpSel); - this.groupBox5.Controls.Add(this.label39); - this.groupBox5.Location = new System.Drawing.Point(513, 316); - this.groupBox5.Margin = new System.Windows.Forms.Padding(4); - this.groupBox5.Name = "groupBox5"; - this.groupBox5.Padding = new System.Windows.Forms.Padding(4); - this.groupBox5.Size = new System.Drawing.Size(505, 191); - this.groupBox5.TabIndex = 62; - this.groupBox5.TabStop = false; - this.groupBox5.Text = "Unita Operatrice / Mandrino"; - // - // uoSpeedVal - // - this.uoSpeedVal.Location = new System.Drawing.Point(343, 146); - this.uoSpeedVal.Margin = new System.Windows.Forms.Padding(4); - this.uoSpeedVal.Name = "uoSpeedVal"; - this.uoSpeedVal.Size = new System.Drawing.Size(132, 22); - this.uoSpeedVal.TabIndex = 81; - // - // uoLoadVal - // - this.uoLoadVal.Location = new System.Drawing.Point(343, 121); - this.uoLoadVal.Margin = new System.Windows.Forms.Padding(4); - this.uoLoadVal.Name = "uoLoadVal"; - this.uoLoadVal.Size = new System.Drawing.Size(132, 22); - this.uoLoadVal.TabIndex = 80; - // - // label45 - // - this.label45.AutoSize = true; - this.label45.Location = new System.Drawing.Point(5, 150); - this.label45.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label45.Name = "label45"; - this.label45.Size = new System.Drawing.Size(49, 17); - this.label45.TabIndex = 79; - this.label45.Text = "Speed"; - // - // uoSpeed - // - this.uoSpeed.Location = new System.Drawing.Point(97, 146); - this.uoSpeed.Name = "uoSpeed"; - this.uoSpeed.Size = new System.Drawing.Size(224, 18); - this.uoSpeed.TabIndex = 78; - this.uoSpeed.Scroll += new System.Windows.Forms.ScrollEventHandler(this.uoSpeed_Scroll); - // - // label46 - // - this.label46.AutoSize = true; - this.label46.Location = new System.Drawing.Point(5, 124); - this.label46.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label46.Name = "label46"; - this.label46.Size = new System.Drawing.Size(40, 17); - this.label46.TabIndex = 77; - this.label46.Text = "Load"; - // - // uoLoad - // - this.uoLoad.Location = new System.Drawing.Point(97, 121); - this.uoLoad.Name = "uoLoad"; - this.uoLoad.Size = new System.Drawing.Size(224, 18); - this.uoLoad.TabIndex = 76; - this.uoLoad.Scroll += new System.Windows.Forms.ScrollEventHandler(this.uoLoad_Scroll); - // - // uoVitaRes - // - this.uoVitaRes.Location = new System.Drawing.Point(97, 89); - this.uoVitaRes.Margin = new System.Windows.Forms.Padding(4); - this.uoVitaRes.Name = "uoVitaRes"; - this.uoVitaRes.Size = new System.Drawing.Size(60, 22); - this.uoVitaRes.TabIndex = 75; - // - // label43 - // - this.label43.AutoSize = true; - this.label43.Location = new System.Drawing.Point(8, 92); - this.label43.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label43.Name = "label43"; - this.label43.Size = new System.Drawing.Size(57, 17); - this.label43.TabIndex = 74; - this.label43.Text = "VitaRes"; - // - // uoAccTime - // - this.uoAccTime.Location = new System.Drawing.Point(253, 89); - this.uoAccTime.Margin = new System.Windows.Forms.Padding(4); - this.uoAccTime.Name = "uoAccTime"; - this.uoAccTime.Size = new System.Drawing.Size(68, 22); - this.uoAccTime.TabIndex = 73; - // - // label44 - // - this.label44.AutoSize = true; - this.label44.Location = new System.Drawing.Point(160, 92); - this.label44.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label44.Name = "label44"; - this.label44.Size = new System.Drawing.Size(66, 17); - this.label44.TabIndex = 72; - this.label44.Text = "Acc Time"; - // - // uoToolId - // - this.uoToolId.Location = new System.Drawing.Point(97, 57); - this.uoToolId.Margin = new System.Windows.Forms.Padding(4); - this.uoToolId.Name = "uoToolId"; - this.uoToolId.Size = new System.Drawing.Size(60, 22); - this.uoToolId.TabIndex = 71; - // - // label40 - // - this.label40.AutoSize = true; - this.label40.Location = new System.Drawing.Point(8, 60); - this.label40.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label40.Name = "label40"; - this.label40.Size = new System.Drawing.Size(53, 17); - this.label40.TabIndex = 70; - this.label40.Text = "Tool ID"; - // - // uoStatus - // - this.uoStatus.Location = new System.Drawing.Point(396, 57); - this.uoStatus.Margin = new System.Windows.Forms.Padding(4); - this.uoStatus.Name = "uoStatus"; - this.uoStatus.Size = new System.Drawing.Size(80, 22); - this.uoStatus.TabIndex = 69; - // - // label41 - // - this.label41.AutoSize = true; - this.label41.Location = new System.Drawing.Point(340, 60); - this.label41.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label41.Name = "label41"; - this.label41.Size = new System.Drawing.Size(48, 17); - this.label41.TabIndex = 68; - this.label41.Text = "Status"; - // - // uoNumCU - // - this.uoNumCU.Location = new System.Drawing.Point(253, 57); - this.uoNumCU.Margin = new System.Windows.Forms.Padding(4); - this.uoNumCU.Name = "uoNumCU"; - this.uoNumCU.Size = new System.Drawing.Size(68, 22); - this.uoNumCU.TabIndex = 67; - // - // label42 - // - this.label42.AutoSize = true; - this.label42.Location = new System.Drawing.Point(160, 60); - this.label42.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label42.Name = "label42"; - this.label42.Size = new System.Drawing.Size(56, 17); - this.label42.TabIndex = 66; - this.label42.Text = "NumCU"; - // - // cbUnOpSel - // - this.cbUnOpSel.DisplayMember = "Name"; - this.cbUnOpSel.FormattingEnabled = true; - this.cbUnOpSel.Location = new System.Drawing.Point(97, 23); - this.cbUnOpSel.Margin = new System.Windows.Forms.Padding(4); - this.cbUnOpSel.Name = "cbUnOpSel"; - this.cbUnOpSel.Size = new System.Drawing.Size(160, 24); - this.cbUnOpSel.TabIndex = 65; - this.cbUnOpSel.ValueMember = "Value"; - this.cbUnOpSel.SelectedIndexChanged += new System.EventHandler(this.cbUnOpSel_SelectedIndexChanged); - // - // label39 - // - this.label39.AutoSize = true; - this.label39.Location = new System.Drawing.Point(5, 28); - this.label39.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label39.Name = "label39"; - this.label39.Size = new System.Drawing.Size(78, 17); - this.label39.TabIndex = 64; - this.label39.Text = "Num UnOp"; - // - // Execution - // - this.Execution.Controls.Add(this.ready); - this.Execution.Controls.Add(this.feedhold); - this.Execution.Controls.Add(this.stopped); - this.Execution.Controls.Add(this.running); - this.Execution.Location = new System.Drawing.Point(4, 116); - this.Execution.Margin = new System.Windows.Forms.Padding(4); - this.Execution.Name = "Execution"; - this.Execution.Padding = new System.Windows.Forms.Padding(4); - this.Execution.Size = new System.Drawing.Size(507, 59); - this.Execution.TabIndex = 61; - this.Execution.TabStop = false; - this.Execution.Text = "Execution"; - // - // ready - // - this.ready.AutoSize = true; - this.ready.Checked = true; - this.ready.Location = new System.Drawing.Point(152, 20); - this.ready.Margin = new System.Windows.Forms.Padding(4); - this.ready.Name = "ready"; - this.ready.Size = new System.Drawing.Size(70, 21); - this.ready.TabIndex = 9; - this.ready.TabStop = true; - this.ready.Text = "Ready"; - this.ready.UseVisualStyleBackColor = true; - // - // feedhold - // - this.feedhold.AutoSize = true; - this.feedhold.Location = new System.Drawing.Point(337, 20); - this.feedhold.Margin = new System.Windows.Forms.Padding(4); - this.feedhold.Name = "feedhold"; - this.feedhold.Size = new System.Drawing.Size(94, 21); - this.feedhold.TabIndex = 8; - this.feedhold.Text = "Feed Hold"; - this.feedhold.UseVisualStyleBackColor = true; - // - // stopped - // - this.stopped.AutoSize = true; - this.stopped.Location = new System.Drawing.Point(240, 20); - this.stopped.Margin = new System.Windows.Forms.Padding(4); - this.stopped.Name = "stopped"; - this.stopped.Size = new System.Drawing.Size(82, 21); - this.stopped.TabIndex = 7; - this.stopped.Text = "Stopped"; - this.stopped.UseVisualStyleBackColor = true; - // - // running - // - this.running.AutoSize = true; - this.running.Location = new System.Drawing.Point(48, 20); - this.running.Margin = new System.Windows.Forms.Padding(4); - this.running.Name = "running"; - this.running.Size = new System.Drawing.Size(82, 21); - this.running.TabIndex = 6; - this.running.Text = "Running"; - this.running.UseVisualStyleBackColor = true; - // - // mode - // - this.mode.Controls.Add(this.edit); - this.mode.Controls.Add(this.mdi); - this.mode.Controls.Add(this.manual); - this.mode.Controls.Add(this.automatic); - this.mode.Location = new System.Drawing.Point(4, 49); - this.mode.Margin = new System.Windows.Forms.Padding(4); - this.mode.Name = "mode"; - this.mode.Padding = new System.Windows.Forms.Padding(4); - this.mode.Size = new System.Drawing.Size(505, 59); - this.mode.TabIndex = 60; - this.mode.TabStop = false; - this.mode.Text = "Mode"; - // - // edit - // - this.edit.AutoSize = true; - this.edit.Location = new System.Drawing.Point(399, 20); - this.edit.Margin = new System.Windows.Forms.Padding(4); - this.edit.Name = "edit"; - this.edit.Size = new System.Drawing.Size(53, 21); - this.edit.TabIndex = 9; - this.edit.Text = "Edit"; - this.edit.UseVisualStyleBackColor = true; - // - // mdi - // - this.mdi.AutoSize = true; - this.mdi.Location = new System.Drawing.Point(240, 18); - this.mdi.Margin = new System.Windows.Forms.Padding(4); - this.mdi.Name = "mdi"; - this.mdi.Size = new System.Drawing.Size(144, 21); - this.mdi.TabIndex = 8; - this.mdi.Text = "Manual Data Input"; - this.mdi.UseVisualStyleBackColor = true; - // - // manual - // - this.manual.AutoSize = true; - this.manual.Checked = true; - this.manual.Location = new System.Drawing.Point(152, 18); - this.manual.Margin = new System.Windows.Forms.Padding(4); - this.manual.Name = "manual"; - this.manual.Size = new System.Drawing.Size(75, 21); - this.manual.TabIndex = 7; - this.manual.TabStop = true; - this.manual.Text = "Manual"; - this.manual.UseVisualStyleBackColor = true; - // - // automatic - // - this.automatic.AutoSize = true; - this.automatic.Location = new System.Drawing.Point(48, 20); - this.automatic.Margin = new System.Windows.Forms.Padding(4); - this.automatic.Name = "automatic"; - this.automatic.Size = new System.Drawing.Size(91, 21); - this.automatic.TabIndex = 6; - this.automatic.Text = "Automatic"; - this.automatic.UseVisualStyleBackColor = true; - // - // groupBox7 - // - this.groupBox7.Controls.Add(this.D1_UUID); - this.groupBox7.Controls.Add(this.D1_ID); - this.groupBox7.Controls.Add(this.D1_NAME); - this.groupBox7.Controls.Add(this.lblAT); - this.groupBox7.Controls.Add(this.txtAccTime); - this.groupBox7.Controls.Add(this.label30); - this.groupBox7.Controls.Add(this.txtPower); - this.groupBox7.Controls.Add(this.label16); - this.groupBox7.Controls.Add(this.label15); - this.groupBox7.Controls.Add(this.label14); - this.groupBox7.Location = new System.Drawing.Point(513, 4); - this.groupBox7.Margin = new System.Windows.Forms.Padding(4); - this.groupBox7.Name = "groupBox7"; - this.groupBox7.Padding = new System.Windows.Forms.Padding(4); - this.groupBox7.Size = new System.Drawing.Size(507, 92); - this.groupBox7.TabIndex = 59; - this.groupBox7.TabStop = false; - this.groupBox7.Text = "Macchina"; - // - // D1_UUID - // - this.D1_UUID.AutoSize = true; - this.D1_UUID.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.D1_UUID.Location = new System.Drawing.Point(311, 66); - this.D1_UUID.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.D1_UUID.Name = "D1_UUID"; - this.D1_UUID.Size = new System.Drawing.Size(23, 17); - this.D1_UUID.TabIndex = 66; - this.D1_UUID.Text = "..."; - // - // D1_ID - // - this.D1_ID.AutoSize = true; - this.D1_ID.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.D1_ID.Location = new System.Drawing.Point(72, 65); - this.D1_ID.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.D1_ID.Name = "D1_ID"; - this.D1_ID.Size = new System.Drawing.Size(23, 17); - this.D1_ID.TabIndex = 65; - this.D1_ID.Text = "..."; - // - // D1_NAME - // - this.D1_NAME.AutoSize = true; - this.D1_NAME.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.D1_NAME.Location = new System.Drawing.Point(72, 25); - this.D1_NAME.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.D1_NAME.Name = "D1_NAME"; - this.D1_NAME.Size = new System.Drawing.Size(23, 17); - this.D1_NAME.TabIndex = 64; - this.D1_NAME.Text = "..."; - // - // lblAT - // - this.lblAT.AutoSize = true; - this.lblAT.Location = new System.Drawing.Point(252, 25); - this.lblAT.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.lblAT.Name = "lblAT"; - this.lblAT.Size = new System.Drawing.Size(53, 17); - this.lblAT.TabIndex = 63; - this.lblAT.Text = "AccMin"; - // - // txtAccTime - // - this.txtAccTime.Location = new System.Drawing.Point(312, 21); - this.txtAccTime.Margin = new System.Windows.Forms.Padding(4); - this.txtAccTime.Name = "txtAccTime"; - this.txtAccTime.Size = new System.Drawing.Size(69, 22); - this.txtAccTime.TabIndex = 62; - // - // label30 - // - this.label30.AutoSize = true; - this.label30.Location = new System.Drawing.Point(384, 25); - this.label30.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label30.Name = "label30"; - this.label30.Size = new System.Drawing.Size(46, 17); - this.label30.TabIndex = 61; - this.label30.Text = "power"; - // - // txtPower - // - this.txtPower.Location = new System.Drawing.Point(433, 21); - this.txtPower.Margin = new System.Windows.Forms.Padding(4); - this.txtPower.Name = "txtPower"; - this.txtPower.Size = new System.Drawing.Size(64, 22); - this.txtPower.TabIndex = 60; - // - // label16 - // - this.label16.AutoSize = true; - this.label16.Location = new System.Drawing.Point(257, 65); - this.label16.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label16.Name = "label16"; - this.label16.Size = new System.Drawing.Size(41, 17); - this.label16.TabIndex = 59; - this.label16.Text = "UUID"; - // - // label15 - // - this.label15.AutoSize = true; - this.label15.Location = new System.Drawing.Point(13, 65); - this.label15.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label15.Name = "label15"; - this.label15.Size = new System.Drawing.Size(21, 17); - this.label15.TabIndex = 57; - this.label15.Text = "ID"; - // - // label14 - // - this.label14.AutoSize = true; - this.label14.Location = new System.Drawing.Point(13, 25); - this.label14.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label14.Name = "label14"; - this.label14.Size = new System.Drawing.Size(45, 17); - this.label14.TabIndex = 54; - this.label14.Text = "Nome"; - // - // groupBox10 - // - this.groupBox10.Controls.Add(this.enableDataSim); - this.groupBox10.Location = new System.Drawing.Point(273, 4); - this.groupBox10.Margin = new System.Windows.Forms.Padding(4); - this.groupBox10.Name = "groupBox10"; - this.groupBox10.Padding = new System.Windows.Forms.Padding(4); - this.groupBox10.Size = new System.Drawing.Size(236, 38); - this.groupBox10.TabIndex = 58; - this.groupBox10.TabStop = false; - this.groupBox10.Text = "Simulazione"; - // - // enableDataSim - // - this.enableDataSim.AutoSize = true; - this.enableDataSim.Location = new System.Drawing.Point(149, 11); - this.enableDataSim.Margin = new System.Windows.Forms.Padding(4); - this.enableDataSim.Name = "enableDataSim"; - this.enableDataSim.RightToLeft = System.Windows.Forms.RightToLeft.Yes; - this.enableDataSim.Size = new System.Drawing.Size(74, 21); - this.enableDataSim.TabIndex = 55; - this.enableDataSim.Text = "Enable"; - this.enableDataSim.UseVisualStyleBackColor = true; - // - // groupBox8 - // - this.groupBox8.Controls.Add(this.estop); - this.groupBox8.Location = new System.Drawing.Point(4, 4); - this.groupBox8.Margin = new System.Windows.Forms.Padding(4); - this.groupBox8.Name = "groupBox8"; - this.groupBox8.Padding = new System.Windows.Forms.Padding(4); - this.groupBox8.Size = new System.Drawing.Size(261, 38); - this.groupBox8.TabIndex = 57; - this.groupBox8.TabStop = false; - this.groupBox8.Text = "Sicurezze"; - // - // estop - // - this.estop.AutoSize = true; - this.estop.Location = new System.Drawing.Point(79, 11); - this.estop.Margin = new System.Windows.Forms.Padding(4); - this.estop.Name = "estop"; - this.estop.RightToLeft = System.Windows.Forms.RightToLeft.Yes; - this.estop.Size = new System.Drawing.Size(134, 21); - this.estop.TabIndex = 55; - this.estop.Text = "Emergency Stop"; - this.estop.UseVisualStyleBackColor = true; - // - // groupBox12 - // - this.groupBox12.Controls.Add(this.lblCodaT); - this.groupBox12.Controls.Add(this.addCodT); - this.groupBox12.Controls.Add(this.label24); - this.groupBox12.Controls.Add(this.lblCodaS); - this.groupBox12.Controls.Add(this.addCodS); - this.groupBox12.Controls.Add(this.label22); - this.groupBox12.Controls.Add(this.lblCodaM); - this.groupBox12.Controls.Add(this.addCodM); - this.groupBox12.Controls.Add(this.label20); - this.groupBox12.Location = new System.Drawing.Point(4, 384); - this.groupBox12.Margin = new System.Windows.Forms.Padding(4); - this.groupBox12.Name = "groupBox12"; - this.groupBox12.Padding = new System.Windows.Forms.Padding(4); - this.groupBox12.Size = new System.Drawing.Size(507, 123); - this.groupBox12.TabIndex = 58; - this.groupBox12.TabStop = false; - this.groupBox12.Text = "Codici M/S/T"; - // - // lblCodaT - // - this.lblCodaT.AutoSize = true; - this.lblCodaT.Location = new System.Drawing.Point(156, 91); - this.lblCodaT.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.lblCodaT.Name = "lblCodaT"; - this.lblCodaT.Size = new System.Drawing.Size(28, 17); - this.lblCodaT.TabIndex = 60; - this.lblCodaT.Text = "[...]"; - // - // addCodT - // - this.addCodT.Location = new System.Drawing.Point(68, 87); - this.addCodT.Margin = new System.Windows.Forms.Padding(4); - this.addCodT.Name = "addCodT"; - this.addCodT.Size = new System.Drawing.Size(79, 22); - this.addCodT.TabIndex = 59; - this.addCodT.KeyDown += new System.Windows.Forms.KeyEventHandler(this.addCodT_KeyDown); - this.addCodT.Leave += new System.EventHandler(this.addCodT_Leave); - // - // label24 - // - this.label24.AutoSize = true; - this.label24.Location = new System.Drawing.Point(12, 91); - this.label24.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label24.Name = "label24"; - this.label24.Size = new System.Drawing.Size(42, 17); - this.label24.TabIndex = 58; - this.label24.Text = "AddT"; - // - // lblCodaS - // - this.lblCodaS.AutoSize = true; - this.lblCodaS.Location = new System.Drawing.Point(157, 59); - this.lblCodaS.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.lblCodaS.Name = "lblCodaS"; - this.lblCodaS.Size = new System.Drawing.Size(28, 17); - this.lblCodaS.TabIndex = 57; - this.lblCodaS.Text = "[...]"; - // - // addCodS - // - this.addCodS.Location = new System.Drawing.Point(69, 55); - this.addCodS.Margin = new System.Windows.Forms.Padding(4); - this.addCodS.Name = "addCodS"; - this.addCodS.Size = new System.Drawing.Size(79, 22); - this.addCodS.TabIndex = 56; - this.addCodS.KeyDown += new System.Windows.Forms.KeyEventHandler(this.addCodS_KeyDown); - this.addCodS.Leave += new System.EventHandler(this.addCodS_Leave); - // - // label22 - // - this.label22.AutoSize = true; - this.label22.Location = new System.Drawing.Point(13, 59); - this.label22.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label22.Name = "label22"; - this.label22.Size = new System.Drawing.Size(42, 17); - this.label22.TabIndex = 55; - this.label22.Text = "AddS"; - // - // lblCodaM - // - this.lblCodaM.AutoSize = true; - this.lblCodaM.Location = new System.Drawing.Point(157, 27); - this.lblCodaM.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.lblCodaM.Name = "lblCodaM"; - this.lblCodaM.Size = new System.Drawing.Size(28, 17); - this.lblCodaM.TabIndex = 54; - this.lblCodaM.Text = "[...]"; - // - // addCodM - // - this.addCodM.Location = new System.Drawing.Point(69, 23); - this.addCodM.Margin = new System.Windows.Forms.Padding(4); - this.addCodM.Name = "addCodM"; - this.addCodM.Size = new System.Drawing.Size(79, 22); - this.addCodM.TabIndex = 53; - this.addCodM.KeyDown += new System.Windows.Forms.KeyEventHandler(this.addCodM_KeyDown); - this.addCodM.Leave += new System.EventHandler(this.addCodM_Leave); - // - // label20 - // - this.label20.AutoSize = true; - this.label20.Location = new System.Drawing.Point(13, 27); - this.label20.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label20.Name = "label20"; - this.label20.Size = new System.Drawing.Size(44, 17); - this.label20.TabIndex = 52; - this.label20.Text = "AddM"; - // - // notifyIcon1 - // - this.notifyIcon1.ContextMenuStrip = this.trayMenu; - this.notifyIcon1.Icon = ((System.Drawing.Icon)(resources.GetObject("notifyIcon1.Icon"))); - this.notifyIcon1.Text = "MTC Adapter"; - this.notifyIcon1.DoubleClick += new System.EventHandler(this.notifyIcon1_DoubleClick); - // - // trayMenu - // - this.trayMenu.ImageScalingSize = new System.Drawing.Size(20, 20); - this.trayMenu.Name = "trayMenu"; - this.trayMenu.Size = new System.Drawing.Size(67, 4); - this.trayMenu.ItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.trayMenu_ItemClicked); - // - // MainForm - // - this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(1047, 698); - this.Controls.Add(this.tabCtrlMain); - this.Controls.Add(this.lblCurrAdapt); - this.Controls.Add(this.statusStrip1); - this.Controls.Add(this.menuStrip1); - this.Controls.Add(this.label6); - this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.MainMenuStrip = this.menuStrip1; - this.Margin = new System.Windows.Forms.Padding(4); - this.MaximizeBox = false; - this.Name = "MainForm"; - this.ShowInTaskbar = false; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; - this.Text = "MTConn Adapter"; - this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainForm_FormClosing); - this.Shown += new System.EventHandler(this.MainForm_Shown); - this.Resize += new System.EventHandler(this.MainForm_Resize); - this.groupBox4.ResumeLayout(false); - this.groupBox4.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.PosAct)).EndInit(); - this.groupBox3.ResumeLayout(false); - this.groupBox3.PerformLayout(); - this.groupBox2.ResumeLayout(false); - this.groupBox2.PerformLayout(); - this.groupBox9.ResumeLayout(false); - this.groupBox9.PerformLayout(); - this.groupBox11.ResumeLayout(false); - this.groupBox11.PerformLayout(); - this.statusStrip1.ResumeLayout(false); - this.statusStrip1.PerformLayout(); - this.groupBox13.ResumeLayout(false); - this.groupBox13.PerformLayout(); - this.menuStrip1.ResumeLayout(false); - this.menuStrip1.PerformLayout(); - this.tabCtrlMain.ResumeLayout(false); - this.tpStatus.ResumeLayout(false); - this.gbMonitor.ResumeLayout(false); - this.gbMonitor.PerformLayout(); - this.groupBox6.ResumeLayout(false); - this.groupBox6.PerformLayout(); - this.groupBox1.ResumeLayout(false); - this.groupBox1.PerformLayout(); - this.tbConf.ResumeLayout(false); - this.tpSIM.ResumeLayout(false); - this.groupBox5.ResumeLayout(false); - this.groupBox5.PerformLayout(); - this.Execution.ResumeLayout(false); - this.Execution.PerformLayout(); - this.mode.ResumeLayout(false); - this.mode.PerformLayout(); - this.groupBox7.ResumeLayout(false); - this.groupBox7.PerformLayout(); - this.groupBox10.ResumeLayout(false); - this.groupBox10.PerformLayout(); - this.groupBox8.ResumeLayout(false); - this.groupBox8.PerformLayout(); - this.groupBox12.ResumeLayout(false); - this.groupBox12.PerformLayout(); - this.ResumeLayout(false); - this.PerformLayout(); + this.gbMonitor.BackColor = System.Drawing.Color.Black; + this.gbMonitor.Controls.Add(this.lblOutMessage3); + this.gbMonitor.Controls.Add(this.lblOutMessage2); + this.gbMonitor.Controls.Add(this.lblOutMessage); + this.gbMonitor.ForeColor = System.Drawing.SystemColors.Control; + this.gbMonitor.Location = new System.Drawing.Point(0, 266); + this.gbMonitor.Margin = new System.Windows.Forms.Padding(0); + this.gbMonitor.Name = "gbMonitor"; + this.gbMonitor.Padding = new System.Windows.Forms.Padding(0); + this.gbMonitor.Size = new System.Drawing.Size(1039, 311); + this.gbMonitor.TabIndex = 62; + this.gbMonitor.TabStop = false; + this.gbMonitor.Text = "Monitor variabili"; + // + // lblOutMessage3 + // + this.lblOutMessage3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.lblOutMessage3.AutoSize = true; + this.lblOutMessage3.Font = new System.Drawing.Font("Microsoft Sans Serif", 7F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblOutMessage3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(0))))); + this.lblOutMessage3.Location = new System.Drawing.Point(581, 15); + this.lblOutMessage3.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblOutMessage3.Name = "lblOutMessage3"; + this.lblOutMessage3.Size = new System.Drawing.Size(16, 15); + this.lblOutMessage3.TabIndex = 62; + this.lblOutMessage3.Text = "..."; + // + // lblOutMessage + // + this.lblOutMessage.AutoSize = true; + this.lblOutMessage.Font = new System.Drawing.Font("Microsoft Sans Serif", 7F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblOutMessage.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(128)))), ((int)(((byte)(255)))), ((int)(((byte)(128))))); + this.lblOutMessage.Location = new System.Drawing.Point(4, 15); + this.lblOutMessage.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblOutMessage.Name = "lblOutMessage"; + this.lblOutMessage.Size = new System.Drawing.Size(16, 15); + this.lblOutMessage.TabIndex = 60; + this.lblOutMessage.Text = "..."; + // + // lblOutMessage2 + // + this.lblOutMessage2.Anchor = System.Windows.Forms.AnchorStyles.Top; + this.lblOutMessage2.AutoSize = true; + this.lblOutMessage2.Font = new System.Drawing.Font("Microsoft Sans Serif", 7F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblOutMessage2.ForeColor = System.Drawing.Color.Yellow; + this.lblOutMessage2.Location = new System.Drawing.Point(295, 15); + this.lblOutMessage2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblOutMessage2.Name = "lblOutMessage2"; + this.lblOutMessage2.Size = new System.Drawing.Size(16, 15); + this.lblOutMessage2.TabIndex = 61; + this.lblOutMessage2.Text = "..."; + // + // groupBox6 + // + this.groupBox6.Controls.Add(this.STATUS_ACK_DW3); + this.groupBox6.Controls.Add(this.label52); + this.groupBox6.Controls.Add(this.STATUS_ACK_DW2); + this.groupBox6.Controls.Add(this.label51); + this.groupBox6.Controls.Add(this.STATUS_ACK_DW1); + this.groupBox6.Controls.Add(this.label50); + this.groupBox6.Controls.Add(this.STATUS_ACK_DW0); + this.groupBox6.Controls.Add(this.label48); + this.groupBox6.Location = new System.Drawing.Point(523, 71); + this.groupBox6.Margin = new System.Windows.Forms.Padding(4); + this.groupBox6.Name = "groupBox6"; + this.groupBox6.Padding = new System.Windows.Forms.Padding(4); + this.groupBox6.Size = new System.Drawing.Size(512, 191); + this.groupBox6.TabIndex = 58; + this.groupBox6.TabStop = false; + this.groupBox6.Text = "ACK ADP --> PLC"; + // + // STATUS_ACK_DW3 + // + this.STATUS_ACK_DW3.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.STATUS_ACK_DW3.Location = new System.Drawing.Point(113, 145); + this.STATUS_ACK_DW3.Margin = new System.Windows.Forms.Padding(4); + this.STATUS_ACK_DW3.Name = "STATUS_ACK_DW3"; + this.STATUS_ACK_DW3.Size = new System.Drawing.Size(389, 28); + this.STATUS_ACK_DW3.TabIndex = 59; + // + // label52 + // + this.label52.AutoSize = true; + this.label52.Location = new System.Drawing.Point(20, 155); + this.label52.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label52.Name = "label52"; + this.label52.Size = new System.Drawing.Size(74, 17); + this.label52.TabIndex = 58; + this.label52.Text = "ACK_DW3"; + // + // STATUS_ACK_DW2 + // + this.STATUS_ACK_DW2.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.STATUS_ACK_DW2.Location = new System.Drawing.Point(113, 102); + this.STATUS_ACK_DW2.Margin = new System.Windows.Forms.Padding(4); + this.STATUS_ACK_DW2.Name = "STATUS_ACK_DW2"; + this.STATUS_ACK_DW2.Size = new System.Drawing.Size(389, 28); + this.STATUS_ACK_DW2.TabIndex = 57; + // + // label51 + // + this.label51.AutoSize = true; + this.label51.Location = new System.Drawing.Point(20, 112); + this.label51.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label51.Name = "label51"; + this.label51.Size = new System.Drawing.Size(74, 17); + this.label51.TabIndex = 56; + this.label51.Text = "ACK_DW2"; + // + // STATUS_ACK_DW1 + // + this.STATUS_ACK_DW1.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.STATUS_ACK_DW1.Location = new System.Drawing.Point(113, 59); + this.STATUS_ACK_DW1.Margin = new System.Windows.Forms.Padding(4); + this.STATUS_ACK_DW1.Name = "STATUS_ACK_DW1"; + this.STATUS_ACK_DW1.Size = new System.Drawing.Size(389, 28); + this.STATUS_ACK_DW1.TabIndex = 55; + // + // label50 + // + this.label50.AutoSize = true; + this.label50.Location = new System.Drawing.Point(20, 69); + this.label50.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label50.Name = "label50"; + this.label50.Size = new System.Drawing.Size(74, 17); + this.label50.TabIndex = 54; + this.label50.Text = "ACK_DW1"; + // + // STATUS_ACK_DW0 + // + this.STATUS_ACK_DW0.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.STATUS_ACK_DW0.Location = new System.Drawing.Point(113, 18); + this.STATUS_ACK_DW0.Margin = new System.Windows.Forms.Padding(4); + this.STATUS_ACK_DW0.Name = "STATUS_ACK_DW0"; + this.STATUS_ACK_DW0.Size = new System.Drawing.Size(389, 28); + this.STATUS_ACK_DW0.TabIndex = 53; + // + // label48 + // + this.label48.AutoSize = true; + this.label48.Location = new System.Drawing.Point(20, 23); + this.label48.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label48.Name = "label48"; + this.label48.Size = new System.Drawing.Size(74, 17); + this.label48.TabIndex = 52; + this.label48.Text = "ACK_DW0"; + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.dump); + this.groupBox1.Controls.Add(this.stop); + this.groupBox1.Controls.Add(this.start); + this.groupBox1.Controls.Add(this.port); + this.groupBox1.Controls.Add(this.label1); + this.groupBox1.Location = new System.Drawing.Point(8, 7); + this.groupBox1.Margin = new System.Windows.Forms.Padding(4); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Padding = new System.Windows.Forms.Padding(4); + this.groupBox1.Size = new System.Drawing.Size(505, 53); + this.groupBox1.TabIndex = 35; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "Server Info"; + // + // dump + // + this.dump.Location = new System.Drawing.Point(397, 18); + this.dump.Margin = new System.Windows.Forms.Padding(4); + this.dump.Name = "dump"; + this.dump.Size = new System.Drawing.Size(100, 28); + this.dump.TabIndex = 4; + this.dump.Text = "Show Dump"; + this.dump.UseVisualStyleBackColor = true; + this.dump.Click += new System.EventHandler(this.dump_Click); + // + // stop + // + this.stop.Location = new System.Drawing.Point(269, 18); + this.stop.Margin = new System.Windows.Forms.Padding(4); + this.stop.Name = "stop"; + this.stop.Size = new System.Drawing.Size(100, 28); + this.stop.TabIndex = 3; + this.stop.Text = "Stop"; + this.stop.UseVisualStyleBackColor = true; + this.stop.Click += new System.EventHandler(this.stop_Click); + // + // start + // + this.start.Location = new System.Drawing.Point(161, 18); + this.start.Margin = new System.Windows.Forms.Padding(4); + this.start.Name = "start"; + this.start.Size = new System.Drawing.Size(100, 28); + this.start.TabIndex = 2; + this.start.Text = "Start"; + this.start.UseVisualStyleBackColor = true; + this.start.Click += new System.EventHandler(this.start_Click); + // + // port + // + this.port.Location = new System.Drawing.Point(67, 21); + this.port.Margin = new System.Windows.Forms.Padding(4); + this.port.Name = "port"; + this.port.Size = new System.Drawing.Size(81, 22); + this.port.TabIndex = 1; + this.port.Text = "7878"; + this.port.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(24, 25); + this.label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(34, 17); + this.label1.TabIndex = 0; + this.label1.Text = "Port"; + // + // tbConf + // + this.tbConf.BackColor = System.Drawing.Color.Maroon; + this.tbConf.Controls.Add(this.wbXmlConf); + this.tbConf.Location = new System.Drawing.Point(4, 25); + this.tbConf.Margin = new System.Windows.Forms.Padding(4); + this.tbConf.Name = "tbConf"; + this.tbConf.Padding = new System.Windows.Forms.Padding(4); + this.tbConf.Size = new System.Drawing.Size(1039, 580); + this.tbConf.TabIndex = 1; + this.tbConf.Text = "XML CONFIG"; + // + // wbXmlConf + // + this.wbXmlConf.Dock = System.Windows.Forms.DockStyle.Fill; + this.wbXmlConf.Location = new System.Drawing.Point(4, 4); + this.wbXmlConf.Margin = new System.Windows.Forms.Padding(4); + this.wbXmlConf.MinimumSize = new System.Drawing.Size(27, 25); + this.wbXmlConf.Name = "wbXmlConf"; + this.wbXmlConf.Size = new System.Drawing.Size(1031, 572); + this.wbXmlConf.TabIndex = 0; + // + // tpSIM + // + this.tpSIM.BackColor = System.Drawing.Color.LightGray; + this.tpSIM.Controls.Add(this.groupBox5); + this.tpSIM.Controls.Add(this.Execution); + this.tpSIM.Controls.Add(this.mode); + this.tpSIM.Controls.Add(this.groupBox13); + this.tpSIM.Controls.Add(this.groupBox7); + this.tpSIM.Controls.Add(this.groupBox10); + this.tpSIM.Controls.Add(this.groupBox3); + this.tpSIM.Controls.Add(this.groupBox8); + this.tpSIM.Controls.Add(this.groupBox4); + this.tpSIM.Controls.Add(this.groupBox9); + this.tpSIM.Controls.Add(this.groupBox2); + this.tpSIM.Controls.Add(this.groupBox12); + this.tpSIM.Location = new System.Drawing.Point(4, 25); + this.tpSIM.Margin = new System.Windows.Forms.Padding(4); + this.tpSIM.Name = "tpSIM"; + this.tpSIM.Size = new System.Drawing.Size(1039, 580); + this.tpSIM.TabIndex = 2; + this.tpSIM.Text = "SIMULATION"; + // + // groupBox5 + // + this.groupBox5.Controls.Add(this.uoSpeedVal); + this.groupBox5.Controls.Add(this.uoLoadVal); + this.groupBox5.Controls.Add(this.label45); + this.groupBox5.Controls.Add(this.uoSpeed); + this.groupBox5.Controls.Add(this.label46); + this.groupBox5.Controls.Add(this.uoLoad); + this.groupBox5.Controls.Add(this.uoVitaRes); + this.groupBox5.Controls.Add(this.label43); + this.groupBox5.Controls.Add(this.uoAccTime); + this.groupBox5.Controls.Add(this.label44); + this.groupBox5.Controls.Add(this.uoToolId); + this.groupBox5.Controls.Add(this.label40); + this.groupBox5.Controls.Add(this.uoStatus); + this.groupBox5.Controls.Add(this.label41); + this.groupBox5.Controls.Add(this.uoNumCU); + this.groupBox5.Controls.Add(this.label42); + this.groupBox5.Controls.Add(this.cbUnOpSel); + this.groupBox5.Controls.Add(this.label39); + this.groupBox5.Location = new System.Drawing.Point(513, 316); + this.groupBox5.Margin = new System.Windows.Forms.Padding(4); + this.groupBox5.Name = "groupBox5"; + this.groupBox5.Padding = new System.Windows.Forms.Padding(4); + this.groupBox5.Size = new System.Drawing.Size(505, 191); + this.groupBox5.TabIndex = 62; + this.groupBox5.TabStop = false; + this.groupBox5.Text = "Unita Operatrice / Mandrino"; + // + // uoSpeedVal + // + this.uoSpeedVal.Location = new System.Drawing.Point(343, 146); + this.uoSpeedVal.Margin = new System.Windows.Forms.Padding(4); + this.uoSpeedVal.Name = "uoSpeedVal"; + this.uoSpeedVal.Size = new System.Drawing.Size(132, 22); + this.uoSpeedVal.TabIndex = 81; + // + // uoLoadVal + // + this.uoLoadVal.Location = new System.Drawing.Point(343, 121); + this.uoLoadVal.Margin = new System.Windows.Forms.Padding(4); + this.uoLoadVal.Name = "uoLoadVal"; + this.uoLoadVal.Size = new System.Drawing.Size(132, 22); + this.uoLoadVal.TabIndex = 80; + // + // label45 + // + this.label45.AutoSize = true; + this.label45.Location = new System.Drawing.Point(5, 150); + this.label45.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label45.Name = "label45"; + this.label45.Size = new System.Drawing.Size(49, 17); + this.label45.TabIndex = 79; + this.label45.Text = "Speed"; + // + // uoSpeed + // + this.uoSpeed.Location = new System.Drawing.Point(97, 146); + this.uoSpeed.Name = "uoSpeed"; + this.uoSpeed.Size = new System.Drawing.Size(224, 18); + this.uoSpeed.TabIndex = 78; + this.uoSpeed.Scroll += new System.Windows.Forms.ScrollEventHandler(this.uoSpeed_Scroll); + // + // label46 + // + this.label46.AutoSize = true; + this.label46.Location = new System.Drawing.Point(5, 124); + this.label46.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label46.Name = "label46"; + this.label46.Size = new System.Drawing.Size(40, 17); + this.label46.TabIndex = 77; + this.label46.Text = "Load"; + // + // uoLoad + // + this.uoLoad.Location = new System.Drawing.Point(97, 121); + this.uoLoad.Name = "uoLoad"; + this.uoLoad.Size = new System.Drawing.Size(224, 18); + this.uoLoad.TabIndex = 76; + this.uoLoad.Scroll += new System.Windows.Forms.ScrollEventHandler(this.uoLoad_Scroll); + // + // uoVitaRes + // + this.uoVitaRes.Location = new System.Drawing.Point(97, 89); + this.uoVitaRes.Margin = new System.Windows.Forms.Padding(4); + this.uoVitaRes.Name = "uoVitaRes"; + this.uoVitaRes.Size = new System.Drawing.Size(60, 22); + this.uoVitaRes.TabIndex = 75; + // + // label43 + // + this.label43.AutoSize = true; + this.label43.Location = new System.Drawing.Point(8, 92); + this.label43.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label43.Name = "label43"; + this.label43.Size = new System.Drawing.Size(57, 17); + this.label43.TabIndex = 74; + this.label43.Text = "VitaRes"; + // + // uoAccTime + // + this.uoAccTime.Location = new System.Drawing.Point(253, 89); + this.uoAccTime.Margin = new System.Windows.Forms.Padding(4); + this.uoAccTime.Name = "uoAccTime"; + this.uoAccTime.Size = new System.Drawing.Size(68, 22); + this.uoAccTime.TabIndex = 73; + // + // label44 + // + this.label44.AutoSize = true; + this.label44.Location = new System.Drawing.Point(160, 92); + this.label44.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label44.Name = "label44"; + this.label44.Size = new System.Drawing.Size(66, 17); + this.label44.TabIndex = 72; + this.label44.Text = "Acc Time"; + // + // uoToolId + // + this.uoToolId.Location = new System.Drawing.Point(97, 57); + this.uoToolId.Margin = new System.Windows.Forms.Padding(4); + this.uoToolId.Name = "uoToolId"; + this.uoToolId.Size = new System.Drawing.Size(60, 22); + this.uoToolId.TabIndex = 71; + // + // label40 + // + this.label40.AutoSize = true; + this.label40.Location = new System.Drawing.Point(8, 60); + this.label40.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label40.Name = "label40"; + this.label40.Size = new System.Drawing.Size(53, 17); + this.label40.TabIndex = 70; + this.label40.Text = "Tool ID"; + // + // uoStatus + // + this.uoStatus.Location = new System.Drawing.Point(396, 57); + this.uoStatus.Margin = new System.Windows.Forms.Padding(4); + this.uoStatus.Name = "uoStatus"; + this.uoStatus.Size = new System.Drawing.Size(80, 22); + this.uoStatus.TabIndex = 69; + // + // label41 + // + this.label41.AutoSize = true; + this.label41.Location = new System.Drawing.Point(340, 60); + this.label41.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label41.Name = "label41"; + this.label41.Size = new System.Drawing.Size(48, 17); + this.label41.TabIndex = 68; + this.label41.Text = "Status"; + // + // uoNumCU + // + this.uoNumCU.Location = new System.Drawing.Point(253, 57); + this.uoNumCU.Margin = new System.Windows.Forms.Padding(4); + this.uoNumCU.Name = "uoNumCU"; + this.uoNumCU.Size = new System.Drawing.Size(68, 22); + this.uoNumCU.TabIndex = 67; + // + // label42 + // + this.label42.AutoSize = true; + this.label42.Location = new System.Drawing.Point(160, 60); + this.label42.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label42.Name = "label42"; + this.label42.Size = new System.Drawing.Size(56, 17); + this.label42.TabIndex = 66; + this.label42.Text = "NumCU"; + // + // cbUnOpSel + // + this.cbUnOpSel.DisplayMember = "Name"; + this.cbUnOpSel.FormattingEnabled = true; + this.cbUnOpSel.Location = new System.Drawing.Point(97, 23); + this.cbUnOpSel.Margin = new System.Windows.Forms.Padding(4); + this.cbUnOpSel.Name = "cbUnOpSel"; + this.cbUnOpSel.Size = new System.Drawing.Size(160, 24); + this.cbUnOpSel.TabIndex = 65; + this.cbUnOpSel.ValueMember = "Value"; + this.cbUnOpSel.SelectedIndexChanged += new System.EventHandler(this.cbUnOpSel_SelectedIndexChanged); + // + // label39 + // + this.label39.AutoSize = true; + this.label39.Location = new System.Drawing.Point(5, 28); + this.label39.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label39.Name = "label39"; + this.label39.Size = new System.Drawing.Size(78, 17); + this.label39.TabIndex = 64; + this.label39.Text = "Num UnOp"; + // + // Execution + // + this.Execution.Controls.Add(this.ready); + this.Execution.Controls.Add(this.feedhold); + this.Execution.Controls.Add(this.stopped); + this.Execution.Controls.Add(this.running); + this.Execution.Location = new System.Drawing.Point(4, 116); + this.Execution.Margin = new System.Windows.Forms.Padding(4); + this.Execution.Name = "Execution"; + this.Execution.Padding = new System.Windows.Forms.Padding(4); + this.Execution.Size = new System.Drawing.Size(507, 59); + this.Execution.TabIndex = 61; + this.Execution.TabStop = false; + this.Execution.Text = "Execution"; + // + // ready + // + this.ready.AutoSize = true; + this.ready.Checked = true; + this.ready.Location = new System.Drawing.Point(152, 20); + this.ready.Margin = new System.Windows.Forms.Padding(4); + this.ready.Name = "ready"; + this.ready.Size = new System.Drawing.Size(70, 21); + this.ready.TabIndex = 9; + this.ready.TabStop = true; + this.ready.Text = "Ready"; + this.ready.UseVisualStyleBackColor = true; + // + // feedhold + // + this.feedhold.AutoSize = true; + this.feedhold.Location = new System.Drawing.Point(337, 20); + this.feedhold.Margin = new System.Windows.Forms.Padding(4); + this.feedhold.Name = "feedhold"; + this.feedhold.Size = new System.Drawing.Size(94, 21); + this.feedhold.TabIndex = 8; + this.feedhold.Text = "Feed Hold"; + this.feedhold.UseVisualStyleBackColor = true; + // + // stopped + // + this.stopped.AutoSize = true; + this.stopped.Location = new System.Drawing.Point(240, 20); + this.stopped.Margin = new System.Windows.Forms.Padding(4); + this.stopped.Name = "stopped"; + this.stopped.Size = new System.Drawing.Size(82, 21); + this.stopped.TabIndex = 7; + this.stopped.Text = "Stopped"; + this.stopped.UseVisualStyleBackColor = true; + // + // running + // + this.running.AutoSize = true; + this.running.Location = new System.Drawing.Point(48, 20); + this.running.Margin = new System.Windows.Forms.Padding(4); + this.running.Name = "running"; + this.running.Size = new System.Drawing.Size(82, 21); + this.running.TabIndex = 6; + this.running.Text = "Running"; + this.running.UseVisualStyleBackColor = true; + // + // mode + // + this.mode.Controls.Add(this.edit); + this.mode.Controls.Add(this.mdi); + this.mode.Controls.Add(this.manual); + this.mode.Controls.Add(this.automatic); + this.mode.Location = new System.Drawing.Point(4, 49); + this.mode.Margin = new System.Windows.Forms.Padding(4); + this.mode.Name = "mode"; + this.mode.Padding = new System.Windows.Forms.Padding(4); + this.mode.Size = new System.Drawing.Size(505, 59); + this.mode.TabIndex = 60; + this.mode.TabStop = false; + this.mode.Text = "Mode"; + // + // edit + // + this.edit.AutoSize = true; + this.edit.Location = new System.Drawing.Point(399, 20); + this.edit.Margin = new System.Windows.Forms.Padding(4); + this.edit.Name = "edit"; + this.edit.Size = new System.Drawing.Size(53, 21); + this.edit.TabIndex = 9; + this.edit.Text = "Edit"; + this.edit.UseVisualStyleBackColor = true; + // + // mdi + // + this.mdi.AutoSize = true; + this.mdi.Location = new System.Drawing.Point(240, 18); + this.mdi.Margin = new System.Windows.Forms.Padding(4); + this.mdi.Name = "mdi"; + this.mdi.Size = new System.Drawing.Size(144, 21); + this.mdi.TabIndex = 8; + this.mdi.Text = "Manual Data Input"; + this.mdi.UseVisualStyleBackColor = true; + // + // manual + // + this.manual.AutoSize = true; + this.manual.Checked = true; + this.manual.Location = new System.Drawing.Point(152, 18); + this.manual.Margin = new System.Windows.Forms.Padding(4); + this.manual.Name = "manual"; + this.manual.Size = new System.Drawing.Size(75, 21); + this.manual.TabIndex = 7; + this.manual.TabStop = true; + this.manual.Text = "Manual"; + this.manual.UseVisualStyleBackColor = true; + // + // automatic + // + this.automatic.AutoSize = true; + this.automatic.Location = new System.Drawing.Point(48, 20); + this.automatic.Margin = new System.Windows.Forms.Padding(4); + this.automatic.Name = "automatic"; + this.automatic.Size = new System.Drawing.Size(91, 21); + this.automatic.TabIndex = 6; + this.automatic.Text = "Automatic"; + this.automatic.UseVisualStyleBackColor = true; + // + // groupBox7 + // + this.groupBox7.Controls.Add(this.D1_UUID); + this.groupBox7.Controls.Add(this.D1_ID); + this.groupBox7.Controls.Add(this.D1_NAME); + this.groupBox7.Controls.Add(this.lblAT); + this.groupBox7.Controls.Add(this.txtAccTime); + this.groupBox7.Controls.Add(this.label30); + this.groupBox7.Controls.Add(this.txtPower); + this.groupBox7.Controls.Add(this.label16); + this.groupBox7.Controls.Add(this.label15); + this.groupBox7.Controls.Add(this.label14); + this.groupBox7.Location = new System.Drawing.Point(513, 4); + this.groupBox7.Margin = new System.Windows.Forms.Padding(4); + this.groupBox7.Name = "groupBox7"; + this.groupBox7.Padding = new System.Windows.Forms.Padding(4); + this.groupBox7.Size = new System.Drawing.Size(507, 92); + this.groupBox7.TabIndex = 59; + this.groupBox7.TabStop = false; + this.groupBox7.Text = "Macchina"; + // + // D1_UUID + // + this.D1_UUID.AutoSize = true; + this.D1_UUID.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.D1_UUID.Location = new System.Drawing.Point(311, 66); + this.D1_UUID.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.D1_UUID.Name = "D1_UUID"; + this.D1_UUID.Size = new System.Drawing.Size(23, 17); + this.D1_UUID.TabIndex = 66; + this.D1_UUID.Text = "..."; + // + // D1_ID + // + this.D1_ID.AutoSize = true; + this.D1_ID.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.D1_ID.Location = new System.Drawing.Point(72, 65); + this.D1_ID.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.D1_ID.Name = "D1_ID"; + this.D1_ID.Size = new System.Drawing.Size(23, 17); + this.D1_ID.TabIndex = 65; + this.D1_ID.Text = "..."; + // + // D1_NAME + // + this.D1_NAME.AutoSize = true; + this.D1_NAME.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.D1_NAME.Location = new System.Drawing.Point(72, 25); + this.D1_NAME.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.D1_NAME.Name = "D1_NAME"; + this.D1_NAME.Size = new System.Drawing.Size(23, 17); + this.D1_NAME.TabIndex = 64; + this.D1_NAME.Text = "..."; + // + // lblAT + // + this.lblAT.AutoSize = true; + this.lblAT.Location = new System.Drawing.Point(252, 25); + this.lblAT.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblAT.Name = "lblAT"; + this.lblAT.Size = new System.Drawing.Size(53, 17); + this.lblAT.TabIndex = 63; + this.lblAT.Text = "AccMin"; + // + // txtAccTime + // + this.txtAccTime.Location = new System.Drawing.Point(312, 21); + this.txtAccTime.Margin = new System.Windows.Forms.Padding(4); + this.txtAccTime.Name = "txtAccTime"; + this.txtAccTime.Size = new System.Drawing.Size(69, 22); + this.txtAccTime.TabIndex = 62; + // + // label30 + // + this.label30.AutoSize = true; + this.label30.Location = new System.Drawing.Point(384, 25); + this.label30.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label30.Name = "label30"; + this.label30.Size = new System.Drawing.Size(46, 17); + this.label30.TabIndex = 61; + this.label30.Text = "power"; + // + // txtPower + // + this.txtPower.Location = new System.Drawing.Point(433, 21); + this.txtPower.Margin = new System.Windows.Forms.Padding(4); + this.txtPower.Name = "txtPower"; + this.txtPower.Size = new System.Drawing.Size(64, 22); + this.txtPower.TabIndex = 60; + // + // label16 + // + this.label16.AutoSize = true; + this.label16.Location = new System.Drawing.Point(257, 65); + this.label16.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label16.Name = "label16"; + this.label16.Size = new System.Drawing.Size(41, 17); + this.label16.TabIndex = 59; + this.label16.Text = "UUID"; + // + // label15 + // + this.label15.AutoSize = true; + this.label15.Location = new System.Drawing.Point(13, 65); + this.label15.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label15.Name = "label15"; + this.label15.Size = new System.Drawing.Size(21, 17); + this.label15.TabIndex = 57; + this.label15.Text = "ID"; + // + // label14 + // + this.label14.AutoSize = true; + this.label14.Location = new System.Drawing.Point(13, 25); + this.label14.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label14.Name = "label14"; + this.label14.Size = new System.Drawing.Size(45, 17); + this.label14.TabIndex = 54; + this.label14.Text = "Nome"; + // + // groupBox10 + // + this.groupBox10.Controls.Add(this.enableDataSim); + this.groupBox10.Location = new System.Drawing.Point(273, 4); + this.groupBox10.Margin = new System.Windows.Forms.Padding(4); + this.groupBox10.Name = "groupBox10"; + this.groupBox10.Padding = new System.Windows.Forms.Padding(4); + this.groupBox10.Size = new System.Drawing.Size(236, 38); + this.groupBox10.TabIndex = 58; + this.groupBox10.TabStop = false; + this.groupBox10.Text = "Simulazione"; + // + // enableDataSim + // + this.enableDataSim.AutoSize = true; + this.enableDataSim.Location = new System.Drawing.Point(149, 11); + this.enableDataSim.Margin = new System.Windows.Forms.Padding(4); + this.enableDataSim.Name = "enableDataSim"; + this.enableDataSim.RightToLeft = System.Windows.Forms.RightToLeft.Yes; + this.enableDataSim.Size = new System.Drawing.Size(74, 21); + this.enableDataSim.TabIndex = 55; + this.enableDataSim.Text = "Enable"; + this.enableDataSim.UseVisualStyleBackColor = true; + // + // groupBox8 + // + this.groupBox8.Controls.Add(this.estop); + this.groupBox8.Location = new System.Drawing.Point(4, 4); + this.groupBox8.Margin = new System.Windows.Forms.Padding(4); + this.groupBox8.Name = "groupBox8"; + this.groupBox8.Padding = new System.Windows.Forms.Padding(4); + this.groupBox8.Size = new System.Drawing.Size(261, 38); + this.groupBox8.TabIndex = 57; + this.groupBox8.TabStop = false; + this.groupBox8.Text = "Sicurezze"; + // + // estop + // + this.estop.AutoSize = true; + this.estop.Location = new System.Drawing.Point(79, 11); + this.estop.Margin = new System.Windows.Forms.Padding(4); + this.estop.Name = "estop"; + this.estop.RightToLeft = System.Windows.Forms.RightToLeft.Yes; + this.estop.Size = new System.Drawing.Size(134, 21); + this.estop.TabIndex = 55; + this.estop.Text = "Emergency Stop"; + this.estop.UseVisualStyleBackColor = true; + // + // groupBox12 + // + this.groupBox12.Controls.Add(this.lblCodaT); + this.groupBox12.Controls.Add(this.addCodT); + this.groupBox12.Controls.Add(this.label24); + this.groupBox12.Controls.Add(this.lblCodaS); + this.groupBox12.Controls.Add(this.addCodS); + this.groupBox12.Controls.Add(this.label22); + this.groupBox12.Controls.Add(this.lblCodaM); + this.groupBox12.Controls.Add(this.addCodM); + this.groupBox12.Controls.Add(this.label20); + this.groupBox12.Location = new System.Drawing.Point(4, 384); + this.groupBox12.Margin = new System.Windows.Forms.Padding(4); + this.groupBox12.Name = "groupBox12"; + this.groupBox12.Padding = new System.Windows.Forms.Padding(4); + this.groupBox12.Size = new System.Drawing.Size(507, 123); + this.groupBox12.TabIndex = 58; + this.groupBox12.TabStop = false; + this.groupBox12.Text = "Codici M/S/T"; + // + // lblCodaT + // + this.lblCodaT.AutoSize = true; + this.lblCodaT.Location = new System.Drawing.Point(156, 91); + this.lblCodaT.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblCodaT.Name = "lblCodaT"; + this.lblCodaT.Size = new System.Drawing.Size(28, 17); + this.lblCodaT.TabIndex = 60; + this.lblCodaT.Text = "[...]"; + // + // addCodT + // + this.addCodT.Location = new System.Drawing.Point(68, 87); + this.addCodT.Margin = new System.Windows.Forms.Padding(4); + this.addCodT.Name = "addCodT"; + this.addCodT.Size = new System.Drawing.Size(79, 22); + this.addCodT.TabIndex = 59; + this.addCodT.KeyDown += new System.Windows.Forms.KeyEventHandler(this.addCodT_KeyDown); + this.addCodT.Leave += new System.EventHandler(this.addCodT_Leave); + // + // label24 + // + this.label24.AutoSize = true; + this.label24.Location = new System.Drawing.Point(12, 91); + this.label24.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label24.Name = "label24"; + this.label24.Size = new System.Drawing.Size(42, 17); + this.label24.TabIndex = 58; + this.label24.Text = "AddT"; + // + // lblCodaS + // + this.lblCodaS.AutoSize = true; + this.lblCodaS.Location = new System.Drawing.Point(157, 59); + this.lblCodaS.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblCodaS.Name = "lblCodaS"; + this.lblCodaS.Size = new System.Drawing.Size(28, 17); + this.lblCodaS.TabIndex = 57; + this.lblCodaS.Text = "[...]"; + // + // addCodS + // + this.addCodS.Location = new System.Drawing.Point(69, 55); + this.addCodS.Margin = new System.Windows.Forms.Padding(4); + this.addCodS.Name = "addCodS"; + this.addCodS.Size = new System.Drawing.Size(79, 22); + this.addCodS.TabIndex = 56; + this.addCodS.KeyDown += new System.Windows.Forms.KeyEventHandler(this.addCodS_KeyDown); + this.addCodS.Leave += new System.EventHandler(this.addCodS_Leave); + // + // label22 + // + this.label22.AutoSize = true; + this.label22.Location = new System.Drawing.Point(13, 59); + this.label22.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label22.Name = "label22"; + this.label22.Size = new System.Drawing.Size(42, 17); + this.label22.TabIndex = 55; + this.label22.Text = "AddS"; + // + // lblCodaM + // + this.lblCodaM.AutoSize = true; + this.lblCodaM.Location = new System.Drawing.Point(157, 27); + this.lblCodaM.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblCodaM.Name = "lblCodaM"; + this.lblCodaM.Size = new System.Drawing.Size(28, 17); + this.lblCodaM.TabIndex = 54; + this.lblCodaM.Text = "[...]"; + // + // addCodM + // + this.addCodM.Location = new System.Drawing.Point(69, 23); + this.addCodM.Margin = new System.Windows.Forms.Padding(4); + this.addCodM.Name = "addCodM"; + this.addCodM.Size = new System.Drawing.Size(79, 22); + this.addCodM.TabIndex = 53; + this.addCodM.KeyDown += new System.Windows.Forms.KeyEventHandler(this.addCodM_KeyDown); + this.addCodM.Leave += new System.EventHandler(this.addCodM_Leave); + // + // label20 + // + this.label20.AutoSize = true; + this.label20.Location = new System.Drawing.Point(13, 27); + this.label20.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label20.Name = "label20"; + this.label20.Size = new System.Drawing.Size(44, 17); + this.label20.TabIndex = 52; + this.label20.Text = "AddM"; + // + // notifyIcon1 + // + this.notifyIcon1.ContextMenuStrip = this.trayMenu; + this.notifyIcon1.Icon = ((System.Drawing.Icon)(resources.GetObject("notifyIcon1.Icon"))); + this.notifyIcon1.Text = "MTC Adapter"; + this.notifyIcon1.DoubleClick += new System.EventHandler(this.notifyIcon1_DoubleClick); + // + // trayMenu + // + this.trayMenu.ImageScalingSize = new System.Drawing.Size(20, 20); + this.trayMenu.Name = "trayMenu"; + this.trayMenu.Size = new System.Drawing.Size(67, 4); + this.trayMenu.ItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.trayMenu_ItemClicked); + // + // MainForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(1047, 698); + this.Controls.Add(this.tabCtrlMain); + this.Controls.Add(this.lblCurrAdapt); + this.Controls.Add(this.statusStrip1); + this.Controls.Add(this.menuStrip1); + this.Controls.Add(this.label6); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MainMenuStrip = this.menuStrip1; + this.Margin = new System.Windows.Forms.Padding(4); + this.MaximizeBox = false; + this.Name = "MainForm"; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "MTConn Adapter"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainForm_FormClosing); + this.Shown += new System.EventHandler(this.MainForm_Shown); + this.Resize += new System.EventHandler(this.MainForm_Resize); + this.groupBox4.ResumeLayout(false); + this.groupBox4.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.PosAct)).EndInit(); + this.groupBox3.ResumeLayout(false); + this.groupBox3.PerformLayout(); + this.groupBox2.ResumeLayout(false); + this.groupBox2.PerformLayout(); + this.groupBox9.ResumeLayout(false); + this.groupBox9.PerformLayout(); + this.groupBox11.ResumeLayout(false); + this.groupBox11.PerformLayout(); + this.statusStrip1.ResumeLayout(false); + this.statusStrip1.PerformLayout(); + this.groupBox13.ResumeLayout(false); + this.groupBox13.PerformLayout(); + this.menuStrip1.ResumeLayout(false); + this.menuStrip1.PerformLayout(); + this.tabCtrlMain.ResumeLayout(false); + this.tpStatus.ResumeLayout(false); + this.gbMonitor.ResumeLayout(false); + this.gbMonitor.PerformLayout(); + this.groupBox6.ResumeLayout(false); + this.groupBox6.PerformLayout(); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.tbConf.ResumeLayout(false); + this.tpSIM.ResumeLayout(false); + this.groupBox5.ResumeLayout(false); + this.groupBox5.PerformLayout(); + this.Execution.ResumeLayout(false); + this.Execution.PerformLayout(); + this.mode.ResumeLayout(false); + this.mode.PerformLayout(); + this.groupBox7.ResumeLayout(false); + this.groupBox7.PerformLayout(); + this.groupBox10.ResumeLayout(false); + this.groupBox10.PerformLayout(); + this.groupBox8.ResumeLayout(false); + this.groupBox8.PerformLayout(); + this.groupBox12.ResumeLayout(false); + this.groupBox12.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); } diff --git a/MTC_Adapter/MTC_Adapter/MainForm.resx b/MTC_Adapter/MTC_Adapter/MainForm.resx index b7d94fe..a8117b7 100644 --- a/MTC_Adapter/MTC_Adapter/MainForm.resx +++ b/MTC_Adapter/MTC_Adapter/MainForm.resx @@ -138,6 +138,24 @@ True + + True + + + True + + + True + + + True + + + True + + + True + 104, 17 From b62f8383839a3594fb7d7336f89f0596694f7c86 Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Thu, 29 Jun 2017 10:45:36 +0200 Subject: [PATCH 02/21] Refresh x install --- MTC_Adapter/MTC_Adapter/App.config | 2 -- MTC_Adapter/MTC_Adapter/DATA/CONF/Adapter_ItemList.xml | 2 +- MTC_Adapter/MTC_Adapter/DATA/CONF/AlarmList.map | 2 +- MTC_Adapter/MTC_Adapter/DATA/CONF/IOT_StringList.map | 8 ++++---- 4 files changed, 6 insertions(+), 8 deletions(-) diff --git a/MTC_Adapter/MTC_Adapter/App.config b/MTC_Adapter/MTC_Adapter/App.config index f25d26a..be754da 100644 --- a/MTC_Adapter/MTC_Adapter/App.config +++ b/MTC_Adapter/MTC_Adapter/App.config @@ -1,9 +1,7 @@ - - diff --git a/MTC_Adapter/MTC_Adapter/DATA/CONF/Adapter_ItemList.xml b/MTC_Adapter/MTC_Adapter/DATA/CONF/Adapter_ItemList.xml index 9bf8da6..dbac0c1 100644 --- a/MTC_Adapter/MTC_Adapter/DATA/CONF/Adapter_ItemList.xml +++ b/MTC_Adapter/MTC_Adapter/DATA/CONF/Adapter_ItemList.xml @@ -44,7 +44,7 @@ - SlittaMagazzino_ + SlittaMagazzino_01 diff --git a/MTC_Adapter/MTC_Adapter/DATA/CONF/AlarmList.map b/MTC_Adapter/MTC_Adapter/DATA/CONF/AlarmList.map index c799ba6..62f333f 100644 --- a/MTC_Adapter/MTC_Adapter/DATA/CONF/AlarmList.map +++ b/MTC_Adapter/MTC_Adapter/DATA/CONF/AlarmList.map @@ -441,7 +441,7 @@ 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] - ... +000443|PLC|FAULT|[COD 002174] - --- COMPENSAZIONE TERMICA NON ATTIVA 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 diff --git a/MTC_Adapter/MTC_Adapter/DATA/CONF/IOT_StringList.map b/MTC_Adapter/MTC_Adapter/DATA/CONF/IOT_StringList.map index 7e9dfac..4664554 100644 --- a/MTC_Adapter/MTC_Adapter/DATA/CONF/IOT_StringList.map +++ b/MTC_Adapter/MTC_Adapter/DATA/CONF/IOT_StringList.map @@ -1,5 +1,5 @@ # 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) -1 001|IOT_PGMID_A1 |STRING -2 002|IOT_PGMID_A2 |STRING -3 003|IOT_PGMID_A3 |STRING -4 004|IOT_PGMID_A4 |STRING \ No newline at end of file +001|IOT_PGMID_A1 |STRING +002|IOT_PGMID_A2 |STRING +003|IOT_PGMID_A3 |STRING +004|IOT_PGMID_A4 |STRING \ No newline at end of file From 05fe01f6a5ab188406c195c1732b2b8f6ab4fc94 Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Thu, 29 Jun 2017 12:17:16 +0200 Subject: [PATCH 03/21] fix tipo dati x gestione UT Siemens --- .../CMSCncLib/CNC/CNC.SIEMENS/CNC.SIEMENS.vb | 14 +- .../DATA/CONF/Adapter_ItemList.xml | 140 +++++++++++++++++- .../MTC_Adapter/DATA/CONF/AlarmList.map | 6 +- 3 files changed, 147 insertions(+), 13 deletions(-) diff --git a/MTC_Adapter/CMSCncLib/CNC/CNC.SIEMENS/CNC.SIEMENS.vb b/MTC_Adapter/CMSCncLib/CNC/CNC.SIEMENS/CNC.SIEMENS.vb index 3b7a3f8..a3503d1 100644 --- a/MTC_Adapter/CMSCncLib/CNC/CNC.SIEMENS/CNC.SIEMENS.vb +++ b/MTC_Adapter/CMSCncLib/CNC/CNC.SIEMENS/CNC.SIEMENS.vb @@ -931,13 +931,13 @@ Namespace CNC ''' Public tabFamUt As UShort() ''' - ''' Tabella TIPO Vita Residua Famiglie Utensili (DB253.DBW1900) + ''' Tabella TIPO Vita Residua Famiglie Utensili (DB253.DBB1900) ''' - Public tabTipoVitaRes As UShort() + Public tabTipoVitaRes As Byte() ''' - ''' Tabella Vita Residua Famiglie Utensili (DB253.DBW4300) + ''' Tabella Vita Residua Famiglie Utensili (DB253.DBD4300) ''' - Public tabVitaRes As UShort() + Public tabVitaRes As UInt32() End Structure @@ -997,7 +997,7 @@ Namespace CNC itemRead(1) = New Item("DB253.DBW2500:[" & numVal & "]") 'tabUt_UT itemRead(2) = New Item("DB253.DBW2900:[" & numVal & "]") 'IdFamigliaUt itemRead(3) = New Item("DB253.DBW100:[" & numVal & "]") 'tabFamUt - itemRead(4) = New Item("DB253.DBW1900:[" & numVal & "]") 'tabTipoVitaRes + itemRead(4) = New Item("DB253.DBB1900:[" & numVal & "]") 'tabTipoVitaRes itemRead(5) = New Item("DB253.DBD4300:[" & numVal & "]") 'tabVitaRes Do @@ -1018,8 +1018,8 @@ Namespace CNC Dim _tabUt_UT(numVal - 1) As UShort Dim _tabIdFamUt(numVal - 1) As UShort Dim _tabFamUt(numVal - 1) As UShort - Dim _tabTipoVitaRes(numVal - 1) As UShort - Dim _tabVitaRes(numVal - 1) As UShort + Dim _tabTipoVitaRes(numVal - 1) As Byte + Dim _tabVitaRes(numVal - 1) As UInt32 ' faccio copia valori! For i As Integer = 0 To numUt - 1 diff --git a/MTC_Adapter/MTC_Adapter/DATA/CONF/Adapter_ItemList.xml b/MTC_Adapter/MTC_Adapter/DATA/CONF/Adapter_ItemList.xml index dbac0c1..66f2df4 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 - ADAPTER_FANUC - FANUC + ADAPTER_SIEMENS + SIEMENS 0 0 0 @@ -44,7 +44,7 @@ - SlittaMagazzino_01 + SlittaMagazzino_ @@ -83,6 +83,10 @@ Path_01 + + Path_02 + + @@ -169,5 +173,135 @@ + + Axis_07 + + + Axis_07_Type + LINEAR + + + Axis_07_Grp + 00 + + + + + Axis_08 + + + Axis_08_Type + LINEAR + + + Axis_08_Grp + 00 + + + + + Axis_09 + + + Axis_09_Type + LINEAR + + + Axis_09_Grp + 00 + + + + + Axis_10 + + + Axis_10_Type + LINEAR + + + Axis_10_Grp + 00 + + + + + Axis_11 + + + Axis_11_Type + LINEAR + + + Axis_11_Grp + 00 + + + + + Axis_12 + + + Axis_12_Type + LINEAR + + + Axis_12_Grp + 00 + + + + + 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 62f333f..6698345 100644 --- a/MTC_Adapter/MTC_Adapter/DATA/CONF/AlarmList.map +++ b/MTC_Adapter/MTC_Adapter/DATA/CONF/AlarmList.map @@ -377,7 +377,7 @@ 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 +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 @@ -431,7 +431,7 @@ 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] - ... +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] - ... @@ -441,7 +441,7 @@ 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] - --- COMPENSAZIONE TERMICA NON ATTIVA +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 From c7377f38f24478f4de960cd9e8746e756f407577 Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Thu, 29 Jun 2017 14:25:01 +0200 Subject: [PATCH 04/21] OK LEGGO singoli gruppi G... --- .../CMSCncLib/CNC/CNC.SIEMENS/CNC.SIEMENS.vb | 38 ++++++++++++++++++ MTC_Adapter/MTC_Adapter/AdapterSiemens.cs | 13 ++++-- .../Documentazione_SIEMENS_EN/pi_eng.GID | Bin 16826 -> 16826 bytes 3 files changed, 47 insertions(+), 4 deletions(-) diff --git a/MTC_Adapter/CMSCncLib/CNC/CNC.SIEMENS/CNC.SIEMENS.vb b/MTC_Adapter/CMSCncLib/CNC/CNC.SIEMENS/CNC.SIEMENS.vb index a3503d1..77621a2 100644 --- a/MTC_Adapter/CMSCncLib/CNC/CNC.SIEMENS/CNC.SIEMENS.vb +++ b/MTC_Adapter/CMSCncLib/CNC/CNC.SIEMENS/CNC.SIEMENS.vb @@ -1059,6 +1059,44 @@ Namespace CNC End Function + ''' + ''' recupera l'array dei codici G attivi + ''' + ''' + ''' Vettore codici attivi correnti + ''' + Public Function getPathGCodeMod(maxProc As Integer, ByRef GCodeCurr As String()) As Boolean + ' RIFERIMENTO: + ' txt Giuseppe + + ReDim itemRead(1) + itemRead(0) = New Item("/Channel/SelectedFunctions/ncFktAct[u1,1]") ' leggo primo proc... + itemRead(1) = New Item("/Channel/SelectedFunctions/ncFktAct[u1,2]") ' leggo primo proc... + 'itemRead(3) = New Item("DB253.DBW100:[" & numVal & "]") 'tabFamUt + 'itemRead(4) = New Item("DB253.DBB1900:[" & numVal & "]") 'tabTipoVitaRes + 'itemRead(5) = New Item("DB253.DBD4300:[" & numVal & "]") 'tabVitaRes + + Do + Try + m_DataSvcRW.Read(itemRead) + Exit Do + Catch ex As DataSvcBusyException + Debug.Print(ex.Message) + Catch ex As DataSvcException + Throw New CmsNcException("ERR GetStaticData CNC.SIEMENS DataSvcException", ex) + End Try + Loop + + ' faccio copia valori! + For i As Integer = 0 To itemRead.Length - 1 + GCodeCurr(i) = itemRead(i).Value + Next i + + ' chiudo! + Return True + + End Function + #End Region End Class diff --git a/MTC_Adapter/MTC_Adapter/AdapterSiemens.cs b/MTC_Adapter/MTC_Adapter/AdapterSiemens.cs index bf4f175..66f34b8 100644 --- a/MTC_Adapter/MTC_Adapter/AdapterSiemens.cs +++ b/MTC_Adapter/MTC_Adapter/AdapterSiemens.cs @@ -971,11 +971,16 @@ namespace MTC_Adapter { base.getPath(); + string[] vettGCod = new string[64]; + // recupero vettore generale G MODE + inizio = DateTime.Now; + SIEMENS_ref.getPathGCodeMod(1, ref vettGCod); + if (utils.CRB("recTime")) TimingData.addResult("R-GCodModal", DateTime.Now.Subtract(inizio).Ticks); + + string GCodAttivi = vettGCod[0]; + + #if false - // recupero vettore generale G MODE - inizio = DateTime.Now; - CMSCncLib.Focas1.ODBGCD vettGCodes = SIEMENS_ref.getPathGCodeMod(); - if (utils.CRB("recTime")) TimingData.addResult("R-GCodModal", DateTime.Now.Subtract(inizio).Ticks); string GCodAttivi = ""; GCodAttivi += string.Format("[{0}]", vettGCodes.gcd0.code); diff --git a/MaterialeSetup/SIEMENS/Documentazione_SIEMENS_EN/pi_eng.GID b/MaterialeSetup/SIEMENS/Documentazione_SIEMENS_EN/pi_eng.GID index 0ed112baf25e849bc97d1ff0817ca048206eb6c0..0507783301508c8b1d18730e4607018919191c57 100644 GIT binary patch delta 308 zcmdnh%($zWal;mq`kxF;4F7?EkpTj1ovmU*i&Kk=V~P`VOH*@FV_fo+OLJ56N{VB` zGK)(SbAn4sQ!?`dit@8klYxTHzQMY_AJSIe*Z$2hrc8{Jx0so-fdWB*W#U3R az6M}e7y%u#2}o~X+_CO9)SH#M(V z!9>qI#wE-JNE?{z85rpq7{;XJCzk@{N)k&l^Yda-^U`xNi!&x0n2I=1YRKmGrmTz; zH-t^zVrI%V+kurqfMw!BC9QoxR|*3ix`35|L5u~+Kmredaz;S@CLq0;apS@=rp+5I GIXM8YyhXSG From d7b55ef3365eab3df28f70b2a017a6d55be25523 Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Thu, 29 Jun 2017 14:46:25 +0200 Subject: [PATCH 05/21] ok completata lettura dei codifi G del PRIMO path (ora da implementare multi path...) --- MTC_Adapter/CMSCncLib/CNC/CNC.SIEMENS/CNC.SIEMENS.vb | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/MTC_Adapter/CMSCncLib/CNC/CNC.SIEMENS/CNC.SIEMENS.vb b/MTC_Adapter/CMSCncLib/CNC/CNC.SIEMENS/CNC.SIEMENS.vb index 77621a2..8055de0 100644 --- a/MTC_Adapter/CMSCncLib/CNC/CNC.SIEMENS/CNC.SIEMENS.vb +++ b/MTC_Adapter/CMSCncLib/CNC/CNC.SIEMENS/CNC.SIEMENS.vb @@ -1069,12 +1069,8 @@ Namespace CNC ' RIFERIMENTO: ' txt Giuseppe - ReDim itemRead(1) - itemRead(0) = New Item("/Channel/SelectedFunctions/ncFktAct[u1,1]") ' leggo primo proc... - itemRead(1) = New Item("/Channel/SelectedFunctions/ncFktAct[u1,2]") ' leggo primo proc... - 'itemRead(3) = New Item("DB253.DBW100:[" & numVal & "]") 'tabFamUt - 'itemRead(4) = New Item("DB253.DBB1900:[" & numVal & "]") 'tabTipoVitaRes - 'itemRead(5) = New Item("DB253.DBD4300:[" & numVal & "]") 'tabVitaRes + ReDim itemRead(0) + itemRead(0) = New Item("/Channel/SelectedFunctions/ncFktAct[u1,1,#64]") ' leggo TUTTI i 64 gruppi... Do Try @@ -1088,8 +1084,8 @@ Namespace CNC Loop ' faccio copia valori! - For i As Integer = 0 To itemRead.Length - 1 - GCodeCurr(i) = itemRead(i).Value + For i As Integer = 0 To 63 + GCodeCurr(i) = itemRead(0).Value(i) Next i ' chiudo! From 6fe74a631d1df89ae86e02c0dbc3e424a0c155a6 Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Thu, 29 Jun 2017 15:09:11 +0200 Subject: [PATCH 06/21] =?UTF-8?q?completata=20gestione=20GCodes=20modalit?= =?UTF-8?q?=C3=A0=20multipath?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CMSCncLib/CNC/CNC.SIEMENS/CNC.SIEMENS.vb | 21 +- MTC_Adapter/MTC_Adapter/AdapterSiemens.cs | 62 +- MTC_Adapter/MTC_Adapter/MainForm.Designer.cs | 4586 ++++++++--------- 3 files changed, 2325 insertions(+), 2344 deletions(-) diff --git a/MTC_Adapter/CMSCncLib/CNC/CNC.SIEMENS/CNC.SIEMENS.vb b/MTC_Adapter/CMSCncLib/CNC/CNC.SIEMENS/CNC.SIEMENS.vb index 8055de0..df4eb41 100644 --- a/MTC_Adapter/CMSCncLib/CNC/CNC.SIEMENS/CNC.SIEMENS.vb +++ b/MTC_Adapter/CMSCncLib/CNC/CNC.SIEMENS/CNC.SIEMENS.vb @@ -1065,13 +1065,20 @@ Namespace CNC ''' ''' Vettore codici attivi correnti ''' - Public Function getPathGCodeMod(maxProc As Integer, ByRef GCodeCurr As String()) As Boolean + Public Function getPathGCodeMod(maxProc As Integer, ByRef GCodeCurr As String(,)) As Boolean ' RIFERIMENTO: - ' txt Giuseppe + ' SynumerikOperate_net, pg 52 + ' Parameter manual NC, pg 401 - ReDim itemRead(0) - itemRead(0) = New Item("/Channel/SelectedFunctions/ncFktAct[u1,1,#64]") ' leggo TUTTI i 64 gruppi... + ' preparo memorie + Dim maxGruppi As Int16 + maxGruppi = 64 + ReDim itemRead(maxProc - 1) + For i As Integer = 0 To maxProc - 1 + itemRead(i) = New Item("/Channel/SelectedFunctions/ncFktAct[u" & i + 1 & ",1,#" & maxGruppi & "]") ' leggo TUTTI i gruppi... + Next i + 'lettura Do Try m_DataSvcRW.Read(itemRead) @@ -1084,8 +1091,10 @@ Namespace CNC Loop ' faccio copia valori! - For i As Integer = 0 To 63 - GCodeCurr(i) = itemRead(0).Value(i) + For i As Integer = 0 To maxGruppi - 1 + For j As Integer = 0 To maxProc - 1 + GCodeCurr(j, i) = itemRead(j).Value(i) + Next j Next i ' chiudo! diff --git a/MTC_Adapter/MTC_Adapter/AdapterSiemens.cs b/MTC_Adapter/MTC_Adapter/AdapterSiemens.cs index 66f34b8..0c15e5c 100644 --- a/MTC_Adapter/MTC_Adapter/AdapterSiemens.cs +++ b/MTC_Adapter/MTC_Adapter/AdapterSiemens.cs @@ -971,55 +971,16 @@ namespace MTC_Adapter { base.getPath(); - string[] vettGCod = new string[64]; + string[,] vettGCod = new string[2, 64]; // recupero vettore generale G MODE inizio = DateTime.Now; - SIEMENS_ref.getPathGCodeMod(1, ref vettGCod); + SIEMENS_ref.getPathGCodeMod(2, ref vettGCod); if (utils.CRB("recTime")) TimingData.addResult("R-GCodModal", DateTime.Now.Subtract(inizio).Ticks); - string GCodAttivi = vettGCod[0]; - + #if false - - string GCodAttivi = ""; - GCodAttivi += string.Format("[{0}]", vettGCodes.gcd0.code); - GCodAttivi += string.Format("[{0}]", vettGCodes.gcd1.code); - GCodAttivi += string.Format("[{0}]", vettGCodes.gcd2.code); - GCodAttivi += string.Format("[{0}]", vettGCodes.gcd3.code); - GCodAttivi += string.Format("[{0}]", vettGCodes.gcd4.code); - GCodAttivi += string.Format("[{0}]", vettGCodes.gcd5.code); - GCodAttivi += string.Format("[{0}]", vettGCodes.gcd6.code); - GCodAttivi += string.Format("[{0}]", vettGCodes.gcd7.code); - GCodAttivi += string.Format("[{0}]", vettGCodes.gcd8.code); - GCodAttivi += string.Format("[{0}]", vettGCodes.gcd9.code); - GCodAttivi += string.Format("[{0}]", vettGCodes.gcd10.code); - GCodAttivi += string.Format("[{0}]", vettGCodes.gcd11.code); - GCodAttivi += string.Format("[{0}]", vettGCodes.gcd12.code); - GCodAttivi += string.Format("[{0}]", vettGCodes.gcd13.code); - GCodAttivi += string.Format("[{0}]", vettGCodes.gcd14.code); - GCodAttivi += string.Format("[{0}]", vettGCodes.gcd15.code); - GCodAttivi += string.Format("[{0}]", vettGCodes.gcd16.code); - GCodAttivi += string.Format("[{0}]", vettGCodes.gcd17.code); - GCodAttivi += string.Format("[{0}]", vettGCodes.gcd18.code); - GCodAttivi += string.Format("[{0}]", vettGCodes.gcd19.code); - GCodAttivi += string.Format("[{0}]", vettGCodes.gcd20.code); - GCodAttivi += string.Format("[{0}]", vettGCodes.gcd21.code); - GCodAttivi += string.Format("[{0}]", vettGCodes.gcd22.code); - GCodAttivi += string.Format("[{0}]", vettGCodes.gcd23.code); - GCodAttivi += string.Format("[{0}]", vettGCodes.gcd24.code); - GCodAttivi += string.Format("[{0}]", vettGCodes.gcd25.code); - GCodAttivi += string.Format("[{0}]", vettGCodes.gcd26.code); - GCodAttivi += string.Format("[{0}]", vettGCodes.gcd27.code); - - inizio = DateTime.Now; - vettGCodes = SIEMENS_ref.getPathGCode1Shot(); - if (utils.CRB("recTime")) TimingData.addResult("R-GCodOneShot", DateTime.Now.Subtract(inizio).Ticks); - if (vettGCodes.gcd0.flag > 0) GCodAttivi += string.Format("[{0}]", vettGCodes.gcd0.code); - if (vettGCodes.gcd1.flag > 0) GCodAttivi += string.Format("[{0}]", vettGCodes.gcd1.code); - if (vettGCodes.gcd2.flag > 0) GCodAttivi += string.Format("[{0}]", vettGCodes.gcd2.code); - if (vettGCodes.gcd3.flag > 0) GCodAttivi += string.Format("[{0}]", vettGCodes.gcd3.code); - + inizio = DateTime.Now; CMSCncLib.Focas1.ODB5AXMAN vettTTCoord = SIEMENS_ref.getPathTTCoord(); if (utils.CRB("recTime")) TimingData.addResult("R-TTCoord", DateTime.Now.Subtract(inizio).Ticks); @@ -1034,8 +995,20 @@ namespace MTC_Adapter sb_2 = new StringBuilder(); sb_3 = new StringBuilder(); + // copio gcodes! + string GCodAttivi = ""; + for (int j = 0; j < 64; j++) + { + // SOLO se è diverso da vuoto... + if (vettGCod[i, j] != "") + { + GCodAttivi += string.Format("[{0}]", vettGCod[i, j]); + } + } + + vettPath[i].mPathCodG_Act.Value = GCodAttivi; + sb_3.AppendLine(string.Format("Path {0}, GCodes: {1}", i + 1, GCodAttivi)); #if false - vettPath[i].mPathCodG_Act.Value = GCodAttivi; vettPath[i].mPathPosActX.Value = ((decimal)vettTTCoord.data1) / utils.CRI("fattdecimale"); vettPath[i].mPathPosActY.Value = ((decimal)vettTTCoord.data2) / utils.CRI("fattdecimale"); @@ -1049,7 +1022,6 @@ namespace MTC_Adapter vettPath[i].mPathActiveAxes.Value = ""; sb_2.AppendLine(string.Format("Path {0}, PROG: {1}", i + 1, vettPath[i].mPathCurrProg.Value)); - sb_3.AppendLine(string.Format("Path {0}, GCodes: {1}", i + 1, GCodAttivi)); sb_3.AppendLine(string.Format("Path {0}, Asse 1: {1:N3}", i + 1, ((decimal)vettTTCoord.data1) / utils.CRI("fattdecimale"))); sb_3.AppendLine(string.Format("Path {0}, Asse 2: {1:N3}", i + 1, ((decimal)vettTTCoord.data2) / utils.CRI("fattdecimale"))); diff --git a/MTC_Adapter/MTC_Adapter/MainForm.Designer.cs b/MTC_Adapter/MTC_Adapter/MainForm.Designer.cs index 9f9ef86..1f63910 100644 --- a/MTC_Adapter/MTC_Adapter/MainForm.Designer.cs +++ b/MTC_Adapter/MTC_Adapter/MainForm.Designer.cs @@ -28,2318 +28,2318 @@ /// private void InitializeComponent() { - this.components = new System.ComponentModel.Container(); - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm)); - this.PlcErr_02 = new System.Windows.Forms.CheckBox(); - this.gather = new System.Windows.Forms.Timer(this.components); - this.groupBox4 = new System.Windows.Forms.GroupBox(); - this.label8 = new System.Windows.Forms.Label(); - this.label7 = new System.Windows.Forms.Label(); - this.messageText = new System.Windows.Forms.TextBox(); - this.messageCode = new System.Windows.Forms.TextBox(); - this.label6 = new System.Windows.Forms.Label(); - this.AxFeedOverValue = new System.Windows.Forms.TextBox(); - this.AxFeedActValue = new System.Windows.Forms.TextBox(); - this.label9 = new System.Windows.Forms.Label(); - this.AxFeedOver = new System.Windows.Forms.HScrollBar(); - this.label10 = new System.Windows.Forms.Label(); - this.AxFeedAct = new System.Windows.Forms.HScrollBar(); - this.partID = new System.Windows.Forms.TextBox(); - this.label13 = new System.Windows.Forms.Label(); - this.functionalMode = new System.Windows.Forms.ComboBox(); - this.label12 = new System.Windows.Forms.Label(); - this.PosAct = new System.Windows.Forms.DataGridView(); - this.X = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.Y = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.Z = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.I = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.J = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.K = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.PlcErr_03 = new System.Windows.Forms.CheckBox(); - this.PlcErr_01 = new System.Windows.Forms.CheckBox(); - this.groupBox3 = new System.Windows.Forms.GroupBox(); - this.ErrRT_03 = new System.Windows.Forms.CheckBox(); - this.ErrRT_02 = new System.Windows.Forms.CheckBox(); - this.CncErr_02 = new System.Windows.Forms.CheckBox(); - this.CncErr_03 = new System.Windows.Forms.CheckBox(); - this.CncErr_01 = new System.Windows.Forms.CheckBox(); - this.SysErr_03 = new System.Windows.Forms.CheckBox(); - this.ErrRT_01 = new System.Windows.Forms.CheckBox(); - this.SysErr_02 = new System.Windows.Forms.CheckBox(); - this.SysErr_01 = new System.Windows.Forms.CheckBox(); - this.groupBox2 = new System.Windows.Forms.GroupBox(); - this.AxAccelAct = new System.Windows.Forms.TextBox(); - this.label37 = new System.Windows.Forms.Label(); - this.AxBatt = new System.Windows.Forms.TextBox(); - this.label36 = new System.Windows.Forms.Label(); - this.AxAccTime = new System.Windows.Forms.TextBox(); - this.label11 = new System.Windows.Forms.Label(); - this.AxDir = new System.Windows.Forms.TextBox(); - this.label35 = new System.Windows.Forms.Label(); - this.label34 = new System.Windows.Forms.Label(); - this.cbAxType = new System.Windows.Forms.ComboBox(); - this.AxMastId = new System.Windows.Forms.TextBox(); - this.label33 = new System.Windows.Forms.Label(); - this.AxIsMaster = new System.Windows.Forms.CheckBox(); - this.AxMainProc = new System.Windows.Forms.TextBox(); - this.label32 = new System.Windows.Forms.Label(); - this.cbAxNum = new System.Windows.Forms.ComboBox(); - this.label31 = new System.Windows.Forms.Label(); - this.AxPositionValue = new System.Windows.Forms.TextBox(); - this.AxLoadValue = new System.Windows.Forms.TextBox(); - this.label5 = new System.Windows.Forms.Label(); - this.AxPosition = new System.Windows.Forms.HScrollBar(); - this.label4 = new System.Windows.Forms.Label(); - this.label3 = new System.Windows.Forms.Label(); - this.AxLoad = new System.Windows.Forms.HScrollBar(); - this.program = new System.Windows.Forms.TextBox(); - this.label2 = new System.Windows.Forms.Label(); - this.groupBox9 = new System.Windows.Forms.GroupBox(); - this.txtPzKo = new System.Windows.Forms.TextBox(); - this.label25 = new System.Windows.Forms.Label(); - this.txtPzOk = new System.Windows.Forms.TextBox(); - this.label23 = new System.Windows.Forms.Label(); - this.txtPzTot = new System.Windows.Forms.TextBox(); - this.label21 = new System.Windows.Forms.Label(); - this.OPERATOR_ID = new System.Windows.Forms.TextBox(); - this.label19 = new System.Windows.Forms.Label(); - this.PROG_ROW_NUM = new System.Windows.Forms.TextBox(); - this.label17 = new System.Windows.Forms.Label(); - this.groupBox11 = new System.Windows.Forms.GroupBox(); - this.STATUS_STRB_DW3 = new System.Windows.Forms.TextBox(); - this.label49 = new System.Windows.Forms.Label(); - this.STATUS_STRB_DW2 = new System.Windows.Forms.TextBox(); - this.label47 = new System.Windows.Forms.Label(); - this.STATUS_STRB_DW1 = new System.Windows.Forms.TextBox(); - this.label18 = new System.Windows.Forms.Label(); - this.STATUS_STRB_DW0 = new System.Windows.Forms.TextBox(); - this.lblPLC_ADP = new System.Windows.Forms.Label(); - this.statusStrip1 = new System.Windows.Forms.StatusStrip(); - this.lblApp = new System.Windows.Forms.ToolStripStatusLabel(); - this.lblVers = new System.Windows.Forms.ToolStripStatusLabel(); - this.MainProgrBar = new System.Windows.Forms.ToolStripProgressBar(); - this.lblComStats = new System.Windows.Forms.ToolStripStatusLabel(); - this.lblStatus = new System.Windows.Forms.ToolStripStatusLabel(); - this.groupBox13 = new System.Windows.Forms.GroupBox(); - this.cbPathSel = new System.Windows.Forms.ComboBox(); - this.label38 = new System.Windows.Forms.Label(); - this.label29 = new System.Windows.Forms.Label(); - this.txtPathSpeedOver = new System.Windows.Forms.TextBox(); - this.label28 = new System.Windows.Forms.Label(); - this.hsPathSpeedOver = new System.Windows.Forms.HScrollBar(); - this.txtPathFeedOver = new System.Windows.Forms.TextBox(); - this.label27 = new System.Windows.Forms.Label(); - this.hsPathFeedOver = new System.Windows.Forms.HScrollBar(); - this.txtPathFeed = new System.Windows.Forms.TextBox(); - this.label26 = new System.Windows.Forms.Label(); - this.hsPathFeed = new System.Windows.Forms.HScrollBar(); - this.menuStrip1 = new System.Windows.Forms.MenuStrip(); - this.fILEToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.mLoadAdaptConf = new System.Windows.Forms.ToolStripMenuItem(); - this.sETUPToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.mConfGen = new System.Windows.Forms.ToolStripMenuItem(); - this.lblCurrAdapt = new System.Windows.Forms.Label(); - this.tabCtrlMain = new System.Windows.Forms.TabControl(); - this.tpStatus = new System.Windows.Forms.TabPage(); - this.gbMonitor = new System.Windows.Forms.GroupBox(); - this.lblOutMessage3 = new System.Windows.Forms.Label(); - this.lblOutMessage = new System.Windows.Forms.Label(); - this.lblOutMessage2 = new System.Windows.Forms.Label(); - this.groupBox6 = new System.Windows.Forms.GroupBox(); - this.STATUS_ACK_DW3 = new System.Windows.Forms.TextBox(); - this.label52 = new System.Windows.Forms.Label(); - this.STATUS_ACK_DW2 = new System.Windows.Forms.TextBox(); - this.label51 = new System.Windows.Forms.Label(); - this.STATUS_ACK_DW1 = new System.Windows.Forms.TextBox(); - this.label50 = new System.Windows.Forms.Label(); - this.STATUS_ACK_DW0 = new System.Windows.Forms.TextBox(); - this.label48 = new System.Windows.Forms.Label(); - this.groupBox1 = new System.Windows.Forms.GroupBox(); - this.dump = new System.Windows.Forms.Button(); - this.stop = new System.Windows.Forms.Button(); - this.start = new System.Windows.Forms.Button(); - this.port = new System.Windows.Forms.TextBox(); - this.label1 = new System.Windows.Forms.Label(); - this.tbConf = new System.Windows.Forms.TabPage(); - this.wbXmlConf = new System.Windows.Forms.WebBrowser(); - this.tpSIM = new System.Windows.Forms.TabPage(); - this.groupBox5 = new System.Windows.Forms.GroupBox(); - this.uoSpeedVal = new System.Windows.Forms.TextBox(); - this.uoLoadVal = new System.Windows.Forms.TextBox(); - this.label45 = new System.Windows.Forms.Label(); - this.uoSpeed = new System.Windows.Forms.HScrollBar(); - this.label46 = new System.Windows.Forms.Label(); - this.uoLoad = new System.Windows.Forms.HScrollBar(); - this.uoVitaRes = new System.Windows.Forms.TextBox(); - this.label43 = new System.Windows.Forms.Label(); - this.uoAccTime = new System.Windows.Forms.TextBox(); - this.label44 = new System.Windows.Forms.Label(); - this.uoToolId = new System.Windows.Forms.TextBox(); - this.label40 = new System.Windows.Forms.Label(); - this.uoStatus = new System.Windows.Forms.TextBox(); - this.label41 = new System.Windows.Forms.Label(); - this.uoNumCU = new System.Windows.Forms.TextBox(); - this.label42 = new System.Windows.Forms.Label(); - this.cbUnOpSel = new System.Windows.Forms.ComboBox(); - this.label39 = new System.Windows.Forms.Label(); - this.Execution = new System.Windows.Forms.GroupBox(); - this.ready = new System.Windows.Forms.RadioButton(); - this.feedhold = new System.Windows.Forms.RadioButton(); - this.stopped = new System.Windows.Forms.RadioButton(); - this.running = new System.Windows.Forms.RadioButton(); - this.mode = new System.Windows.Forms.GroupBox(); - this.edit = new System.Windows.Forms.RadioButton(); - this.mdi = new System.Windows.Forms.RadioButton(); - this.manual = new System.Windows.Forms.RadioButton(); - this.automatic = new System.Windows.Forms.RadioButton(); - this.groupBox7 = new System.Windows.Forms.GroupBox(); - this.D1_UUID = new System.Windows.Forms.Label(); - this.D1_ID = new System.Windows.Forms.Label(); - this.D1_NAME = new System.Windows.Forms.Label(); - this.lblAT = new System.Windows.Forms.Label(); - this.txtAccTime = new System.Windows.Forms.TextBox(); - this.label30 = new System.Windows.Forms.Label(); - this.txtPower = new System.Windows.Forms.TextBox(); - this.label16 = new System.Windows.Forms.Label(); - this.label15 = new System.Windows.Forms.Label(); - this.label14 = new System.Windows.Forms.Label(); - this.groupBox10 = new System.Windows.Forms.GroupBox(); - this.enableDataSim = new System.Windows.Forms.CheckBox(); - this.groupBox8 = new System.Windows.Forms.GroupBox(); - this.estop = new System.Windows.Forms.CheckBox(); - this.groupBox12 = new System.Windows.Forms.GroupBox(); - this.lblCodaT = new System.Windows.Forms.Label(); - this.addCodT = new System.Windows.Forms.TextBox(); - this.label24 = new System.Windows.Forms.Label(); - this.lblCodaS = new System.Windows.Forms.Label(); - this.addCodS = new System.Windows.Forms.TextBox(); - this.label22 = new System.Windows.Forms.Label(); - this.lblCodaM = new System.Windows.Forms.Label(); - this.addCodM = new System.Windows.Forms.TextBox(); - this.label20 = new System.Windows.Forms.Label(); - this.notifyIcon1 = new System.Windows.Forms.NotifyIcon(this.components); - this.trayMenu = new System.Windows.Forms.ContextMenuStrip(this.components); - this.groupBox4.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.PosAct)).BeginInit(); - this.groupBox3.SuspendLayout(); - this.groupBox2.SuspendLayout(); - this.groupBox9.SuspendLayout(); - this.groupBox11.SuspendLayout(); - this.statusStrip1.SuspendLayout(); - this.groupBox13.SuspendLayout(); - this.menuStrip1.SuspendLayout(); - this.tabCtrlMain.SuspendLayout(); - this.tpStatus.SuspendLayout(); - this.gbMonitor.SuspendLayout(); - this.groupBox6.SuspendLayout(); - this.groupBox1.SuspendLayout(); - this.tbConf.SuspendLayout(); - this.tpSIM.SuspendLayout(); - this.groupBox5.SuspendLayout(); - this.Execution.SuspendLayout(); - this.mode.SuspendLayout(); - this.groupBox7.SuspendLayout(); - this.groupBox10.SuspendLayout(); - this.groupBox8.SuspendLayout(); - this.groupBox12.SuspendLayout(); - this.SuspendLayout(); - // - // PlcErr_02 - // - this.PlcErr_02.AutoSize = true; - this.PlcErr_02.Location = new System.Drawing.Point(128, 53); - this.PlcErr_02.Margin = new System.Windows.Forms.Padding(4); - this.PlcErr_02.Name = "PlcErr_02"; - this.PlcErr_02.Size = new System.Drawing.Size(92, 21); - this.PlcErr_02.TabIndex = 6; - this.PlcErr_02.Text = "PlcErr_05"; - this.PlcErr_02.UseVisualStyleBackColor = true; - this.PlcErr_02.CheckedChanged += new System.EventHandler(this.SysErr_01_CheckedChanged); - // - // gather - // - this.gather.Tick += new System.EventHandler(this.gather_Tick); - // - // groupBox4 - // - this.groupBox4.Controls.Add(this.label8); - this.groupBox4.Controls.Add(this.label7); - this.groupBox4.Controls.Add(this.messageText); - this.groupBox4.Controls.Add(this.messageCode); - this.groupBox4.Location = new System.Drawing.Point(5, 514); - this.groupBox4.Margin = new System.Windows.Forms.Padding(4); - this.groupBox4.Name = "groupBox4"; - this.groupBox4.Padding = new System.Windows.Forms.Padding(4); - this.groupBox4.Size = new System.Drawing.Size(505, 64); - this.groupBox4.TabIndex = 44; - this.groupBox4.TabStop = false; - this.groupBox4.Text = "Message"; - // - // label8 - // - this.label8.AutoSize = true; - this.label8.Location = new System.Drawing.Point(157, 32); - this.label8.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label8.Name = "label8"; - this.label8.Size = new System.Drawing.Size(35, 17); - this.label8.TabIndex = 19; - this.label8.Text = "Text"; - // - // label7 - // - this.label7.AutoSize = true; - this.label7.Location = new System.Drawing.Point(5, 32); - this.label7.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label7.Name = "label7"; - this.label7.Size = new System.Drawing.Size(41, 17); - this.label7.TabIndex = 18; - this.label7.Text = "Code"; - // - // messageText - // - this.messageText.Location = new System.Drawing.Point(201, 28); - this.messageText.Margin = new System.Windows.Forms.Padding(4); - this.messageText.Name = "messageText"; - this.messageText.Size = new System.Drawing.Size(285, 22); - this.messageText.TabIndex = 14; - this.messageText.Leave += new System.EventHandler(this.message_Leave); - // - // messageCode - // - this.messageCode.Location = new System.Drawing.Point(67, 28); - this.messageCode.Margin = new System.Windows.Forms.Padding(4); - this.messageCode.Name = "messageCode"; - this.messageCode.Size = new System.Drawing.Size(81, 22); - this.messageCode.TabIndex = 13; - // - // label6 - // - this.label6.AutoSize = true; - this.label6.Location = new System.Drawing.Point(16, 452); - this.label6.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label6.Name = "label6"; - this.label6.Size = new System.Drawing.Size(0, 17); - this.label6.TabIndex = 43; - // - // AxFeedOverValue - // - this.AxFeedOverValue.Location = new System.Drawing.Point(353, 201); - this.AxFeedOverValue.Margin = new System.Windows.Forms.Padding(4); - this.AxFeedOverValue.Name = "AxFeedOverValue"; - this.AxFeedOverValue.Size = new System.Drawing.Size(132, 22); - this.AxFeedOverValue.TabIndex = 26; - // - // AxFeedActValue - // - this.AxFeedActValue.Location = new System.Drawing.Point(353, 175); - this.AxFeedActValue.Margin = new System.Windows.Forms.Padding(4); - this.AxFeedActValue.Name = "AxFeedActValue"; - this.AxFeedActValue.Size = new System.Drawing.Size(132, 22); - this.AxFeedActValue.TabIndex = 25; - // - // label9 - // - this.label9.AutoSize = true; - this.label9.Location = new System.Drawing.Point(16, 204); - this.label9.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label9.Name = "label9"; - this.label9.Size = new System.Drawing.Size(75, 17); - this.label9.TabIndex = 24; - this.label9.Text = "Feed Over"; - // - // AxFeedOver - // - this.AxFeedOver.Location = new System.Drawing.Point(108, 201); - this.AxFeedOver.Maximum = 150; - this.AxFeedOver.Name = "AxFeedOver"; - this.AxFeedOver.Size = new System.Drawing.Size(224, 18); - this.AxFeedOver.TabIndex = 23; - this.AxFeedOver.Scroll += new System.Windows.Forms.ScrollEventHandler(this.cSpeed_Scroll); - // - // label10 - // - this.label10.AutoSize = true; - this.label10.Location = new System.Drawing.Point(16, 178); - this.label10.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label10.Name = "label10"; - this.label10.Size = new System.Drawing.Size(64, 17); - this.label10.TabIndex = 22; - this.label10.Text = "Feed Act"; - // - // AxFeedAct - // - this.AxFeedAct.Location = new System.Drawing.Point(108, 175); - this.AxFeedAct.Name = "AxFeedAct"; - this.AxFeedAct.Size = new System.Drawing.Size(224, 18); - this.AxFeedAct.TabIndex = 20; - this.AxFeedAct.Scroll += new System.Windows.Forms.ScrollEventHandler(this.cLoad_Scroll); - // - // partID - // - this.partID.Location = new System.Drawing.Point(107, 55); - this.partID.Margin = new System.Windows.Forms.Padding(4); - this.partID.Name = "partID"; - this.partID.Size = new System.Drawing.Size(132, 22); - this.partID.TabIndex = 49; - // - // label13 - // - this.label13.AutoSize = true; - this.label13.Location = new System.Drawing.Point(41, 59); - this.label13.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label13.Name = "label13"; - this.label13.Size = new System.Drawing.Size(51, 17); - this.label13.TabIndex = 48; - this.label13.Text = "Part ID"; - // - // functionalMode - // - this.functionalMode.FormattingEnabled = true; - this.functionalMode.Location = new System.Drawing.Point(107, 87); - this.functionalMode.Margin = new System.Windows.Forms.Padding(4); - this.functionalMode.Name = "functionalMode"; - this.functionalMode.Size = new System.Drawing.Size(389, 24); - this.functionalMode.TabIndex = 47; - // - // label12 - // - this.label12.AutoSize = true; - this.label12.Location = new System.Drawing.Point(20, 91); - this.label12.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label12.Name = "label12"; - this.label12.Size = new System.Drawing.Size(69, 17); - this.label12.TabIndex = 46; - this.label12.Text = "Halt Type"; - // - // PosAct - // - this.PosAct.AllowUserToAddRows = false; - this.PosAct.AllowUserToDeleteRows = false; - this.PosAct.AllowUserToResizeColumns = false; - this.PosAct.AllowUserToResizeRows = false; - this.PosAct.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; - this.PosAct.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm)); + this.PlcErr_02 = new System.Windows.Forms.CheckBox(); + this.gather = new System.Windows.Forms.Timer(this.components); + this.groupBox4 = new System.Windows.Forms.GroupBox(); + this.label8 = new System.Windows.Forms.Label(); + this.label7 = new System.Windows.Forms.Label(); + this.messageText = new System.Windows.Forms.TextBox(); + this.messageCode = new System.Windows.Forms.TextBox(); + this.label6 = new System.Windows.Forms.Label(); + this.AxFeedOverValue = new System.Windows.Forms.TextBox(); + this.AxFeedActValue = new System.Windows.Forms.TextBox(); + this.label9 = new System.Windows.Forms.Label(); + this.AxFeedOver = new System.Windows.Forms.HScrollBar(); + this.label10 = new System.Windows.Forms.Label(); + this.AxFeedAct = new System.Windows.Forms.HScrollBar(); + this.partID = new System.Windows.Forms.TextBox(); + this.label13 = new System.Windows.Forms.Label(); + this.functionalMode = new System.Windows.Forms.ComboBox(); + this.label12 = new System.Windows.Forms.Label(); + this.PosAct = new System.Windows.Forms.DataGridView(); + this.X = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Y = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Z = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.I = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.J = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.K = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.PlcErr_03 = new System.Windows.Forms.CheckBox(); + this.PlcErr_01 = new System.Windows.Forms.CheckBox(); + this.groupBox3 = new System.Windows.Forms.GroupBox(); + this.ErrRT_03 = new System.Windows.Forms.CheckBox(); + this.ErrRT_02 = new System.Windows.Forms.CheckBox(); + this.CncErr_02 = new System.Windows.Forms.CheckBox(); + this.CncErr_03 = new System.Windows.Forms.CheckBox(); + this.CncErr_01 = new System.Windows.Forms.CheckBox(); + this.SysErr_03 = new System.Windows.Forms.CheckBox(); + this.ErrRT_01 = new System.Windows.Forms.CheckBox(); + this.SysErr_02 = new System.Windows.Forms.CheckBox(); + this.SysErr_01 = new System.Windows.Forms.CheckBox(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.AxAccelAct = new System.Windows.Forms.TextBox(); + this.label37 = new System.Windows.Forms.Label(); + this.AxBatt = new System.Windows.Forms.TextBox(); + this.label36 = new System.Windows.Forms.Label(); + this.AxAccTime = new System.Windows.Forms.TextBox(); + this.label11 = new System.Windows.Forms.Label(); + this.AxDir = new System.Windows.Forms.TextBox(); + this.label35 = new System.Windows.Forms.Label(); + this.label34 = new System.Windows.Forms.Label(); + this.cbAxType = new System.Windows.Forms.ComboBox(); + this.AxMastId = new System.Windows.Forms.TextBox(); + this.label33 = new System.Windows.Forms.Label(); + this.AxIsMaster = new System.Windows.Forms.CheckBox(); + this.AxMainProc = new System.Windows.Forms.TextBox(); + this.label32 = new System.Windows.Forms.Label(); + this.cbAxNum = new System.Windows.Forms.ComboBox(); + this.label31 = new System.Windows.Forms.Label(); + this.AxPositionValue = new System.Windows.Forms.TextBox(); + this.AxLoadValue = new System.Windows.Forms.TextBox(); + this.label5 = new System.Windows.Forms.Label(); + this.AxPosition = new System.Windows.Forms.HScrollBar(); + this.label4 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.AxLoad = new System.Windows.Forms.HScrollBar(); + this.program = new System.Windows.Forms.TextBox(); + this.label2 = new System.Windows.Forms.Label(); + this.groupBox9 = new System.Windows.Forms.GroupBox(); + this.txtPzKo = new System.Windows.Forms.TextBox(); + this.label25 = new System.Windows.Forms.Label(); + this.txtPzOk = new System.Windows.Forms.TextBox(); + this.label23 = new System.Windows.Forms.Label(); + this.txtPzTot = new System.Windows.Forms.TextBox(); + this.label21 = new System.Windows.Forms.Label(); + this.OPERATOR_ID = new System.Windows.Forms.TextBox(); + this.label19 = new System.Windows.Forms.Label(); + this.PROG_ROW_NUM = new System.Windows.Forms.TextBox(); + this.label17 = new System.Windows.Forms.Label(); + this.groupBox11 = new System.Windows.Forms.GroupBox(); + this.STATUS_STRB_DW3 = new System.Windows.Forms.TextBox(); + this.label49 = new System.Windows.Forms.Label(); + this.STATUS_STRB_DW2 = new System.Windows.Forms.TextBox(); + this.label47 = new System.Windows.Forms.Label(); + this.STATUS_STRB_DW1 = new System.Windows.Forms.TextBox(); + this.label18 = new System.Windows.Forms.Label(); + this.STATUS_STRB_DW0 = new System.Windows.Forms.TextBox(); + this.lblPLC_ADP = new System.Windows.Forms.Label(); + this.statusStrip1 = new System.Windows.Forms.StatusStrip(); + this.lblApp = new System.Windows.Forms.ToolStripStatusLabel(); + this.lblVers = new System.Windows.Forms.ToolStripStatusLabel(); + this.MainProgrBar = new System.Windows.Forms.ToolStripProgressBar(); + this.lblComStats = new System.Windows.Forms.ToolStripStatusLabel(); + this.lblStatus = new System.Windows.Forms.ToolStripStatusLabel(); + this.groupBox13 = new System.Windows.Forms.GroupBox(); + this.cbPathSel = new System.Windows.Forms.ComboBox(); + this.label38 = new System.Windows.Forms.Label(); + this.label29 = new System.Windows.Forms.Label(); + this.txtPathSpeedOver = new System.Windows.Forms.TextBox(); + this.label28 = new System.Windows.Forms.Label(); + this.hsPathSpeedOver = new System.Windows.Forms.HScrollBar(); + this.txtPathFeedOver = new System.Windows.Forms.TextBox(); + this.label27 = new System.Windows.Forms.Label(); + this.hsPathFeedOver = new System.Windows.Forms.HScrollBar(); + this.txtPathFeed = new System.Windows.Forms.TextBox(); + this.label26 = new System.Windows.Forms.Label(); + this.hsPathFeed = new System.Windows.Forms.HScrollBar(); + this.menuStrip1 = new System.Windows.Forms.MenuStrip(); + this.fILEToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.mLoadAdaptConf = new System.Windows.Forms.ToolStripMenuItem(); + this.sETUPToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.mConfGen = new System.Windows.Forms.ToolStripMenuItem(); + this.lblCurrAdapt = new System.Windows.Forms.Label(); + this.tabCtrlMain = new System.Windows.Forms.TabControl(); + this.tpStatus = new System.Windows.Forms.TabPage(); + this.gbMonitor = new System.Windows.Forms.GroupBox(); + this.lblOutMessage3 = new System.Windows.Forms.Label(); + this.lblOutMessage2 = new System.Windows.Forms.Label(); + this.lblOutMessage = new System.Windows.Forms.Label(); + this.groupBox6 = new System.Windows.Forms.GroupBox(); + this.STATUS_ACK_DW3 = new System.Windows.Forms.TextBox(); + this.label52 = new System.Windows.Forms.Label(); + this.STATUS_ACK_DW2 = new System.Windows.Forms.TextBox(); + this.label51 = new System.Windows.Forms.Label(); + this.STATUS_ACK_DW1 = new System.Windows.Forms.TextBox(); + this.label50 = new System.Windows.Forms.Label(); + this.STATUS_ACK_DW0 = new System.Windows.Forms.TextBox(); + this.label48 = new System.Windows.Forms.Label(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.dump = new System.Windows.Forms.Button(); + this.stop = new System.Windows.Forms.Button(); + this.start = new System.Windows.Forms.Button(); + this.port = new System.Windows.Forms.TextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.tbConf = new System.Windows.Forms.TabPage(); + this.wbXmlConf = new System.Windows.Forms.WebBrowser(); + this.tpSIM = new System.Windows.Forms.TabPage(); + this.groupBox5 = new System.Windows.Forms.GroupBox(); + this.uoSpeedVal = new System.Windows.Forms.TextBox(); + this.uoLoadVal = new System.Windows.Forms.TextBox(); + this.label45 = new System.Windows.Forms.Label(); + this.uoSpeed = new System.Windows.Forms.HScrollBar(); + this.label46 = new System.Windows.Forms.Label(); + this.uoLoad = new System.Windows.Forms.HScrollBar(); + this.uoVitaRes = new System.Windows.Forms.TextBox(); + this.label43 = new System.Windows.Forms.Label(); + this.uoAccTime = new System.Windows.Forms.TextBox(); + this.label44 = new System.Windows.Forms.Label(); + this.uoToolId = new System.Windows.Forms.TextBox(); + this.label40 = new System.Windows.Forms.Label(); + this.uoStatus = new System.Windows.Forms.TextBox(); + this.label41 = new System.Windows.Forms.Label(); + this.uoNumCU = new System.Windows.Forms.TextBox(); + this.label42 = new System.Windows.Forms.Label(); + this.cbUnOpSel = new System.Windows.Forms.ComboBox(); + this.label39 = new System.Windows.Forms.Label(); + this.Execution = new System.Windows.Forms.GroupBox(); + this.ready = new System.Windows.Forms.RadioButton(); + this.feedhold = new System.Windows.Forms.RadioButton(); + this.stopped = new System.Windows.Forms.RadioButton(); + this.running = new System.Windows.Forms.RadioButton(); + this.mode = new System.Windows.Forms.GroupBox(); + this.edit = new System.Windows.Forms.RadioButton(); + this.mdi = new System.Windows.Forms.RadioButton(); + this.manual = new System.Windows.Forms.RadioButton(); + this.automatic = new System.Windows.Forms.RadioButton(); + this.groupBox7 = new System.Windows.Forms.GroupBox(); + this.D1_UUID = new System.Windows.Forms.Label(); + this.D1_ID = new System.Windows.Forms.Label(); + this.D1_NAME = new System.Windows.Forms.Label(); + this.lblAT = new System.Windows.Forms.Label(); + this.txtAccTime = new System.Windows.Forms.TextBox(); + this.label30 = new System.Windows.Forms.Label(); + this.txtPower = new System.Windows.Forms.TextBox(); + this.label16 = new System.Windows.Forms.Label(); + this.label15 = new System.Windows.Forms.Label(); + this.label14 = new System.Windows.Forms.Label(); + this.groupBox10 = new System.Windows.Forms.GroupBox(); + this.enableDataSim = new System.Windows.Forms.CheckBox(); + this.groupBox8 = new System.Windows.Forms.GroupBox(); + this.estop = new System.Windows.Forms.CheckBox(); + this.groupBox12 = new System.Windows.Forms.GroupBox(); + this.lblCodaT = new System.Windows.Forms.Label(); + this.addCodT = new System.Windows.Forms.TextBox(); + this.label24 = new System.Windows.Forms.Label(); + this.lblCodaS = new System.Windows.Forms.Label(); + this.addCodS = new System.Windows.Forms.TextBox(); + this.label22 = new System.Windows.Forms.Label(); + this.lblCodaM = new System.Windows.Forms.Label(); + this.addCodM = new System.Windows.Forms.TextBox(); + this.label20 = new System.Windows.Forms.Label(); + this.notifyIcon1 = new System.Windows.Forms.NotifyIcon(this.components); + this.trayMenu = new System.Windows.Forms.ContextMenuStrip(this.components); + this.groupBox4.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.PosAct)).BeginInit(); + this.groupBox3.SuspendLayout(); + this.groupBox2.SuspendLayout(); + this.groupBox9.SuspendLayout(); + this.groupBox11.SuspendLayout(); + this.statusStrip1.SuspendLayout(); + this.groupBox13.SuspendLayout(); + this.menuStrip1.SuspendLayout(); + this.tabCtrlMain.SuspendLayout(); + this.tpStatus.SuspendLayout(); + this.gbMonitor.SuspendLayout(); + this.groupBox6.SuspendLayout(); + this.groupBox1.SuspendLayout(); + this.tbConf.SuspendLayout(); + this.tpSIM.SuspendLayout(); + this.groupBox5.SuspendLayout(); + this.Execution.SuspendLayout(); + this.mode.SuspendLayout(); + this.groupBox7.SuspendLayout(); + this.groupBox10.SuspendLayout(); + this.groupBox8.SuspendLayout(); + this.groupBox12.SuspendLayout(); + this.SuspendLayout(); + // + // PlcErr_02 + // + this.PlcErr_02.AutoSize = true; + this.PlcErr_02.Location = new System.Drawing.Point(128, 53); + this.PlcErr_02.Margin = new System.Windows.Forms.Padding(4); + this.PlcErr_02.Name = "PlcErr_02"; + this.PlcErr_02.Size = new System.Drawing.Size(92, 21); + this.PlcErr_02.TabIndex = 6; + this.PlcErr_02.Text = "PlcErr_05"; + this.PlcErr_02.UseVisualStyleBackColor = true; + this.PlcErr_02.CheckedChanged += new System.EventHandler(this.SysErr_01_CheckedChanged); + // + // gather + // + this.gather.Tick += new System.EventHandler(this.gather_Tick); + // + // groupBox4 + // + this.groupBox4.Controls.Add(this.label8); + this.groupBox4.Controls.Add(this.label7); + this.groupBox4.Controls.Add(this.messageText); + this.groupBox4.Controls.Add(this.messageCode); + this.groupBox4.Location = new System.Drawing.Point(5, 514); + this.groupBox4.Margin = new System.Windows.Forms.Padding(4); + this.groupBox4.Name = "groupBox4"; + this.groupBox4.Padding = new System.Windows.Forms.Padding(4); + this.groupBox4.Size = new System.Drawing.Size(505, 64); + this.groupBox4.TabIndex = 44; + this.groupBox4.TabStop = false; + this.groupBox4.Text = "Message"; + // + // label8 + // + this.label8.AutoSize = true; + this.label8.Location = new System.Drawing.Point(157, 32); + this.label8.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(35, 17); + this.label8.TabIndex = 19; + this.label8.Text = "Text"; + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Location = new System.Drawing.Point(5, 32); + this.label7.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(41, 17); + this.label7.TabIndex = 18; + this.label7.Text = "Code"; + // + // messageText + // + this.messageText.Location = new System.Drawing.Point(201, 28); + this.messageText.Margin = new System.Windows.Forms.Padding(4); + this.messageText.Name = "messageText"; + this.messageText.Size = new System.Drawing.Size(285, 22); + this.messageText.TabIndex = 14; + this.messageText.Leave += new System.EventHandler(this.message_Leave); + // + // messageCode + // + this.messageCode.Location = new System.Drawing.Point(67, 28); + this.messageCode.Margin = new System.Windows.Forms.Padding(4); + this.messageCode.Name = "messageCode"; + this.messageCode.Size = new System.Drawing.Size(81, 22); + this.messageCode.TabIndex = 13; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(16, 452); + this.label6.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(0, 17); + this.label6.TabIndex = 43; + // + // AxFeedOverValue + // + this.AxFeedOverValue.Location = new System.Drawing.Point(353, 201); + this.AxFeedOverValue.Margin = new System.Windows.Forms.Padding(4); + this.AxFeedOverValue.Name = "AxFeedOverValue"; + this.AxFeedOverValue.Size = new System.Drawing.Size(132, 22); + this.AxFeedOverValue.TabIndex = 26; + // + // AxFeedActValue + // + this.AxFeedActValue.Location = new System.Drawing.Point(353, 175); + this.AxFeedActValue.Margin = new System.Windows.Forms.Padding(4); + this.AxFeedActValue.Name = "AxFeedActValue"; + this.AxFeedActValue.Size = new System.Drawing.Size(132, 22); + this.AxFeedActValue.TabIndex = 25; + // + // label9 + // + this.label9.AutoSize = true; + this.label9.Location = new System.Drawing.Point(16, 204); + this.label9.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(75, 17); + this.label9.TabIndex = 24; + this.label9.Text = "Feed Over"; + // + // AxFeedOver + // + this.AxFeedOver.Location = new System.Drawing.Point(108, 201); + this.AxFeedOver.Maximum = 150; + this.AxFeedOver.Name = "AxFeedOver"; + this.AxFeedOver.Size = new System.Drawing.Size(224, 18); + this.AxFeedOver.TabIndex = 23; + this.AxFeedOver.Scroll += new System.Windows.Forms.ScrollEventHandler(this.cSpeed_Scroll); + // + // label10 + // + this.label10.AutoSize = true; + this.label10.Location = new System.Drawing.Point(16, 178); + this.label10.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(64, 17); + this.label10.TabIndex = 22; + this.label10.Text = "Feed Act"; + // + // AxFeedAct + // + this.AxFeedAct.Location = new System.Drawing.Point(108, 175); + this.AxFeedAct.Name = "AxFeedAct"; + this.AxFeedAct.Size = new System.Drawing.Size(224, 18); + this.AxFeedAct.TabIndex = 20; + this.AxFeedAct.Scroll += new System.Windows.Forms.ScrollEventHandler(this.cLoad_Scroll); + // + // partID + // + this.partID.Location = new System.Drawing.Point(107, 55); + this.partID.Margin = new System.Windows.Forms.Padding(4); + this.partID.Name = "partID"; + this.partID.Size = new System.Drawing.Size(132, 22); + this.partID.TabIndex = 49; + // + // label13 + // + this.label13.AutoSize = true; + this.label13.Location = new System.Drawing.Point(41, 59); + this.label13.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label13.Name = "label13"; + this.label13.Size = new System.Drawing.Size(51, 17); + this.label13.TabIndex = 48; + this.label13.Text = "Part ID"; + // + // functionalMode + // + this.functionalMode.FormattingEnabled = true; + this.functionalMode.Location = new System.Drawing.Point(107, 87); + this.functionalMode.Margin = new System.Windows.Forms.Padding(4); + this.functionalMode.Name = "functionalMode"; + this.functionalMode.Size = new System.Drawing.Size(389, 24); + this.functionalMode.TabIndex = 47; + // + // label12 + // + this.label12.AutoSize = true; + this.label12.Location = new System.Drawing.Point(20, 91); + this.label12.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(69, 17); + this.label12.TabIndex = 46; + this.label12.Text = "Halt Type"; + // + // PosAct + // + this.PosAct.AllowUserToAddRows = false; + this.PosAct.AllowUserToDeleteRows = false; + this.PosAct.AllowUserToResizeColumns = false; + this.PosAct.AllowUserToResizeRows = false; + this.PosAct.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.PosAct.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { this.X, this.Y, this.Z, this.I, this.J, this.K}); - this.PosAct.Location = new System.Drawing.Point(107, 142); - this.PosAct.Margin = new System.Windows.Forms.Padding(4); - this.PosAct.Name = "PosAct"; - this.PosAct.ScrollBars = System.Windows.Forms.ScrollBars.None; - this.PosAct.Size = new System.Drawing.Size(389, 50); - this.PosAct.TabIndex = 32; - // - // X - // - this.X.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.DisplayedCells; - this.X.HeaderText = "X"; - this.X.Name = "X"; - this.X.Width = 46; - // - // Y - // - this.Y.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.DisplayedCells; - this.Y.HeaderText = "Y"; - this.Y.Name = "Y"; - this.Y.Width = 46; - // - // Z - // - this.Z.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.DisplayedCells; - this.Z.HeaderText = "Z"; - this.Z.Name = "Z"; - this.Z.Width = 46; - // - // I - // - this.I.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.DisplayedCells; - this.I.HeaderText = "I"; - this.I.Name = "I"; - this.I.Width = 40; - // - // J - // - this.J.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.DisplayedCells; - this.J.HeaderText = "J"; - this.J.Name = "J"; - this.J.Width = 44; - // - // K - // - this.K.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.DisplayedCells; - this.K.HeaderText = "K"; - this.K.Name = "K"; - this.K.Width = 46; - // - // PlcErr_03 - // - this.PlcErr_03.AutoSize = true; - this.PlcErr_03.Location = new System.Drawing.Point(128, 81); - this.PlcErr_03.Margin = new System.Windows.Forms.Padding(4); - this.PlcErr_03.Name = "PlcErr_03"; - this.PlcErr_03.Size = new System.Drawing.Size(92, 21); - this.PlcErr_03.TabIndex = 5; - this.PlcErr_03.Text = "PlcErr_06"; - this.PlcErr_03.UseVisualStyleBackColor = true; - this.PlcErr_03.CheckedChanged += new System.EventHandler(this.SysErr_01_CheckedChanged); - // - // PlcErr_01 - // - this.PlcErr_01.AutoSize = true; - this.PlcErr_01.Location = new System.Drawing.Point(128, 25); - this.PlcErr_01.Margin = new System.Windows.Forms.Padding(4); - this.PlcErr_01.Name = "PlcErr_01"; - this.PlcErr_01.Size = new System.Drawing.Size(92, 21); - this.PlcErr_01.TabIndex = 4; - this.PlcErr_01.Text = "PlcErr_04"; - this.PlcErr_01.UseVisualStyleBackColor = true; - this.PlcErr_01.CheckedChanged += new System.EventHandler(this.SysErr_01_CheckedChanged); - // - // groupBox3 - // - this.groupBox3.Controls.Add(this.ErrRT_03); - this.groupBox3.Controls.Add(this.ErrRT_02); - this.groupBox3.Controls.Add(this.CncErr_02); - this.groupBox3.Controls.Add(this.CncErr_03); - this.groupBox3.Controls.Add(this.CncErr_01); - this.groupBox3.Controls.Add(this.PlcErr_02); - this.groupBox3.Controls.Add(this.PlcErr_03); - this.groupBox3.Controls.Add(this.PlcErr_01); - this.groupBox3.Controls.Add(this.SysErr_03); - this.groupBox3.Controls.Add(this.ErrRT_01); - this.groupBox3.Controls.Add(this.SysErr_02); - this.groupBox3.Controls.Add(this.SysErr_01); - this.groupBox3.Location = new System.Drawing.Point(4, 620); - this.groupBox3.Margin = new System.Windows.Forms.Padding(4); - this.groupBox3.Name = "groupBox3"; - this.groupBox3.Padding = new System.Windows.Forms.Padding(4); - this.groupBox3.Size = new System.Drawing.Size(505, 140); - this.groupBox3.TabIndex = 41; - this.groupBox3.TabStop = false; - this.groupBox3.Text = "Alarms"; - // - // ErrRT_03 - // - this.ErrRT_03.AutoSize = true; - this.ErrRT_03.Location = new System.Drawing.Point(357, 81); - this.ErrRT_03.Margin = new System.Windows.Forms.Padding(4); - this.ErrRT_03.Name = "ErrRT_03"; - this.ErrRT_03.Size = new System.Drawing.Size(83, 21); - this.ErrRT_03.TabIndex = 11; - this.ErrRT_03.Text = "ERR_12"; - this.ErrRT_03.UseVisualStyleBackColor = true; - this.ErrRT_03.CheckedChanged += new System.EventHandler(this.SysErr_01_CheckedChanged); - // - // ErrRT_02 - // - this.ErrRT_02.AutoSize = true; - this.ErrRT_02.Location = new System.Drawing.Point(357, 53); - this.ErrRT_02.Margin = new System.Windows.Forms.Padding(4); - this.ErrRT_02.Name = "ErrRT_02"; - this.ErrRT_02.Size = new System.Drawing.Size(83, 21); - this.ErrRT_02.TabIndex = 10; - this.ErrRT_02.Text = "ERR_11"; - this.ErrRT_02.UseVisualStyleBackColor = true; - this.ErrRT_02.CheckedChanged += new System.EventHandler(this.SysErr_01_CheckedChanged); - // - // CncErr_02 - // - this.CncErr_02.AutoSize = true; - this.CncErr_02.Location = new System.Drawing.Point(241, 53); - this.CncErr_02.Margin = new System.Windows.Forms.Padding(4); - this.CncErr_02.Name = "CncErr_02"; - this.CncErr_02.Size = new System.Drawing.Size(97, 21); - this.CncErr_02.TabIndex = 9; - this.CncErr_02.Text = "CncErr_08"; - this.CncErr_02.UseVisualStyleBackColor = true; - this.CncErr_02.CheckedChanged += new System.EventHandler(this.SysErr_01_CheckedChanged); - // - // CncErr_03 - // - this.CncErr_03.AutoSize = true; - this.CncErr_03.Location = new System.Drawing.Point(241, 81); - this.CncErr_03.Margin = new System.Windows.Forms.Padding(4); - this.CncErr_03.Name = "CncErr_03"; - this.CncErr_03.Size = new System.Drawing.Size(97, 21); - this.CncErr_03.TabIndex = 8; - this.CncErr_03.Text = "CncErr_09"; - this.CncErr_03.UseVisualStyleBackColor = true; - this.CncErr_03.CheckedChanged += new System.EventHandler(this.SysErr_01_CheckedChanged); - // - // CncErr_01 - // - this.CncErr_01.AutoSize = true; - this.CncErr_01.Location = new System.Drawing.Point(241, 25); - this.CncErr_01.Margin = new System.Windows.Forms.Padding(4); - this.CncErr_01.Name = "CncErr_01"; - this.CncErr_01.Size = new System.Drawing.Size(97, 21); - this.CncErr_01.TabIndex = 7; - this.CncErr_01.Text = "CncErr_07"; - this.CncErr_01.UseVisualStyleBackColor = true; - this.CncErr_01.CheckedChanged += new System.EventHandler(this.SysErr_01_CheckedChanged); - // - // SysErr_03 - // - this.SysErr_03.AutoSize = true; - this.SysErr_03.Location = new System.Drawing.Point(9, 81); - this.SysErr_03.Margin = new System.Windows.Forms.Padding(4); - this.SysErr_03.Name = "SysErr_03"; - this.SysErr_03.Size = new System.Drawing.Size(96, 21); - this.SysErr_03.TabIndex = 3; - this.SysErr_03.Text = "SysErr_03"; - this.SysErr_03.UseVisualStyleBackColor = true; - this.SysErr_03.CheckedChanged += new System.EventHandler(this.SysErr_01_CheckedChanged); - // - // ErrRT_01 - // - this.ErrRT_01.AutoSize = true; - this.ErrRT_01.Location = new System.Drawing.Point(357, 25); - this.ErrRT_01.Margin = new System.Windows.Forms.Padding(4); - this.ErrRT_01.Name = "ErrRT_01"; - this.ErrRT_01.Size = new System.Drawing.Size(83, 21); - this.ErrRT_01.TabIndex = 2; - this.ErrRT_01.Text = "ERR_10"; - this.ErrRT_01.UseVisualStyleBackColor = true; - this.ErrRT_01.CheckedChanged += new System.EventHandler(this.SysErr_01_CheckedChanged); - // - // SysErr_02 - // - this.SysErr_02.AutoSize = true; - this.SysErr_02.Location = new System.Drawing.Point(9, 53); - this.SysErr_02.Margin = new System.Windows.Forms.Padding(4); - this.SysErr_02.Name = "SysErr_02"; - this.SysErr_02.Size = new System.Drawing.Size(96, 21); - this.SysErr_02.TabIndex = 1; - this.SysErr_02.Text = "SysErr_02"; - this.SysErr_02.UseVisualStyleBackColor = true; - this.SysErr_02.CheckedChanged += new System.EventHandler(this.SysErr_01_CheckedChanged); - // - // SysErr_01 - // - this.SysErr_01.AutoSize = true; - this.SysErr_01.Location = new System.Drawing.Point(9, 25); - this.SysErr_01.Margin = new System.Windows.Forms.Padding(4); - this.SysErr_01.Name = "SysErr_01"; - this.SysErr_01.Size = new System.Drawing.Size(96, 21); - this.SysErr_01.TabIndex = 0; - this.SysErr_01.Text = "SysErr_01"; - this.SysErr_01.UseVisualStyleBackColor = true; - this.SysErr_01.CheckedChanged += new System.EventHandler(this.SysErr_01_CheckedChanged); - // - // groupBox2 - // - this.groupBox2.Controls.Add(this.AxAccelAct); - this.groupBox2.Controls.Add(this.label37); - this.groupBox2.Controls.Add(this.AxBatt); - this.groupBox2.Controls.Add(this.label36); - this.groupBox2.Controls.Add(this.AxAccTime); - this.groupBox2.Controls.Add(this.label11); - this.groupBox2.Controls.Add(this.AxFeedOverValue); - this.groupBox2.Controls.Add(this.AxDir); - this.groupBox2.Controls.Add(this.AxFeedActValue); - this.groupBox2.Controls.Add(this.label35); - this.groupBox2.Controls.Add(this.label9); - this.groupBox2.Controls.Add(this.label34); - this.groupBox2.Controls.Add(this.AxFeedOver); - this.groupBox2.Controls.Add(this.cbAxType); - this.groupBox2.Controls.Add(this.label10); - this.groupBox2.Controls.Add(this.AxMastId); - this.groupBox2.Controls.Add(this.label33); - this.groupBox2.Controls.Add(this.AxFeedAct); - this.groupBox2.Controls.Add(this.AxIsMaster); - this.groupBox2.Controls.Add(this.AxMainProc); - this.groupBox2.Controls.Add(this.label32); - this.groupBox2.Controls.Add(this.cbAxNum); - this.groupBox2.Controls.Add(this.label31); - this.groupBox2.Controls.Add(this.AxPositionValue); - this.groupBox2.Controls.Add(this.AxLoadValue); - this.groupBox2.Controls.Add(this.label5); - this.groupBox2.Controls.Add(this.AxPosition); - this.groupBox2.Controls.Add(this.label4); - this.groupBox2.Controls.Add(this.label3); - this.groupBox2.Controls.Add(this.AxLoad); - this.groupBox2.Location = new System.Drawing.Point(513, 514); - this.groupBox2.Margin = new System.Windows.Forms.Padding(4); - this.groupBox2.Name = "groupBox2"; - this.groupBox2.Padding = new System.Windows.Forms.Padding(4); - this.groupBox2.Size = new System.Drawing.Size(500, 277); - this.groupBox2.TabIndex = 40; - this.groupBox2.TabStop = false; - this.groupBox2.Text = "Axis"; - // - // AxAccelAct - // - this.AxAccelAct.Location = new System.Drawing.Point(107, 226); - this.AxAccelAct.Margin = new System.Windows.Forms.Padding(4); - this.AxAccelAct.Name = "AxAccelAct"; - this.AxAccelAct.Size = new System.Drawing.Size(60, 22); - this.AxAccelAct.TabIndex = 43; - // - // label37 - // - this.label37.AutoSize = true; - this.label37.Location = new System.Drawing.Point(13, 230); - this.label37.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label37.Name = "label37"; - this.label37.Size = new System.Drawing.Size(66, 17); - this.label37.TabIndex = 42; - this.label37.Text = "Accel Act"; - // - // AxBatt - // - this.AxBatt.Location = new System.Drawing.Point(405, 226); - this.AxBatt.Margin = new System.Windows.Forms.Padding(4); - this.AxBatt.Name = "AxBatt"; - this.AxBatt.Size = new System.Drawing.Size(80, 22); - this.AxBatt.TabIndex = 41; - // - // label36 - // - this.label36.AutoSize = true; - this.label36.Location = new System.Drawing.Point(349, 230); - this.label36.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label36.Name = "label36"; - this.label36.Size = new System.Drawing.Size(53, 17); - this.label36.TabIndex = 40; - this.label36.Text = "Battery"; - // - // AxAccTime - // - this.AxAccTime.Location = new System.Drawing.Point(263, 226); - this.AxAccTime.Margin = new System.Windows.Forms.Padding(4); - this.AxAccTime.Name = "AxAccTime"; - this.AxAccTime.Size = new System.Drawing.Size(68, 22); - this.AxAccTime.TabIndex = 39; - // - // label11 - // - this.label11.AutoSize = true; - this.label11.Location = new System.Drawing.Point(169, 230); - this.label11.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label11.Name = "label11"; - this.label11.Size = new System.Drawing.Size(85, 17); - this.label11.TabIndex = 38; - this.label11.Text = "Accum Time"; - // - // AxDir - // - this.AxDir.Location = new System.Drawing.Point(353, 82); - this.AxDir.Margin = new System.Windows.Forms.Padding(4); - this.AxDir.Name = "AxDir"; - this.AxDir.Size = new System.Drawing.Size(105, 22); - this.AxDir.TabIndex = 37; - this.AxDir.Text = "1"; - // - // label35 - // - this.label35.AutoSize = true; - this.label35.Location = new System.Drawing.Point(291, 87); - this.label35.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label35.Name = "label35"; - this.label35.Size = new System.Drawing.Size(64, 17); - this.label35.TabIndex = 36; - this.label35.Text = "Direction"; - // - // label34 - // - this.label34.AutoSize = true; - this.label34.Location = new System.Drawing.Point(16, 89); - this.label34.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label34.Name = "label34"; - this.label34.Size = new System.Drawing.Size(69, 17); - this.label34.TabIndex = 35; - this.label34.Text = "Axis Type"; - // - // cbAxType - // - this.cbAxType.FormattingEnabled = true; - this.cbAxType.Items.AddRange(new object[] { + this.PosAct.Location = new System.Drawing.Point(107, 142); + this.PosAct.Margin = new System.Windows.Forms.Padding(4); + this.PosAct.Name = "PosAct"; + this.PosAct.ScrollBars = System.Windows.Forms.ScrollBars.None; + this.PosAct.Size = new System.Drawing.Size(389, 50); + this.PosAct.TabIndex = 32; + // + // X + // + this.X.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.DisplayedCells; + this.X.HeaderText = "X"; + this.X.Name = "X"; + this.X.Width = 46; + // + // Y + // + this.Y.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.DisplayedCells; + this.Y.HeaderText = "Y"; + this.Y.Name = "Y"; + this.Y.Width = 46; + // + // Z + // + this.Z.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.DisplayedCells; + this.Z.HeaderText = "Z"; + this.Z.Name = "Z"; + this.Z.Width = 46; + // + // I + // + this.I.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.DisplayedCells; + this.I.HeaderText = "I"; + this.I.Name = "I"; + this.I.Width = 40; + // + // J + // + this.J.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.DisplayedCells; + this.J.HeaderText = "J"; + this.J.Name = "J"; + this.J.Width = 44; + // + // K + // + this.K.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.DisplayedCells; + this.K.HeaderText = "K"; + this.K.Name = "K"; + this.K.Width = 46; + // + // PlcErr_03 + // + this.PlcErr_03.AutoSize = true; + this.PlcErr_03.Location = new System.Drawing.Point(128, 81); + this.PlcErr_03.Margin = new System.Windows.Forms.Padding(4); + this.PlcErr_03.Name = "PlcErr_03"; + this.PlcErr_03.Size = new System.Drawing.Size(92, 21); + this.PlcErr_03.TabIndex = 5; + this.PlcErr_03.Text = "PlcErr_06"; + this.PlcErr_03.UseVisualStyleBackColor = true; + this.PlcErr_03.CheckedChanged += new System.EventHandler(this.SysErr_01_CheckedChanged); + // + // PlcErr_01 + // + this.PlcErr_01.AutoSize = true; + this.PlcErr_01.Location = new System.Drawing.Point(128, 25); + this.PlcErr_01.Margin = new System.Windows.Forms.Padding(4); + this.PlcErr_01.Name = "PlcErr_01"; + this.PlcErr_01.Size = new System.Drawing.Size(92, 21); + this.PlcErr_01.TabIndex = 4; + this.PlcErr_01.Text = "PlcErr_04"; + this.PlcErr_01.UseVisualStyleBackColor = true; + this.PlcErr_01.CheckedChanged += new System.EventHandler(this.SysErr_01_CheckedChanged); + // + // groupBox3 + // + this.groupBox3.Controls.Add(this.ErrRT_03); + this.groupBox3.Controls.Add(this.ErrRT_02); + this.groupBox3.Controls.Add(this.CncErr_02); + this.groupBox3.Controls.Add(this.CncErr_03); + this.groupBox3.Controls.Add(this.CncErr_01); + this.groupBox3.Controls.Add(this.PlcErr_02); + this.groupBox3.Controls.Add(this.PlcErr_03); + this.groupBox3.Controls.Add(this.PlcErr_01); + this.groupBox3.Controls.Add(this.SysErr_03); + this.groupBox3.Controls.Add(this.ErrRT_01); + this.groupBox3.Controls.Add(this.SysErr_02); + this.groupBox3.Controls.Add(this.SysErr_01); + this.groupBox3.Location = new System.Drawing.Point(4, 620); + this.groupBox3.Margin = new System.Windows.Forms.Padding(4); + this.groupBox3.Name = "groupBox3"; + this.groupBox3.Padding = new System.Windows.Forms.Padding(4); + this.groupBox3.Size = new System.Drawing.Size(505, 140); + this.groupBox3.TabIndex = 41; + this.groupBox3.TabStop = false; + this.groupBox3.Text = "Alarms"; + // + // ErrRT_03 + // + this.ErrRT_03.AutoSize = true; + this.ErrRT_03.Location = new System.Drawing.Point(357, 81); + this.ErrRT_03.Margin = new System.Windows.Forms.Padding(4); + this.ErrRT_03.Name = "ErrRT_03"; + this.ErrRT_03.Size = new System.Drawing.Size(83, 21); + this.ErrRT_03.TabIndex = 11; + this.ErrRT_03.Text = "ERR_12"; + this.ErrRT_03.UseVisualStyleBackColor = true; + this.ErrRT_03.CheckedChanged += new System.EventHandler(this.SysErr_01_CheckedChanged); + // + // ErrRT_02 + // + this.ErrRT_02.AutoSize = true; + this.ErrRT_02.Location = new System.Drawing.Point(357, 53); + this.ErrRT_02.Margin = new System.Windows.Forms.Padding(4); + this.ErrRT_02.Name = "ErrRT_02"; + this.ErrRT_02.Size = new System.Drawing.Size(83, 21); + this.ErrRT_02.TabIndex = 10; + this.ErrRT_02.Text = "ERR_11"; + this.ErrRT_02.UseVisualStyleBackColor = true; + this.ErrRT_02.CheckedChanged += new System.EventHandler(this.SysErr_01_CheckedChanged); + // + // CncErr_02 + // + this.CncErr_02.AutoSize = true; + this.CncErr_02.Location = new System.Drawing.Point(241, 53); + this.CncErr_02.Margin = new System.Windows.Forms.Padding(4); + this.CncErr_02.Name = "CncErr_02"; + this.CncErr_02.Size = new System.Drawing.Size(97, 21); + this.CncErr_02.TabIndex = 9; + this.CncErr_02.Text = "CncErr_08"; + this.CncErr_02.UseVisualStyleBackColor = true; + this.CncErr_02.CheckedChanged += new System.EventHandler(this.SysErr_01_CheckedChanged); + // + // CncErr_03 + // + this.CncErr_03.AutoSize = true; + this.CncErr_03.Location = new System.Drawing.Point(241, 81); + this.CncErr_03.Margin = new System.Windows.Forms.Padding(4); + this.CncErr_03.Name = "CncErr_03"; + this.CncErr_03.Size = new System.Drawing.Size(97, 21); + this.CncErr_03.TabIndex = 8; + this.CncErr_03.Text = "CncErr_09"; + this.CncErr_03.UseVisualStyleBackColor = true; + this.CncErr_03.CheckedChanged += new System.EventHandler(this.SysErr_01_CheckedChanged); + // + // CncErr_01 + // + this.CncErr_01.AutoSize = true; + this.CncErr_01.Location = new System.Drawing.Point(241, 25); + this.CncErr_01.Margin = new System.Windows.Forms.Padding(4); + this.CncErr_01.Name = "CncErr_01"; + this.CncErr_01.Size = new System.Drawing.Size(97, 21); + this.CncErr_01.TabIndex = 7; + this.CncErr_01.Text = "CncErr_07"; + this.CncErr_01.UseVisualStyleBackColor = true; + this.CncErr_01.CheckedChanged += new System.EventHandler(this.SysErr_01_CheckedChanged); + // + // SysErr_03 + // + this.SysErr_03.AutoSize = true; + this.SysErr_03.Location = new System.Drawing.Point(9, 81); + this.SysErr_03.Margin = new System.Windows.Forms.Padding(4); + this.SysErr_03.Name = "SysErr_03"; + this.SysErr_03.Size = new System.Drawing.Size(96, 21); + this.SysErr_03.TabIndex = 3; + this.SysErr_03.Text = "SysErr_03"; + this.SysErr_03.UseVisualStyleBackColor = true; + this.SysErr_03.CheckedChanged += new System.EventHandler(this.SysErr_01_CheckedChanged); + // + // ErrRT_01 + // + this.ErrRT_01.AutoSize = true; + this.ErrRT_01.Location = new System.Drawing.Point(357, 25); + this.ErrRT_01.Margin = new System.Windows.Forms.Padding(4); + this.ErrRT_01.Name = "ErrRT_01"; + this.ErrRT_01.Size = new System.Drawing.Size(83, 21); + this.ErrRT_01.TabIndex = 2; + this.ErrRT_01.Text = "ERR_10"; + this.ErrRT_01.UseVisualStyleBackColor = true; + this.ErrRT_01.CheckedChanged += new System.EventHandler(this.SysErr_01_CheckedChanged); + // + // SysErr_02 + // + this.SysErr_02.AutoSize = true; + this.SysErr_02.Location = new System.Drawing.Point(9, 53); + this.SysErr_02.Margin = new System.Windows.Forms.Padding(4); + this.SysErr_02.Name = "SysErr_02"; + this.SysErr_02.Size = new System.Drawing.Size(96, 21); + this.SysErr_02.TabIndex = 1; + this.SysErr_02.Text = "SysErr_02"; + this.SysErr_02.UseVisualStyleBackColor = true; + this.SysErr_02.CheckedChanged += new System.EventHandler(this.SysErr_01_CheckedChanged); + // + // SysErr_01 + // + this.SysErr_01.AutoSize = true; + this.SysErr_01.Location = new System.Drawing.Point(9, 25); + this.SysErr_01.Margin = new System.Windows.Forms.Padding(4); + this.SysErr_01.Name = "SysErr_01"; + this.SysErr_01.Size = new System.Drawing.Size(96, 21); + this.SysErr_01.TabIndex = 0; + this.SysErr_01.Text = "SysErr_01"; + this.SysErr_01.UseVisualStyleBackColor = true; + this.SysErr_01.CheckedChanged += new System.EventHandler(this.SysErr_01_CheckedChanged); + // + // groupBox2 + // + this.groupBox2.Controls.Add(this.AxAccelAct); + this.groupBox2.Controls.Add(this.label37); + this.groupBox2.Controls.Add(this.AxBatt); + this.groupBox2.Controls.Add(this.label36); + this.groupBox2.Controls.Add(this.AxAccTime); + this.groupBox2.Controls.Add(this.label11); + this.groupBox2.Controls.Add(this.AxFeedOverValue); + this.groupBox2.Controls.Add(this.AxDir); + this.groupBox2.Controls.Add(this.AxFeedActValue); + this.groupBox2.Controls.Add(this.label35); + this.groupBox2.Controls.Add(this.label9); + this.groupBox2.Controls.Add(this.label34); + this.groupBox2.Controls.Add(this.AxFeedOver); + this.groupBox2.Controls.Add(this.cbAxType); + this.groupBox2.Controls.Add(this.label10); + this.groupBox2.Controls.Add(this.AxMastId); + this.groupBox2.Controls.Add(this.label33); + this.groupBox2.Controls.Add(this.AxFeedAct); + this.groupBox2.Controls.Add(this.AxIsMaster); + this.groupBox2.Controls.Add(this.AxMainProc); + this.groupBox2.Controls.Add(this.label32); + this.groupBox2.Controls.Add(this.cbAxNum); + this.groupBox2.Controls.Add(this.label31); + this.groupBox2.Controls.Add(this.AxPositionValue); + this.groupBox2.Controls.Add(this.AxLoadValue); + this.groupBox2.Controls.Add(this.label5); + this.groupBox2.Controls.Add(this.AxPosition); + this.groupBox2.Controls.Add(this.label4); + this.groupBox2.Controls.Add(this.label3); + this.groupBox2.Controls.Add(this.AxLoad); + this.groupBox2.Location = new System.Drawing.Point(513, 514); + this.groupBox2.Margin = new System.Windows.Forms.Padding(4); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Padding = new System.Windows.Forms.Padding(4); + this.groupBox2.Size = new System.Drawing.Size(500, 277); + this.groupBox2.TabIndex = 40; + this.groupBox2.TabStop = false; + this.groupBox2.Text = "Axis"; + // + // AxAccelAct + // + this.AxAccelAct.Location = new System.Drawing.Point(107, 226); + this.AxAccelAct.Margin = new System.Windows.Forms.Padding(4); + this.AxAccelAct.Name = "AxAccelAct"; + this.AxAccelAct.Size = new System.Drawing.Size(60, 22); + this.AxAccelAct.TabIndex = 43; + // + // label37 + // + this.label37.AutoSize = true; + this.label37.Location = new System.Drawing.Point(13, 230); + this.label37.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label37.Name = "label37"; + this.label37.Size = new System.Drawing.Size(66, 17); + this.label37.TabIndex = 42; + this.label37.Text = "Accel Act"; + // + // AxBatt + // + this.AxBatt.Location = new System.Drawing.Point(405, 226); + this.AxBatt.Margin = new System.Windows.Forms.Padding(4); + this.AxBatt.Name = "AxBatt"; + this.AxBatt.Size = new System.Drawing.Size(80, 22); + this.AxBatt.TabIndex = 41; + // + // label36 + // + this.label36.AutoSize = true; + this.label36.Location = new System.Drawing.Point(349, 230); + this.label36.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label36.Name = "label36"; + this.label36.Size = new System.Drawing.Size(53, 17); + this.label36.TabIndex = 40; + this.label36.Text = "Battery"; + // + // AxAccTime + // + this.AxAccTime.Location = new System.Drawing.Point(263, 226); + this.AxAccTime.Margin = new System.Windows.Forms.Padding(4); + this.AxAccTime.Name = "AxAccTime"; + this.AxAccTime.Size = new System.Drawing.Size(68, 22); + this.AxAccTime.TabIndex = 39; + // + // label11 + // + this.label11.AutoSize = true; + this.label11.Location = new System.Drawing.Point(169, 230); + this.label11.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(85, 17); + this.label11.TabIndex = 38; + this.label11.Text = "Accum Time"; + // + // AxDir + // + this.AxDir.Location = new System.Drawing.Point(353, 82); + this.AxDir.Margin = new System.Windows.Forms.Padding(4); + this.AxDir.Name = "AxDir"; + this.AxDir.Size = new System.Drawing.Size(105, 22); + this.AxDir.TabIndex = 37; + this.AxDir.Text = "1"; + // + // label35 + // + this.label35.AutoSize = true; + this.label35.Location = new System.Drawing.Point(291, 87); + this.label35.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label35.Name = "label35"; + this.label35.Size = new System.Drawing.Size(64, 17); + this.label35.TabIndex = 36; + this.label35.Text = "Direction"; + // + // label34 + // + this.label34.AutoSize = true; + this.label34.Location = new System.Drawing.Point(16, 89); + this.label34.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label34.Name = "label34"; + this.label34.Size = new System.Drawing.Size(69, 17); + this.label34.TabIndex = 35; + this.label34.Text = "Axis Type"; + // + // cbAxType + // + this.cbAxType.FormattingEnabled = true; + this.cbAxType.Items.AddRange(new object[] { "LINEAR", "ROTARY"}); - this.cbAxType.Location = new System.Drawing.Point(108, 85); - this.cbAxType.Margin = new System.Windows.Forms.Padding(4); - this.cbAxType.Name = "cbAxType"; - this.cbAxType.Size = new System.Drawing.Size(119, 24); - this.cbAxType.TabIndex = 34; - // - // AxMastId - // - this.AxMastId.Location = new System.Drawing.Point(380, 50); - this.AxMastId.Margin = new System.Windows.Forms.Padding(4); - this.AxMastId.Name = "AxMastId"; - this.AxMastId.Size = new System.Drawing.Size(105, 22); - this.AxMastId.TabIndex = 33; - // - // label33 - // - this.label33.AutoSize = true; - this.label33.Location = new System.Drawing.Point(317, 55); - this.label33.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label33.Name = "label33"; - this.label33.Size = new System.Drawing.Size(55, 17); - this.label33.TabIndex = 32; - this.label33.Text = "Mast ID"; - // - // AxIsMaster - // - this.AxIsMaster.AutoSize = true; - this.AxIsMaster.Location = new System.Drawing.Point(237, 54); - this.AxIsMaster.Margin = new System.Windows.Forms.Padding(4); - this.AxIsMaster.Name = "AxIsMaster"; - this.AxIsMaster.Size = new System.Drawing.Size(73, 21); - this.AxIsMaster.TabIndex = 31; - this.AxIsMaster.Text = "Master"; - this.AxIsMaster.UseVisualStyleBackColor = true; - // - // AxMainProc - // - this.AxMainProc.Location = new System.Drawing.Point(108, 50); - this.AxMainProc.Margin = new System.Windows.Forms.Padding(4); - this.AxMainProc.Name = "AxMainProc"; - this.AxMainProc.Size = new System.Drawing.Size(60, 22); - this.AxMainProc.TabIndex = 30; - // - // label32 - // - this.label32.AutoSize = true; - this.label32.Location = new System.Drawing.Point(15, 54); - this.label32.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label32.Name = "label32"; - this.label32.Size = new System.Drawing.Size(71, 17); - this.label32.TabIndex = 29; - this.label32.Text = "Main Proc"; - // - // cbAxNum - // - this.cbAxNum.DisplayMember = "Name"; - this.cbAxNum.FormattingEnabled = true; - this.cbAxNum.Location = new System.Drawing.Point(108, 18); - this.cbAxNum.Margin = new System.Windows.Forms.Padding(4); - this.cbAxNum.Name = "cbAxNum"; - this.cbAxNum.Size = new System.Drawing.Size(160, 24); - this.cbAxNum.TabIndex = 28; - this.cbAxNum.ValueMember = "Value"; - this.cbAxNum.SelectedIndexChanged += new System.EventHandler(this.cbAxNum_SelectedIndexChanged); - // - // label31 - // - this.label31.AutoSize = true; - this.label31.Location = new System.Drawing.Point(16, 23); - this.label31.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label31.Name = "label31"; - this.label31.Size = new System.Drawing.Size(66, 17); - this.label31.TabIndex = 27; - this.label31.Text = "Axis Num"; - // - // AxPositionValue - // - this.AxPositionValue.Location = new System.Drawing.Point(353, 149); - this.AxPositionValue.Margin = new System.Windows.Forms.Padding(4); - this.AxPositionValue.Name = "AxPositionValue"; - this.AxPositionValue.Size = new System.Drawing.Size(132, 22); - this.AxPositionValue.TabIndex = 26; - // - // AxLoadValue - // - this.AxLoadValue.Location = new System.Drawing.Point(353, 123); - this.AxLoadValue.Margin = new System.Windows.Forms.Padding(4); - this.AxLoadValue.Name = "AxLoadValue"; - this.AxLoadValue.Size = new System.Drawing.Size(132, 22); - this.AxLoadValue.TabIndex = 25; - // - // label5 - // - this.label5.AutoSize = true; - this.label5.Location = new System.Drawing.Point(16, 153); - this.label5.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label5.Name = "label5"; - this.label5.Size = new System.Drawing.Size(58, 17); - this.label5.TabIndex = 24; - this.label5.Text = "Position"; - // - // AxPosition - // - this.AxPosition.Location = new System.Drawing.Point(108, 149); - this.AxPosition.Name = "AxPosition"; - this.AxPosition.Size = new System.Drawing.Size(224, 18); - this.AxPosition.TabIndex = 23; - this.AxPosition.Scroll += new System.Windows.Forms.ScrollEventHandler(this.xPosition_Scroll); - // - // label4 - // - this.label4.AutoSize = true; - this.label4.Location = new System.Drawing.Point(16, 127); - this.label4.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label4.Name = "label4"; - this.label4.Size = new System.Drawing.Size(40, 17); - this.label4.TabIndex = 22; - this.label4.Text = "Load"; - // - // label3 - // - this.label3.AutoSize = true; - this.label3.Location = new System.Drawing.Point(116, 117); - this.label3.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label3.Name = "label3"; - this.label3.Size = new System.Drawing.Size(0, 17); - this.label3.TabIndex = 21; - // - // AxLoad - // - this.AxLoad.Location = new System.Drawing.Point(108, 123); - this.AxLoad.Name = "AxLoad"; - this.AxLoad.Size = new System.Drawing.Size(224, 18); - this.AxLoad.TabIndex = 20; - this.AxLoad.Scroll += new System.Windows.Forms.ScrollEventHandler(this.xLoad_Scroll); - // - // program - // - this.program.Location = new System.Drawing.Point(107, 23); - this.program.Margin = new System.Windows.Forms.Padding(4); - this.program.Name = "program"; - this.program.Size = new System.Drawing.Size(203, 22); - this.program.TabIndex = 39; - // - // label2 - // - this.label2.AutoSize = true; - this.label2.Location = new System.Drawing.Point(9, 27); - this.label2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(93, 17); - this.label2.TabIndex = 38; - this.label2.Text = "Curr Program"; - // - // groupBox9 - // - this.groupBox9.Controls.Add(this.txtPzKo); - this.groupBox9.Controls.Add(this.label25); - this.groupBox9.Controls.Add(this.txtPzOk); - this.groupBox9.Controls.Add(this.label23); - this.groupBox9.Controls.Add(this.txtPzTot); - this.groupBox9.Controls.Add(this.label21); - this.groupBox9.Controls.Add(this.OPERATOR_ID); - this.groupBox9.Controls.Add(this.label19); - this.groupBox9.Controls.Add(this.PROG_ROW_NUM); - this.groupBox9.Controls.Add(this.label17); - this.groupBox9.Controls.Add(this.program); - this.groupBox9.Controls.Add(this.label2); - this.groupBox9.Controls.Add(this.partID); - this.groupBox9.Controls.Add(this.label13); - this.groupBox9.Controls.Add(this.functionalMode); - this.groupBox9.Controls.Add(this.label12); - this.groupBox9.Location = new System.Drawing.Point(4, 182); - this.groupBox9.Margin = new System.Windows.Forms.Padding(4); - this.groupBox9.Name = "groupBox9"; - this.groupBox9.Padding = new System.Windows.Forms.Padding(4); - this.groupBox9.Size = new System.Drawing.Size(505, 194); - this.groupBox9.TabIndex = 55; - this.groupBox9.TabStop = false; - this.groupBox9.Text = "Produzione"; - // - // txtPzKo - // - this.txtPzKo.Location = new System.Drawing.Point(417, 121); - this.txtPzKo.Margin = new System.Windows.Forms.Padding(4); - this.txtPzKo.Name = "txtPzKo"; - this.txtPzKo.Size = new System.Drawing.Size(79, 22); - this.txtPzKo.TabIndex = 59; - this.txtPzKo.TextChanged += new System.EventHandler(this.pzKo_TextChanged); - // - // label25 - // - this.label25.AutoSize = true; - this.label25.Location = new System.Drawing.Point(359, 124); - this.label25.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label25.Name = "label25"; - this.label25.Size = new System.Drawing.Size(48, 17); - this.label25.TabIndex = 58; - this.label25.Text = "Pz KO"; - // - // txtPzOk - // - this.txtPzOk.Enabled = false; - this.txtPzOk.Location = new System.Drawing.Point(268, 121); - this.txtPzOk.Margin = new System.Windows.Forms.Padding(4); - this.txtPzOk.Name = "txtPzOk"; - this.txtPzOk.Size = new System.Drawing.Size(79, 22); - this.txtPzOk.TabIndex = 57; - // - // label23 - // - this.label23.AutoSize = true; - this.label23.Location = new System.Drawing.Point(209, 124); - this.label23.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label23.Name = "label23"; - this.label23.Size = new System.Drawing.Size(48, 17); - this.label23.TabIndex = 56; - this.label23.Text = "Pz OK"; - // - // txtPzTot - // - this.txtPzTot.Enabled = false; - this.txtPzTot.Location = new System.Drawing.Point(107, 121); - this.txtPzTot.Margin = new System.Windows.Forms.Padding(4); - this.txtPzTot.Name = "txtPzTot"; - this.txtPzTot.Size = new System.Drawing.Size(79, 22); - this.txtPzTot.TabIndex = 55; - // - // label21 - // - this.label21.AutoSize = true; - this.label21.Location = new System.Drawing.Point(44, 124); - this.label21.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label21.Name = "label21"; - this.label21.Size = new System.Drawing.Size(49, 17); - this.label21.TabIndex = 54; - this.label21.Text = "Pz Tot"; - // - // OPERATOR_ID - // - this.OPERATOR_ID.Location = new System.Drawing.Point(364, 55); - this.OPERATOR_ID.Margin = new System.Windows.Forms.Padding(4); - this.OPERATOR_ID.Name = "OPERATOR_ID"; - this.OPERATOR_ID.Size = new System.Drawing.Size(132, 22); - this.OPERATOR_ID.TabIndex = 53; - // - // label19 - // - this.label19.AutoSize = true; - this.label19.Location = new System.Drawing.Point(296, 59); - this.label19.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label19.Name = "label19"; - this.label19.Size = new System.Drawing.Size(58, 17); - this.label19.TabIndex = 52; - this.label19.Text = "ID oper."; - // - // PROG_ROW_NUM - // - this.PROG_ROW_NUM.Location = new System.Drawing.Point(417, 23); - this.PROG_ROW_NUM.Margin = new System.Windows.Forms.Padding(4); - this.PROG_ROW_NUM.Name = "PROG_ROW_NUM"; - this.PROG_ROW_NUM.Size = new System.Drawing.Size(79, 22); - this.PROG_ROW_NUM.TabIndex = 51; - // - // label17 - // - this.label17.AutoSize = true; - this.label17.Location = new System.Drawing.Point(337, 27); - this.label17.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label17.Name = "label17"; - this.label17.Size = new System.Drawing.Size(68, 17); - this.label17.TabIndex = 50; - this.label17.Text = "Row Num"; - // - // groupBox11 - // - this.groupBox11.Controls.Add(this.STATUS_STRB_DW3); - this.groupBox11.Controls.Add(this.label49); - this.groupBox11.Controls.Add(this.STATUS_STRB_DW2); - this.groupBox11.Controls.Add(this.label47); - this.groupBox11.Controls.Add(this.STATUS_STRB_DW1); - this.groupBox11.Controls.Add(this.label18); - this.groupBox11.Controls.Add(this.STATUS_STRB_DW0); - this.groupBox11.Controls.Add(this.lblPLC_ADP); - this.groupBox11.Location = new System.Drawing.Point(11, 71); - this.groupBox11.Margin = new System.Windows.Forms.Padding(4); - this.groupBox11.Name = "groupBox11"; - this.groupBox11.Padding = new System.Windows.Forms.Padding(4); - this.groupBox11.Size = new System.Drawing.Size(509, 191); - this.groupBox11.TabIndex = 57; - this.groupBox11.TabStop = false; - this.groupBox11.Text = "Strobes PLC --> ADP"; - // - // STATUS_STRB_DW3 - // - this.STATUS_STRB_DW3.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.STATUS_STRB_DW3.Location = new System.Drawing.Point(113, 146); - this.STATUS_STRB_DW3.Margin = new System.Windows.Forms.Padding(4); - this.STATUS_STRB_DW3.Name = "STATUS_STRB_DW3"; - this.STATUS_STRB_DW3.Size = new System.Drawing.Size(387, 28); - this.STATUS_STRB_DW3.TabIndex = 59; - // - // label49 - // - this.label49.AutoSize = true; - this.label49.Location = new System.Drawing.Point(20, 154); - this.label49.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label49.Name = "label49"; - this.label49.Size = new System.Drawing.Size(84, 17); - this.label49.TabIndex = 58; - this.label49.Text = "STRB_DW3"; - // - // STATUS_STRB_DW2 - // - this.STATUS_STRB_DW2.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.STATUS_STRB_DW2.Location = new System.Drawing.Point(113, 103); - this.STATUS_STRB_DW2.Margin = new System.Windows.Forms.Padding(4); - this.STATUS_STRB_DW2.Name = "STATUS_STRB_DW2"; - this.STATUS_STRB_DW2.Size = new System.Drawing.Size(387, 28); - this.STATUS_STRB_DW2.TabIndex = 57; - // - // label47 - // - this.label47.AutoSize = true; - this.label47.Location = new System.Drawing.Point(20, 111); - this.label47.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label47.Name = "label47"; - this.label47.Size = new System.Drawing.Size(84, 17); - this.label47.TabIndex = 56; - this.label47.Text = "STRB_DW2"; - // - // STATUS_STRB_DW1 - // - this.STATUS_STRB_DW1.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.STATUS_STRB_DW1.Location = new System.Drawing.Point(113, 60); - this.STATUS_STRB_DW1.Margin = new System.Windows.Forms.Padding(4); - this.STATUS_STRB_DW1.Name = "STATUS_STRB_DW1"; - this.STATUS_STRB_DW1.Size = new System.Drawing.Size(387, 28); - this.STATUS_STRB_DW1.TabIndex = 55; - // - // label18 - // - this.label18.AutoSize = true; - this.label18.Location = new System.Drawing.Point(20, 68); - this.label18.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label18.Name = "label18"; - this.label18.Size = new System.Drawing.Size(84, 17); - this.label18.TabIndex = 54; - this.label18.Text = "STRB_DW1"; - // - // STATUS_STRB_DW0 - // - this.STATUS_STRB_DW0.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.STATUS_STRB_DW0.Location = new System.Drawing.Point(113, 17); - this.STATUS_STRB_DW0.Margin = new System.Windows.Forms.Padding(4); - this.STATUS_STRB_DW0.Name = "STATUS_STRB_DW0"; - this.STATUS_STRB_DW0.Size = new System.Drawing.Size(387, 28); - this.STATUS_STRB_DW0.TabIndex = 53; - // - // lblPLC_ADP - // - this.lblPLC_ADP.AutoSize = true; - this.lblPLC_ADP.Location = new System.Drawing.Point(20, 27); - this.lblPLC_ADP.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.lblPLC_ADP.Name = "lblPLC_ADP"; - this.lblPLC_ADP.Size = new System.Drawing.Size(84, 17); - this.lblPLC_ADP.TabIndex = 52; - this.lblPLC_ADP.Text = "STRB_DW0"; - // - // statusStrip1 - // - this.statusStrip1.ImageScalingSize = new System.Drawing.Size(20, 20); - this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.cbAxType.Location = new System.Drawing.Point(108, 85); + this.cbAxType.Margin = new System.Windows.Forms.Padding(4); + this.cbAxType.Name = "cbAxType"; + this.cbAxType.Size = new System.Drawing.Size(119, 24); + this.cbAxType.TabIndex = 34; + // + // AxMastId + // + this.AxMastId.Location = new System.Drawing.Point(380, 50); + this.AxMastId.Margin = new System.Windows.Forms.Padding(4); + this.AxMastId.Name = "AxMastId"; + this.AxMastId.Size = new System.Drawing.Size(105, 22); + this.AxMastId.TabIndex = 33; + // + // label33 + // + this.label33.AutoSize = true; + this.label33.Location = new System.Drawing.Point(317, 55); + this.label33.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label33.Name = "label33"; + this.label33.Size = new System.Drawing.Size(55, 17); + this.label33.TabIndex = 32; + this.label33.Text = "Mast ID"; + // + // AxIsMaster + // + this.AxIsMaster.AutoSize = true; + this.AxIsMaster.Location = new System.Drawing.Point(237, 54); + this.AxIsMaster.Margin = new System.Windows.Forms.Padding(4); + this.AxIsMaster.Name = "AxIsMaster"; + this.AxIsMaster.Size = new System.Drawing.Size(73, 21); + this.AxIsMaster.TabIndex = 31; + this.AxIsMaster.Text = "Master"; + this.AxIsMaster.UseVisualStyleBackColor = true; + // + // AxMainProc + // + this.AxMainProc.Location = new System.Drawing.Point(108, 50); + this.AxMainProc.Margin = new System.Windows.Forms.Padding(4); + this.AxMainProc.Name = "AxMainProc"; + this.AxMainProc.Size = new System.Drawing.Size(60, 22); + this.AxMainProc.TabIndex = 30; + // + // label32 + // + this.label32.AutoSize = true; + this.label32.Location = new System.Drawing.Point(15, 54); + this.label32.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label32.Name = "label32"; + this.label32.Size = new System.Drawing.Size(71, 17); + this.label32.TabIndex = 29; + this.label32.Text = "Main Proc"; + // + // cbAxNum + // + this.cbAxNum.DisplayMember = "Name"; + this.cbAxNum.FormattingEnabled = true; + this.cbAxNum.Location = new System.Drawing.Point(108, 18); + this.cbAxNum.Margin = new System.Windows.Forms.Padding(4); + this.cbAxNum.Name = "cbAxNum"; + this.cbAxNum.Size = new System.Drawing.Size(160, 24); + this.cbAxNum.TabIndex = 28; + this.cbAxNum.ValueMember = "Value"; + this.cbAxNum.SelectedIndexChanged += new System.EventHandler(this.cbAxNum_SelectedIndexChanged); + // + // label31 + // + this.label31.AutoSize = true; + this.label31.Location = new System.Drawing.Point(16, 23); + this.label31.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label31.Name = "label31"; + this.label31.Size = new System.Drawing.Size(66, 17); + this.label31.TabIndex = 27; + this.label31.Text = "Axis Num"; + // + // AxPositionValue + // + this.AxPositionValue.Location = new System.Drawing.Point(353, 149); + this.AxPositionValue.Margin = new System.Windows.Forms.Padding(4); + this.AxPositionValue.Name = "AxPositionValue"; + this.AxPositionValue.Size = new System.Drawing.Size(132, 22); + this.AxPositionValue.TabIndex = 26; + // + // AxLoadValue + // + this.AxLoadValue.Location = new System.Drawing.Point(353, 123); + this.AxLoadValue.Margin = new System.Windows.Forms.Padding(4); + this.AxLoadValue.Name = "AxLoadValue"; + this.AxLoadValue.Size = new System.Drawing.Size(132, 22); + this.AxLoadValue.TabIndex = 25; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(16, 153); + this.label5.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(58, 17); + this.label5.TabIndex = 24; + this.label5.Text = "Position"; + // + // AxPosition + // + this.AxPosition.Location = new System.Drawing.Point(108, 149); + this.AxPosition.Name = "AxPosition"; + this.AxPosition.Size = new System.Drawing.Size(224, 18); + this.AxPosition.TabIndex = 23; + this.AxPosition.Scroll += new System.Windows.Forms.ScrollEventHandler(this.xPosition_Scroll); + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(16, 127); + this.label4.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(40, 17); + this.label4.TabIndex = 22; + this.label4.Text = "Load"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(116, 117); + this.label3.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(0, 17); + this.label3.TabIndex = 21; + // + // AxLoad + // + this.AxLoad.Location = new System.Drawing.Point(108, 123); + this.AxLoad.Name = "AxLoad"; + this.AxLoad.Size = new System.Drawing.Size(224, 18); + this.AxLoad.TabIndex = 20; + this.AxLoad.Scroll += new System.Windows.Forms.ScrollEventHandler(this.xLoad_Scroll); + // + // program + // + this.program.Location = new System.Drawing.Point(107, 23); + this.program.Margin = new System.Windows.Forms.Padding(4); + this.program.Name = "program"; + this.program.Size = new System.Drawing.Size(203, 22); + this.program.TabIndex = 39; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(9, 27); + this.label2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(93, 17); + this.label2.TabIndex = 38; + this.label2.Text = "Curr Program"; + // + // groupBox9 + // + this.groupBox9.Controls.Add(this.txtPzKo); + this.groupBox9.Controls.Add(this.label25); + this.groupBox9.Controls.Add(this.txtPzOk); + this.groupBox9.Controls.Add(this.label23); + this.groupBox9.Controls.Add(this.txtPzTot); + this.groupBox9.Controls.Add(this.label21); + this.groupBox9.Controls.Add(this.OPERATOR_ID); + this.groupBox9.Controls.Add(this.label19); + this.groupBox9.Controls.Add(this.PROG_ROW_NUM); + this.groupBox9.Controls.Add(this.label17); + this.groupBox9.Controls.Add(this.program); + this.groupBox9.Controls.Add(this.label2); + this.groupBox9.Controls.Add(this.partID); + this.groupBox9.Controls.Add(this.label13); + this.groupBox9.Controls.Add(this.functionalMode); + this.groupBox9.Controls.Add(this.label12); + this.groupBox9.Location = new System.Drawing.Point(4, 182); + this.groupBox9.Margin = new System.Windows.Forms.Padding(4); + this.groupBox9.Name = "groupBox9"; + this.groupBox9.Padding = new System.Windows.Forms.Padding(4); + this.groupBox9.Size = new System.Drawing.Size(505, 194); + this.groupBox9.TabIndex = 55; + this.groupBox9.TabStop = false; + this.groupBox9.Text = "Produzione"; + // + // txtPzKo + // + this.txtPzKo.Location = new System.Drawing.Point(417, 121); + this.txtPzKo.Margin = new System.Windows.Forms.Padding(4); + this.txtPzKo.Name = "txtPzKo"; + this.txtPzKo.Size = new System.Drawing.Size(79, 22); + this.txtPzKo.TabIndex = 59; + this.txtPzKo.TextChanged += new System.EventHandler(this.pzKo_TextChanged); + // + // label25 + // + this.label25.AutoSize = true; + this.label25.Location = new System.Drawing.Point(359, 124); + this.label25.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label25.Name = "label25"; + this.label25.Size = new System.Drawing.Size(48, 17); + this.label25.TabIndex = 58; + this.label25.Text = "Pz KO"; + // + // txtPzOk + // + this.txtPzOk.Enabled = false; + this.txtPzOk.Location = new System.Drawing.Point(268, 121); + this.txtPzOk.Margin = new System.Windows.Forms.Padding(4); + this.txtPzOk.Name = "txtPzOk"; + this.txtPzOk.Size = new System.Drawing.Size(79, 22); + this.txtPzOk.TabIndex = 57; + // + // label23 + // + this.label23.AutoSize = true; + this.label23.Location = new System.Drawing.Point(209, 124); + this.label23.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label23.Name = "label23"; + this.label23.Size = new System.Drawing.Size(48, 17); + this.label23.TabIndex = 56; + this.label23.Text = "Pz OK"; + // + // txtPzTot + // + this.txtPzTot.Enabled = false; + this.txtPzTot.Location = new System.Drawing.Point(107, 121); + this.txtPzTot.Margin = new System.Windows.Forms.Padding(4); + this.txtPzTot.Name = "txtPzTot"; + this.txtPzTot.Size = new System.Drawing.Size(79, 22); + this.txtPzTot.TabIndex = 55; + // + // label21 + // + this.label21.AutoSize = true; + this.label21.Location = new System.Drawing.Point(44, 124); + this.label21.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label21.Name = "label21"; + this.label21.Size = new System.Drawing.Size(49, 17); + this.label21.TabIndex = 54; + this.label21.Text = "Pz Tot"; + // + // OPERATOR_ID + // + this.OPERATOR_ID.Location = new System.Drawing.Point(364, 55); + this.OPERATOR_ID.Margin = new System.Windows.Forms.Padding(4); + this.OPERATOR_ID.Name = "OPERATOR_ID"; + this.OPERATOR_ID.Size = new System.Drawing.Size(132, 22); + this.OPERATOR_ID.TabIndex = 53; + // + // label19 + // + this.label19.AutoSize = true; + this.label19.Location = new System.Drawing.Point(296, 59); + this.label19.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label19.Name = "label19"; + this.label19.Size = new System.Drawing.Size(58, 17); + this.label19.TabIndex = 52; + this.label19.Text = "ID oper."; + // + // PROG_ROW_NUM + // + this.PROG_ROW_NUM.Location = new System.Drawing.Point(417, 23); + this.PROG_ROW_NUM.Margin = new System.Windows.Forms.Padding(4); + this.PROG_ROW_NUM.Name = "PROG_ROW_NUM"; + this.PROG_ROW_NUM.Size = new System.Drawing.Size(79, 22); + this.PROG_ROW_NUM.TabIndex = 51; + // + // label17 + // + this.label17.AutoSize = true; + this.label17.Location = new System.Drawing.Point(337, 27); + this.label17.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label17.Name = "label17"; + this.label17.Size = new System.Drawing.Size(68, 17); + this.label17.TabIndex = 50; + this.label17.Text = "Row Num"; + // + // groupBox11 + // + this.groupBox11.Controls.Add(this.STATUS_STRB_DW3); + this.groupBox11.Controls.Add(this.label49); + this.groupBox11.Controls.Add(this.STATUS_STRB_DW2); + this.groupBox11.Controls.Add(this.label47); + this.groupBox11.Controls.Add(this.STATUS_STRB_DW1); + this.groupBox11.Controls.Add(this.label18); + this.groupBox11.Controls.Add(this.STATUS_STRB_DW0); + this.groupBox11.Controls.Add(this.lblPLC_ADP); + this.groupBox11.Location = new System.Drawing.Point(11, 71); + this.groupBox11.Margin = new System.Windows.Forms.Padding(4); + this.groupBox11.Name = "groupBox11"; + this.groupBox11.Padding = new System.Windows.Forms.Padding(4); + this.groupBox11.Size = new System.Drawing.Size(509, 191); + this.groupBox11.TabIndex = 57; + this.groupBox11.TabStop = false; + this.groupBox11.Text = "Strobes PLC --> ADP"; + // + // STATUS_STRB_DW3 + // + this.STATUS_STRB_DW3.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.STATUS_STRB_DW3.Location = new System.Drawing.Point(113, 146); + this.STATUS_STRB_DW3.Margin = new System.Windows.Forms.Padding(4); + this.STATUS_STRB_DW3.Name = "STATUS_STRB_DW3"; + this.STATUS_STRB_DW3.Size = new System.Drawing.Size(387, 28); + this.STATUS_STRB_DW3.TabIndex = 59; + // + // label49 + // + this.label49.AutoSize = true; + this.label49.Location = new System.Drawing.Point(20, 154); + this.label49.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label49.Name = "label49"; + this.label49.Size = new System.Drawing.Size(84, 17); + this.label49.TabIndex = 58; + this.label49.Text = "STRB_DW3"; + // + // STATUS_STRB_DW2 + // + this.STATUS_STRB_DW2.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.STATUS_STRB_DW2.Location = new System.Drawing.Point(113, 103); + this.STATUS_STRB_DW2.Margin = new System.Windows.Forms.Padding(4); + this.STATUS_STRB_DW2.Name = "STATUS_STRB_DW2"; + this.STATUS_STRB_DW2.Size = new System.Drawing.Size(387, 28); + this.STATUS_STRB_DW2.TabIndex = 57; + // + // label47 + // + this.label47.AutoSize = true; + this.label47.Location = new System.Drawing.Point(20, 111); + this.label47.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label47.Name = "label47"; + this.label47.Size = new System.Drawing.Size(84, 17); + this.label47.TabIndex = 56; + this.label47.Text = "STRB_DW2"; + // + // STATUS_STRB_DW1 + // + this.STATUS_STRB_DW1.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.STATUS_STRB_DW1.Location = new System.Drawing.Point(113, 60); + this.STATUS_STRB_DW1.Margin = new System.Windows.Forms.Padding(4); + this.STATUS_STRB_DW1.Name = "STATUS_STRB_DW1"; + this.STATUS_STRB_DW1.Size = new System.Drawing.Size(387, 28); + this.STATUS_STRB_DW1.TabIndex = 55; + // + // label18 + // + this.label18.AutoSize = true; + this.label18.Location = new System.Drawing.Point(20, 68); + this.label18.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label18.Name = "label18"; + this.label18.Size = new System.Drawing.Size(84, 17); + this.label18.TabIndex = 54; + this.label18.Text = "STRB_DW1"; + // + // STATUS_STRB_DW0 + // + this.STATUS_STRB_DW0.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.STATUS_STRB_DW0.Location = new System.Drawing.Point(113, 17); + this.STATUS_STRB_DW0.Margin = new System.Windows.Forms.Padding(4); + this.STATUS_STRB_DW0.Name = "STATUS_STRB_DW0"; + this.STATUS_STRB_DW0.Size = new System.Drawing.Size(387, 28); + this.STATUS_STRB_DW0.TabIndex = 53; + // + // lblPLC_ADP + // + this.lblPLC_ADP.AutoSize = true; + this.lblPLC_ADP.Location = new System.Drawing.Point(20, 27); + this.lblPLC_ADP.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblPLC_ADP.Name = "lblPLC_ADP"; + this.lblPLC_ADP.Size = new System.Drawing.Size(84, 17); + this.lblPLC_ADP.TabIndex = 52; + this.lblPLC_ADP.Text = "STRB_DW0"; + // + // statusStrip1 + // + this.statusStrip1.ImageScalingSize = new System.Drawing.Size(20, 20); + this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.lblApp, this.lblVers, this.MainProgrBar, this.lblComStats, this.lblStatus}); - this.statusStrip1.Location = new System.Drawing.Point(0, 669); - this.statusStrip1.Name = "statusStrip1"; - this.statusStrip1.Padding = new System.Windows.Forms.Padding(1, 0, 19, 0); - this.statusStrip1.Size = new System.Drawing.Size(1047, 29); - this.statusStrip1.TabIndex = 59; - this.statusStrip1.Text = "statusStrip1"; - // - // lblApp - // - this.lblApp.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold); - this.lblApp.ForeColor = System.Drawing.SystemColors.ControlText; - this.lblApp.Name = "lblApp"; - this.lblApp.Size = new System.Drawing.Size(21, 24); - this.lblApp.Text = "..."; - // - // lblVers - // - this.lblVers.Font = new System.Drawing.Font("Segoe UI", 8F); - this.lblVers.ForeColor = System.Drawing.SystemColors.ControlDarkDark; - this.lblVers.Name = "lblVers"; - this.lblVers.Size = new System.Drawing.Size(18, 24); - this.lblVers.Text = "..."; - // - // MainProgrBar - // - this.MainProgrBar.BackColor = System.Drawing.SystemColors.Control; - this.MainProgrBar.Name = "MainProgrBar"; - this.MainProgrBar.Size = new System.Drawing.Size(133, 23); - this.MainProgrBar.Step = 1; - // - // lblComStats - // - this.lblComStats.Name = "lblComStats"; - this.lblComStats.Size = new System.Drawing.Size(39, 24); - this.lblComStats.Text = "stats"; - // - // lblStatus - // - this.lblStatus.Name = "lblStatus"; - this.lblStatus.Size = new System.Drawing.Size(27, 24); - this.lblStatus.Text = "---"; - // - // groupBox13 - // - this.groupBox13.Controls.Add(this.cbPathSel); - this.groupBox13.Controls.Add(this.label38); - this.groupBox13.Controls.Add(this.label29); - this.groupBox13.Controls.Add(this.PosAct); - this.groupBox13.Controls.Add(this.txtPathSpeedOver); - this.groupBox13.Controls.Add(this.label28); - this.groupBox13.Controls.Add(this.hsPathSpeedOver); - this.groupBox13.Controls.Add(this.txtPathFeedOver); - this.groupBox13.Controls.Add(this.label27); - this.groupBox13.Controls.Add(this.hsPathFeedOver); - this.groupBox13.Controls.Add(this.txtPathFeed); - this.groupBox13.Controls.Add(this.label26); - this.groupBox13.Controls.Add(this.hsPathFeed); - this.groupBox13.Location = new System.Drawing.Point(513, 103); - this.groupBox13.Margin = new System.Windows.Forms.Padding(4); - this.groupBox13.Name = "groupBox13"; - this.groupBox13.Padding = new System.Windows.Forms.Padding(4); - this.groupBox13.Size = new System.Drawing.Size(505, 206); - this.groupBox13.TabIndex = 60; - this.groupBox13.TabStop = false; - this.groupBox13.Text = "PATH"; - // - // cbPathSel - // - this.cbPathSel.DisplayMember = "Name"; - this.cbPathSel.FormattingEnabled = true; - this.cbPathSel.Location = new System.Drawing.Point(107, 20); - this.cbPathSel.Margin = new System.Windows.Forms.Padding(4); - this.cbPathSel.Name = "cbPathSel"; - this.cbPathSel.Size = new System.Drawing.Size(160, 24); - this.cbPathSel.TabIndex = 63; - this.cbPathSel.ValueMember = "Value"; - this.cbPathSel.SelectedIndexChanged += new System.EventHandler(this.cbPathSel_SelectedIndexChanged); - // - // label38 - // - this.label38.AutoSize = true; - this.label38.Location = new System.Drawing.Point(15, 25); - this.label38.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label38.Name = "label38"; - this.label38.Size = new System.Drawing.Size(70, 17); - this.label38.TabIndex = 62; - this.label38.Text = "Path Num"; - // - // label29 - // - this.label29.AutoSize = true; - this.label29.Location = new System.Drawing.Point(16, 164); - this.label29.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label29.Name = "label29"; - this.label29.Size = new System.Drawing.Size(66, 17); - this.label29.TabIndex = 33; - this.label29.Text = "Posiz Act"; - // - // txtPathSpeedOver - // - this.txtPathSpeedOver.Location = new System.Drawing.Point(397, 108); - this.txtPathSpeedOver.Margin = new System.Windows.Forms.Padding(4); - this.txtPathSpeedOver.Name = "txtPathSpeedOver"; - this.txtPathSpeedOver.Size = new System.Drawing.Size(97, 22); - this.txtPathSpeedOver.TabIndex = 32; - this.txtPathSpeedOver.TextChanged += new System.EventHandler(this.txtPathSpeedOver_TextChanged); - // - // label28 - // - this.label28.AutoSize = true; - this.label28.Location = new System.Drawing.Point(13, 112); - this.label28.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label28.Name = "label28"; - this.label28.Size = new System.Drawing.Size(84, 17); - this.label28.TabIndex = 31; - this.label28.Text = "Rapid Over."; - // - // hsPathSpeedOver - // - this.hsPathSpeedOver.Location = new System.Drawing.Point(107, 112); - this.hsPathSpeedOver.Maximum = 150; - this.hsPathSpeedOver.Name = "hsPathSpeedOver"; - this.hsPathSpeedOver.Size = new System.Drawing.Size(284, 18); - this.hsPathSpeedOver.TabIndex = 30; - this.hsPathSpeedOver.ValueChanged += new System.EventHandler(this.hsPathSpeedOver_ValueChanged); - // - // txtPathFeedOver - // - this.txtPathFeedOver.Location = new System.Drawing.Point(397, 78); - this.txtPathFeedOver.Margin = new System.Windows.Forms.Padding(4); - this.txtPathFeedOver.Name = "txtPathFeedOver"; - this.txtPathFeedOver.Size = new System.Drawing.Size(97, 22); - this.txtPathFeedOver.TabIndex = 29; - this.txtPathFeedOver.TextChanged += new System.EventHandler(this.txtPathFeedOver_TextChanged); - // - // label27 - // - this.label27.AutoSize = true; - this.label27.Location = new System.Drawing.Point(13, 81); - this.label27.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label27.Name = "label27"; - this.label27.Size = new System.Drawing.Size(79, 17); - this.label27.TabIndex = 28; - this.label27.Text = "Feed Over."; - // - // hsPathFeedOver - // - this.hsPathFeedOver.Location = new System.Drawing.Point(107, 81); - this.hsPathFeedOver.Maximum = 150; - this.hsPathFeedOver.Name = "hsPathFeedOver"; - this.hsPathFeedOver.Size = new System.Drawing.Size(284, 18); - this.hsPathFeedOver.TabIndex = 27; - this.hsPathFeedOver.ValueChanged += new System.EventHandler(this.hsPathFeedOver_ValueChanged); - // - // txtPathFeed - // - this.txtPathFeed.Location = new System.Drawing.Point(397, 46); - this.txtPathFeed.Margin = new System.Windows.Forms.Padding(4); - this.txtPathFeed.Name = "txtPathFeed"; - this.txtPathFeed.Size = new System.Drawing.Size(97, 22); - this.txtPathFeed.TabIndex = 26; - this.txtPathFeed.TextChanged += new System.EventHandler(this.txtPathFeed_TextChanged); - // - // label26 - // - this.label26.AutoSize = true; - this.label26.Location = new System.Drawing.Point(13, 49); - this.label26.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label26.Name = "label26"; - this.label26.Size = new System.Drawing.Size(65, 17); - this.label26.TabIndex = 24; - this.label26.Text = "Feedrate"; - // - // hsPathFeed - // - this.hsPathFeed.Location = new System.Drawing.Point(107, 49); - this.hsPathFeed.Maximum = 150; - this.hsPathFeed.Name = "hsPathFeed"; - this.hsPathFeed.Size = new System.Drawing.Size(284, 18); - this.hsPathFeed.TabIndex = 23; - this.hsPathFeed.ValueChanged += new System.EventHandler(this.hsPathFeed_ValueChanged); - // - // menuStrip1 - // - this.menuStrip1.ImageScalingSize = new System.Drawing.Size(20, 20); - this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.statusStrip1.Location = new System.Drawing.Point(0, 669); + this.statusStrip1.Name = "statusStrip1"; + this.statusStrip1.Padding = new System.Windows.Forms.Padding(1, 0, 19, 0); + this.statusStrip1.Size = new System.Drawing.Size(1047, 29); + this.statusStrip1.TabIndex = 59; + this.statusStrip1.Text = "statusStrip1"; + // + // lblApp + // + this.lblApp.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold); + this.lblApp.ForeColor = System.Drawing.SystemColors.ControlText; + this.lblApp.Name = "lblApp"; + this.lblApp.Size = new System.Drawing.Size(21, 24); + this.lblApp.Text = "..."; + // + // lblVers + // + this.lblVers.Font = new System.Drawing.Font("Segoe UI", 8F); + this.lblVers.ForeColor = System.Drawing.SystemColors.ControlDarkDark; + this.lblVers.Name = "lblVers"; + this.lblVers.Size = new System.Drawing.Size(18, 24); + this.lblVers.Text = "..."; + // + // MainProgrBar + // + this.MainProgrBar.BackColor = System.Drawing.SystemColors.Control; + this.MainProgrBar.Name = "MainProgrBar"; + this.MainProgrBar.Size = new System.Drawing.Size(133, 23); + this.MainProgrBar.Step = 1; + // + // lblComStats + // + this.lblComStats.Name = "lblComStats"; + this.lblComStats.Size = new System.Drawing.Size(39, 24); + this.lblComStats.Text = "stats"; + // + // lblStatus + // + this.lblStatus.Name = "lblStatus"; + this.lblStatus.Size = new System.Drawing.Size(27, 24); + this.lblStatus.Text = "---"; + // + // groupBox13 + // + this.groupBox13.Controls.Add(this.cbPathSel); + this.groupBox13.Controls.Add(this.label38); + this.groupBox13.Controls.Add(this.label29); + this.groupBox13.Controls.Add(this.PosAct); + this.groupBox13.Controls.Add(this.txtPathSpeedOver); + this.groupBox13.Controls.Add(this.label28); + this.groupBox13.Controls.Add(this.hsPathSpeedOver); + this.groupBox13.Controls.Add(this.txtPathFeedOver); + this.groupBox13.Controls.Add(this.label27); + this.groupBox13.Controls.Add(this.hsPathFeedOver); + this.groupBox13.Controls.Add(this.txtPathFeed); + this.groupBox13.Controls.Add(this.label26); + this.groupBox13.Controls.Add(this.hsPathFeed); + this.groupBox13.Location = new System.Drawing.Point(513, 103); + this.groupBox13.Margin = new System.Windows.Forms.Padding(4); + this.groupBox13.Name = "groupBox13"; + this.groupBox13.Padding = new System.Windows.Forms.Padding(4); + this.groupBox13.Size = new System.Drawing.Size(505, 206); + this.groupBox13.TabIndex = 60; + this.groupBox13.TabStop = false; + this.groupBox13.Text = "PATH"; + // + // cbPathSel + // + this.cbPathSel.DisplayMember = "Name"; + this.cbPathSel.FormattingEnabled = true; + this.cbPathSel.Location = new System.Drawing.Point(107, 20); + this.cbPathSel.Margin = new System.Windows.Forms.Padding(4); + this.cbPathSel.Name = "cbPathSel"; + this.cbPathSel.Size = new System.Drawing.Size(160, 24); + this.cbPathSel.TabIndex = 63; + this.cbPathSel.ValueMember = "Value"; + this.cbPathSel.SelectedIndexChanged += new System.EventHandler(this.cbPathSel_SelectedIndexChanged); + // + // label38 + // + this.label38.AutoSize = true; + this.label38.Location = new System.Drawing.Point(15, 25); + this.label38.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label38.Name = "label38"; + this.label38.Size = new System.Drawing.Size(70, 17); + this.label38.TabIndex = 62; + this.label38.Text = "Path Num"; + // + // label29 + // + this.label29.AutoSize = true; + this.label29.Location = new System.Drawing.Point(16, 164); + this.label29.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label29.Name = "label29"; + this.label29.Size = new System.Drawing.Size(66, 17); + this.label29.TabIndex = 33; + this.label29.Text = "Posiz Act"; + // + // txtPathSpeedOver + // + this.txtPathSpeedOver.Location = new System.Drawing.Point(397, 108); + this.txtPathSpeedOver.Margin = new System.Windows.Forms.Padding(4); + this.txtPathSpeedOver.Name = "txtPathSpeedOver"; + this.txtPathSpeedOver.Size = new System.Drawing.Size(97, 22); + this.txtPathSpeedOver.TabIndex = 32; + this.txtPathSpeedOver.TextChanged += new System.EventHandler(this.txtPathSpeedOver_TextChanged); + // + // label28 + // + this.label28.AutoSize = true; + this.label28.Location = new System.Drawing.Point(13, 112); + this.label28.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label28.Name = "label28"; + this.label28.Size = new System.Drawing.Size(84, 17); + this.label28.TabIndex = 31; + this.label28.Text = "Rapid Over."; + // + // hsPathSpeedOver + // + this.hsPathSpeedOver.Location = new System.Drawing.Point(107, 112); + this.hsPathSpeedOver.Maximum = 150; + this.hsPathSpeedOver.Name = "hsPathSpeedOver"; + this.hsPathSpeedOver.Size = new System.Drawing.Size(284, 18); + this.hsPathSpeedOver.TabIndex = 30; + this.hsPathSpeedOver.ValueChanged += new System.EventHandler(this.hsPathSpeedOver_ValueChanged); + // + // txtPathFeedOver + // + this.txtPathFeedOver.Location = new System.Drawing.Point(397, 78); + this.txtPathFeedOver.Margin = new System.Windows.Forms.Padding(4); + this.txtPathFeedOver.Name = "txtPathFeedOver"; + this.txtPathFeedOver.Size = new System.Drawing.Size(97, 22); + this.txtPathFeedOver.TabIndex = 29; + this.txtPathFeedOver.TextChanged += new System.EventHandler(this.txtPathFeedOver_TextChanged); + // + // label27 + // + this.label27.AutoSize = true; + this.label27.Location = new System.Drawing.Point(13, 81); + this.label27.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label27.Name = "label27"; + this.label27.Size = new System.Drawing.Size(79, 17); + this.label27.TabIndex = 28; + this.label27.Text = "Feed Over."; + // + // hsPathFeedOver + // + this.hsPathFeedOver.Location = new System.Drawing.Point(107, 81); + this.hsPathFeedOver.Maximum = 150; + this.hsPathFeedOver.Name = "hsPathFeedOver"; + this.hsPathFeedOver.Size = new System.Drawing.Size(284, 18); + this.hsPathFeedOver.TabIndex = 27; + this.hsPathFeedOver.ValueChanged += new System.EventHandler(this.hsPathFeedOver_ValueChanged); + // + // txtPathFeed + // + this.txtPathFeed.Location = new System.Drawing.Point(397, 46); + this.txtPathFeed.Margin = new System.Windows.Forms.Padding(4); + this.txtPathFeed.Name = "txtPathFeed"; + this.txtPathFeed.Size = new System.Drawing.Size(97, 22); + this.txtPathFeed.TabIndex = 26; + this.txtPathFeed.TextChanged += new System.EventHandler(this.txtPathFeed_TextChanged); + // + // label26 + // + this.label26.AutoSize = true; + this.label26.Location = new System.Drawing.Point(13, 49); + this.label26.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label26.Name = "label26"; + this.label26.Size = new System.Drawing.Size(65, 17); + this.label26.TabIndex = 24; + this.label26.Text = "Feedrate"; + // + // hsPathFeed + // + this.hsPathFeed.Location = new System.Drawing.Point(107, 49); + this.hsPathFeed.Maximum = 150; + this.hsPathFeed.Name = "hsPathFeed"; + this.hsPathFeed.Size = new System.Drawing.Size(284, 18); + this.hsPathFeed.TabIndex = 23; + this.hsPathFeed.ValueChanged += new System.EventHandler(this.hsPathFeed_ValueChanged); + // + // menuStrip1 + // + this.menuStrip1.ImageScalingSize = new System.Drawing.Size(20, 20); + this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.fILEToolStripMenuItem, this.sETUPToolStripMenuItem}); - this.menuStrip1.Location = new System.Drawing.Point(0, 0); - this.menuStrip1.Name = "menuStrip1"; - this.menuStrip1.Padding = new System.Windows.Forms.Padding(8, 2, 0, 2); - this.menuStrip1.Size = new System.Drawing.Size(1047, 28); - this.menuStrip1.TabIndex = 61; - this.menuStrip1.Text = "menuStrip1"; - // - // fILEToolStripMenuItem - // - this.fILEToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.menuStrip1.Location = new System.Drawing.Point(0, 0); + this.menuStrip1.Name = "menuStrip1"; + this.menuStrip1.Padding = new System.Windows.Forms.Padding(8, 2, 0, 2); + this.menuStrip1.Size = new System.Drawing.Size(1047, 28); + this.menuStrip1.TabIndex = 61; + this.menuStrip1.Text = "menuStrip1"; + // + // fILEToolStripMenuItem + // + this.fILEToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.mLoadAdaptConf}); - this.fILEToolStripMenuItem.Name = "fILEToolStripMenuItem"; - this.fILEToolStripMenuItem.Size = new System.Drawing.Size(47, 24); - this.fILEToolStripMenuItem.Text = "FILE"; - // - // mLoadAdaptConf - // - this.mLoadAdaptConf.Name = "mLoadAdaptConf"; - this.mLoadAdaptConf.Size = new System.Drawing.Size(232, 26); - this.mLoadAdaptConf.Text = "LOAD ADAPTER CONF"; - this.mLoadAdaptConf.Click += new System.EventHandler(this.mLoadAdaptConf_Click); - // - // sETUPToolStripMenuItem - // - this.sETUPToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.fILEToolStripMenuItem.Name = "fILEToolStripMenuItem"; + this.fILEToolStripMenuItem.Size = new System.Drawing.Size(47, 24); + this.fILEToolStripMenuItem.Text = "FILE"; + // + // mLoadAdaptConf + // + this.mLoadAdaptConf.Name = "mLoadAdaptConf"; + this.mLoadAdaptConf.Size = new System.Drawing.Size(233, 26); + this.mLoadAdaptConf.Text = "LOAD ADAPTER CONF"; + this.mLoadAdaptConf.Click += new System.EventHandler(this.mLoadAdaptConf_Click); + // + // sETUPToolStripMenuItem + // + this.sETUPToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.mConfGen}); - this.sETUPToolStripMenuItem.Name = "sETUPToolStripMenuItem"; - this.sETUPToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.S))); - this.sETUPToolStripMenuItem.Size = new System.Drawing.Size(63, 24); - this.sETUPToolStripMenuItem.Text = "SETUP"; - // - // mConfGen - // - this.mConfGen.Name = "mConfGen"; - this.mConfGen.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.T))); - this.mConfGen.Size = new System.Drawing.Size(327, 26); - this.mConfGen.Text = "TEMPLATE CONF GENERATOR"; - this.mConfGen.Click += new System.EventHandler(this.mConfGen_Click); - // - // lblCurrAdapt - // - this.lblCurrAdapt.Dock = System.Windows.Forms.DockStyle.Top; - this.lblCurrAdapt.Font = new System.Drawing.Font("Microsoft Sans Serif", 16F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lblCurrAdapt.Location = new System.Drawing.Point(0, 28); - this.lblCurrAdapt.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.lblCurrAdapt.Name = "lblCurrAdapt"; - this.lblCurrAdapt.Size = new System.Drawing.Size(1047, 32); - this.lblCurrAdapt.TabIndex = 64; - this.lblCurrAdapt.Text = "Adapter loaded: N.A."; - this.lblCurrAdapt.TextAlign = System.Drawing.ContentAlignment.TopCenter; - // - // tabCtrlMain - // - this.tabCtrlMain.Controls.Add(this.tpStatus); - this.tabCtrlMain.Controls.Add(this.tbConf); - this.tabCtrlMain.Controls.Add(this.tpSIM); - this.tabCtrlMain.Dock = System.Windows.Forms.DockStyle.Fill; - this.tabCtrlMain.Location = new System.Drawing.Point(0, 60); - this.tabCtrlMain.Margin = new System.Windows.Forms.Padding(4); - this.tabCtrlMain.Name = "tabCtrlMain"; - this.tabCtrlMain.SelectedIndex = 0; - this.tabCtrlMain.Size = new System.Drawing.Size(1047, 609); - this.tabCtrlMain.TabIndex = 65; - // - // tpStatus - // - this.tpStatus.BackColor = System.Drawing.Color.WhiteSmoke; - this.tpStatus.Controls.Add(this.gbMonitor); - this.tpStatus.Controls.Add(this.groupBox6); - this.tpStatus.Controls.Add(this.groupBox1); - this.tpStatus.Controls.Add(this.groupBox11); - this.tpStatus.Location = new System.Drawing.Point(4, 25); - this.tpStatus.Margin = new System.Windows.Forms.Padding(4); - this.tpStatus.Name = "tpStatus"; - this.tpStatus.Padding = new System.Windows.Forms.Padding(4); - this.tpStatus.Size = new System.Drawing.Size(1039, 580); - this.tpStatus.TabIndex = 0; - this.tpStatus.Text = "STATUS"; - // - // gbMonitor - // - this.gbMonitor.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + this.sETUPToolStripMenuItem.Name = "sETUPToolStripMenuItem"; + this.sETUPToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.S))); + this.sETUPToolStripMenuItem.Size = new System.Drawing.Size(63, 24); + this.sETUPToolStripMenuItem.Text = "SETUP"; + // + // mConfGen + // + this.mConfGen.Name = "mConfGen"; + this.mConfGen.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.T))); + this.mConfGen.Size = new System.Drawing.Size(336, 26); + this.mConfGen.Text = "TEMPLATE CONF GENERATOR"; + this.mConfGen.Click += new System.EventHandler(this.mConfGen_Click); + // + // lblCurrAdapt + // + this.lblCurrAdapt.Dock = System.Windows.Forms.DockStyle.Top; + this.lblCurrAdapt.Font = new System.Drawing.Font("Microsoft Sans Serif", 16F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblCurrAdapt.Location = new System.Drawing.Point(0, 28); + this.lblCurrAdapt.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblCurrAdapt.Name = "lblCurrAdapt"; + this.lblCurrAdapt.Size = new System.Drawing.Size(1047, 32); + this.lblCurrAdapt.TabIndex = 64; + this.lblCurrAdapt.Text = "Adapter loaded: N.A."; + this.lblCurrAdapt.TextAlign = System.Drawing.ContentAlignment.TopCenter; + // + // tabCtrlMain + // + this.tabCtrlMain.Controls.Add(this.tpStatus); + this.tabCtrlMain.Controls.Add(this.tbConf); + this.tabCtrlMain.Controls.Add(this.tpSIM); + this.tabCtrlMain.Dock = System.Windows.Forms.DockStyle.Fill; + this.tabCtrlMain.Location = new System.Drawing.Point(0, 60); + this.tabCtrlMain.Margin = new System.Windows.Forms.Padding(4); + this.tabCtrlMain.Name = "tabCtrlMain"; + this.tabCtrlMain.SelectedIndex = 0; + this.tabCtrlMain.Size = new System.Drawing.Size(1047, 609); + this.tabCtrlMain.TabIndex = 65; + // + // tpStatus + // + this.tpStatus.BackColor = System.Drawing.Color.WhiteSmoke; + this.tpStatus.Controls.Add(this.gbMonitor); + this.tpStatus.Controls.Add(this.groupBox6); + this.tpStatus.Controls.Add(this.groupBox1); + this.tpStatus.Controls.Add(this.groupBox11); + this.tpStatus.Location = new System.Drawing.Point(4, 25); + this.tpStatus.Margin = new System.Windows.Forms.Padding(4); + this.tpStatus.Name = "tpStatus"; + this.tpStatus.Padding = new System.Windows.Forms.Padding(4); + this.tpStatus.Size = new System.Drawing.Size(1039, 580); + this.tpStatus.TabIndex = 0; + this.tpStatus.Text = "STATUS"; + // + // gbMonitor + // + this.gbMonitor.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - this.gbMonitor.BackColor = System.Drawing.Color.Black; - this.gbMonitor.Controls.Add(this.lblOutMessage3); - this.gbMonitor.Controls.Add(this.lblOutMessage2); - this.gbMonitor.Controls.Add(this.lblOutMessage); - this.gbMonitor.ForeColor = System.Drawing.SystemColors.Control; - this.gbMonitor.Location = new System.Drawing.Point(0, 266); - this.gbMonitor.Margin = new System.Windows.Forms.Padding(0); - this.gbMonitor.Name = "gbMonitor"; - this.gbMonitor.Padding = new System.Windows.Forms.Padding(0); - this.gbMonitor.Size = new System.Drawing.Size(1039, 311); - this.gbMonitor.TabIndex = 62; - this.gbMonitor.TabStop = false; - this.gbMonitor.Text = "Monitor variabili"; - // - // lblOutMessage3 - // - this.lblOutMessage3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.lblOutMessage3.AutoSize = true; - this.lblOutMessage3.Font = new System.Drawing.Font("Microsoft Sans Serif", 7F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lblOutMessage3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(0))))); - this.lblOutMessage3.Location = new System.Drawing.Point(581, 15); - this.lblOutMessage3.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.lblOutMessage3.Name = "lblOutMessage3"; - this.lblOutMessage3.Size = new System.Drawing.Size(16, 15); - this.lblOutMessage3.TabIndex = 62; - this.lblOutMessage3.Text = "..."; - // - // lblOutMessage - // - this.lblOutMessage.AutoSize = true; - this.lblOutMessage.Font = new System.Drawing.Font("Microsoft Sans Serif", 7F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lblOutMessage.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(128)))), ((int)(((byte)(255)))), ((int)(((byte)(128))))); - this.lblOutMessage.Location = new System.Drawing.Point(4, 15); - this.lblOutMessage.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.lblOutMessage.Name = "lblOutMessage"; - this.lblOutMessage.Size = new System.Drawing.Size(16, 15); - this.lblOutMessage.TabIndex = 60; - this.lblOutMessage.Text = "..."; - // - // lblOutMessage2 - // - this.lblOutMessage2.Anchor = System.Windows.Forms.AnchorStyles.Top; - this.lblOutMessage2.AutoSize = true; - this.lblOutMessage2.Font = new System.Drawing.Font("Microsoft Sans Serif", 7F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lblOutMessage2.ForeColor = System.Drawing.Color.Yellow; - this.lblOutMessage2.Location = new System.Drawing.Point(295, 15); - this.lblOutMessage2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.lblOutMessage2.Name = "lblOutMessage2"; - this.lblOutMessage2.Size = new System.Drawing.Size(16, 15); - this.lblOutMessage2.TabIndex = 61; - this.lblOutMessage2.Text = "..."; - // - // groupBox6 - // - this.groupBox6.Controls.Add(this.STATUS_ACK_DW3); - this.groupBox6.Controls.Add(this.label52); - this.groupBox6.Controls.Add(this.STATUS_ACK_DW2); - this.groupBox6.Controls.Add(this.label51); - this.groupBox6.Controls.Add(this.STATUS_ACK_DW1); - this.groupBox6.Controls.Add(this.label50); - this.groupBox6.Controls.Add(this.STATUS_ACK_DW0); - this.groupBox6.Controls.Add(this.label48); - this.groupBox6.Location = new System.Drawing.Point(523, 71); - this.groupBox6.Margin = new System.Windows.Forms.Padding(4); - this.groupBox6.Name = "groupBox6"; - this.groupBox6.Padding = new System.Windows.Forms.Padding(4); - this.groupBox6.Size = new System.Drawing.Size(512, 191); - this.groupBox6.TabIndex = 58; - this.groupBox6.TabStop = false; - this.groupBox6.Text = "ACK ADP --> PLC"; - // - // STATUS_ACK_DW3 - // - this.STATUS_ACK_DW3.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.STATUS_ACK_DW3.Location = new System.Drawing.Point(113, 145); - this.STATUS_ACK_DW3.Margin = new System.Windows.Forms.Padding(4); - this.STATUS_ACK_DW3.Name = "STATUS_ACK_DW3"; - this.STATUS_ACK_DW3.Size = new System.Drawing.Size(389, 28); - this.STATUS_ACK_DW3.TabIndex = 59; - // - // label52 - // - this.label52.AutoSize = true; - this.label52.Location = new System.Drawing.Point(20, 155); - this.label52.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label52.Name = "label52"; - this.label52.Size = new System.Drawing.Size(74, 17); - this.label52.TabIndex = 58; - this.label52.Text = "ACK_DW3"; - // - // STATUS_ACK_DW2 - // - this.STATUS_ACK_DW2.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.STATUS_ACK_DW2.Location = new System.Drawing.Point(113, 102); - this.STATUS_ACK_DW2.Margin = new System.Windows.Forms.Padding(4); - this.STATUS_ACK_DW2.Name = "STATUS_ACK_DW2"; - this.STATUS_ACK_DW2.Size = new System.Drawing.Size(389, 28); - this.STATUS_ACK_DW2.TabIndex = 57; - // - // label51 - // - this.label51.AutoSize = true; - this.label51.Location = new System.Drawing.Point(20, 112); - this.label51.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label51.Name = "label51"; - this.label51.Size = new System.Drawing.Size(74, 17); - this.label51.TabIndex = 56; - this.label51.Text = "ACK_DW2"; - // - // STATUS_ACK_DW1 - // - this.STATUS_ACK_DW1.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.STATUS_ACK_DW1.Location = new System.Drawing.Point(113, 59); - this.STATUS_ACK_DW1.Margin = new System.Windows.Forms.Padding(4); - this.STATUS_ACK_DW1.Name = "STATUS_ACK_DW1"; - this.STATUS_ACK_DW1.Size = new System.Drawing.Size(389, 28); - this.STATUS_ACK_DW1.TabIndex = 55; - // - // label50 - // - this.label50.AutoSize = true; - this.label50.Location = new System.Drawing.Point(20, 69); - this.label50.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label50.Name = "label50"; - this.label50.Size = new System.Drawing.Size(74, 17); - this.label50.TabIndex = 54; - this.label50.Text = "ACK_DW1"; - // - // STATUS_ACK_DW0 - // - this.STATUS_ACK_DW0.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.STATUS_ACK_DW0.Location = new System.Drawing.Point(113, 18); - this.STATUS_ACK_DW0.Margin = new System.Windows.Forms.Padding(4); - this.STATUS_ACK_DW0.Name = "STATUS_ACK_DW0"; - this.STATUS_ACK_DW0.Size = new System.Drawing.Size(389, 28); - this.STATUS_ACK_DW0.TabIndex = 53; - // - // label48 - // - this.label48.AutoSize = true; - this.label48.Location = new System.Drawing.Point(20, 23); - this.label48.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label48.Name = "label48"; - this.label48.Size = new System.Drawing.Size(74, 17); - this.label48.TabIndex = 52; - this.label48.Text = "ACK_DW0"; - // - // groupBox1 - // - this.groupBox1.Controls.Add(this.dump); - this.groupBox1.Controls.Add(this.stop); - this.groupBox1.Controls.Add(this.start); - this.groupBox1.Controls.Add(this.port); - this.groupBox1.Controls.Add(this.label1); - this.groupBox1.Location = new System.Drawing.Point(8, 7); - this.groupBox1.Margin = new System.Windows.Forms.Padding(4); - this.groupBox1.Name = "groupBox1"; - this.groupBox1.Padding = new System.Windows.Forms.Padding(4); - this.groupBox1.Size = new System.Drawing.Size(505, 53); - this.groupBox1.TabIndex = 35; - this.groupBox1.TabStop = false; - this.groupBox1.Text = "Server Info"; - // - // dump - // - this.dump.Location = new System.Drawing.Point(397, 18); - this.dump.Margin = new System.Windows.Forms.Padding(4); - this.dump.Name = "dump"; - this.dump.Size = new System.Drawing.Size(100, 28); - this.dump.TabIndex = 4; - this.dump.Text = "Show Dump"; - this.dump.UseVisualStyleBackColor = true; - this.dump.Click += new System.EventHandler(this.dump_Click); - // - // stop - // - this.stop.Location = new System.Drawing.Point(269, 18); - this.stop.Margin = new System.Windows.Forms.Padding(4); - this.stop.Name = "stop"; - this.stop.Size = new System.Drawing.Size(100, 28); - this.stop.TabIndex = 3; - this.stop.Text = "Stop"; - this.stop.UseVisualStyleBackColor = true; - this.stop.Click += new System.EventHandler(this.stop_Click); - // - // start - // - this.start.Location = new System.Drawing.Point(161, 18); - this.start.Margin = new System.Windows.Forms.Padding(4); - this.start.Name = "start"; - this.start.Size = new System.Drawing.Size(100, 28); - this.start.TabIndex = 2; - this.start.Text = "Start"; - this.start.UseVisualStyleBackColor = true; - this.start.Click += new System.EventHandler(this.start_Click); - // - // port - // - this.port.Location = new System.Drawing.Point(67, 21); - this.port.Margin = new System.Windows.Forms.Padding(4); - this.port.Name = "port"; - this.port.Size = new System.Drawing.Size(81, 22); - this.port.TabIndex = 1; - this.port.Text = "7878"; - this.port.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; - // - // label1 - // - this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(24, 25); - this.label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(34, 17); - this.label1.TabIndex = 0; - this.label1.Text = "Port"; - // - // tbConf - // - this.tbConf.BackColor = System.Drawing.Color.Maroon; - this.tbConf.Controls.Add(this.wbXmlConf); - this.tbConf.Location = new System.Drawing.Point(4, 25); - this.tbConf.Margin = new System.Windows.Forms.Padding(4); - this.tbConf.Name = "tbConf"; - this.tbConf.Padding = new System.Windows.Forms.Padding(4); - this.tbConf.Size = new System.Drawing.Size(1039, 580); - this.tbConf.TabIndex = 1; - this.tbConf.Text = "XML CONFIG"; - // - // wbXmlConf - // - this.wbXmlConf.Dock = System.Windows.Forms.DockStyle.Fill; - this.wbXmlConf.Location = new System.Drawing.Point(4, 4); - this.wbXmlConf.Margin = new System.Windows.Forms.Padding(4); - this.wbXmlConf.MinimumSize = new System.Drawing.Size(27, 25); - this.wbXmlConf.Name = "wbXmlConf"; - this.wbXmlConf.Size = new System.Drawing.Size(1031, 572); - this.wbXmlConf.TabIndex = 0; - // - // tpSIM - // - this.tpSIM.BackColor = System.Drawing.Color.LightGray; - this.tpSIM.Controls.Add(this.groupBox5); - this.tpSIM.Controls.Add(this.Execution); - this.tpSIM.Controls.Add(this.mode); - this.tpSIM.Controls.Add(this.groupBox13); - this.tpSIM.Controls.Add(this.groupBox7); - this.tpSIM.Controls.Add(this.groupBox10); - this.tpSIM.Controls.Add(this.groupBox3); - this.tpSIM.Controls.Add(this.groupBox8); - this.tpSIM.Controls.Add(this.groupBox4); - this.tpSIM.Controls.Add(this.groupBox9); - this.tpSIM.Controls.Add(this.groupBox2); - this.tpSIM.Controls.Add(this.groupBox12); - this.tpSIM.Location = new System.Drawing.Point(4, 25); - this.tpSIM.Margin = new System.Windows.Forms.Padding(4); - this.tpSIM.Name = "tpSIM"; - this.tpSIM.Size = new System.Drawing.Size(1039, 580); - this.tpSIM.TabIndex = 2; - this.tpSIM.Text = "SIMULATION"; - // - // groupBox5 - // - this.groupBox5.Controls.Add(this.uoSpeedVal); - this.groupBox5.Controls.Add(this.uoLoadVal); - this.groupBox5.Controls.Add(this.label45); - this.groupBox5.Controls.Add(this.uoSpeed); - this.groupBox5.Controls.Add(this.label46); - this.groupBox5.Controls.Add(this.uoLoad); - this.groupBox5.Controls.Add(this.uoVitaRes); - this.groupBox5.Controls.Add(this.label43); - this.groupBox5.Controls.Add(this.uoAccTime); - this.groupBox5.Controls.Add(this.label44); - this.groupBox5.Controls.Add(this.uoToolId); - this.groupBox5.Controls.Add(this.label40); - this.groupBox5.Controls.Add(this.uoStatus); - this.groupBox5.Controls.Add(this.label41); - this.groupBox5.Controls.Add(this.uoNumCU); - this.groupBox5.Controls.Add(this.label42); - this.groupBox5.Controls.Add(this.cbUnOpSel); - this.groupBox5.Controls.Add(this.label39); - this.groupBox5.Location = new System.Drawing.Point(513, 316); - this.groupBox5.Margin = new System.Windows.Forms.Padding(4); - this.groupBox5.Name = "groupBox5"; - this.groupBox5.Padding = new System.Windows.Forms.Padding(4); - this.groupBox5.Size = new System.Drawing.Size(505, 191); - this.groupBox5.TabIndex = 62; - this.groupBox5.TabStop = false; - this.groupBox5.Text = "Unita Operatrice / Mandrino"; - // - // uoSpeedVal - // - this.uoSpeedVal.Location = new System.Drawing.Point(343, 146); - this.uoSpeedVal.Margin = new System.Windows.Forms.Padding(4); - this.uoSpeedVal.Name = "uoSpeedVal"; - this.uoSpeedVal.Size = new System.Drawing.Size(132, 22); - this.uoSpeedVal.TabIndex = 81; - // - // uoLoadVal - // - this.uoLoadVal.Location = new System.Drawing.Point(343, 121); - this.uoLoadVal.Margin = new System.Windows.Forms.Padding(4); - this.uoLoadVal.Name = "uoLoadVal"; - this.uoLoadVal.Size = new System.Drawing.Size(132, 22); - this.uoLoadVal.TabIndex = 80; - // - // label45 - // - this.label45.AutoSize = true; - this.label45.Location = new System.Drawing.Point(5, 150); - this.label45.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label45.Name = "label45"; - this.label45.Size = new System.Drawing.Size(49, 17); - this.label45.TabIndex = 79; - this.label45.Text = "Speed"; - // - // uoSpeed - // - this.uoSpeed.Location = new System.Drawing.Point(97, 146); - this.uoSpeed.Name = "uoSpeed"; - this.uoSpeed.Size = new System.Drawing.Size(224, 18); - this.uoSpeed.TabIndex = 78; - this.uoSpeed.Scroll += new System.Windows.Forms.ScrollEventHandler(this.uoSpeed_Scroll); - // - // label46 - // - this.label46.AutoSize = true; - this.label46.Location = new System.Drawing.Point(5, 124); - this.label46.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label46.Name = "label46"; - this.label46.Size = new System.Drawing.Size(40, 17); - this.label46.TabIndex = 77; - this.label46.Text = "Load"; - // - // uoLoad - // - this.uoLoad.Location = new System.Drawing.Point(97, 121); - this.uoLoad.Name = "uoLoad"; - this.uoLoad.Size = new System.Drawing.Size(224, 18); - this.uoLoad.TabIndex = 76; - this.uoLoad.Scroll += new System.Windows.Forms.ScrollEventHandler(this.uoLoad_Scroll); - // - // uoVitaRes - // - this.uoVitaRes.Location = new System.Drawing.Point(97, 89); - this.uoVitaRes.Margin = new System.Windows.Forms.Padding(4); - this.uoVitaRes.Name = "uoVitaRes"; - this.uoVitaRes.Size = new System.Drawing.Size(60, 22); - this.uoVitaRes.TabIndex = 75; - // - // label43 - // - this.label43.AutoSize = true; - this.label43.Location = new System.Drawing.Point(8, 92); - this.label43.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label43.Name = "label43"; - this.label43.Size = new System.Drawing.Size(57, 17); - this.label43.TabIndex = 74; - this.label43.Text = "VitaRes"; - // - // uoAccTime - // - this.uoAccTime.Location = new System.Drawing.Point(253, 89); - this.uoAccTime.Margin = new System.Windows.Forms.Padding(4); - this.uoAccTime.Name = "uoAccTime"; - this.uoAccTime.Size = new System.Drawing.Size(68, 22); - this.uoAccTime.TabIndex = 73; - // - // label44 - // - this.label44.AutoSize = true; - this.label44.Location = new System.Drawing.Point(160, 92); - this.label44.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label44.Name = "label44"; - this.label44.Size = new System.Drawing.Size(66, 17); - this.label44.TabIndex = 72; - this.label44.Text = "Acc Time"; - // - // uoToolId - // - this.uoToolId.Location = new System.Drawing.Point(97, 57); - this.uoToolId.Margin = new System.Windows.Forms.Padding(4); - this.uoToolId.Name = "uoToolId"; - this.uoToolId.Size = new System.Drawing.Size(60, 22); - this.uoToolId.TabIndex = 71; - // - // label40 - // - this.label40.AutoSize = true; - this.label40.Location = new System.Drawing.Point(8, 60); - this.label40.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label40.Name = "label40"; - this.label40.Size = new System.Drawing.Size(53, 17); - this.label40.TabIndex = 70; - this.label40.Text = "Tool ID"; - // - // uoStatus - // - this.uoStatus.Location = new System.Drawing.Point(396, 57); - this.uoStatus.Margin = new System.Windows.Forms.Padding(4); - this.uoStatus.Name = "uoStatus"; - this.uoStatus.Size = new System.Drawing.Size(80, 22); - this.uoStatus.TabIndex = 69; - // - // label41 - // - this.label41.AutoSize = true; - this.label41.Location = new System.Drawing.Point(340, 60); - this.label41.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label41.Name = "label41"; - this.label41.Size = new System.Drawing.Size(48, 17); - this.label41.TabIndex = 68; - this.label41.Text = "Status"; - // - // uoNumCU - // - this.uoNumCU.Location = new System.Drawing.Point(253, 57); - this.uoNumCU.Margin = new System.Windows.Forms.Padding(4); - this.uoNumCU.Name = "uoNumCU"; - this.uoNumCU.Size = new System.Drawing.Size(68, 22); - this.uoNumCU.TabIndex = 67; - // - // label42 - // - this.label42.AutoSize = true; - this.label42.Location = new System.Drawing.Point(160, 60); - this.label42.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label42.Name = "label42"; - this.label42.Size = new System.Drawing.Size(56, 17); - this.label42.TabIndex = 66; - this.label42.Text = "NumCU"; - // - // cbUnOpSel - // - this.cbUnOpSel.DisplayMember = "Name"; - this.cbUnOpSel.FormattingEnabled = true; - this.cbUnOpSel.Location = new System.Drawing.Point(97, 23); - this.cbUnOpSel.Margin = new System.Windows.Forms.Padding(4); - this.cbUnOpSel.Name = "cbUnOpSel"; - this.cbUnOpSel.Size = new System.Drawing.Size(160, 24); - this.cbUnOpSel.TabIndex = 65; - this.cbUnOpSel.ValueMember = "Value"; - this.cbUnOpSel.SelectedIndexChanged += new System.EventHandler(this.cbUnOpSel_SelectedIndexChanged); - // - // label39 - // - this.label39.AutoSize = true; - this.label39.Location = new System.Drawing.Point(5, 28); - this.label39.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label39.Name = "label39"; - this.label39.Size = new System.Drawing.Size(78, 17); - this.label39.TabIndex = 64; - this.label39.Text = "Num UnOp"; - // - // Execution - // - this.Execution.Controls.Add(this.ready); - this.Execution.Controls.Add(this.feedhold); - this.Execution.Controls.Add(this.stopped); - this.Execution.Controls.Add(this.running); - this.Execution.Location = new System.Drawing.Point(4, 116); - this.Execution.Margin = new System.Windows.Forms.Padding(4); - this.Execution.Name = "Execution"; - this.Execution.Padding = new System.Windows.Forms.Padding(4); - this.Execution.Size = new System.Drawing.Size(507, 59); - this.Execution.TabIndex = 61; - this.Execution.TabStop = false; - this.Execution.Text = "Execution"; - // - // ready - // - this.ready.AutoSize = true; - this.ready.Checked = true; - this.ready.Location = new System.Drawing.Point(152, 20); - this.ready.Margin = new System.Windows.Forms.Padding(4); - this.ready.Name = "ready"; - this.ready.Size = new System.Drawing.Size(70, 21); - this.ready.TabIndex = 9; - this.ready.TabStop = true; - this.ready.Text = "Ready"; - this.ready.UseVisualStyleBackColor = true; - // - // feedhold - // - this.feedhold.AutoSize = true; - this.feedhold.Location = new System.Drawing.Point(337, 20); - this.feedhold.Margin = new System.Windows.Forms.Padding(4); - this.feedhold.Name = "feedhold"; - this.feedhold.Size = new System.Drawing.Size(94, 21); - this.feedhold.TabIndex = 8; - this.feedhold.Text = "Feed Hold"; - this.feedhold.UseVisualStyleBackColor = true; - // - // stopped - // - this.stopped.AutoSize = true; - this.stopped.Location = new System.Drawing.Point(240, 20); - this.stopped.Margin = new System.Windows.Forms.Padding(4); - this.stopped.Name = "stopped"; - this.stopped.Size = new System.Drawing.Size(82, 21); - this.stopped.TabIndex = 7; - this.stopped.Text = "Stopped"; - this.stopped.UseVisualStyleBackColor = true; - // - // running - // - this.running.AutoSize = true; - this.running.Location = new System.Drawing.Point(48, 20); - this.running.Margin = new System.Windows.Forms.Padding(4); - this.running.Name = "running"; - this.running.Size = new System.Drawing.Size(82, 21); - this.running.TabIndex = 6; - this.running.Text = "Running"; - this.running.UseVisualStyleBackColor = true; - // - // mode - // - this.mode.Controls.Add(this.edit); - this.mode.Controls.Add(this.mdi); - this.mode.Controls.Add(this.manual); - this.mode.Controls.Add(this.automatic); - this.mode.Location = new System.Drawing.Point(4, 49); - this.mode.Margin = new System.Windows.Forms.Padding(4); - this.mode.Name = "mode"; - this.mode.Padding = new System.Windows.Forms.Padding(4); - this.mode.Size = new System.Drawing.Size(505, 59); - this.mode.TabIndex = 60; - this.mode.TabStop = false; - this.mode.Text = "Mode"; - // - // edit - // - this.edit.AutoSize = true; - this.edit.Location = new System.Drawing.Point(399, 20); - this.edit.Margin = new System.Windows.Forms.Padding(4); - this.edit.Name = "edit"; - this.edit.Size = new System.Drawing.Size(53, 21); - this.edit.TabIndex = 9; - this.edit.Text = "Edit"; - this.edit.UseVisualStyleBackColor = true; - // - // mdi - // - this.mdi.AutoSize = true; - this.mdi.Location = new System.Drawing.Point(240, 18); - this.mdi.Margin = new System.Windows.Forms.Padding(4); - this.mdi.Name = "mdi"; - this.mdi.Size = new System.Drawing.Size(144, 21); - this.mdi.TabIndex = 8; - this.mdi.Text = "Manual Data Input"; - this.mdi.UseVisualStyleBackColor = true; - // - // manual - // - this.manual.AutoSize = true; - this.manual.Checked = true; - this.manual.Location = new System.Drawing.Point(152, 18); - this.manual.Margin = new System.Windows.Forms.Padding(4); - this.manual.Name = "manual"; - this.manual.Size = new System.Drawing.Size(75, 21); - this.manual.TabIndex = 7; - this.manual.TabStop = true; - this.manual.Text = "Manual"; - this.manual.UseVisualStyleBackColor = true; - // - // automatic - // - this.automatic.AutoSize = true; - this.automatic.Location = new System.Drawing.Point(48, 20); - this.automatic.Margin = new System.Windows.Forms.Padding(4); - this.automatic.Name = "automatic"; - this.automatic.Size = new System.Drawing.Size(91, 21); - this.automatic.TabIndex = 6; - this.automatic.Text = "Automatic"; - this.automatic.UseVisualStyleBackColor = true; - // - // groupBox7 - // - this.groupBox7.Controls.Add(this.D1_UUID); - this.groupBox7.Controls.Add(this.D1_ID); - this.groupBox7.Controls.Add(this.D1_NAME); - this.groupBox7.Controls.Add(this.lblAT); - this.groupBox7.Controls.Add(this.txtAccTime); - this.groupBox7.Controls.Add(this.label30); - this.groupBox7.Controls.Add(this.txtPower); - this.groupBox7.Controls.Add(this.label16); - this.groupBox7.Controls.Add(this.label15); - this.groupBox7.Controls.Add(this.label14); - this.groupBox7.Location = new System.Drawing.Point(513, 4); - this.groupBox7.Margin = new System.Windows.Forms.Padding(4); - this.groupBox7.Name = "groupBox7"; - this.groupBox7.Padding = new System.Windows.Forms.Padding(4); - this.groupBox7.Size = new System.Drawing.Size(507, 92); - this.groupBox7.TabIndex = 59; - this.groupBox7.TabStop = false; - this.groupBox7.Text = "Macchina"; - // - // D1_UUID - // - this.D1_UUID.AutoSize = true; - this.D1_UUID.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.D1_UUID.Location = new System.Drawing.Point(311, 66); - this.D1_UUID.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.D1_UUID.Name = "D1_UUID"; - this.D1_UUID.Size = new System.Drawing.Size(23, 17); - this.D1_UUID.TabIndex = 66; - this.D1_UUID.Text = "..."; - // - // D1_ID - // - this.D1_ID.AutoSize = true; - this.D1_ID.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.D1_ID.Location = new System.Drawing.Point(72, 65); - this.D1_ID.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.D1_ID.Name = "D1_ID"; - this.D1_ID.Size = new System.Drawing.Size(23, 17); - this.D1_ID.TabIndex = 65; - this.D1_ID.Text = "..."; - // - // D1_NAME - // - this.D1_NAME.AutoSize = true; - this.D1_NAME.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.D1_NAME.Location = new System.Drawing.Point(72, 25); - this.D1_NAME.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.D1_NAME.Name = "D1_NAME"; - this.D1_NAME.Size = new System.Drawing.Size(23, 17); - this.D1_NAME.TabIndex = 64; - this.D1_NAME.Text = "..."; - // - // lblAT - // - this.lblAT.AutoSize = true; - this.lblAT.Location = new System.Drawing.Point(252, 25); - this.lblAT.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.lblAT.Name = "lblAT"; - this.lblAT.Size = new System.Drawing.Size(53, 17); - this.lblAT.TabIndex = 63; - this.lblAT.Text = "AccMin"; - // - // txtAccTime - // - this.txtAccTime.Location = new System.Drawing.Point(312, 21); - this.txtAccTime.Margin = new System.Windows.Forms.Padding(4); - this.txtAccTime.Name = "txtAccTime"; - this.txtAccTime.Size = new System.Drawing.Size(69, 22); - this.txtAccTime.TabIndex = 62; - // - // label30 - // - this.label30.AutoSize = true; - this.label30.Location = new System.Drawing.Point(384, 25); - this.label30.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label30.Name = "label30"; - this.label30.Size = new System.Drawing.Size(46, 17); - this.label30.TabIndex = 61; - this.label30.Text = "power"; - // - // txtPower - // - this.txtPower.Location = new System.Drawing.Point(433, 21); - this.txtPower.Margin = new System.Windows.Forms.Padding(4); - this.txtPower.Name = "txtPower"; - this.txtPower.Size = new System.Drawing.Size(64, 22); - this.txtPower.TabIndex = 60; - // - // label16 - // - this.label16.AutoSize = true; - this.label16.Location = new System.Drawing.Point(257, 65); - this.label16.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label16.Name = "label16"; - this.label16.Size = new System.Drawing.Size(41, 17); - this.label16.TabIndex = 59; - this.label16.Text = "UUID"; - // - // label15 - // - this.label15.AutoSize = true; - this.label15.Location = new System.Drawing.Point(13, 65); - this.label15.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label15.Name = "label15"; - this.label15.Size = new System.Drawing.Size(21, 17); - this.label15.TabIndex = 57; - this.label15.Text = "ID"; - // - // label14 - // - this.label14.AutoSize = true; - this.label14.Location = new System.Drawing.Point(13, 25); - this.label14.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label14.Name = "label14"; - this.label14.Size = new System.Drawing.Size(45, 17); - this.label14.TabIndex = 54; - this.label14.Text = "Nome"; - // - // groupBox10 - // - this.groupBox10.Controls.Add(this.enableDataSim); - this.groupBox10.Location = new System.Drawing.Point(273, 4); - this.groupBox10.Margin = new System.Windows.Forms.Padding(4); - this.groupBox10.Name = "groupBox10"; - this.groupBox10.Padding = new System.Windows.Forms.Padding(4); - this.groupBox10.Size = new System.Drawing.Size(236, 38); - this.groupBox10.TabIndex = 58; - this.groupBox10.TabStop = false; - this.groupBox10.Text = "Simulazione"; - // - // enableDataSim - // - this.enableDataSim.AutoSize = true; - this.enableDataSim.Location = new System.Drawing.Point(149, 11); - this.enableDataSim.Margin = new System.Windows.Forms.Padding(4); - this.enableDataSim.Name = "enableDataSim"; - this.enableDataSim.RightToLeft = System.Windows.Forms.RightToLeft.Yes; - this.enableDataSim.Size = new System.Drawing.Size(74, 21); - this.enableDataSim.TabIndex = 55; - this.enableDataSim.Text = "Enable"; - this.enableDataSim.UseVisualStyleBackColor = true; - // - // groupBox8 - // - this.groupBox8.Controls.Add(this.estop); - this.groupBox8.Location = new System.Drawing.Point(4, 4); - this.groupBox8.Margin = new System.Windows.Forms.Padding(4); - this.groupBox8.Name = "groupBox8"; - this.groupBox8.Padding = new System.Windows.Forms.Padding(4); - this.groupBox8.Size = new System.Drawing.Size(261, 38); - this.groupBox8.TabIndex = 57; - this.groupBox8.TabStop = false; - this.groupBox8.Text = "Sicurezze"; - // - // estop - // - this.estop.AutoSize = true; - this.estop.Location = new System.Drawing.Point(79, 11); - this.estop.Margin = new System.Windows.Forms.Padding(4); - this.estop.Name = "estop"; - this.estop.RightToLeft = System.Windows.Forms.RightToLeft.Yes; - this.estop.Size = new System.Drawing.Size(134, 21); - this.estop.TabIndex = 55; - this.estop.Text = "Emergency Stop"; - this.estop.UseVisualStyleBackColor = true; - // - // groupBox12 - // - this.groupBox12.Controls.Add(this.lblCodaT); - this.groupBox12.Controls.Add(this.addCodT); - this.groupBox12.Controls.Add(this.label24); - this.groupBox12.Controls.Add(this.lblCodaS); - this.groupBox12.Controls.Add(this.addCodS); - this.groupBox12.Controls.Add(this.label22); - this.groupBox12.Controls.Add(this.lblCodaM); - this.groupBox12.Controls.Add(this.addCodM); - this.groupBox12.Controls.Add(this.label20); - this.groupBox12.Location = new System.Drawing.Point(4, 384); - this.groupBox12.Margin = new System.Windows.Forms.Padding(4); - this.groupBox12.Name = "groupBox12"; - this.groupBox12.Padding = new System.Windows.Forms.Padding(4); - this.groupBox12.Size = new System.Drawing.Size(507, 123); - this.groupBox12.TabIndex = 58; - this.groupBox12.TabStop = false; - this.groupBox12.Text = "Codici M/S/T"; - // - // lblCodaT - // - this.lblCodaT.AutoSize = true; - this.lblCodaT.Location = new System.Drawing.Point(156, 91); - this.lblCodaT.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.lblCodaT.Name = "lblCodaT"; - this.lblCodaT.Size = new System.Drawing.Size(28, 17); - this.lblCodaT.TabIndex = 60; - this.lblCodaT.Text = "[...]"; - // - // addCodT - // - this.addCodT.Location = new System.Drawing.Point(68, 87); - this.addCodT.Margin = new System.Windows.Forms.Padding(4); - this.addCodT.Name = "addCodT"; - this.addCodT.Size = new System.Drawing.Size(79, 22); - this.addCodT.TabIndex = 59; - this.addCodT.KeyDown += new System.Windows.Forms.KeyEventHandler(this.addCodT_KeyDown); - this.addCodT.Leave += new System.EventHandler(this.addCodT_Leave); - // - // label24 - // - this.label24.AutoSize = true; - this.label24.Location = new System.Drawing.Point(12, 91); - this.label24.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label24.Name = "label24"; - this.label24.Size = new System.Drawing.Size(42, 17); - this.label24.TabIndex = 58; - this.label24.Text = "AddT"; - // - // lblCodaS - // - this.lblCodaS.AutoSize = true; - this.lblCodaS.Location = new System.Drawing.Point(157, 59); - this.lblCodaS.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.lblCodaS.Name = "lblCodaS"; - this.lblCodaS.Size = new System.Drawing.Size(28, 17); - this.lblCodaS.TabIndex = 57; - this.lblCodaS.Text = "[...]"; - // - // addCodS - // - this.addCodS.Location = new System.Drawing.Point(69, 55); - this.addCodS.Margin = new System.Windows.Forms.Padding(4); - this.addCodS.Name = "addCodS"; - this.addCodS.Size = new System.Drawing.Size(79, 22); - this.addCodS.TabIndex = 56; - this.addCodS.KeyDown += new System.Windows.Forms.KeyEventHandler(this.addCodS_KeyDown); - this.addCodS.Leave += new System.EventHandler(this.addCodS_Leave); - // - // label22 - // - this.label22.AutoSize = true; - this.label22.Location = new System.Drawing.Point(13, 59); - this.label22.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label22.Name = "label22"; - this.label22.Size = new System.Drawing.Size(42, 17); - this.label22.TabIndex = 55; - this.label22.Text = "AddS"; - // - // lblCodaM - // - this.lblCodaM.AutoSize = true; - this.lblCodaM.Location = new System.Drawing.Point(157, 27); - this.lblCodaM.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.lblCodaM.Name = "lblCodaM"; - this.lblCodaM.Size = new System.Drawing.Size(28, 17); - this.lblCodaM.TabIndex = 54; - this.lblCodaM.Text = "[...]"; - // - // addCodM - // - this.addCodM.Location = new System.Drawing.Point(69, 23); - this.addCodM.Margin = new System.Windows.Forms.Padding(4); - this.addCodM.Name = "addCodM"; - this.addCodM.Size = new System.Drawing.Size(79, 22); - this.addCodM.TabIndex = 53; - this.addCodM.KeyDown += new System.Windows.Forms.KeyEventHandler(this.addCodM_KeyDown); - this.addCodM.Leave += new System.EventHandler(this.addCodM_Leave); - // - // label20 - // - this.label20.AutoSize = true; - this.label20.Location = new System.Drawing.Point(13, 27); - this.label20.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label20.Name = "label20"; - this.label20.Size = new System.Drawing.Size(44, 17); - this.label20.TabIndex = 52; - this.label20.Text = "AddM"; - // - // notifyIcon1 - // - this.notifyIcon1.ContextMenuStrip = this.trayMenu; - this.notifyIcon1.Icon = ((System.Drawing.Icon)(resources.GetObject("notifyIcon1.Icon"))); - this.notifyIcon1.Text = "MTC Adapter"; - this.notifyIcon1.DoubleClick += new System.EventHandler(this.notifyIcon1_DoubleClick); - // - // trayMenu - // - this.trayMenu.ImageScalingSize = new System.Drawing.Size(20, 20); - this.trayMenu.Name = "trayMenu"; - this.trayMenu.Size = new System.Drawing.Size(67, 4); - this.trayMenu.ItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.trayMenu_ItemClicked); - // - // MainForm - // - this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(1047, 698); - this.Controls.Add(this.tabCtrlMain); - this.Controls.Add(this.lblCurrAdapt); - this.Controls.Add(this.statusStrip1); - this.Controls.Add(this.menuStrip1); - this.Controls.Add(this.label6); - this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.MainMenuStrip = this.menuStrip1; - this.Margin = new System.Windows.Forms.Padding(4); - this.MaximizeBox = false; - this.Name = "MainForm"; - this.ShowInTaskbar = false; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; - this.Text = "MTConn Adapter"; - this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainForm_FormClosing); - this.Shown += new System.EventHandler(this.MainForm_Shown); - this.Resize += new System.EventHandler(this.MainForm_Resize); - this.groupBox4.ResumeLayout(false); - this.groupBox4.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.PosAct)).EndInit(); - this.groupBox3.ResumeLayout(false); - this.groupBox3.PerformLayout(); - this.groupBox2.ResumeLayout(false); - this.groupBox2.PerformLayout(); - this.groupBox9.ResumeLayout(false); - this.groupBox9.PerformLayout(); - this.groupBox11.ResumeLayout(false); - this.groupBox11.PerformLayout(); - this.statusStrip1.ResumeLayout(false); - this.statusStrip1.PerformLayout(); - this.groupBox13.ResumeLayout(false); - this.groupBox13.PerformLayout(); - this.menuStrip1.ResumeLayout(false); - this.menuStrip1.PerformLayout(); - this.tabCtrlMain.ResumeLayout(false); - this.tpStatus.ResumeLayout(false); - this.gbMonitor.ResumeLayout(false); - this.gbMonitor.PerformLayout(); - this.groupBox6.ResumeLayout(false); - this.groupBox6.PerformLayout(); - this.groupBox1.ResumeLayout(false); - this.groupBox1.PerformLayout(); - this.tbConf.ResumeLayout(false); - this.tpSIM.ResumeLayout(false); - this.groupBox5.ResumeLayout(false); - this.groupBox5.PerformLayout(); - this.Execution.ResumeLayout(false); - this.Execution.PerformLayout(); - this.mode.ResumeLayout(false); - this.mode.PerformLayout(); - this.groupBox7.ResumeLayout(false); - this.groupBox7.PerformLayout(); - this.groupBox10.ResumeLayout(false); - this.groupBox10.PerformLayout(); - this.groupBox8.ResumeLayout(false); - this.groupBox8.PerformLayout(); - this.groupBox12.ResumeLayout(false); - this.groupBox12.PerformLayout(); - this.ResumeLayout(false); - this.PerformLayout(); + this.gbMonitor.BackColor = System.Drawing.Color.Black; + this.gbMonitor.Controls.Add(this.lblOutMessage3); + this.gbMonitor.Controls.Add(this.lblOutMessage2); + this.gbMonitor.Controls.Add(this.lblOutMessage); + this.gbMonitor.ForeColor = System.Drawing.SystemColors.Control; + this.gbMonitor.Location = new System.Drawing.Point(0, 266); + this.gbMonitor.Margin = new System.Windows.Forms.Padding(0); + this.gbMonitor.Name = "gbMonitor"; + this.gbMonitor.Padding = new System.Windows.Forms.Padding(0); + this.gbMonitor.Size = new System.Drawing.Size(1039, 311); + this.gbMonitor.TabIndex = 62; + this.gbMonitor.TabStop = false; + this.gbMonitor.Text = "Monitor variabili"; + // + // lblOutMessage3 + // + this.lblOutMessage3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.lblOutMessage3.AutoSize = true; + this.lblOutMessage3.Font = new System.Drawing.Font("Microsoft Sans Serif", 7F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblOutMessage3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(0))))); + this.lblOutMessage3.Location = new System.Drawing.Point(527, 15); + this.lblOutMessage3.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblOutMessage3.Name = "lblOutMessage3"; + this.lblOutMessage3.Size = new System.Drawing.Size(16, 15); + this.lblOutMessage3.TabIndex = 62; + this.lblOutMessage3.Text = "..."; + // + // lblOutMessage2 + // + this.lblOutMessage2.Anchor = System.Windows.Forms.AnchorStyles.Top; + this.lblOutMessage2.AutoSize = true; + this.lblOutMessage2.Font = new System.Drawing.Font("Microsoft Sans Serif", 7F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblOutMessage2.ForeColor = System.Drawing.Color.Yellow; + this.lblOutMessage2.Location = new System.Drawing.Point(279, 15); + this.lblOutMessage2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblOutMessage2.Name = "lblOutMessage2"; + this.lblOutMessage2.Size = new System.Drawing.Size(16, 15); + this.lblOutMessage2.TabIndex = 61; + this.lblOutMessage2.Text = "..."; + // + // lblOutMessage + // + this.lblOutMessage.AutoSize = true; + this.lblOutMessage.Font = new System.Drawing.Font("Microsoft Sans Serif", 7F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblOutMessage.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(128)))), ((int)(((byte)(255)))), ((int)(((byte)(128))))); + this.lblOutMessage.Location = new System.Drawing.Point(4, 15); + this.lblOutMessage.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblOutMessage.Name = "lblOutMessage"; + this.lblOutMessage.Size = new System.Drawing.Size(16, 15); + this.lblOutMessage.TabIndex = 60; + this.lblOutMessage.Text = "..."; + // + // groupBox6 + // + this.groupBox6.Controls.Add(this.STATUS_ACK_DW3); + this.groupBox6.Controls.Add(this.label52); + this.groupBox6.Controls.Add(this.STATUS_ACK_DW2); + this.groupBox6.Controls.Add(this.label51); + this.groupBox6.Controls.Add(this.STATUS_ACK_DW1); + this.groupBox6.Controls.Add(this.label50); + this.groupBox6.Controls.Add(this.STATUS_ACK_DW0); + this.groupBox6.Controls.Add(this.label48); + this.groupBox6.Location = new System.Drawing.Point(523, 71); + this.groupBox6.Margin = new System.Windows.Forms.Padding(4); + this.groupBox6.Name = "groupBox6"; + this.groupBox6.Padding = new System.Windows.Forms.Padding(4); + this.groupBox6.Size = new System.Drawing.Size(512, 191); + this.groupBox6.TabIndex = 58; + this.groupBox6.TabStop = false; + this.groupBox6.Text = "ACK ADP --> PLC"; + // + // STATUS_ACK_DW3 + // + this.STATUS_ACK_DW3.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.STATUS_ACK_DW3.Location = new System.Drawing.Point(113, 145); + this.STATUS_ACK_DW3.Margin = new System.Windows.Forms.Padding(4); + this.STATUS_ACK_DW3.Name = "STATUS_ACK_DW3"; + this.STATUS_ACK_DW3.Size = new System.Drawing.Size(389, 28); + this.STATUS_ACK_DW3.TabIndex = 59; + // + // label52 + // + this.label52.AutoSize = true; + this.label52.Location = new System.Drawing.Point(20, 155); + this.label52.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label52.Name = "label52"; + this.label52.Size = new System.Drawing.Size(74, 17); + this.label52.TabIndex = 58; + this.label52.Text = "ACK_DW3"; + // + // STATUS_ACK_DW2 + // + this.STATUS_ACK_DW2.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.STATUS_ACK_DW2.Location = new System.Drawing.Point(113, 102); + this.STATUS_ACK_DW2.Margin = new System.Windows.Forms.Padding(4); + this.STATUS_ACK_DW2.Name = "STATUS_ACK_DW2"; + this.STATUS_ACK_DW2.Size = new System.Drawing.Size(389, 28); + this.STATUS_ACK_DW2.TabIndex = 57; + // + // label51 + // + this.label51.AutoSize = true; + this.label51.Location = new System.Drawing.Point(20, 112); + this.label51.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label51.Name = "label51"; + this.label51.Size = new System.Drawing.Size(74, 17); + this.label51.TabIndex = 56; + this.label51.Text = "ACK_DW2"; + // + // STATUS_ACK_DW1 + // + this.STATUS_ACK_DW1.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.STATUS_ACK_DW1.Location = new System.Drawing.Point(113, 59); + this.STATUS_ACK_DW1.Margin = new System.Windows.Forms.Padding(4); + this.STATUS_ACK_DW1.Name = "STATUS_ACK_DW1"; + this.STATUS_ACK_DW1.Size = new System.Drawing.Size(389, 28); + this.STATUS_ACK_DW1.TabIndex = 55; + // + // label50 + // + this.label50.AutoSize = true; + this.label50.Location = new System.Drawing.Point(20, 69); + this.label50.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label50.Name = "label50"; + this.label50.Size = new System.Drawing.Size(74, 17); + this.label50.TabIndex = 54; + this.label50.Text = "ACK_DW1"; + // + // STATUS_ACK_DW0 + // + this.STATUS_ACK_DW0.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.STATUS_ACK_DW0.Location = new System.Drawing.Point(113, 18); + this.STATUS_ACK_DW0.Margin = new System.Windows.Forms.Padding(4); + this.STATUS_ACK_DW0.Name = "STATUS_ACK_DW0"; + this.STATUS_ACK_DW0.Size = new System.Drawing.Size(389, 28); + this.STATUS_ACK_DW0.TabIndex = 53; + // + // label48 + // + this.label48.AutoSize = true; + this.label48.Location = new System.Drawing.Point(20, 23); + this.label48.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label48.Name = "label48"; + this.label48.Size = new System.Drawing.Size(74, 17); + this.label48.TabIndex = 52; + this.label48.Text = "ACK_DW0"; + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.dump); + this.groupBox1.Controls.Add(this.stop); + this.groupBox1.Controls.Add(this.start); + this.groupBox1.Controls.Add(this.port); + this.groupBox1.Controls.Add(this.label1); + this.groupBox1.Location = new System.Drawing.Point(8, 7); + this.groupBox1.Margin = new System.Windows.Forms.Padding(4); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Padding = new System.Windows.Forms.Padding(4); + this.groupBox1.Size = new System.Drawing.Size(505, 53); + this.groupBox1.TabIndex = 35; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "Server Info"; + // + // dump + // + this.dump.Location = new System.Drawing.Point(397, 18); + this.dump.Margin = new System.Windows.Forms.Padding(4); + this.dump.Name = "dump"; + this.dump.Size = new System.Drawing.Size(100, 28); + this.dump.TabIndex = 4; + this.dump.Text = "Show Dump"; + this.dump.UseVisualStyleBackColor = true; + this.dump.Click += new System.EventHandler(this.dump_Click); + // + // stop + // + this.stop.Location = new System.Drawing.Point(269, 18); + this.stop.Margin = new System.Windows.Forms.Padding(4); + this.stop.Name = "stop"; + this.stop.Size = new System.Drawing.Size(100, 28); + this.stop.TabIndex = 3; + this.stop.Text = "Stop"; + this.stop.UseVisualStyleBackColor = true; + this.stop.Click += new System.EventHandler(this.stop_Click); + // + // start + // + this.start.Location = new System.Drawing.Point(161, 18); + this.start.Margin = new System.Windows.Forms.Padding(4); + this.start.Name = "start"; + this.start.Size = new System.Drawing.Size(100, 28); + this.start.TabIndex = 2; + this.start.Text = "Start"; + this.start.UseVisualStyleBackColor = true; + this.start.Click += new System.EventHandler(this.start_Click); + // + // port + // + this.port.Location = new System.Drawing.Point(67, 21); + this.port.Margin = new System.Windows.Forms.Padding(4); + this.port.Name = "port"; + this.port.Size = new System.Drawing.Size(81, 22); + this.port.TabIndex = 1; + this.port.Text = "7878"; + this.port.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(24, 25); + this.label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(34, 17); + this.label1.TabIndex = 0; + this.label1.Text = "Port"; + // + // tbConf + // + this.tbConf.BackColor = System.Drawing.Color.Maroon; + this.tbConf.Controls.Add(this.wbXmlConf); + this.tbConf.Location = new System.Drawing.Point(4, 25); + this.tbConf.Margin = new System.Windows.Forms.Padding(4); + this.tbConf.Name = "tbConf"; + this.tbConf.Padding = new System.Windows.Forms.Padding(4); + this.tbConf.Size = new System.Drawing.Size(1039, 580); + this.tbConf.TabIndex = 1; + this.tbConf.Text = "XML CONFIG"; + // + // wbXmlConf + // + this.wbXmlConf.Dock = System.Windows.Forms.DockStyle.Fill; + this.wbXmlConf.Location = new System.Drawing.Point(4, 4); + this.wbXmlConf.Margin = new System.Windows.Forms.Padding(4); + this.wbXmlConf.MinimumSize = new System.Drawing.Size(27, 25); + this.wbXmlConf.Name = "wbXmlConf"; + this.wbXmlConf.Size = new System.Drawing.Size(1031, 572); + this.wbXmlConf.TabIndex = 0; + // + // tpSIM + // + this.tpSIM.BackColor = System.Drawing.Color.LightGray; + this.tpSIM.Controls.Add(this.groupBox5); + this.tpSIM.Controls.Add(this.Execution); + this.tpSIM.Controls.Add(this.mode); + this.tpSIM.Controls.Add(this.groupBox13); + this.tpSIM.Controls.Add(this.groupBox7); + this.tpSIM.Controls.Add(this.groupBox10); + this.tpSIM.Controls.Add(this.groupBox3); + this.tpSIM.Controls.Add(this.groupBox8); + this.tpSIM.Controls.Add(this.groupBox4); + this.tpSIM.Controls.Add(this.groupBox9); + this.tpSIM.Controls.Add(this.groupBox2); + this.tpSIM.Controls.Add(this.groupBox12); + this.tpSIM.Location = new System.Drawing.Point(4, 25); + this.tpSIM.Margin = new System.Windows.Forms.Padding(4); + this.tpSIM.Name = "tpSIM"; + this.tpSIM.Size = new System.Drawing.Size(1039, 580); + this.tpSIM.TabIndex = 2; + this.tpSIM.Text = "SIMULATION"; + // + // groupBox5 + // + this.groupBox5.Controls.Add(this.uoSpeedVal); + this.groupBox5.Controls.Add(this.uoLoadVal); + this.groupBox5.Controls.Add(this.label45); + this.groupBox5.Controls.Add(this.uoSpeed); + this.groupBox5.Controls.Add(this.label46); + this.groupBox5.Controls.Add(this.uoLoad); + this.groupBox5.Controls.Add(this.uoVitaRes); + this.groupBox5.Controls.Add(this.label43); + this.groupBox5.Controls.Add(this.uoAccTime); + this.groupBox5.Controls.Add(this.label44); + this.groupBox5.Controls.Add(this.uoToolId); + this.groupBox5.Controls.Add(this.label40); + this.groupBox5.Controls.Add(this.uoStatus); + this.groupBox5.Controls.Add(this.label41); + this.groupBox5.Controls.Add(this.uoNumCU); + this.groupBox5.Controls.Add(this.label42); + this.groupBox5.Controls.Add(this.cbUnOpSel); + this.groupBox5.Controls.Add(this.label39); + this.groupBox5.Location = new System.Drawing.Point(513, 316); + this.groupBox5.Margin = new System.Windows.Forms.Padding(4); + this.groupBox5.Name = "groupBox5"; + this.groupBox5.Padding = new System.Windows.Forms.Padding(4); + this.groupBox5.Size = new System.Drawing.Size(505, 191); + this.groupBox5.TabIndex = 62; + this.groupBox5.TabStop = false; + this.groupBox5.Text = "Unita Operatrice / Mandrino"; + // + // uoSpeedVal + // + this.uoSpeedVal.Location = new System.Drawing.Point(343, 146); + this.uoSpeedVal.Margin = new System.Windows.Forms.Padding(4); + this.uoSpeedVal.Name = "uoSpeedVal"; + this.uoSpeedVal.Size = new System.Drawing.Size(132, 22); + this.uoSpeedVal.TabIndex = 81; + // + // uoLoadVal + // + this.uoLoadVal.Location = new System.Drawing.Point(343, 121); + this.uoLoadVal.Margin = new System.Windows.Forms.Padding(4); + this.uoLoadVal.Name = "uoLoadVal"; + this.uoLoadVal.Size = new System.Drawing.Size(132, 22); + this.uoLoadVal.TabIndex = 80; + // + // label45 + // + this.label45.AutoSize = true; + this.label45.Location = new System.Drawing.Point(5, 150); + this.label45.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label45.Name = "label45"; + this.label45.Size = new System.Drawing.Size(49, 17); + this.label45.TabIndex = 79; + this.label45.Text = "Speed"; + // + // uoSpeed + // + this.uoSpeed.Location = new System.Drawing.Point(97, 146); + this.uoSpeed.Name = "uoSpeed"; + this.uoSpeed.Size = new System.Drawing.Size(224, 18); + this.uoSpeed.TabIndex = 78; + this.uoSpeed.Scroll += new System.Windows.Forms.ScrollEventHandler(this.uoSpeed_Scroll); + // + // label46 + // + this.label46.AutoSize = true; + this.label46.Location = new System.Drawing.Point(5, 124); + this.label46.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label46.Name = "label46"; + this.label46.Size = new System.Drawing.Size(40, 17); + this.label46.TabIndex = 77; + this.label46.Text = "Load"; + // + // uoLoad + // + this.uoLoad.Location = new System.Drawing.Point(97, 121); + this.uoLoad.Name = "uoLoad"; + this.uoLoad.Size = new System.Drawing.Size(224, 18); + this.uoLoad.TabIndex = 76; + this.uoLoad.Scroll += new System.Windows.Forms.ScrollEventHandler(this.uoLoad_Scroll); + // + // uoVitaRes + // + this.uoVitaRes.Location = new System.Drawing.Point(97, 89); + this.uoVitaRes.Margin = new System.Windows.Forms.Padding(4); + this.uoVitaRes.Name = "uoVitaRes"; + this.uoVitaRes.Size = new System.Drawing.Size(60, 22); + this.uoVitaRes.TabIndex = 75; + // + // label43 + // + this.label43.AutoSize = true; + this.label43.Location = new System.Drawing.Point(8, 92); + this.label43.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label43.Name = "label43"; + this.label43.Size = new System.Drawing.Size(57, 17); + this.label43.TabIndex = 74; + this.label43.Text = "VitaRes"; + // + // uoAccTime + // + this.uoAccTime.Location = new System.Drawing.Point(253, 89); + this.uoAccTime.Margin = new System.Windows.Forms.Padding(4); + this.uoAccTime.Name = "uoAccTime"; + this.uoAccTime.Size = new System.Drawing.Size(68, 22); + this.uoAccTime.TabIndex = 73; + // + // label44 + // + this.label44.AutoSize = true; + this.label44.Location = new System.Drawing.Point(160, 92); + this.label44.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label44.Name = "label44"; + this.label44.Size = new System.Drawing.Size(66, 17); + this.label44.TabIndex = 72; + this.label44.Text = "Acc Time"; + // + // uoToolId + // + this.uoToolId.Location = new System.Drawing.Point(97, 57); + this.uoToolId.Margin = new System.Windows.Forms.Padding(4); + this.uoToolId.Name = "uoToolId"; + this.uoToolId.Size = new System.Drawing.Size(60, 22); + this.uoToolId.TabIndex = 71; + // + // label40 + // + this.label40.AutoSize = true; + this.label40.Location = new System.Drawing.Point(8, 60); + this.label40.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label40.Name = "label40"; + this.label40.Size = new System.Drawing.Size(53, 17); + this.label40.TabIndex = 70; + this.label40.Text = "Tool ID"; + // + // uoStatus + // + this.uoStatus.Location = new System.Drawing.Point(396, 57); + this.uoStatus.Margin = new System.Windows.Forms.Padding(4); + this.uoStatus.Name = "uoStatus"; + this.uoStatus.Size = new System.Drawing.Size(80, 22); + this.uoStatus.TabIndex = 69; + // + // label41 + // + this.label41.AutoSize = true; + this.label41.Location = new System.Drawing.Point(340, 60); + this.label41.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label41.Name = "label41"; + this.label41.Size = new System.Drawing.Size(48, 17); + this.label41.TabIndex = 68; + this.label41.Text = "Status"; + // + // uoNumCU + // + this.uoNumCU.Location = new System.Drawing.Point(253, 57); + this.uoNumCU.Margin = new System.Windows.Forms.Padding(4); + this.uoNumCU.Name = "uoNumCU"; + this.uoNumCU.Size = new System.Drawing.Size(68, 22); + this.uoNumCU.TabIndex = 67; + // + // label42 + // + this.label42.AutoSize = true; + this.label42.Location = new System.Drawing.Point(160, 60); + this.label42.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label42.Name = "label42"; + this.label42.Size = new System.Drawing.Size(56, 17); + this.label42.TabIndex = 66; + this.label42.Text = "NumCU"; + // + // cbUnOpSel + // + this.cbUnOpSel.DisplayMember = "Name"; + this.cbUnOpSel.FormattingEnabled = true; + this.cbUnOpSel.Location = new System.Drawing.Point(97, 23); + this.cbUnOpSel.Margin = new System.Windows.Forms.Padding(4); + this.cbUnOpSel.Name = "cbUnOpSel"; + this.cbUnOpSel.Size = new System.Drawing.Size(160, 24); + this.cbUnOpSel.TabIndex = 65; + this.cbUnOpSel.ValueMember = "Value"; + this.cbUnOpSel.SelectedIndexChanged += new System.EventHandler(this.cbUnOpSel_SelectedIndexChanged); + // + // label39 + // + this.label39.AutoSize = true; + this.label39.Location = new System.Drawing.Point(5, 28); + this.label39.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label39.Name = "label39"; + this.label39.Size = new System.Drawing.Size(78, 17); + this.label39.TabIndex = 64; + this.label39.Text = "Num UnOp"; + // + // Execution + // + this.Execution.Controls.Add(this.ready); + this.Execution.Controls.Add(this.feedhold); + this.Execution.Controls.Add(this.stopped); + this.Execution.Controls.Add(this.running); + this.Execution.Location = new System.Drawing.Point(4, 116); + this.Execution.Margin = new System.Windows.Forms.Padding(4); + this.Execution.Name = "Execution"; + this.Execution.Padding = new System.Windows.Forms.Padding(4); + this.Execution.Size = new System.Drawing.Size(507, 59); + this.Execution.TabIndex = 61; + this.Execution.TabStop = false; + this.Execution.Text = "Execution"; + // + // ready + // + this.ready.AutoSize = true; + this.ready.Checked = true; + this.ready.Location = new System.Drawing.Point(152, 20); + this.ready.Margin = new System.Windows.Forms.Padding(4); + this.ready.Name = "ready"; + this.ready.Size = new System.Drawing.Size(70, 21); + this.ready.TabIndex = 9; + this.ready.TabStop = true; + this.ready.Text = "Ready"; + this.ready.UseVisualStyleBackColor = true; + // + // feedhold + // + this.feedhold.AutoSize = true; + this.feedhold.Location = new System.Drawing.Point(337, 20); + this.feedhold.Margin = new System.Windows.Forms.Padding(4); + this.feedhold.Name = "feedhold"; + this.feedhold.Size = new System.Drawing.Size(94, 21); + this.feedhold.TabIndex = 8; + this.feedhold.Text = "Feed Hold"; + this.feedhold.UseVisualStyleBackColor = true; + // + // stopped + // + this.stopped.AutoSize = true; + this.stopped.Location = new System.Drawing.Point(240, 20); + this.stopped.Margin = new System.Windows.Forms.Padding(4); + this.stopped.Name = "stopped"; + this.stopped.Size = new System.Drawing.Size(82, 21); + this.stopped.TabIndex = 7; + this.stopped.Text = "Stopped"; + this.stopped.UseVisualStyleBackColor = true; + // + // running + // + this.running.AutoSize = true; + this.running.Location = new System.Drawing.Point(48, 20); + this.running.Margin = new System.Windows.Forms.Padding(4); + this.running.Name = "running"; + this.running.Size = new System.Drawing.Size(82, 21); + this.running.TabIndex = 6; + this.running.Text = "Running"; + this.running.UseVisualStyleBackColor = true; + // + // mode + // + this.mode.Controls.Add(this.edit); + this.mode.Controls.Add(this.mdi); + this.mode.Controls.Add(this.manual); + this.mode.Controls.Add(this.automatic); + this.mode.Location = new System.Drawing.Point(4, 49); + this.mode.Margin = new System.Windows.Forms.Padding(4); + this.mode.Name = "mode"; + this.mode.Padding = new System.Windows.Forms.Padding(4); + this.mode.Size = new System.Drawing.Size(505, 59); + this.mode.TabIndex = 60; + this.mode.TabStop = false; + this.mode.Text = "Mode"; + // + // edit + // + this.edit.AutoSize = true; + this.edit.Location = new System.Drawing.Point(399, 20); + this.edit.Margin = new System.Windows.Forms.Padding(4); + this.edit.Name = "edit"; + this.edit.Size = new System.Drawing.Size(53, 21); + this.edit.TabIndex = 9; + this.edit.Text = "Edit"; + this.edit.UseVisualStyleBackColor = true; + // + // mdi + // + this.mdi.AutoSize = true; + this.mdi.Location = new System.Drawing.Point(240, 18); + this.mdi.Margin = new System.Windows.Forms.Padding(4); + this.mdi.Name = "mdi"; + this.mdi.Size = new System.Drawing.Size(144, 21); + this.mdi.TabIndex = 8; + this.mdi.Text = "Manual Data Input"; + this.mdi.UseVisualStyleBackColor = true; + // + // manual + // + this.manual.AutoSize = true; + this.manual.Checked = true; + this.manual.Location = new System.Drawing.Point(152, 18); + this.manual.Margin = new System.Windows.Forms.Padding(4); + this.manual.Name = "manual"; + this.manual.Size = new System.Drawing.Size(75, 21); + this.manual.TabIndex = 7; + this.manual.TabStop = true; + this.manual.Text = "Manual"; + this.manual.UseVisualStyleBackColor = true; + // + // automatic + // + this.automatic.AutoSize = true; + this.automatic.Location = new System.Drawing.Point(48, 20); + this.automatic.Margin = new System.Windows.Forms.Padding(4); + this.automatic.Name = "automatic"; + this.automatic.Size = new System.Drawing.Size(91, 21); + this.automatic.TabIndex = 6; + this.automatic.Text = "Automatic"; + this.automatic.UseVisualStyleBackColor = true; + // + // groupBox7 + // + this.groupBox7.Controls.Add(this.D1_UUID); + this.groupBox7.Controls.Add(this.D1_ID); + this.groupBox7.Controls.Add(this.D1_NAME); + this.groupBox7.Controls.Add(this.lblAT); + this.groupBox7.Controls.Add(this.txtAccTime); + this.groupBox7.Controls.Add(this.label30); + this.groupBox7.Controls.Add(this.txtPower); + this.groupBox7.Controls.Add(this.label16); + this.groupBox7.Controls.Add(this.label15); + this.groupBox7.Controls.Add(this.label14); + this.groupBox7.Location = new System.Drawing.Point(513, 4); + this.groupBox7.Margin = new System.Windows.Forms.Padding(4); + this.groupBox7.Name = "groupBox7"; + this.groupBox7.Padding = new System.Windows.Forms.Padding(4); + this.groupBox7.Size = new System.Drawing.Size(507, 92); + this.groupBox7.TabIndex = 59; + this.groupBox7.TabStop = false; + this.groupBox7.Text = "Macchina"; + // + // D1_UUID + // + this.D1_UUID.AutoSize = true; + this.D1_UUID.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.D1_UUID.Location = new System.Drawing.Point(311, 66); + this.D1_UUID.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.D1_UUID.Name = "D1_UUID"; + this.D1_UUID.Size = new System.Drawing.Size(23, 17); + this.D1_UUID.TabIndex = 66; + this.D1_UUID.Text = "..."; + // + // D1_ID + // + this.D1_ID.AutoSize = true; + this.D1_ID.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.D1_ID.Location = new System.Drawing.Point(72, 65); + this.D1_ID.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.D1_ID.Name = "D1_ID"; + this.D1_ID.Size = new System.Drawing.Size(23, 17); + this.D1_ID.TabIndex = 65; + this.D1_ID.Text = "..."; + // + // D1_NAME + // + this.D1_NAME.AutoSize = true; + this.D1_NAME.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.D1_NAME.Location = new System.Drawing.Point(72, 25); + this.D1_NAME.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.D1_NAME.Name = "D1_NAME"; + this.D1_NAME.Size = new System.Drawing.Size(23, 17); + this.D1_NAME.TabIndex = 64; + this.D1_NAME.Text = "..."; + // + // lblAT + // + this.lblAT.AutoSize = true; + this.lblAT.Location = new System.Drawing.Point(252, 25); + this.lblAT.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblAT.Name = "lblAT"; + this.lblAT.Size = new System.Drawing.Size(53, 17); + this.lblAT.TabIndex = 63; + this.lblAT.Text = "AccMin"; + // + // txtAccTime + // + this.txtAccTime.Location = new System.Drawing.Point(312, 21); + this.txtAccTime.Margin = new System.Windows.Forms.Padding(4); + this.txtAccTime.Name = "txtAccTime"; + this.txtAccTime.Size = new System.Drawing.Size(69, 22); + this.txtAccTime.TabIndex = 62; + // + // label30 + // + this.label30.AutoSize = true; + this.label30.Location = new System.Drawing.Point(384, 25); + this.label30.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label30.Name = "label30"; + this.label30.Size = new System.Drawing.Size(46, 17); + this.label30.TabIndex = 61; + this.label30.Text = "power"; + // + // txtPower + // + this.txtPower.Location = new System.Drawing.Point(433, 21); + this.txtPower.Margin = new System.Windows.Forms.Padding(4); + this.txtPower.Name = "txtPower"; + this.txtPower.Size = new System.Drawing.Size(64, 22); + this.txtPower.TabIndex = 60; + // + // label16 + // + this.label16.AutoSize = true; + this.label16.Location = new System.Drawing.Point(257, 65); + this.label16.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label16.Name = "label16"; + this.label16.Size = new System.Drawing.Size(41, 17); + this.label16.TabIndex = 59; + this.label16.Text = "UUID"; + // + // label15 + // + this.label15.AutoSize = true; + this.label15.Location = new System.Drawing.Point(13, 65); + this.label15.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label15.Name = "label15"; + this.label15.Size = new System.Drawing.Size(21, 17); + this.label15.TabIndex = 57; + this.label15.Text = "ID"; + // + // label14 + // + this.label14.AutoSize = true; + this.label14.Location = new System.Drawing.Point(13, 25); + this.label14.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label14.Name = "label14"; + this.label14.Size = new System.Drawing.Size(45, 17); + this.label14.TabIndex = 54; + this.label14.Text = "Nome"; + // + // groupBox10 + // + this.groupBox10.Controls.Add(this.enableDataSim); + this.groupBox10.Location = new System.Drawing.Point(273, 4); + this.groupBox10.Margin = new System.Windows.Forms.Padding(4); + this.groupBox10.Name = "groupBox10"; + this.groupBox10.Padding = new System.Windows.Forms.Padding(4); + this.groupBox10.Size = new System.Drawing.Size(236, 38); + this.groupBox10.TabIndex = 58; + this.groupBox10.TabStop = false; + this.groupBox10.Text = "Simulazione"; + // + // enableDataSim + // + this.enableDataSim.AutoSize = true; + this.enableDataSim.Location = new System.Drawing.Point(149, 11); + this.enableDataSim.Margin = new System.Windows.Forms.Padding(4); + this.enableDataSim.Name = "enableDataSim"; + this.enableDataSim.RightToLeft = System.Windows.Forms.RightToLeft.Yes; + this.enableDataSim.Size = new System.Drawing.Size(74, 21); + this.enableDataSim.TabIndex = 55; + this.enableDataSim.Text = "Enable"; + this.enableDataSim.UseVisualStyleBackColor = true; + // + // groupBox8 + // + this.groupBox8.Controls.Add(this.estop); + this.groupBox8.Location = new System.Drawing.Point(4, 4); + this.groupBox8.Margin = new System.Windows.Forms.Padding(4); + this.groupBox8.Name = "groupBox8"; + this.groupBox8.Padding = new System.Windows.Forms.Padding(4); + this.groupBox8.Size = new System.Drawing.Size(261, 38); + this.groupBox8.TabIndex = 57; + this.groupBox8.TabStop = false; + this.groupBox8.Text = "Sicurezze"; + // + // estop + // + this.estop.AutoSize = true; + this.estop.Location = new System.Drawing.Point(79, 11); + this.estop.Margin = new System.Windows.Forms.Padding(4); + this.estop.Name = "estop"; + this.estop.RightToLeft = System.Windows.Forms.RightToLeft.Yes; + this.estop.Size = new System.Drawing.Size(134, 21); + this.estop.TabIndex = 55; + this.estop.Text = "Emergency Stop"; + this.estop.UseVisualStyleBackColor = true; + // + // groupBox12 + // + this.groupBox12.Controls.Add(this.lblCodaT); + this.groupBox12.Controls.Add(this.addCodT); + this.groupBox12.Controls.Add(this.label24); + this.groupBox12.Controls.Add(this.lblCodaS); + this.groupBox12.Controls.Add(this.addCodS); + this.groupBox12.Controls.Add(this.label22); + this.groupBox12.Controls.Add(this.lblCodaM); + this.groupBox12.Controls.Add(this.addCodM); + this.groupBox12.Controls.Add(this.label20); + this.groupBox12.Location = new System.Drawing.Point(4, 384); + this.groupBox12.Margin = new System.Windows.Forms.Padding(4); + this.groupBox12.Name = "groupBox12"; + this.groupBox12.Padding = new System.Windows.Forms.Padding(4); + this.groupBox12.Size = new System.Drawing.Size(507, 123); + this.groupBox12.TabIndex = 58; + this.groupBox12.TabStop = false; + this.groupBox12.Text = "Codici M/S/T"; + // + // lblCodaT + // + this.lblCodaT.AutoSize = true; + this.lblCodaT.Location = new System.Drawing.Point(156, 91); + this.lblCodaT.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblCodaT.Name = "lblCodaT"; + this.lblCodaT.Size = new System.Drawing.Size(28, 17); + this.lblCodaT.TabIndex = 60; + this.lblCodaT.Text = "[...]"; + // + // addCodT + // + this.addCodT.Location = new System.Drawing.Point(68, 87); + this.addCodT.Margin = new System.Windows.Forms.Padding(4); + this.addCodT.Name = "addCodT"; + this.addCodT.Size = new System.Drawing.Size(79, 22); + this.addCodT.TabIndex = 59; + this.addCodT.KeyDown += new System.Windows.Forms.KeyEventHandler(this.addCodT_KeyDown); + this.addCodT.Leave += new System.EventHandler(this.addCodT_Leave); + // + // label24 + // + this.label24.AutoSize = true; + this.label24.Location = new System.Drawing.Point(12, 91); + this.label24.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label24.Name = "label24"; + this.label24.Size = new System.Drawing.Size(42, 17); + this.label24.TabIndex = 58; + this.label24.Text = "AddT"; + // + // lblCodaS + // + this.lblCodaS.AutoSize = true; + this.lblCodaS.Location = new System.Drawing.Point(157, 59); + this.lblCodaS.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblCodaS.Name = "lblCodaS"; + this.lblCodaS.Size = new System.Drawing.Size(28, 17); + this.lblCodaS.TabIndex = 57; + this.lblCodaS.Text = "[...]"; + // + // addCodS + // + this.addCodS.Location = new System.Drawing.Point(69, 55); + this.addCodS.Margin = new System.Windows.Forms.Padding(4); + this.addCodS.Name = "addCodS"; + this.addCodS.Size = new System.Drawing.Size(79, 22); + this.addCodS.TabIndex = 56; + this.addCodS.KeyDown += new System.Windows.Forms.KeyEventHandler(this.addCodS_KeyDown); + this.addCodS.Leave += new System.EventHandler(this.addCodS_Leave); + // + // label22 + // + this.label22.AutoSize = true; + this.label22.Location = new System.Drawing.Point(13, 59); + this.label22.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label22.Name = "label22"; + this.label22.Size = new System.Drawing.Size(42, 17); + this.label22.TabIndex = 55; + this.label22.Text = "AddS"; + // + // lblCodaM + // + this.lblCodaM.AutoSize = true; + this.lblCodaM.Location = new System.Drawing.Point(157, 27); + this.lblCodaM.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblCodaM.Name = "lblCodaM"; + this.lblCodaM.Size = new System.Drawing.Size(28, 17); + this.lblCodaM.TabIndex = 54; + this.lblCodaM.Text = "[...]"; + // + // addCodM + // + this.addCodM.Location = new System.Drawing.Point(69, 23); + this.addCodM.Margin = new System.Windows.Forms.Padding(4); + this.addCodM.Name = "addCodM"; + this.addCodM.Size = new System.Drawing.Size(79, 22); + this.addCodM.TabIndex = 53; + this.addCodM.KeyDown += new System.Windows.Forms.KeyEventHandler(this.addCodM_KeyDown); + this.addCodM.Leave += new System.EventHandler(this.addCodM_Leave); + // + // label20 + // + this.label20.AutoSize = true; + this.label20.Location = new System.Drawing.Point(13, 27); + this.label20.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label20.Name = "label20"; + this.label20.Size = new System.Drawing.Size(44, 17); + this.label20.TabIndex = 52; + this.label20.Text = "AddM"; + // + // notifyIcon1 + // + this.notifyIcon1.ContextMenuStrip = this.trayMenu; + this.notifyIcon1.Icon = ((System.Drawing.Icon)(resources.GetObject("notifyIcon1.Icon"))); + this.notifyIcon1.Text = "MTC Adapter"; + this.notifyIcon1.DoubleClick += new System.EventHandler(this.notifyIcon1_DoubleClick); + // + // trayMenu + // + this.trayMenu.ImageScalingSize = new System.Drawing.Size(20, 20); + this.trayMenu.Name = "trayMenu"; + this.trayMenu.Size = new System.Drawing.Size(67, 4); + this.trayMenu.ItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.trayMenu_ItemClicked); + // + // MainForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(1047, 698); + this.Controls.Add(this.tabCtrlMain); + this.Controls.Add(this.lblCurrAdapt); + this.Controls.Add(this.statusStrip1); + this.Controls.Add(this.menuStrip1); + this.Controls.Add(this.label6); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MainMenuStrip = this.menuStrip1; + this.Margin = new System.Windows.Forms.Padding(4); + this.MaximizeBox = false; + this.Name = "MainForm"; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "MTConn Adapter"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainForm_FormClosing); + this.Shown += new System.EventHandler(this.MainForm_Shown); + this.Resize += new System.EventHandler(this.MainForm_Resize); + this.groupBox4.ResumeLayout(false); + this.groupBox4.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.PosAct)).EndInit(); + this.groupBox3.ResumeLayout(false); + this.groupBox3.PerformLayout(); + this.groupBox2.ResumeLayout(false); + this.groupBox2.PerformLayout(); + this.groupBox9.ResumeLayout(false); + this.groupBox9.PerformLayout(); + this.groupBox11.ResumeLayout(false); + this.groupBox11.PerformLayout(); + this.statusStrip1.ResumeLayout(false); + this.statusStrip1.PerformLayout(); + this.groupBox13.ResumeLayout(false); + this.groupBox13.PerformLayout(); + this.menuStrip1.ResumeLayout(false); + this.menuStrip1.PerformLayout(); + this.tabCtrlMain.ResumeLayout(false); + this.tpStatus.ResumeLayout(false); + this.gbMonitor.ResumeLayout(false); + this.gbMonitor.PerformLayout(); + this.groupBox6.ResumeLayout(false); + this.groupBox6.PerformLayout(); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.tbConf.ResumeLayout(false); + this.tpSIM.ResumeLayout(false); + this.groupBox5.ResumeLayout(false); + this.groupBox5.PerformLayout(); + this.Execution.ResumeLayout(false); + this.Execution.PerformLayout(); + this.mode.ResumeLayout(false); + this.mode.PerformLayout(); + this.groupBox7.ResumeLayout(false); + this.groupBox7.PerformLayout(); + this.groupBox10.ResumeLayout(false); + this.groupBox10.PerformLayout(); + this.groupBox8.ResumeLayout(false); + this.groupBox8.PerformLayout(); + this.groupBox12.ResumeLayout(false); + this.groupBox12.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); } From e4a2821d97a7af58f352b4f9bb1693a8ba95533f Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Thu, 29 Jun 2017 18:17:34 +0200 Subject: [PATCH 07/21] prima bozza gestione allarmi SIEMENS --- .../CMSCncLib/CNC/CNC.OSAI/CNC.OSAI_SOAP.vb | 157 +----------------- .../CMSCncLib/CNC/CNC.SIEMENS/CNC.SIEMENS.vb | 55 ++++++ MTC_Adapter/MTC_Adapter/AdapterOsai.cs | 1 - MTC_Adapter/MTC_Adapter/AdapterSiemens.cs | 90 ++++------ ...ens.Sinumerik.Operate.Services.Wrapper.dll | Bin 0 -> 996200 bytes .../Siemens.Sinumerik.Operate.Services.dll | Bin 0 -> 230248 bytes MTC_Adapter/MTC_Adapter/MTC-Adapter.csproj | 6 + 7 files changed, 95 insertions(+), 214 deletions(-) create mode 100644 MTC_Adapter/MTC_Adapter/ExtLib/Siemens.Sinumerik.Operate.Services.Wrapper.dll create mode 100644 MTC_Adapter/MTC_Adapter/ExtLib/Siemens.Sinumerik.Operate.Services.dll diff --git a/MTC_Adapter/CMSCncLib/CNC/CNC.OSAI/CNC.OSAI_SOAP.vb b/MTC_Adapter/CMSCncLib/CNC/CNC.OSAI/CNC.OSAI_SOAP.vb index 1fc328c..763456a 100644 --- a/MTC_Adapter/CMSCncLib/CNC/CNC.OSAI/CNC.OSAI_SOAP.vb +++ b/MTC_Adapter/CMSCncLib/CNC/CNC.OSAI/CNC.OSAI_SOAP.vb @@ -1072,133 +1072,7 @@ Retry: nRetry += 1 End Function #If False Then - - Public Function getPathGCode1Shot() As Focas1.ODBGCD - ' RIFERIMENTO: - ' C:\Users\samuele\Documents\FOCAS A02B-0207-K737_04.20\Document\SpecE\Misc\cnc_rdgcode.htm - - Dim nPathIdx As Integer - Dim nNumAxisRead As Integer - Dim nReturn As Integer - - Dim actGCode As Focas1.ODBGCD - ' inizializzo - actGCode = New Focas1.ODBGCD - - 'leggo il numero del processo attivo - nPathIdx = GetActivePath() - 'leggo num max assi dal cn - nNumAxisRead = Focas1.MAX_AXIS - - If Is30Series Then - - ' leggo tutto!!! 0-27 (28 elementi) - nReturn = Focas1.cnc_rdgcode(nLibHandle(nPathIdx), -2, 1, 4, actGCode) - - If F_CheckRetError_Cnc(nReturn, "cnc_rdgcode RefreshPathGCode CNC.FANUC.CMS_CncLib") Then - Throw New CmsNcException("ERR cnc_rdgcode RefreshPathGCode CNC.FANUC.CMS_CncLib") - End If - End If - - Return actGCode - - End Function -#End If - -#If False Then - - Public Function getAllAxisLoad() As Focas1.ODBSVLOAD - ' RIFERIMENTO: - ' C:\Users\samuele\Documents\FOCAS A02B-0207-K737_04.20\Document\SpecE\Position\cnc_rdsvmeter.htm - - Dim nPathIdx As Integer - Dim nNumAxisRead As Integer - Dim nReturn As Integer - - Dim caricoAssi As Focas1.ODBSVLOAD - - 'leggo il numero del processo attivo - nPathIdx = GetActivePath() - 'leggo num max assi dal cn - nNumAxisRead = Focas1.MAX_AXIS - - If Is30Series Then - - ' leggo tutto!!! - nReturn = Focas1.cnc_rdsvmeter(nLibHandle(nPathIdx), nNumAxisRead, caricoAssi) - - If F_CheckRetError_Cnc(nReturn, "cnc_rdsvmeter RefreshAxisMeter CNC.FANUC.CMS_CncLib") Then - Throw New CmsNcException("ERR cnc_rdsvmeter RefreshAxisMeter CNC.FANUC.CMS_CncLib") - End If - End If - - Return caricoAssi - - End Function - - Public Function getGlobalFeedrate() As Focas1.ODBACT - ' RIFERIMENTO: - ' C:\Users\samuele\Documents\FOCAS A02B-0207-K737_04.20\Document\SpecE\Position\cnc_actf.htm - - Dim nPathIdx As Integer - Dim nNumAxisRead As Integer - Dim nReturn As Integer - - Dim feedData As Focas1.ODBACT - ' inizializzo - feedData = New Focas1.ODBACT - - 'leggo il numero del processo attivo - nPathIdx = GetActivePath() - 'leggo num max assi dal cn - nNumAxisRead = Focas1.MAX_AXIS - - If Is30Series Then - - ' leggo feed globale - nReturn = Focas1.cnc_actf(nLibHandle(nPathIdx), feedData) - - If F_CheckRetError_Cnc(nReturn, "cnc_actf RefreshActFeedRate CNC.FANUC.CMS_CncLib") Then - Throw New CmsNcException("ERR cnc_actf RefreshActFeedRate CNC.FANUC.CMS_CncLib") - End If - End If - - Return feedData - - End Function - - Public Function getSpindleLoad() As Focas1.ODBSPN - ' RIFERIMENTO: - ' C:\Users\samuele\Documents\FOCAS A02B-0207-K737_04.20\Document\SpecE\Position\cnc_rdspload.htm - ' RICHIEDE DRIVER ESTESO!!! NON VA!!! - - Dim nPathIdx As Integer - Dim nNumAxisRead As Integer - Dim nReturn As Integer - - Dim allData As Focas1.ODBSPN - ' inizializzo - allData = New Focas1.ODBSPN - - 'leggo il numero del processo attivo - nPathIdx = GetActivePath() - 'leggo num max assi dal cn - nNumAxisRead = Focas1.MAX_AXIS - - If Is30Series Then - - ' leggo feed globale - nReturn = Focas1.cnc_rdspload(nLibHandle(nPathIdx), -1, allData) - - If F_CheckRetError_Cnc(nReturn, "cnc_rdspload RefreshAllSpindleLoad CNC.FANUC.CMS_CncLib") Then - Throw New CmsNcException("ERR cnc_rdspload RefreshAllSpindleLoad CNC.FANUC.CMS_CncLib") - End If - End If - - Return allData - - End Function - + Public Function getCncAlarm() As Focas1.ODBALMMSG2 ' RIFERIMENTO: @@ -1269,34 +1143,7 @@ Retry: nRetry += 1 End Function - Public Function getSpindleSpeed() As Focas1.ODBSPEED - ' RIFERIMENTO: - ' C:\Users\samuele\Documents\FOCAS A02B-0207-K737_04.20\Document\SpecE\Position\cnc_rdspeed.htm - - Dim nPathIdx As Integer - Dim nNumAxisRead As Integer - Dim nReturn As Integer - - Dim speedAssi As Focas1.ODBSPEED - - 'leggo il numero del processo attivo - nPathIdx = GetActivePath() - 'leggo num max assi dal cn - nNumAxisRead = Focas1.MAX_AXIS - - If Is30Series Then - - ' leggo tutto!!! - nReturn = Focas1.cnc_rdspeed(nLibHandle(nPathIdx), -1, speedAssi) - - If F_CheckRetError_Cnc(nReturn, "cnc_rdspeed RefreshAxisSpeed CNC.FANUC.CMS_CncLib") Then - Throw New CmsNcException("ERR cnc_rdspeed RefreshAxisSpeed CNC.FANUC.CMS_CncLib") - End If - End If - - Return speedAssi - - End Function + #End If #End Region diff --git a/MTC_Adapter/CMSCncLib/CNC/CNC.SIEMENS/CNC.SIEMENS.vb b/MTC_Adapter/CMSCncLib/CNC/CNC.SIEMENS/CNC.SIEMENS.vb index df4eb41..79ac07e 100644 --- a/MTC_Adapter/CMSCncLib/CNC/CNC.SIEMENS/CNC.SIEMENS.vb +++ b/MTC_Adapter/CMSCncLib/CNC/CNC.SIEMENS/CNC.SIEMENS.vb @@ -12,6 +12,9 @@ Namespace CNC Private m_DataSvcRW As DataSvc Private m_DriveSVC As DrivesSvc + Private m_AlarmService As AlarmSvc + Private m_AlarmGuid As System.Guid + Private currAlarms As Alarm() Private itemRead() As Item Private itemWrite As Item @@ -60,6 +63,9 @@ Namespace CNC Try m_DataSvcRW = New DataSvc m_DriveSVC = New DrivesSvc + m_AlarmService = New AlarmSvc("eng") + ' sottoscrivo allarmi... + m_AlarmGuid = m_AlarmService.Subscribe(New AlarmListChanged(AddressOf AlarmList)) Catch ex As System.IO.FileNotFoundException ' intercetta l'exception se non lanciato sopra l'hmi @@ -1076,6 +1082,8 @@ Namespace CNC ReDim itemRead(maxProc - 1) For i As Integer = 0 To maxProc - 1 itemRead(i) = New Item("/Channel/SelectedFunctions/ncFktAct[u" & i + 1 & ",1,#" & maxGruppi & "]") ' leggo TUTTI i gruppi... + ' verificare sintassi...[u1,1,64] al posto di [u1,1,#64] + 'itemRead(i) = New Item("/Channel/SelectedFunctions/ncFktAct[u" & i + 1 & ",1," & maxGruppi & "]") ' leggo TUTTI i gruppi... Next i 'lettura @@ -1102,6 +1110,53 @@ Namespace CNC End Function + ''' + ''' procedura per risposta alla segnalazione di allarmi... + ''' + ''' + ''' + Public Sub AlarmList(guid As Guid, alarms() As Alarm) + ' are we in GUI thread (main) ? + ' No we are Not in GUI thread => send message to GUI thread + If (False) Then + 'If (lstAlarms.InvokeRequired) Then + + ' chiamo delegato + 'AlarmListChanged alarmDelegate = New AlarmListChanged(AlarmList); + 'BeginInvoke(alarmDelegate, New Object[] { guid, alarms }); + Else + ' sono in main thread --> eseguo! + + ' check if guid Is correct + If (m_AlarmGuid.Equals(guid)) Then + ' salvo! + currAlarms = alarms + + '// clear the listbox + 'lstAlarms.Items.Clear(); + 'setStatus("new alarms"); + '// go through the array for each alarm + 'foreach(Alarm element In alarms) + '{ + '// write the timeStamp, alarmnumber And the alarmmessage to + '// the listbox + 'lstAlarms.Items.Add(element.TimeStamp.ToString() + " | " + + 'element.Id.ToString() + " | " + + 'element.Message); + End If + End If + End Sub + + Public Function getCncAlarm() As Alarm() + ' RIFERIMENTO: + ' SynumerikOperate_Net, pg 101 --> 110 + + '' restituisco vettore allarmi... + Return currAlarms + + End Function + + #End Region End Class diff --git a/MTC_Adapter/MTC_Adapter/AdapterOsai.cs b/MTC_Adapter/MTC_Adapter/AdapterOsai.cs index 4d4adb1..8a746b1 100644 --- a/MTC_Adapter/MTC_Adapter/AdapterOsai.cs +++ b/MTC_Adapter/MTC_Adapter/AdapterOsai.cs @@ -178,7 +178,6 @@ namespace MTC_Adapter /// /// Vettore degli allarmi CNC attivi /// - //public CMSCncLib.OPENcontrol.MSGERROR allarmiCNC; public Dictionary allarmiCNC = new Dictionary(); /// /// estende l'init della classe base... diff --git a/MTC_Adapter/MTC_Adapter/AdapterSiemens.cs b/MTC_Adapter/MTC_Adapter/AdapterSiemens.cs index 0c15e5c..7e8a540 100644 --- a/MTC_Adapter/MTC_Adapter/AdapterSiemens.cs +++ b/MTC_Adapter/MTC_Adapter/AdapterSiemens.cs @@ -5,6 +5,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; +using Siemens.Sinumerik.Operate.Services; namespace MTC_Adapter { @@ -186,7 +187,7 @@ namespace MTC_Adapter /// /// Vettore degli allarmi CNC attivi /// - public CMSCncLib.Focas1.ODBALMMSG2 allarmiCNC; + public Alarm[] allarmiCNC; /// /// estende l'init della classe base... @@ -614,47 +615,12 @@ namespace MTC_Adapter bool fatto = false; try { -#if false - // se ho allarmi li accodo... - if (allNcData.lastncerror != 0) - { - - if (utils.CRI("loglevel") > 5) - { - lg.Info(string.Format("Allarmi CNC: {0} ", allNcData.lastncerror)); - } - string alarmText = string.Format("CNC Alarm - Cod: {0}", allNcData.lastncerror); - - // tolgo eventuali allarmi CNC... - allarmiCNC.Clear(); - allarmiCNC.Add(allNcData.lastncerror.ToString(), alarmText); - - //// 2017.05.09 gestione allarmi commentata - //mAlarmCNC.Add(MTConnect.Condition.Level.FAULT, alarmText, allNcData.lastncerror.ToString(), "", ""); - //// mostro in form! - //sb1.AppendLine(alarmText); - //parentForm.dataMonitor_1 += sb1.ToString(); - - //// 2017.05.09 gestione allarmi commentata - //// il codice è corretto (manca prima aprte codice + traduzione), se cerco di trovare oggett completo NON c'è, verificare con Andrea... - //sb1.AppendLine(string.Format("Allarmi CNC: {0}", allNcData.lastncerror)); - - parentForm.commPlcActive = true; - //inizio = DateTime.Now; - //OSAI_ref.O_ReadCurrentErrorMsg(ref allarmiCNC); - //if (utils.CRB("recTime")) TimingData.addResult("R-CNC-ERROR-MSG", DateTime.Now.Subtract(inizio).Ticks); - //checkCNCAlarms(); - parentForm.commPlcActive = false; - } - else - { - allarmiCNC.Clear(); - allarmiCNC = new Dictionary(); - // 2017.05.09 gestione allarmi commentata - //allarmiCNC = new CMSCncLib.OPENcontrol.MSGERROR(); - } - fatto = true; -#endif + parentForm.commPlcActive = true; + inizio = DateTime.Now; + allarmiCNC = SIEMENS_ref.getCncAlarm(); + if (utils.CRB("recTime")) TimingData.addResult("R-CNC-ERROR-MSG", DateTime.Now.Subtract(inizio).Ticks); + parentForm.commPlcActive = false; + fatto = true; } catch { } @@ -765,36 +731,40 @@ namespace MTC_Adapter private void checkCNCAlarms() { // faccio parse allarmi: se ci sono invio e presento - sendAlarmIfPresent(allarmiCNC.msg1); - sendAlarmIfPresent(allarmiCNC.msg2); - sendAlarmIfPresent(allarmiCNC.msg3); - sendAlarmIfPresent(allarmiCNC.msg4); - sendAlarmIfPresent(allarmiCNC.msg5); - sendAlarmIfPresent(allarmiCNC.msg6); - sendAlarmIfPresent(allarmiCNC.msg7); - sendAlarmIfPresent(allarmiCNC.msg8); - sendAlarmIfPresent(allarmiCNC.msg9); - sendAlarmIfPresent(allarmiCNC.msg10); + if (allarmiCNC != null) + { + if (allarmiCNC.Length > 0) + { + foreach (Alarm allarme in allarmiCNC) + { + sendAlarmIfPresent(allarme); + } + } + } } /// /// Invia singolo allarme CNC se presente /// /// - protected void sendAlarmIfPresent(CMSCncLib.Focas1.ODBALMMSG2_data allarme) + protected void sendAlarmIfPresent(Alarm allarme) { // controllo valore... - if (allarme.alm_no > 0) + if (allarme.Id > 0) { try { StringBuilder sb = new StringBuilder(); if (utils.CRI("loglevel") > 5) { - lg.Info(string.Format("Allarmi CNC: NUM {0} | MESS: {1} | ASSE: {2} | TYPE: {3}", allarme.alm_no, allarme.alm_msg, allarme.axis, allarme.type)); + lg.Info(string.Format("Allarmi CNC: Id {0} | MESS: {1} | CAT: {2} | SRC: {3}", allarme.Id, allarme.Message, allarme.Category, allarme.Source)); } + + // da gestire instance = PATH!!! 1/2, x cui raddoppia i messaggi... + + string codAllarme = string.Format("P{0}:{1}", allarme.Instance, allarme.Id); +#if false // se ho asse accodo ad asse altrimenti no... - string codAllarme = string.Format("T{0}-N{1}", allarme.type, allarme.alm_no); if (allarme.axis == 0) { mAlarmCNC.Add(MTConnect.Condition.Level.FAULT, allarme.alm_msg, codAllarme, "", ""); @@ -802,10 +772,14 @@ namespace MTC_Adapter else { vettAxis[allarme.axis - 1].mAxAlarmCNC.Add(MTConnect.Condition.Level.FAULT, allarme.alm_msg, codAllarme, "", ""); - } + } +#endif // mostro in form! sb.AppendLine(codAllarme); parentForm.dataMonitor_1 += sb.ToString(); + + mAlarmCNC.Add(MTConnect.Condition.Level.FAULT, allarme.Message, codAllarme, "", ""); + } catch (Exception exc) { @@ -977,7 +951,7 @@ namespace MTC_Adapter SIEMENS_ref.getPathGCodeMod(2, ref vettGCod); if (utils.CRB("recTime")) TimingData.addResult("R-GCodModal", DateTime.Now.Subtract(inizio).Ticks); - + #if false diff --git a/MTC_Adapter/MTC_Adapter/ExtLib/Siemens.Sinumerik.Operate.Services.Wrapper.dll b/MTC_Adapter/MTC_Adapter/ExtLib/Siemens.Sinumerik.Operate.Services.Wrapper.dll new file mode 100644 index 0000000000000000000000000000000000000000..b8d54cf9100f20a4127b9523179583a585ebf015 GIT binary patch literal 996200 zcmeFa34C2;nLmDVmvio#Uqr zgo}!ZY~nhIJEMZjs59ftFz6^Es57FXqM|@#TyX~1QQVOHzu$Me?>V`YwD8ye|2LCQ z-h0mTyvuo)=Y5{%ectUkr(Ex(9mmPQ&CNN^t$6Zplla~DPp-vrTC2CUIv>w}Y00fE zTfekq>YQ`;3|vs#{i51w=MS85+Dl%t`@(_K&l;$`>?H%|zGUFYzx&{K z@ch$l&v|g<6Absc2k#U3SrPC158o%Af4c2{mCl3WdBVA8oWpM=OSbJO$JyGFbvEsK z_sQDtAt$w@*phdg6Hq%h76p3XRJ^z2^#axy-uRw!oGc;y>8CRQ4+Qz*OdGs6p{4*c zta(as+jm=?mjZjqt6H7+B9!xsHs>La;q+gdbIt_c+npmB|Duf3r@fjy@43y5w;l5N zVJp3@h`+^(H-6z+7hMSW=xwT8EUPG5BhY~3>>RJ1dD?}iInHNx7i8Hl!1JVdz)c{V zaT(0H(?ww(YIU4$r1LpEt-noHKyxFhKMzkmB*1L@T%L$j&$K2l@_)A-X=7u&Zf5##D z^3U?Vdv0jG@=rTM@LS!N9xwY$(d7c{@ROw||R`Hk4WD#R>#lc8>e)s{C ze^-TPJEv5@xuHIjzx`?-Re_)n)jlZ)H6ZHWuJu%-+C_}Hp>C6(UW7-Jus-bCD5C7F z#1twK~uZ2XBcA1-+~CrkxVf=U-}QQq%1S=w0|1S7)5h!|zyp zKl%pJdAu#mq@u6kEzG9U(Svv?q=p0{6@49$pN)2a@@HQ-99@gjhiL0o#Cy?;w~;sTt8}uB z(4S5HzYFQ%o4Wo>>4KXXkK8chj^*8KbPp{Ywd(6}~+mL@L(bDOzQ^(v? z^lj9NW)6rnH&inHsY3>L(wXtLOwacAR7OP1q$hr9dI|WQNuT-PU+S33M7lECBKv2~ zq^G5Ls%!U~Gx%!sOb|R$Dniz19Vb1OOGU4T?`S*n`3AhqdZ}m=0zNRZ8G%?2?1wBr z^G8)@1L%%&jX3_LDkA+6$}p`8rS^U+=VV48*Q{{q=w@Qy>_!~_4v}otmXzodSTBg2GNA&ZXcJ znXV&V4N$&Lq$(ppOC9CTOa(1H)Ad8;TmN(&@`O0_sQO0r+CE)JMGI`lbRA4mymn95 z4_B{!)Add2bzr&Dn4HD0G0uhWg!9gWwWjn^|9uje#g&(p6?9jpjBbWmMjI($QQfnD>B z)itSJQC(mS0*mSb3ly)YuIH#%RM&Cp71f1KCjy|lwy9TC*K^e?s_O*xit2ivdNtMM zR84g`Ra0F~)l`>LHPz)*O?5d{Q(aEgRF_jV)#X%8bvad2T~5_hms2&>VX|ZtigL6FmZUA&5|MfVm+@(QC#5!I2O7^%o(|S1K(~m!5-Q(NB@!Sf;BmnyM7suR)#;Dt=<6cX~WMf{FBqivANx%}?*K zU+!C<{GIZ5olB7aQ;~nL0MK|L0{IIK4?0Mp*j<;o=stB~s3P7~7P>0ZtJ&wr2BXs` zA)^06);#fE?WmuK%yw6zp8&T4l;nF6I9efEjvw%%25&({Wum{+yrqHfegb??0?*+i z|5B-*b*bSVaw?IU{f$MjIIe^2Iy;dkgf(?Q1&wu3NOf(m_MM)NP!sOhTB~TTEZU)> zXsH3D(SC~f-JafQ71Xr~D)?)R7xQ~@o*gYC3i2WC3?ohcrP9>%GeVdTry@|AJKOfS zOC1jQ2z}grfEqt#MF!!^aFh!e7f_cJvcfQ1yvz;V@Eg(xzcB!R{-q*NW|L%*KEEU6 z5Yy%#)27pD&keoFqzB&NpsIXiEJ#PcMAT9)`Ys-_8o+1^#o5-!-C3XzK;#`yf?d}_ zShhgJ@NP;?)?S)+E^wodkrH&dXq})u?}tNBQ?9w8>!1Gbzj=SYe~tNmf68%ovHYSP zgU&h>#!U1OiWjy99o0=!K}XND-zwWO=#Y)sE*q0xvPM`#toEQ&!VX>tS4+{oc$9Ku zgE=_>%*6(PVHkvROqC1sv!x1tyqr*X9!UB5nR}rQR0l*7MQ<$dqVFTIVXyuIrry+NV(~K~Vby9ucH!A%Zk4gt>}ny0Bc`d@@$&3(N)lPf_NRgh^{lQ5k+&d)nN09$6;Un zuUHdA)bqyRHo<9HC!YE+@mIlla60^Z@V*G{wgmooz}K`m&i!z9 zI{yin-~Deq$uo62WzaAFoi_aF@Xxzy$6)THtAF|EXHyrBUVZdqC!e!rN2dMSOCQ^| zYv81Z@9E7rkAAl0!u-h(?|x>+dDWent3QA03!i^S#(DUQhbpg=9$tq~^!l9ek-X5Qs1uIHp~Z|BK@hYBt<|CEztJo&{a3JtuINATdd%1v@Ct&m?N#ZDeh$B&WFwMEr6k|lRU7^xLjre^yk zoN>L~*D4+$q-Y@P65l6iSc4^8V;tNx23t(B24^!AW%l(d9Q$+xr~5SV?Dyo$7?s9& zz()ap3+@Wgh0Pm|1#SwscO>v12F&#T5l@{yX_Pqr!K`)jvif{gZ9 zZF`iVo2m%wY&?zN3cudQ>tO@3w9&>J%ls_Vg!e&xNMRJLdOR>U3CubRgEm5#)fVRM z0yAb|-YPJWg?Wp>3|g2s3e13oxn5xUEX=h6(`{j(UEu2-7Uneq({5od7nqX9U_kN; zV)`w_r9^1XmKxa%f@fdZ3EHNe`{jzpY11Qq3*aO1q`pGh*Law;gbaOW0^bez288=q z0zU`bXW{Nh;C}?%&*1J&;J*aiBH(_Mz<(V0BZ2!}0{=GPcLP^IU$XQ0O5kq0eYr@?cq{tq%muV3u9D&e_U3eT}%ObAcEwK6rIWJ$c>34MN9#p;u>MuSlqt1M&P zBuGS)b*j3KT79q4>U(9Zkzho|D#=)J(q|_Ki$RZHRNv~6u~q~tWUQi$74IIY>ew_y z&LY2{Vl9%fq9Bs73Nlu_3#F>jG=z1xpI5QEWvu1Fav3WxW5v4}xlfo2x_qsGbjeu5 zn5(FON_=P_tiyO$OjQS_LocZKp88fr#u^HSWGqj{ig(vkwQoAau+Udia(<_bH5d%a zSeTXLx8hwoRqdV*vq6WSRp086v6cnPWUQ==74P$L7;0eka3m-OGF%1fpOlEf>0?1ruuvtWgr+3QCNFP<^nEL4BB|Z1aQYT!M_Z+OPb(s z0q&!4Hg977F|Fb}WZ{MKA^6V^6o0}P0RHHzv=61DI{3q|oDU8MQm_D{$)!~7hq>#O z^v%d|el-Q7Fxpr8f?l%GtLdGU-u)>UiqV?NyM4Mf6JeC)4&y281dCHJ9|wzdfR5?b zY;?5Xl+t!{Lk2%szty(yTQgI*aR$gv};ZjqDJ)D!fydcrt?hxq8C z6im{=A{E7Bk5^ITOnTTIbhqYYl$?yxm4fLy=u%N2g9mjKIg1`vf=X*%M#;-4ohg{O zVILA@53=N8>MLp>)Dd*F7G#uyj1s0`3fGpRAVX%UqGV)QpxU<vj8T#?+ETEr2W=`wirinuQ1t~}v$ZT^lx2)^s(Qh+)-;0_N*NhL zRTq@a)>av#RmLc$suxacO%qe>kY+N5sx2s+t!*+!n~af9RWF*>nx?VmKcwh0W34wJ zJx;EGmfU2$!2>FMR_OE~easi4=8r@KEObgnm>asUdH5{|e_^xm_nQ7vV&eEijc-Nh z3mAHC=$_{3Z9|BcG)wPp6+T|RDFoj$KREP-FEkB5jqrcfH2j@S!|y=&7dH)md(-ec z5&rz9;XkRuC+ho5MA$t)!raiUP18RI!JD_|$D5~r9wIcY&yO`t|AHsX|A(7~zYyV} zr6tJ)^?!>B?+RWm+CP(RMMu2|QEJI3b3^Y{;TO6-<=rNHFA@jmc#`!gZ#Utow>J-O zuTQzbgkRWtnKzm63(L>-Cj7$kbBzhVu>4$U!Y?d8mz(el%g<#d{KE2ci3z{3{9I(h zFDyS7n(zzD&jlv@!t!&T3BR!XoMXZ-EI((O@C(b&P7{7%`PpH@FDyUPCj7$kGiAar zEI->!_=V+Xs|mlb{A@Ad7nYwRP56c7XOjuPu>5Q^;TM*l^(Oqn^0Ur_Us!%toA3+E z&zK3nu>3?O{KE1xXu>ZnKLaNG!t&E+!Y?d8-6s6P^3!3$FDyUpCj7$kQ!?QfmYIdA=h&(RKEYtgkM;Ger>`pEI+?c;bFL=a)Q6OJ^B%oURHX; zZheATaR+;p@ej0reGry>tl6DZOQzNQ49AdjLl=qp_1N0B2vcXS3^X@%q4G}|eH`oU zu;#n5-i~n#>RaiRz;A+O2AQU9y;bL-YxkHPXWkmUHu#D)dhK{Qpf!3-f26p&-FXJa z!T%1uORWC~Ez(-gF`KhRYvZ`_vYX8l06q4o8s{=f-I>3vs z4iM#7XRQwCn3-eh9W$7!;RAbWGMKVV$w!)x+Nqv%!Au6PW(umL+pQFzoi;5@G7wGL zSVW-WU`_3Z(Ndt@Avn$tjli2-xp1n2fC z9%z`~ZO7C8?g(J~J7f6K;k7M@&-v>KF4gM^22XnUvOlKvdV=cW_oMyIe(;C% zzSa}`AKjatj`aj9*xU6Ij{k43C%EW;PPwzrL!ifh=&#d$;2+veTa)Gqy}%p0`AM#d>!EQJyb3S3&P{sQkj27K!Q-woRRe1Mfw zQBJX~NjEIl-ed9>loQOWsLGJ7Zt^hO&V@~$;=pY=aNxSdxpIO@u`UK9~@GDxuNg=;9$t3{^%@J{jjOK zLv$M)A}U(7{^A4$FSaSTPg5{V;YV?rs!x)zq}^1jBIQ)>u5&n2I$fVvU~Z^&!e={W3es zXgtcOiZUvrtnn64tPDo#udt(x#G{O;C?g_@pY6f~pr6fLcliH#d~Pl~wz-1EH`(h} zZ3tFm{mhM`@xtCccCgHe^KN%nAvdc{a{PMaDt761x3kSp!tH|C3UcZ;$+YhFBtd^YQ4eC zf=YGZgkZ?8M8D%I8LYbkIEYzN2`;O@QrB77;dcZ}gS8dRoTibHF!aMcFBmYM)`d4(=ep?p&I1l454=q0ypsF|`7d=*KOeU0EMQJnjTM>Lru9 zkWgz?>T6Ab1bRZDC*tUJ3cW6lK1iVtGH4;@4wh&qI5;lm4%X^Kz&C!+Zyl+G#RtJU z93|>3Qn70|Su3VtR5=W+3SeNBa|5d^6Sni}7e_W@^9p4V2bv2Bx#p8apum=PEqcui5$e zC%}~Pw{h- z*Bzakz+>&ClLPLq1pY(7SOme!LJAYznb8;0RP7(cvy6tB6J?R zKKb2qfbVUB$6&`9weZxLK7cy7lRDE_{Z)q5_XMLH6O3X^(4)o#qwz5Tykz$_T}p{* z2MeLtr1)~J+1)g4o)v_6%Q`qYTlr&efnD#DTjsYER|D%P+Tvcp=) z4%IK$<-!6Z2&TN9i4jLd38hY5YDici5&X_YNP7@s z)RNIlrHo#h6h)q@8|-fJJ-6z_t?F=9SwVeaThOPgqg7Q$*;I!b zqWI-tFc?{cPlLDHGP>86(Y?uv(S|UX^I!-o$%@g2Fi|l}Vil9}T`8m8Q0$SiOMta2 z1er4-K?Y?(0yM0W(Sws%@HVKW=%A9KgG!1@n95s1ie?~13r32Hw1-vNpgAR@j}L|? zFapHki+@p?$kru6^oO!E!;Vwn*KUXd(2J zmh4~=A~=T2WpE;K)3?b0#0MZ3D`CzS&=#H8)oZF-Rf)-hDu;np0Sv5iZeW#V!ggN$ z+z5Es<{eT-@9+5bhvb)VzksuO<}j#=GHW%SHvU_HDH9(~;C~C4vVcZAJ3M7JWg_i+ zHvS;MO#ko%z6zK!@s0$(3+YfMa($Sc&V2~`0^kmUEVc2U1ODHEzdnKgB=Fc&>fD^b zg9ADx;69bWe*pL~;J%T-vrK;j+#?A*43DB7GLRv*OdJ55L!1atJDrn0Dn#s{50^?50c*ng*#U^!CwUY4Hlj<(Sr>AEM?;A`m43<2>XInU`u@o zJAxW?I~a_!?hQUO=7K{lzZb^?yWT9ZVW5h zZV`5}QDadU(UNOKNv`Zlw>2}ib97Cx!XEgJfO*FxV4Ptx^04hBvVYao$rY z!&uSUg-f)R{WV^QKoN#tDPM*3U23H7 z5=-222hcz;TER$Hh+B%^YA{y8&^9h^2V}k-$Yqj=E)N!H3eId`HSTfL2s7x%E~9>3 z9c`*Q%y`sS7C^rh%Ex#GpY|}awT8rtZE?FeSuvVgxeL|BxKr%rbd{|@R16oxbg@JM9M!kB$fiOln{tCxg^AG7UH&OWTHshh%+N@PY6aR z%tv(UBTC$kC~+%c3UhC~%{s@%j|+1t{gkkjwj)!{xE0Ev<0dVGj@!qG7E(+Z+niuk zT;i_M+H}A-X2UN*;^u9MYmtgw!%W+*6_W)e-3_b?U|^MV1FI|(w)5)eF>i)JBv_>2 zspPB4G4a=dqg2hAjB@x{c-rZ3zX#>; z^AmWEi7B&QoWNfXnCah`z`q>u-vGZjA>V4q2j%d(1fFA4oX#{)-hK%9XCds*65-zi z{F%UIEjh#bmjb37z9JExc*^0o zG{I92zrP8da`>N`;3F{LLnK%Hbb1!BY-DYT=8kbIu6hJ1B=&)UPmdxHpJ6 zHjOYg?NwvbC_XlYSAwl78RtOuv2!UYEd;SOUnS+RJ#giGm6pI?-+R{5I0Kz_=R zvX9~P^1y4&c8M`;kp^5H2;xzWRHT?3-4XQb)E7e%F4n2=%|S9HJ~7(y0$ASvaIpm+-=5p&8hU3Nx(~SLckxP>P`gg%Q2HF`hL2k)2kg zB&FNzaY}Tl3SvT{!c?Km_x3TE6rxIfn4-$re7D>)xxZt>Z-f6(R{a3ZmNCoFzLXg& z@wD+DSNKmQ@b3eB7{Y%)fe#=rm=5NB#<0lwHlB9=iRZaFKWTy=0{-_+ z@CN~(w|G5X9j1fPkh93bbN_XSI`}kYfLDKwmI39!r3k<&2KsaWH!cC-laK(OgdOaF zX5R-JM=7zkNv?3BRvV?%RMHtdjBzhfVW##txE{7TACATogSFb}C3S8F+Dh~8APVA!27PCI#hT-fsD+8v^ zK-q1#8F;MoTDW@>`0oN{IuFCy>75EXB8z{R>c7uGi_VN zJKH3Jv)hF2Fa~!hoNg1+!m)675ofiPpb@}Khqf*|olSt*wze+Lb4pJ@e}w(W56bn| znzqd~R$Ati?zO)wEmgyM2@8olUPEbDK~bqwvb}K-22R65V;8;3swH(_!}Ye5&#HmG(mX{?gxHNFMhUhWQ`uz`21zcVV=3QDL;uQy6u73+I@Z;FnPjSJneLd=X$FnEIfI^%fKUUBQGe_uQI$K8|2C7^A?}a z$N4uAu9(AnI5%`2;V>*!IvMr+Gm}E)fN#3Pa58K@RuhFNU zDtGtW!51b`rwzW4l8Zu2ffU2Wfh#eZvE*4y6E-!%YE!&l(~C;V(2Gh#$bzRpFV~?x zi)cT)ohc)z?=DT?*8nEH9Ezt+FH?X~4bDl4@Wiu=(SEAa=eboU0(T4OMY3-mJ+&+! zIcO~$T1ADc;EomDF4sD!sW zlsYj>^>H^FiWR{3F;u|{<;u=()#upr(^9}soDeu&5%NFkV&a|K0B#EM&@c0u=#Svg z(9XF(KukVA1{hLZ7!T6f?&_I1l`y{t_9VBI5=rNFr$IcU9WpybD2tCFCtmco2x8iA z;jF%)doNM-&VFk58NQFfZG^Mi>0ZD&xCavWX9NBk++wRQv0cXivris`r%pd{z7;DY zalX|L)P5oRd@I(G+;ucJ^pNl;ef%xb{b$lgF$n80JgPl4ID3rTJpgwvDornlb9Z

(FFD?|vdT?PK^E?;S$OGDLa=WH+;Jb*t_8XEkWG^1u zs;TZ-K?x_ul<+A*Wm!RGQcncv&5SN%b{9SjxV(6n)KCeQjyHufZ$P z*Ai=IRWE8!hfCOtehZ?*6k>xHx7!oYZJBU@p%w=SHDHBm6QMAbC;M7e_O*UJj91J! zSd6*w#W13ZzSZhhu*667t)Lg{nfrr9L2q^50ftRO?0|*2Lw~r01w#C6sJCti`SL832^^sWUai8u@FN) zBr?fDHs5(*{NwLczyCynAAqjK{*dIF81fZPBX?P26QG;XS^-NJ8V_rOgr)$ z?vvx(p53QT1I#|P3s1XG)se>E$v)Lyzuxqze1L`CQ$ZX0l(rGJ#rqVz5`9X|raRbJ zW63X^AlgdG5%R0m>MinMO|7B?Wvt0AXKDkF zSTS-kRmb{O5^3`R%A=p5O>=OM!rATp8Nk$K4@Udic+v;$k%S`B^V zKp#2DHWhsci`c)|^r4QNEh+jaWunKyHev*Fye5#Nabm0sLs>~FEt$!A>ao^aDvNP; zclH3NM5)L4MvO|VZWE&tQ-Q4Ir>wVdy?qJpk8n0UdmP zN&A#YZ%51QheUd|W;jPIP$E_H3m}i%=aa|NAd;K|l}V3)21p;jhO_D5(}4d9j$?5f zPhQgk+|~r1dwxhC98*0ZeNb-7`!4=M^dZ&z&}*)-2!(m!8q5CEM_~c;Qt$7*J=DZp-d*zEH{l$6D2N-QBI z>&LK2+U+XUVkO^^6Jx2OOvsDbQ*iA_?PDMX*NmeWAF0Z5R6Z_A6oojDpE13}R1@oR zo?cQ#A=qalINfJyXJLP*Juf-mdLMA)6%WDLJmFHnH^B`gc*3#3{S1z4Anou+1Lk*W zuhrkBeU58D{$A=OLH#X;8VZe58?^pr^U8L8#=S70-+wcNxg zNNBnH<|s!ZiKN6aI_`XZ#NsGLjDd`b`$X2?O0~2AjGFR^Ljhrm(ZP>$Gm%A4iDaebS*tpM;-q+%Nw4r@iFok&H>zD=;P_10}woB{v5y)nDbv0 zw1;iloS)~BE>e@t!Qz$}JL9r2j=`@)yWvKT#^~rKAjFu-bCuCWj<)P+fOp^oWhwB= z^SRG+v41Q|kek?mXg{U}4wV1cb4)frnFBAm z2=4zR_zd~avw*uUf#=;UMV?J@>w;P1k;;Z%ob)qd>PwtQ^r&i zX>YI_w3oAJZxawP+LHz$L3;8dYu}aH%ba<;vE$54PIA_05^)>kaWw7DIn+VwcAT{+L+514^h?QiTVOj;vhSsszlvQlsMInr~#sI zQJp&@j<_Rg2~qbFRYJXrd@UvFKBC0ocMOHI1Kd3i5G78+BWjSShlmo#;t@4O)DMUf zXXFtzOw_|fi39V9T29m>M2XY$h>D2%1yMXoPo0^#OIDSGwJM^1I%J)6$a?6IW$%#X z?T}^ckmc%-W$BRl?~r-!kooM8dFzn*>5zHou)iDV@79y&MK(^Dn;Uwd$$T*0w0GHD zXWxc7`c^L5R2SN(drpylTo=5+RIkY>sA-r|5DxpT0L)C9S5jprp+f)5%z1j z$bz4pmLIRF27j`T4@F;-F;(WH7b5F8boD#H?q`-fx&33EC-*>lJQS$pi30(|d-KBv zJn^YU?SYw7&Xbl-fg>$l0>`#KACB!sJZb3)IJ>QT0Mmi=1ud<^lj(d5j2O|q0PYKL&xeDp)7&Lbt}-`to}iy1)@kv3pfNwq3+QG8Tvp8avEkVq zdZXxqEKi@LX@0W}&WF?Alj(J+`<@%?S<-UkPH%j#-K_T_{oaiv8j?7cFo|Qyk~o$siDL;%-4)(&X8f1-8M`g8sn! z`bt=~WP3F(9>n!gwug1|VEi6I>*m4uJ%ZNFgYkO=&CP=z>@JuxlsCmd`|U!WaJore z-e3XAno_q{shetW0bxd5BBQP<5;ytiy9d<;L*l9)h*MEM9zAj|`6@06lHEcaMj|lw zHG5wc82g&NFA9u(%^sK%(y_1EyNeie&0hI&H$(oWQRHp7WQq`;!0Z@0RfX65w7A zS5|n*@9tLpCquc<{W^ZS`_!=|sh;fx+ydlIKJFr4E^mu>#nM#KKr5Krj$|x# z1zNlzd2w1f$m=W6)D20b{t75fU4a&FY2KPv3UWC`lZ`8qL=<&_T$~h06ve>Pm!PRT zlGtDP6?F+(j8;H2g}~L9ps6d8*pC>27sn-NDI#Gh`Ai*+f5XbzbU-{bAmNhu*8xwL z#NPoNT@p_{kItqWfMTBy_xjj$qdD;0(4D5eA4M4Gh)=+eY|gSs-^|5|v^{Vumu6GA z$}Vqvb?K|Q*uj?4i%ZcDy~$(Fp(!@*RV5LCP3uJo*6S{Rwk=XSiVE5_4sTUTUm>ryz2T%GkAY^OH#wJp9&8$WGjP9$qpiorllPIn z-krdo3Ov_baGjVP{z%|21MbcQeiV4Fz4#`aO~d4U_XGE1xFikF4c)HjH!Jw^IiO#x z?|(l9>Ol&(Yth#S*2f;W`Sr22S$*8{wAKf14P5c1|G(77mS*+wfv2@Ta3$gji1h>P zE`MhFI8xO|+PMbwqx#DSpT7DK*FCQI+5uLFw%;BI@902zPJy%g%DI5qS88y{z9RL> zP0i@zLr-6Q;3huYX1U^?1FR6_`>E8){_~HGqCPklb@6TfaU82{U~@yCRQmT5`QQ2^ z{vS8~7)w#U;j|UxvJiFSr;rL9r5b7b>&Hy^UWA97e3JVIKWxJHJYjhI{=r*J_=V-? zy(av^^7C#Jeqs4}y9vLr{M=x|FDyTAGT|4NpX*Kdh2`fO6MkX&xzdDRSbi=y;TM*l z%S`x%<>wL;eqs5!$b?^5el9fO7nYw3O!$T6=R6ahJd}UN9!QH4?13~G!5%2=LA1-z zhWTssD|NqAy8h3a`xS!}w8>P@w4S6)#g|>dN7*c3+T-j1wk8YH9`;=eBW2)Jc16dc zW2f9}Hq*FB;}Z5O(RPH#M)^1l53_qoStpzz6`$-g-(r3mYnRSMUXlN$aOCsUsmbTZ zl>LG>V(OaDgri*0_^o)KfU76)*8yfae+{S8VI3j!;xDBpQZPQwp2(3n#y`T2g$tW8 zDuyv11>Gs2yn>GJr(Z!qtyMxr z1#J^hNkKOXsH~tz1=OmbjRTC=rl2ngs9ix_OX%k-=v4v=6!d8Ug$lZHDMNNB=*t4? zRM6UG^s6Z7O#7_v`6mkDUGf@THOub{zU zhO8=Rn}7xs^l||$QP2$nTB@Lb7tk^V{Xsy33L0C^G=~&)p@4=JRF3GkTtTM^C{oau z1hhgyXRlz$5e0ojK%)x!m4L<+bo2;Au2j(b1vIXpV@K(?N1x*QP zt%7b5(1e1%CZKf+dhIyl9i*VU1az>1)~ur6Aqv_fp!Ev+jDR*M=#bS6xhV#1R?zLj z?+69SFFZ>@KNEgOD(I9oOywvAZC*?0Xa&7aK*uQP$O-ywQP8^ubgY6_tfSwgg6{|I$l9b4`#@1G3dDpx?K33prGFg=y?j7I)w426!aDWov5JR z_4GSQLAwQXvV#5~plJoYZv#VaSJ0M237w*#4+`k{3d%f#emfL&o`7DUAb%tMUZ|ii z2O_U%?$Zc1$|0DH3c1d1pTg8(5D6TdIkMaKyOgcGoQtfZ&lDs z1$3i=J|UntD`>@$4EZ(%T`QosE9koddWV9%qZsm?3VM}*-lZV<^_CXN^?xG#QVLpf zG~=ZebgFq3qwW<`nZ5rD5(2b`i&^)8Uc+e z=y3s!Dd@sUhFqzj+XXbPpw?&8ZpqB{fIt5)Xpw}trg95rlO5ffZm{>_Gza1 zMg{E>(0k`(@3>At?^Dp70=ij2sqKu1EsL*U?H(r}EC?6S_ z-)Qg|amJ+zpN()K4S3J$UxHj}FQ4*k{Y$B1?>-H&h64|KYdtLP zya$7rFjM~xju^!>_-|VrSA>c%Xn7Xx>Ba%z8?Ln5#K9h7IvE8}+Ha^rU3{LJ-8 z9fQBu;~`_>P$W!;KZlXr`n`;VWohC{VOL#2oSV53p*cnrqs*s#_LNwY#&P2y9LIYr z;p{OOZHXL99uCJb5634A{{^^yxF5lJa2lUNTXHM~LXF{H58RD#qrltgAfDJ`cSHiu zb0wLdQ}ERJ(PKY8=ii5W^mL~E+DjkXwkvni!xvm`?!#@vDcY~PGjsLlPkrI@@5ne0 zpZhN5b<)H4zAAnn?!MFirx!HRZ*Qdk(f7sEzxcf-{R17Mx=fS-#f&U<2rt=SQI-NxQ-S)rrhx<}cKMSwFf`j7&oK2*^F3F)dS2`S2D$$|j zIzeas6Q))RK?kU^!#WF8|wt966!f4HeVKxjhp4R*Zb0Xy8S$MgNUPCaDVW&=%x4y=J&g>OY&$I z%kWEePJuezWA@O{t(}LoV;Q?ue+);u%pjrK-9QZ7fO>A60XU2EFa~Z1DmoMCM`z)u zQrT7ML_H4hgV`d^MK5M|4IoHr*YvsA%E+D<;J}-Vw+o9}PC=+b#T`GU)jjm>2vj?A z2lq5yY^vu>z@nIT-rPNxnhf2HSd9$v)GOSIToFdNFq__ng$%gX&5aIXgjXUlJDu89 zR_f~zV)t`Rt*RT`%c#_hI=-TWbrw7eYY8%4YR#r{Zgc@6J(tzG6gYSt0}k;3o&=2r zvqMuuN1THgx*>51LSYoz3sC@>QY9j2+D%=thLt1~d(P}(@ee1zm`pC2&Ism`u-J-x z2_{IvXJ{AIe1`ZzIP$CG;cR*JeZVESpIdmmigmK9@N^-s4#g98L?I_%2>4;ZN2A}_ z=|Br}=HSP>oNWAgfXVk>hNqn$t_OHIaMvfo(_VQaaJ)m&PUl|%UON7i@GpX+{4+)%hl8hepwBOjRxk;ie6?IW2kM_R46P%mf}vHx&^pxa>1v#z z!AsJgA(+IaJz!}4*>G_t>`Px4_SW8jZWQ!djH5)YY_km!+7fKDTlLCr5jt4Zk5kG{#O=F_q76uvsSe=@P@~S^D!JzJa9>{G!s1^0dUE+pB=~L8Y|DMlz4yAD3Ghx21|3%7QDf9j{|J{ z%*ys$7uJm_|FsW|wnIxIqr|a$WQULS{_gpkXSK6G;OI3`?XB5uZVDGZ z=LK_?ryT0)??v@9yin}a;bIO>Hj62ChWgn>3|o%y3G^n}vP&X@OlgE@b=DZ31ig`t zFvpwf?XNJbokTJ&Z}Zc5lNWQY%H~a-;Gcx`Ifln6o_jR#PX%sQ z0{;rYFqb%2G{JMd!dsf)xrPiQ8k3*m>Vi0@eP~}g-M<?2&jQT#bbFRoxL~Dl z1C+wIBEM;?K=X9MA0xm3_eeJQ3UxwNybq!S!*l`m7CjRkL-1Xp-ZT^?g4t4BODqMg z`%)^gO8Lc1&C(@vyMWvQBz4JWfs-CyJMD!}q)0Z(qx48oh%K=~V23kxy>bLvg_#4K z78gOuDeE#AOg>tV7AL2PHsXby`8)(fc*!5i5kaDbUZ^+|mc#y;^upuf`AKGkuwYI~ zGbJqAMX8;Hg;i*^70>`^UTk)=W zWea!@P)^$7LCh!d)GNa#_@%%vYl5dmi|tBZ?1}4(@REdY2&Y%V z4zxlN612ocQcGOa(EPBMEE9HT!>&w-b0})BLWjk;2L?8Ez06yI5S$Fdod&j{E_OH6 zMG-7iL$T#n)E}~8HlZeFEybrB)Z=G&g{>*-eF=W94jT9i`L0%Z7p~y6N zds%!PN3aTgr87Dk6)13y&#r$FSnC;;Vg+OZ8=kvrH0bl9bMQ7<%B^hoy0Cdcd9D2+?_;GVnv>e8 zTl+TZFyBy4^RO!j-86eDWXK!YztJ&UqIaRy8cnonCyt->$!Yf-jKprj#)UpNIv1Y= z%?ak5hj1lx4s#53qn{HCiv)w#K|@@zMlWo0AiK7Uy7s-SD!~k`!9YwOG}O&5VDv#K zKQ78D`F&qRkSVPsTHOeZCqc*Pg6azlXGc%Q1G_z7UGRL=Bl)d9pHK6vcLCo9{73M# z`PfdtF9ZG?3H%QLGo4=~@YDt0Cm3Hmoi^|i^3`rUZN5rfka}a1zfl)F9QaANSbhLA z`O}-=$yaMl@Z_tnwD4RDRRxZJV&xTkNOIMaXh`VXSQJOT%|GUejy#|BM!q^Xv_*(m_Y)w9SVd^-mk7SqMTf&Cs$MhH<6|uLRSy>_qI5;EvdE>({PA z|A<+w-U)X zC+2&)+3(2lQt53oZ=kW=&t3y7Y|G3W31nv8#79s@&c%2-2ga96FusPm#PY%n>D5v@ z6NPQ4oSrm8P9wy?S3#Byb}=iD-FPwj_MT_rN6rE8{E733+DsJZ1FGxA#8fFa)`|Ho zF;TFW_y`Le-6Cd~inF+{3|Ec252QRXABC#Rw0dLZR(IC`sDd`kP)#cYogPF>Yu3-~ zie3l;qw2Y-c0Y2rQ2V7Q2|Joq63vXP3j|`!$WRSQ%P=D$H{$#p_tg71yq|aQ2=1m5 zB(JeU``Dzn`PZ@!9E=jO4@20-`tUH|Q8*Y!V||r+KY4^bX9dt10iHI%?ReTYz|R2Y z8q^2z^zhWYX(!(Q1l&SxfZYgx5tzjFa5nF_1+WXhk2Jw+{Z5DH{va5J9NhDw`ZMh| zYtW9vL3jOj(~ZkP7rJp5x^Y?QK3(x{46j5tR#qYhTLD!!u4Kbbs6ZXH>}k+(IxKCb z(Um(bY@;hz8eN%$7=|Fo0Dall3X{zN8lBmmG-z~YYtkUDFhRqC!Xy-s zdh?rs!?&}^&R}a(pF`bKn<_?UpdQ15(1fu2P@h&cEYFz6QPcg?%Me!los83`+ovnL zPQ+8JPSpge&r(idI0?;5F_HFpOr$ZE6m-qh{3258$BI`Z-ZPz@!a4ly(NPovNc`JW zi{cX?wnA|D;WW{acPx~hV1BVPKaZWL3G2L>u;%o(8nP~esuIBx;ub63_(*LCRN*xg zBTvq5YzKBA0x37)4r*Kmqg~u|Wr&d!Yq$gMwz7?q1kvsN*3dKDK_$rgu|xZw&_zme z?6(pPM*cuPVaxc%fXN@g{bT)+d$`FvIHuG6jB^ZiY-QcLJwVKUwmmtqb zV7W=0l)d6N=!X$sqSNpyB%2F! z(Ay9%a1%E|*4oZc>WK9rJr*mA*)!fOB$LK$d(rFiteJS`nq+r2yQOtCX-w*wI$_0$ zT5nwRpyJR*afy^;2Qv45KiV*9Kc$_Nbc8W-jE+tOjLH*d7ic=-ocwEmL$aag*?9Xz`^3=4#GD-UT=wrn;B-0IKaYlEUpX;>KNB$P<9s;XuQ=~? zJ33{RbiSefSzYe1BUleQUk^IhlT7R5bPlfsoo|q^6KoJoj8luCU`2aS{NRxK5ROxs zoC*%ncYYr%=5>aHgVb}KdQL=#fn;GER?qk9;^(>0>9A~95inxD^lNxWKGM;S{_VP*CW=6jMW;f!;DHiXYtFfF@u8$n1h+wi>j7T z3DC<8G(COH%xev_9ne(LXQsFzKE#Mtp+WENeDGJbE)}Y2cSy~v=Pwd2HFAW zY6DFHx>7@Egqe#qP~8UTHGqOO$W=G$_#q53LN#A@GuY$Ij0ua~!!wsL?5f~kxy-JF ze5osbX27yD!Ag+*JxrlUpQ1Q}aRw(hWrERQo%AWtryzZtrwU z7!LA{Sr3=-jYSHV@{L6em+*~M5DxH-RTEbE#+nUT?|a!I;bOkArNTbGu?53kzOiM) z9=@@~!$o`}C4}94BZY)rd?V$A6~2+8!p_<;?6J0Hyj{zhn5FPsgY9aJS8Fo{Ygr0w zZ#G!V6j}RQgY9YXhuRknwzr{&*S>GCeHM03V{6$n_3+%D=I%Ave(MVp23xhT#~7@2 zB~|TIgIyAVg)1xR#Rj|7O5tXMU1njwXt0A8_PYih)hWn&WzD$8)Q&=o+To10gJzX{u68T{HDe}Yk1mo(9YWMul}?S`VjT`O?cXR#0?7n-UR;33jdu1{u-n)332;PI6Ixofj<|x zpC<57_na$%%Rv9I!(Rye&A|62@aF;lIpEhO@Eo@s1>Cg>{M!Lj-+3RNw!ZT#;IQP} z54`%FTHh%JF4P?urS;V~Zd}_jm)IK;v2DBAt?TPhImZaCTcA4ftX>7*1pOF9T-!--6TWQ`bBO zAHkYxtZ~W)>*{yu>JO{I1nPeR>Sk5hX(r+g0591UOarK{>p)`8Z-BMB0oKMFV6AL` ziZ~h(d03;vtx@4Jl~uTlk!_O>)^tW#1K}1%m2w75Mq=E`VSfPi2WuwXYUz||*mHa+ z47k*Njmue-(N-U4>Q8b$#a)#`PJE$Rk)Cu7VC)?ZBN#SPrvh($7%E4EuxC ze!sqUZLz;tkVNSDo?*M8?6X)W*krGJmJdPJHR)Cl@^=-x@N1vxP|?x z#$uT%S2=`zinI3icKdyPubdYXnG9hx7Kyj{ZIv}I1%NMtowapMZ~Qm5xVLIDFLmrj zsd|D@zeks9k)O@iyt9$9F)Is2AjG%*MWW2&{ib{uS!EF^u`1WzGjcY3sjmDMhmBUWexE*NRPK@ou zq^HVTh>IvE!+~JXFX?QCepXeQt;#goE3_(2tZ#DVxD^Ym|6g6A?5V zZmmMEjmYo}KU0F*fy9pSGs6JLB}9++1K7Ub1QvpdUP9`FBahPjhIk*2wylkDHs5+H z;H|I={m`-vG5ky6t_JS01pe8;e*w4h7SE`duz7NJ2rFpJvcOSwCotAl*ES4x}-$d{$4X(I|H?ui7?md ziY8VK{Q^{}UJZt|m7ZE!2@8h|yO9$%fgcuXpFw;X6?aV>iDby1CAHXzVD`^bvwtd_ zq?uj3r6Oq8I4+0|bCPm$4azB|JV7}+OQ1c7C`mc;W=Q#Mxuz6`L)IDwvx@k*l7BQ( zbPK8zB%~-$hiy<%POlrlWuUS|dKqa(BPfE%J-9XtBj#hkOdiN#2`QHSUqBO&m>rNc zb@+G0!U#@=q!bAH`037)b`G-ww+NREXCTu)L zSI%pI`;P>k^Y~2v_ju~`i>vd_S)k1opiQy5q8JR-zhLOGH5ddv4uT$A6+I5dRVsKT zRH`8fJHe1(u<0HgSs5&g&PUBgnCZu4Di_NN@Yw*%Tv00^uu`|=;s)lIFeny}x?z>K z0t;|6!Npu{A;2RD_PSWJEkLZ0a>GS_rgGR7C||yESRIdC<*%+6X?i5RcfgU}IR~xj8n40@&Hb_e z2KNlW7-t9@_HlUs3UG@-$2vUI83WAp55m(8Xc^2&9I-X9i&07J?&hBYihk|B$slrKB0!DDU9L-CH*e9>WW)< zqLYx=*hbgv@m-@|S536Za8i#ejCQGL8~7>e?aCv-%PpXXFrNmGj~jp+7nO3vR67b$ zm0FldX zTLE`Xhk0I}XL@A8O?z_3v}!3)LxuG>BiVfZmf{TxGw8$?}~rb$*O%I`Q zFmC7xeca<$dk|&DJin=?S{srR%@|u&zd~b?1J+yZnHm9J--x_jV?$4KQq-LX-YEt^ zZHO&84OWF=nfEc2Nl+0u#*;;t&#>M#3hV{3h ze3`JE4ok9d_T9&g!dZ78*X9+@6hkfK!pe`ly0#Fz4@42LgcIEy*()^3zbmp|No2pl z7Gl|N+!M#rm;u_tmo{NAw)sxUBlcHEKN9qUp@j1yJZ-r^9UaZ=T$;dVK=(_5AI8%T z|3`#70{CYp@Eik_faCfDJNy}dDR;PkQOg~k`7i<89EOwW#P}RM;$ z=rSTcuMzTWGp>E)UrO1VQravfmvx&Z;B!Np)cWs~;F+uO&D10gRA_gl2{4x$k_JG% z9=xRP6G@46>reKLxuJ~(ro#y1YGboVpF>h6Y6bse?Wb71#lKQTK&mN}m%zi+pbi z(>l{MAck(*FHEj_w(oUCJ^0qxW(J|}WY`92)TW5Pl=j-vtku3_B3i?^ty>41zg7%c(h7VZ&}eH#U$9LzHm31bs7%)-eZuu09KK zF@+GpXu1*xzB>fV@6_mRNF^;2!QCw~5gf+gXT~}pki~itKck{%Mq4Uj*K7e6`HZ}k zNhk7&+0)fUS(OM~rC{I97Ul&C8)P0p6=KK7BFSWN5W=^BnC%!A{?Ru9&w!)FGDTNjs$gWBsWB_8DzRPRC6<@JX0<)Xn4$?hT>rF$Xnuxz-U+t~}yNucgR}p> zLA992rZq;_6T?48hH+ktryc$Vz)b%=a5{a~;kyB|4ueen2Txz^rS`HynjJlKpcSS2 zH~TirF$|~6!E#gXu%6b#+2zK#L&&w4B=9qUnGS7gI-Nv){P2J4!xiHNj5T;)bbI|r zx<)W5+r|#YsTzGJ{eDl?d=(=AHGcmo2Ll|Psxj&xHQd;bQytJ7axjX-&IasbD9dLW zJDJmRbeaoVF`$mybQ*WPvtMU$1)3VldO;b6oOs~GknSi<49y`ga^kmUvZYUQ$W{j+ zwWANioRq_MzgK`W)i&&ME~svnlM3AHhs`^pH{jTwawXb>oWp#10UlU(Jdv6`wsr?1 zSWAnw>4F8$h@{;;uQUm(*$R=c9!4j&8EJH5(9MDy?zHd;B(brNarM4$GjLZ)C)0!i zuGiQsQT+=j)4$kH+1JS9z{g_!^k%^1{r`}_->dKsS$MpPbHsMw`CB-SchUa^zkD0s z{{Z)9$ZMMqyb-uXzfhoNVcP0wnZ*R$euhn`h3J*#zI&x&`$*(d5*y2GPqH7n^S?nI(P#4T5* zALun|X)wj6-W`U;9Q@CH<+)dQM| zt=*<`ZLLk67wcS4D7Hk}WXo3Cx_8AnNK(8&(Er&a*IzNCk?j682ble;Fkiw#KQAjhX^?SrRsxXLztNdNk@NA zTLO%*(|8&q?B+i7L4;>sn6E`}91COItIl`0QrUl+p99Xi;2-QZ1Ma@;Hb2G?MA&T} z#>HrAt2OL}GXH$DcYI{WjdqteR3>IOg6=vGmas@vez{(>b{QS(9 znaEagiUe0?j1{3L--WZ!ao`^U=MXrf1LtPG$iRIfF!qS&^U;-HVDt8c|2snEqN~W; z+{&t>v0tyY9?UIhOYE~X6VIg{So%xRhcI^bu?=w;C9GY67}XUG{+Wt;fllpZ7E*g3 z6u-0L_q*cvA@Tbk;`e*v_xs}aVe$JD{6^nEu~K`PJDE)M)-dy*UsW0Ru(&EzRJWqX1*pLUzd-2<>MRj@lE;oHXoIl@5sjkcqH|IXCY$> z@O`n8NpW(H86J@QVG#Y0{9z>=c?J6?`9^X*lE$9_zX7;c!Fg~R|6{y!{2qd@v2SZU z*7Az9HYM=WfcZVz6v!b5V|EkgoaOI2(8#D?_i@uOhw(GF4F=}$DU+e4)SK&L=J%?@74ID@ow)) z*7!4lXSRrZ z*8(A}^ypoUzK*kWvBj*{7dxl1@nI4dcTcW39&|K}aFVHzH)ET>pBeA;amId^*@%V^ zf^Y97vn*9|;~lxgo_~5^+J>@@_Iv)NL{?%m+F}Z6Zm3($kEWepqK{y0E7!#TOt&eP zJGOzCpURqeOgHzVuEGqAqtZY_)9J;mD%?v>p3Ns2G@i6lM%UmS)*M-#US-wEURbPM z433ESw9?j2FX^R5#RQAgda&1%M|+S#<~_;6??U{6*P<#KEE1o(1fLR{LP}V!t>Cq( z*=Net@mSv)-GUIJABS!Z+*a(TkZYE8@NcoFvZaw_^c$=*Dv8=A`sGA7hM5G37HaT( z?N~6+g&Rn7I0-k)L(1)sC%>Bf9AW!AewO@TGZqPwA1BuVX+A(+F$%W<&gL66z@LGe z0PWcLUBEpAH<`en4jk6$IHx7>TY$r~qp*eA>2R$z`Oo!uYW~A~@{E%#p4#T4^GQ6{ zaomoloeuFsz~9pZe-Q8wS$OidlL24MzEG_H-1G&k+(KU{z&NV!=PblIJG>H{T^aP9 zpeQ-J>E<%sGYvDSfGCTA+M*C0aRyNq z(YT-kZ*U#PHi}UZ#w8d9al?H>qnN)Y#$d#akiR6FXp|XAT=S1{*O+MN|MyqReRXg5 zK=%x&NqnEKzPHY;TUEE})TvXa&N&sqtw^735@kC#OKW;=H!SgpYRm*zfh%HJ&XSV< z19r-eBZK_a4Dx%8|MG|w=Y;&8f4Pd+$KSHaV)C_W67veUgx#FH-WUXT`6U?VGHMptcYGhMN`01#Z|CvO9}>Pz2>Vy~^AW;- zW#H0%75=Q?8sg7U#Dzcdu@&YcxbR25ojv?Ffe)oU_dY({#CQGDMCu@R)r@emy*Z$S5v5?0dA%sXLC(86iw*L!sDYt z@_=5rqFE}j1ae~z=m-nWmYBp3K#8D32RZLa?_n>Y63_|JGubD;pD>z%p9k#k3HQms zMYoE;PS3y}OI&p8Larg*lFU`>kQZdq3obd2=1EVtR3E|Daeeb5@GZc@`BOS_e_Y7r zE*D;J2=IC+TF<<lh_ljWnpVny;nr*nk%f-$xl$-^8u8pTMQ45biM~p@|vbcOlHlpxP;9CVu-@t zEpNc=$!yr?F})NcT93xi8Zc$FqH&bl{t#rHOmM}WTfngeK_SsdXZR8du?9sPn4v;2 zpt56e)Q!b8@gFFwXf#?EjpLs76~wTz9JQmeu(!8VlgGKKX03hvG(FXFV_ z6cDY>%;~r3VcAje`PchVGt9)nDXe?+h}Q&ANvjCD^G!srj<9r%G1Dz zXqx3MUzj>8T2nUZXJz}{8t#mAkfoE>Ff6ALF?Z2$rlzev*8;sG%|1Lp>Pw9$;i{>Z zu?(!8@IVZf_n&}U=pp2(UjOO433g_tIWbnAv;GfhkN6zMEJ9hU1pgWkvr8-*O++Q6*P1NLv z<<8b0AzS)tNblC$n&dF#OR-nUpwh@QuS=ft(}UxiE~jsM2(KW7^x?b2wKq$)Dfk1x znm;7S$6uI!6R`Ia_<|H%dJ@{J`B4UbK5(5GRE4gD`H1desgdJcs}vml6hrq|mnC#h zekoMuABZmX&iyEvZ>v!Qy3~L!c{RI6nlAAuLzmoA49i8+qTRKrB#n+EH&miGs(Th4 z3z$%ZR@x)^Si-9JMD-|NieCwGiCh1D27Ko{FrNGj_9t`h0`|R@84Z5UtuW`>wX2_V zKS+L=V;~aty*tfz%|txz>dMN)E=uhRL<7Jq|J+(N$6_^wc1fG5VND}pO9r);mu-`u zD<+|rF8^%CZe8i*f6L|bcYz<*6U4WNcyj@;TL_|_Azb+MO9Fd?DflCaYaZ2n8qTB7 zCNBP8`T=1+f{XvZauN6h@aqD&@bU)YziGVevx@}`wth2+`Fpg%BI}6XYQ*$%>4U+` zw}J=l01w1x2`~SeAo>{MlkoCa1oS~t@JA6BUY^4>#7pUd2`~3#(hDxUylN4+@Y36< zOAaDF?zzz17l~dD2lSHD7@?PPw%l}l+;W{QM{Uo?wLKr#BR1|_reEwS(9bs5*RdQ?*kfd7Thg1tt6+7+7WJ@Vvg`AW8yLMP%IugTX(^1 zMH!;)J+ZdflffU2$+TIlTA8Dv+s~xSg5l9D8MzAv7si>CA*tyTDnv;Q*O8o3=(vs( zqBaL|@y~G`ZNqic0a&iX#(Qh!&3)w&?4Qinmup*pjQvB3XA=9!=x>y>$=Qn3PUf zKVu}!f0Ve!zp2b1#hd>m!Ry~9-uw+AZ~m}L?^)jb z_2f7H&J=F{jyF%y)!zc%{5OV|cg>sM`-my~!YAvw8DE?sfDD@>|I=B+aqD zs_zMUxyR`C?EV7$>-0tW-CZq#_y#B-=5VKJBYpIlu(3!{A46O?bQ0GPha}fxnUNEYh4~Av{h+5W0$&F_lrKn*^X;RVM?SMlFuw@j=`<|ICzPxIwXM%AcR#JyVlR^edMC*55|*G1hu z&Hy#fd-gq!n(raYae0?q1U0*Rn!=-`t`1)gWlwXnTNnkXXukWvdzc5gC!od?E@ju* z!dWzQbL%p=a~`mNBpjQ83umjq&dk8iB`%zm?q!IxqI<$w_8C(+E4Xm>>P6tf*|!C7 z(aDR6?-0(`<}kx_^Jp=uLMN*MovfzmB#$z5GN2nNI*I=`i?d~ivt_r>KY+GbgpmCX zue@CF-o~q);F+UW|MBa_tN4!=N2?zk3R-P_9%%K*-*&W0Y!H^q&ubo(64ib}NH@+S z{u%w(ZB}k*@_*au%)M{}IHXBK4 zt(PA5b9CxQqV>}9S}*S9Ew`ZhGU!!b*tO?4;RC3?G&3wfU`cBHA80d56>L^Q)t94F zsxL*a`ofL-65Sn8^`*P5lu~`^?!S3X!t6G=y_<;M<`l>Brjxlt{eQ^sHVru)mm#;? zWaIcKD`#|E%ILUM(;H619<_$k>_~!y!c>DG(s5xBY1}M#yk5>bi|M$04*1C+MIHPJ z$MHvjKLxnAf%Nmh`M|#n{FqF7jqlTeU7dlymAJn*yEBg}zZUisrib&>Jh0CIS{*}Z8V{0=MkCK;=`?Noy{2uQBc$u;Sv&1u#_M7H1?DP7UBaPOqAf9it^}&XURR>8 za}&g3q5W#n&D%BUN?0*qqAOv@3;r8J^3v6nsEVI3(^PV_bfOe7AUB=^ewrF^N)ZEY znzHf5lp-qWIV$jD1n1XXGA9kLUa?F}6{QGs^m|yNWS#6Xk_+~Op37bc9xbK=p}FZZ zgu}s|a4yr_BpD(53MsfY-8DC9&%w`4npZI((>%pqq1mnq#IlrDkFfUaDGw#?jj4cMaP_FL|8e;q?SEu= zK)=&bVyDA-adXCsrY?7;>XI8dZ6yB89BO^Ar5E9^Dt>=U3F{ z7C#v$n4;NwOm>mgYZ*hZ8ld@IIsZd1H-paiqXtVy=dY4_yp0-lz^++z#>i0ExuQMJ z>S7LWfbU&4Lf1PlnggK^v~{--p-pWzq-v8Obk}NDBq1TAfvR>2p_5Ki&t?$XWtGhX zJD-DGQ@k5olg`;k2p-==KehfJ1_$3C;Gy8cbK(BY8Tc283(s%o8shoSi8IV|zsRH) zTzFpPp)XhdkKh+_ms&b}r^hdl$GY2b1$9UC^p2D*H&J%<^G4nnKXn1Rg+xv!xhcF_j8MXKgztby zSJUeB%W~JI@8F%agwGPFR>Ct1U%p2;I@ABsV;8=h&Najr?I8H2Db7xA@0ykmX*@ZPoX=I4AZ5bk;>GR_}X60z1nDk5Vlb-aiv?#$Hh~C ze}LfIPJQ_ag7Q({_v*H5ap=B1c8jTTZ3-n;thn>DVQc)l{C%wF z`_vv`TRexj+Tsrg-L@#^{(?CBZSvE6m~V?7{74%o*PiMu*U7b=UF*dL)9YjZ0Lqi^ zY7*FkU-G-9mECPE#fm$>5VqEGyj>p}?wm>+yqplW*R{meUT-CI+pA!B9pwGZsDCc+ z+Y4b@9}U(Q@XLK^euPIEek5=PVfH3>%fw@7b75F+^ea~HrT`~#E#nSBkCkTjVw%Ru zTE=qEyR2xHqMlYg>amu|vfMMHvsdOyyJ>r`nkcXh{Zl0i6mwi> z)mM*H?8r*G#O?CtP{2-gNm6fpoavH~_AYn+QyJ`nA_f%rvg z>+)RDw{;^b(bT1`Q+*E32)TKlWLi3yS8Pkm>y>NiF%J2TiUreY{&esBZY3!1{BlTO z+)3X#nlsfvNpY%@Zy@g{{$S>&`|{18c&dFwZ`3}p9S3Tk(mmKdatC&o?V|+conQMc zZ=YiBW3<;5cD_O-&yLl5YQ8EgalWeN+l8IIh!&Eu_UoIgPU8DtLI}s&9}^cYy@}8r zYegd)dYRg)K3DN=#hSwF8~WLOx%!5M_);b%FXJdzTUtdw=|#|`YImCNBnynhm1mIL9ssC!%$(J01(hcGmcMn2 zcNQsfP)i0fUDlF&an5#K41JSa{jyPjNy58%lGmoeY3dp>mYn_ z`ee(lx%Y?j?Xe3@|Kej$j7h%T-r1nLyDs;Pz-n-hkqcOvRDueD(ou@4EL2w9=xNHq z(A-hxFs&IvJdi<}@ZkAeyLeDAdSKK={4P`FJ;v|q>)SiO5t5AMaJYxYvq_fuSVH*y zPbIGJmyL1w{kIW!-(R~2zhA53O?~;@YKMYphpA&zh-BzQ8gUFd4O)Tc;`plUUP3GgzbmW+qB=Ga_zQX$>>Qu&Cc0%-+n!Q&h}JfxpQ_g-oub|D}`3E)N82k zn?*)~)k5c=0a!UjAtNH_b;>!8;o$S6YoytEbSaL!FPIsqpf3f~TiJvt|tjI?qp~J zQSSV1?GiaUxubFwqwTQXO5$g)GIPJE)~X^dkdKj8sfG+`_KoQNS^(UXS-KSQw`W%= z*56)b%iq|HOSS6GzYgii(nW=b%ENwSd$V)YflKio5IRW$VC${Zjuj#u44x_EhlrGE1|Jbl$A$js%V0<6kjp z;%j-UGB!-=dbD! zA%S(Vh+jc(+tStC&I+78*(~9s#ctVoA1$-IKK^vRySv|lk0#?s+30U~Ed#vPm6oJB z3z#+R?OYX2I&SH^c^E9Ud*z%ZEJgW**=O^u89I3T!O2seMxSb(`W-?@2hSreUg6FR z{2|2uhLH8;B7I2V$EJX83U3}tTvyG1Vg7;-0?*pI2)+UM(}VPqA;`wX;aT5r2G3r* z7@pm7Xn5B567cNBzr(ZN7Cfuua91oFf@XC1Tz`URgV7}O{3P@Ipqu9>)AKx!GV}c5 zex5(v&;m!#dZP*Fh>H3B-5}H?j>0TaTknY4`e=e@ujW~UXNIU%t7EtRbagO4bBSiDe8bCWYlmR<~9~tD_AGW8xKv zePzXCi!X5n)_sA7C$XOQHYALR&Tb07RN@oyCGKUbgus^uJPCC%Ovx}w4O224FeO&2 z#w9U438}@Dl%t_6Q!>;nJEo-Vu%Z;TEmN|BybV*bLip^M5-VQuNs96rDwgCog*=sw zCo#Eb4p}ZQb20DmS-CG0!np@*HGYS`pMjr8{OtsUu&MN#^S(q_oq2E%NajOxtb$)kq7gs>^=t)+67kv z?UJ8se}chs?LMQLJ-2TX$8ifxKC$vdmi`vVMV)5>4_4{i4yAHuFm-vbN`_K-9&Dj+ z+AS|-Zv0YuZY=dCSa@&QY}Pim8wm%tM6*rt+Xu;iJ%N7QP1sKeaYeG4HxPc7feROJ zCa?%ir9Y5eitOctlhQ#5^A}wF*P|AJZvg&;0IvNqSyr4Q+$zmAJ#ICkBB)jD?%@>E zvm#G2vtl5c5l7p8YEQlp9TpYh5k##OVuvc3ds@!P?_9(38xLW`~QMi6Jg zB$pL5c==wSrtEavqAS3=l?(9BsG=uA2CE!Do!@^3m1YjEdG+|3Q;)AX^>`a^RMS2K ztN08oCF=2^B;nu%6+`B12m}>jO_K$~0aTIASrI=yI5~y(d3p%XB!qZ$IdS3juQG7W zpYsH8DV1J$E!=%Z1}^!6@cIwAhIsuJ;&e~$9hvlkYd+OWFuWux-K9c@g*hgO>E*f+@!KYW7s}JCB?e|=k>t`BW)92IPlZ+m_bg#Rmdwpz-XYb@$gJ*8(E_b7~&gW_71ttTD zyV0^tXsrE0)4Lm;xsr}KCDk!e)e*6=v0iooDC-53g&*}(qMmYmIrlvknDCcyvuQOF ze1AV+q{%+{7x%9~@IGreX+sRUoV23JwAU48dKtkS8Iy}4j$9Q@Iz6xjN#V*u57aQ& z)&aGVLHo4mG!g zc6gl*udB9PosLAt-aU@QTi+~nl2S#b?2UA|B<^mNhfwNLYAcfSQIOT~UX82V4()>D zy_QOn#>rv)X(`N4kaEeq*a0xx5GX&tGtsATb)mXO_fQg7uqtA*4*aQvMJ0Ia%Gh|Y zXOigb5$TI%=e4H*dk+D|JB2&v0lS5u{mT%igtO9hJShV|lelOpe0&OLcM%sKCtMEm z5nO!Six+{5k9*A`@GZbY94~;&+Ar77oK)Jws&CgDkS*;or*7)-QmIbtdW%5j2u^{d zb+zm50-5tT1?m&%-2&ag^k?$w7wG*0nUgw|YCxbr5y%|dDNs|Oj|gPW@D!*m(8mNa z2YL!LB+y?7q|-gkIkP94T2t>qTh~Ebzd>84L0gYOTlSzWZ_t)8X!9NPc`+}M7yBH| z&bbwAA%?H|J!vj+zDav*<_-8%7(3?;IAsuO)|nxCIW=(a@vq^PX0diH%8lm%A9~=k z0hBu*@Pn;h>3mrCkLKZYU)e@ZB~qU{v)uVulC0fm+Z<+&Mbj4oSRdQGmGqxXQcShV z?#Y#^m#BTcULD%rsM;5|e6}{Uy|+fCPIww7M`d$1VKKLl`aGC#DqvrCt5_0Mv;Dx& z0WP#{K{H#QUKsMX7Zgm2RS$fJNwGSH=+3q@0r+1oX zt~h-wxidVh6qE1vg&nu~)NU14E_lgof!C+jW*>AL*Yfvued?`}1B^33UMhNAo5O6# z(PL&__zL-|@_fZ|eN{Q(Y#EvC*ZD|Ws#C%+sM6y<spcYdZ87O+(+uWpuB@35JdC%R8e z-pXqYdDT1re0J_)Tdb95*N^!S+2_lyKTM(&TF8r@c`N8W|Ek68d0&a?Q@b@wfUP1m zEBcy+H3Lo{#%Bo z{))J0b_x9Re1^{XJ_^{Yz{hr-DP0>YlS6gRNBSVs^<=(h|4@18-05a{?9OxRcJgv3 z)K<*C@oLLElSOXWg(0pFWbDsR44U&qb@r&{0{uAK8_P9LwS52x!hq;G@~|9Pm|tPK znvXZ~)ST@-#m(KH?X7ZB=XkeG{=cEKy$iWd^ChR!mic%+ABcs_h#%pNs4!$KWW0U! zaxG-?W)ScB52&L(-5W#Wp|W+ExLti!p8G1Du?<_go_5cEc7yCu+Lb-O;FSaem#KFQ z)fA7aIa;_gMG)?&-34zEga>q|>0=LnBJokeiwG5hho8>9cxjDb;e>}@&%N@0FTv+8 z-u3Im@BQ|)lS%uiX5Nf!OFDn8E$!`DmfOyAw2#{P4TNkvpASs>nPEGBoVeOqcpA3z zn~1BO!C1Be?3{Gy7`t1Thp*wmN@?} z?eSu+2WStr?f$p7M>+R-=8S8EA48#!)^_|SB0SNGIpn&Ik?D&Dp>u;UGJQ_jVKBX| z!y_vLNESoR2~`dcUs?=xHZgk|UH`o^Yvrf}cCpuL_n!(;4Ym9CZuz=ndm1A{HK(5E zAUz{PomY@kez!=b)l{^~cu{K(U3gdDdKB3dg|JGA3kTU3SID|Wg~nk4aTVzXI`wb#4(mS%a^ zeV7+JKjD6Cdsn+`e{QH=E|BHSqoaPgC^N_5uusoI;KOuLl5g6V%l@^kqRqD$ zU&(%^-j+8b8CPuWV(F>v_)p1Fr;Q)pdCDuaa(^ys9n-+oUH46@cS(?qm+d((WI24M zrP!YYCxkdj%YBGq&?8{JKq;;rE1G;r;-So>Hcp();@p*>bm8mS_YCiHIY_{`-|A?< z@c|7GoEhBAcaPv2(vp8C-XLK3mxBL4U`G;|@>B3H0((5+s0{qk#Ffwa0i39z%^&9a z9N=rYLetD#djs(v;@(e-Xdcnr_59z=^){|+x%%{vZBf)h1~))e>799gWqs#UFZzC)5`^~y78 z-k5%?FG_lfd$-)?2u($#$7<9R+AGa!$1a)8YWn1;$I=(O{1FAS<=Zh@j`~@nrAbRy zMk6(Iosho>R{8#|vPtAzx>6mUbj08ay!F6z~w-B0~- zz+!1YU#w^{mea(nO9KMWAK~lS_Y4hixWuLQ^PU(B4Bp}=`|LAKwM)~zCf~L^iE*%L>`u_F{(2+H)h}`66Y^>@*;4JQF&|) z^HKVBz%K~k^7(WvWnQf@TALeBh9l}c3`fZ<{2ABFm06@*z8Bm;F_NA3Q9};t6Csry zHeHRMq0Y}iK4*haw5srBd(>QS#K{8bLDd!gnjx{S(K+T-pst{tBy*dYtd=ef==y02B*$SM zAoGFt_C4KKKWqJVEFtXkcM;dTqB+OIxy_wJcn0AXf^fp)tl(cFuyjw-3uhlfm?t2| zOTo_~E?hpBYlzFwB@UY9c4yKHF5G;10GD4U_TuC-N_OCDJr4FpB~Y+5vfWPz%e5)% z489s6sztQ}A)XU0S#l4f*_q}Y$M9IRleZHTQ70YB6yuM9F75aN{fAtBglkW`Vvy%D z-mP?zr(%)kgFwf>#YYDS=#j^1Goj36FxS)3Kp85g_Q*MUz*eAaD$s}!TB^o{`2PIwQFoyUXF4^&4copsmtWrC z9`$G{`7DC8a`_0RxMu2&`H5fspl{&TTP0r{vUNj&KS7>)KFZm091_k?{31!eiuBY$ z^$ly=L)Fw;`S!Mr^!HDb^nAeq(%Y|75%Uv2H0dR?9V5Md`S=qSzt0qYs|Wrvg_I{T zpfw)V_8Qk3)51OY9ptm$bLAIvCjk49!?$sRZ=*st$oXREHfKu9$0{p@b>x!Ed7Pe~ z_-^ujq5=Bl!&ku#{krMD>CzjrVV;E@GCy(0-8{eDJl7t};~@|q<$KTrdx)Pa!0w(= z>!Z@^GB4LRT0Z_HpNtMw9V=DTqP-4SeHK;y*`aecaa1_a5m2;s81p`Q)2MR%9fNe6 zXfCR+iIrC_d}x%&zNln^&Z45Vwa}hAZ0PTfg>IRYvo<*oN49U9<>03Hx^gfs_s$;;x66XPPFZ2JHAHwB#p1b2^wP>UmAD9`;h1I z@aMZ{SGuc*|A4sG55LU7?@*k6_&z~-`t+~oekU;R&)mbsi+vNgY%#<1_b0A;p2F4F zvpfEd`MITcAOmUigL;`}s&J!LazoaP+4+gD+|79Wk{gc&$@xY5n}yk)d}UiD{=eik znTPVaal>YyA2j)q?Rht3AZHpf;T-GenPf9+rx`+*p8fDAw*CdfGaxS!{k3_KYm^(g zb0{Dv^AoqZ`sdBwl}~TRA?atMoF9hft@(*tUHYPFQ<}G_Wc4!tsXin<^_!pgoJ(IY z{M1sv-)94TcHfiF)%i~S3hr|XB$}VNIjMi}+*IE_zsWs6%=j79`}tX)yWanJ^1j+q zzx-?=`R4hFk0$kJF3Y`(_EeYksIRsaD%(^@@SC5wG0CrFawEUOwuD8SpZH)>AJEVI zl859oKk>fg`2q1SRo=Uj`X%)@kE0QBT1 z43^|$HC`=7-LJg=oXPkq23D&WujL{e?XT(G=488WAl3MG;vlgZ7+^Iiz6@kPw)uJ^ z#(_0jmAtS&SDwz_IkF!E?f5GIZ{MG**kQ$T)sCu@PPcR3BWaZu;Zj0@@I->zO7Lld z=th;GaSr|&z66dW_aMTl1f}s!G(Yi8hd+mz`JYF*f-TP^nV)!@Yd>4Io`*d;Kk;Vw zylD2Agzv8XCQF6Qc<|gY`~(=kqbh|`dH4dxmU0Nozhgo9c3*TOJXN<&cMVI|O??SL z%KfLt_Qc$_WNvR_dbdsHeaU(D8`9ejJaU{nGox9QJG;c3Gfdp|Kt$I_(al`5C#vJz zs$eF>Jwx0VqV>T)gt1U2NuVtQ`x{*w}yAmoQn3*2Z5X$5wCIc`DemI(&W1y*_4NA8oBEM61Vs zVP9`F8_}qJy{GI>Gug8ye0{ZheYJU=+J9HIZ=2e$8h>e0`+B)qceP&?zQ4-7zseSm z5n~}5USUhef)Td}rt-M*u4NTwCTc?C1Zu3lWDXtHHpjKE( z5?bW{>3#+GIwqzNwc_sqFdh`&!TP_qT-!6~@-pjdXAzsjV)ew)YPPhkiw#!GnkWsEt^r~pqJg3KA2pD=2YseDK%4brui#5e z+Wujy9TlZM>d0-YXjRHoS~k~vnmn~H_13g)TfTn(j=RpP(dvmB-K@&q@#g20mVH5BZ;hJDT^iG$5oK4v3`HAZsKaw{*kltf}UPm9H?^Q7PZebie zEg)P@7Jh94FD7N@3&m1=jeU?!|GFf7>O0O2ze74~u?pr_m>$f>zsJ-4tMj{$pka1C zm5;ieRmdX+tk{pdeWPTBkTt{OiJz1Fy+Kev2rgYZ!N&;|g5YWw!Su_wcd8B>#Si^; znY8&_bJqz#T9f(a=mnlbDQ@R;1MBmTvp#QbFk?Fr=sIYQtbLR@Oj5cTN%3CYl zC$1Z9u57L|PK}!@%e!Xz_)hUPXkTpZO6pzGwbbubJZi2r^=r5KsTpLk)yJ85SUbFc zjvX6-%FOuLq!rEBB>Wfc+zy#->iPE8aJ0#P-lo*&HHT-TP4Rv;5geVG2sv>sn)Y^y z(=K%zY0xH9d{4XCGjn3JDVjn!bUZ~&M$^$$e1e;*ZXqk8mikP^irS;?{OcGO^=!Gx zHl<3Rj=%2Ox3up%a8bDOKr-Wj&4emQXn@7xaKycruHf&WOx10gO|#P{QGi_r-H$sQ zdu);v4Zm2X+DtRex-`Y>n+IxRjUBx;Q#ImSf7l!!iH}h|`-ir-`kTF@+fA#Qwr=(} z`%bt9s=04~cHvAG^|Pi4FrYTntS!KRjh(-w)1r-83>b3VIyTxIYK~b97z#1qpd=lW_?n^me&MVly7jb@{DMCar`rXELR>*2j_jE*+j%~4yAcC!(n;-k_P2@6(5 zVzv8>YxkL1q-MVdiuo=&mHXBj{;BONTxrG8vzrw(_M4T>{ngPOjcWWiG&WHV^IKzE zUiljOaHPxkNJ}0}YajbT)9^73Z@1JQDAqKJJwnG`Y#O)Y`%<}l6vvNaV6lBB!WG5& z-R9i~0aHQi^#QRfC>G+7gAq&JkGs}t{;Be$QRRg=Wlf&t%>zuMJFs~$GitL8;;gpS zw^$K>gU_1G$7ic-6=b-!qijLB=%_T$p3p`SP`ee!WZ0$g$9#v6^c{^k1|3}*LQI^d zIL&73@Xp88(T8U{dWA!{Rin)n%~dg!ugpy|=;+6%J38!uZ1wl2>Xz$_zczPqYtWT2 zGTIz$j@S|gcRehjX-`b&A2vrOzy0T=$GnQaE4 zIF3kD`3U|T;8$hf*Aa&Uz+-Say@WS@9j|WyJCTVr z{H`;Iiu6q7}YnYGV&jUWc2wZKA*;Fc@)x_0jXK)Sk z5&S{GVOmn@FCtD8=bn*CFL(s}`HR5U0pGg_d<*b5E&@Lp_zjD|B~$wZaNiDETfPJs z{VTu6OvZj~c^F*NVcoUmVQHp`CzfO+NbUsIIhKV&`h5I&N6DT9Ca?u)robFG6x9_9 zB>AW;^CIKm!o~OHPjPsCSL;H_Y#&Vs`+@8XUOb(v$BWE&@A%*J-H&7(=HZ=DGd$aW zH|o9(I$Uao-d1C|YK9!xu%4N$ZReT$zn9j|Puy8~ENHOn82)hcBT1UYUYn@F z3Yz(sRj1uBMzDntrOrySr)D;|Yi5JHRj+D?yY6Ag|C8$n<456XucIFhWVAerewsTd#q`40NIZT66<(wlmhMNP+Y9cU z1Nu<#ZGBgLa0%7<7{Rxx`s{NA_2u6Z!an#{;_8EcBlz@Mo8kyi4R*b)7I(_<~<<{EHdsL0J zS;nsFs@ocEY8kA4Z{lUybo}aT>3Cs#x8rT~;(t)SQ}^jyM~cMtax~hkIEReQ%8DS1 z+frGSr%U@#=g39l@wdokG8!+$-{B@2FUJ3Bu6;$b-yV$*#oq_eSDLntpvT7g7Sg@b+L*kQD59=!$oq(-l@)jMfS!vS^_;dp<-TJ=b*ov)dqE)StXw`^K)bA7Z z+eD@5^D!kZ?VUM0TG{H0hD+6Jwyc2LQ6P-C=NatFvaOJN5g z$w+mOS*DD~CyA8zs2<;@42p7fj1?8wP{gHg0yKLzl3}~^0oAgdt)+KLT_0sdUbkpe z3~MQ6yDl0nD1We3(`lb!RkLZDat3^``w;J@kwhCLa~5CXY0R6rj|sx^N&w#q!BG4- zuAXLy#>B)obCoSZ2%qEg&LyDJoq}t=ct0@2_bGT0+N1jPat&$KM&b_x{!Ff6{&+w! za>th~0@ohvH33|-?W2_UbImWS=5XoZXj?rRVSX85eyKa!Hj?HRd1TQ56Jv&#E%o4qo-L%+B$Z5G94#yf{QQJ`k zPE#>dp5>&tzQT9c6tsq0NF#)nenf$*%e?5<1bFUZu>&4{tLAuxKBxOp^@88C#?|e{wl06E+@mamu`Mv!H z$UIv_nel1HV%Ne+(JAM9w=vpzJug+`_tSaFI32OLlVdOS$>G`|!78DiK_jE|8|I(Q zW24vkT`qqnp5O(1%CVX8rg116gePX;EalBO+`}~-hp#2hU+x4>f6ODF;-bmkuM-z3~iCTAL1>-F^C<9{%JKiLC zY*eQoRV@}u@juhGOhP-@Sn8al+z;r<6b`+Z;tfAc^6`hIaL3lUceHcLo8-fhrqLo1sSHAVP76jTr^mF%VFPZk6C?xdXQdy%;Gcm6Z&`%9m}3MsJ$br zsOdpg(Tz-&WXpF$>&1^<&wXC}STo{B1fx$u^HNe|mSyIk5>AmodS1jw)*0* z7W$edA^-iJC$}}TFUkT76@}S1O7#H2_4Z!+bIYeR`iva2>y~f&0lZ`7m|M9+eu-zk zf$a@0R*YF?FRi+{zl;zQ-AoBF%T+|M<*o?U@E6Y53pLR+O`x?LL!vuPEyfL2(#LCQ zfAtMheyVSzd!==mWNu+!UPyc=;foo#=F+bcCW5}yJbpBB<^KS#zVBu4Cws*oyFTul zJ1^xgbYbuRZf8z_U@5^8u6bHn#>!}f7$-v_8t)G*ylKN&3(b#oJacy)DY z-(C{X+l_8-H*9+TC%xTpz0KAx``113k7!9!6szVm$g&?zOiYD^H{f$loSDvH|M^1CNV#oql0TNU(8 z)U2Xw>YxMhDnTnzGz(pDirv$XC&~_CG&_p`sJm5il-mTU#iy{inBH9L>Sx34v@nHa zSe2*RA-orOuYpJWz|n0}m+xQa=Cv}lop>{~^{43Sd*UbXJ-4^7y1K}TKxi@j98~P7 z*r=ZmISh(dpUA5mKi^$K+u5znF8|C#)GEjSF2sjkwm3M*ZimRGL@Oh6Qq$Cz_m8@5 zomPA@(A$OFMiD--iFbHijc9bgS!gKR(#^%ITDQD!`SK>sL6U{uK%ke5-HvciaM>Ku z?}-mGkCTFJHoEbbWMvZ3C;Bog+-5|55V`8H)JuQNS zZT9SJfUH%A{Z)&YBB4Ue5AT1tD_A&Zajns+P{EH0(<)s|vxgek6g>`!t(CR?LW{%s z-IBujb4qRMI;np~ZXV;6V&}uby@Ul`Iu$%fIi~REv4qzUen@yY!Q+qcWCMLKzmFmQ z>?STextwc=CoSUOj{G-1A;A;QAYau6-0+i1y2yb=C>xFSfr5$dDOIy2xC%sSHx zo{?Q%glo{->3NhUwv0FeAi^>8mV|H&^-dvPu6F(iP?Yshd|>f%<$9P`D0ODxV}|$A z9VyD`XV-<1d(Zd-J_LUCg|zi8gs>0(k+}Ncp9#JXiroJffi19{xA#_GO2#Z1A~qS) zMZD1W4SsXz8gvo;?!j_(5%aq)fIRQfF!oaB!95!kvsx=7M$LxR#9-M?SJ>nki;9K5 zpENJ=n#7fCN@$)*2Ej7a6BC|MbGq7Rf)KWkzQL;nr{A|)!9nHB`=`724^+QbCi;t_CHi3q znwY@MPh6QiFWblHH_j#r<|kg7d_ST{^Gn$ zi5Dd0cl*OGs21;!%aZhLRm!f{*auAylx@dX$vr-n2KW8*rKEnz_h}vGnsI*OIWE6q zZY}wNR^;cEjIlh*mr2aB$|@P>wf+fvV1D8uuKkO~&iHQM544$;&-}zG?)|)xKdFiG zZb7;D_g}h%@4tWW{kPrC_g|dkx3u=ZC`o_d_Gk5-wEwMlQ~r~a{JQ1a_0Zzqe_@h7 z!KZ@JD>U7L{hKSVki+QN{F43*$79m}CnoKmjE|K4*m^M`bE zIP?^IKu2Kg#oHmu(l5XN!CX8fO}a4kM$a@SjKj(o#m3cw2opt5k`+zP$y>O*Z5L!*luGqc=gEpK@I)k>UXGEof)(UYy z6JcZjj-{1__kc60+TEMZbxW$^?!(xcorG)x9LPP2&>}pOAi4-|X=ICnPZQ<{YER8` zO23}aW8=nVZZr3S|0O}PFY$EB=Qcu~Ah>v&e<6hVyo$KyzYh`~M3C;i?@L|hCysXg zSuphI8}wIxwx^OE18q?oZzT?A{0M>V@)=BeD^g z9meLoAcy=j99ci~ge}E#W2!N>x-ixlivLzUk;j#<%s1q3U^>ZflKk#w{4jMmQ;%eP zUY@)!`e5JBP-U0aet+!J=S}PEApA2xXICvqTx61 zqP|j`E{vX?=RlM0oG?GJAt^tmzF!T?A3fU^-&Y=$a8(Mf<;vC{cS~3KA5X^H6L|k- z-f!27?Jf7q&o+uOc$wK$s1{u##kYz99I6+3_TNABm@9p1$7vVhzfRJmyy^yND#+lE zwsMSd%G5lmz7l=+d>U5+pAF!)z0XPLvGDaP;rCL@bbG5zzBtw1A9d}`i@dKNbU($z z1>H;gY&Ye3dh`#xc9-<%QS_3dM;LDXw$h`ssM`NfdUT`f-@Kuhrhm=0LY6ZZHVOZ? zCHN%zYSU|^94P&ni=;QWEoU`>XBwaX=`Q`j@_R3E{PMYWF<_vj+Sp(GUDJ%vLtf;K26)oKbn(Vm=)70rL~XCO`R)V-=A5aF;$L z_V@jV6=RO2Pb}~YBWGLFd>neUMI-K2D}0t$#qCLn*7~0s)VABQJ4^HcV4Vkas~)eQ z=1@*?euv~2pqr)Wx#xGbbFc9zy=?I*>@OKUMR4¨HxhWhHTihZ0UDY$4Dc#)sPx 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�T`(Wx|w z+4NCKLhC(e8Gs6mpFn}GF>0)OxlaGF?di$9H7IS7}|3obmN1BaQ^*E;+n@f({Ewhwhc!4_7vv$`@3jc!~dT}evfB78CJZ$Fz23fWw)@^6u`amHmJ$H z^4_C=+zautou|D_@%!>+jh13FS~GW9LNf=W)sAMahGq^rnz=enGkKJunNCYE7p<{0 z^Qtf5jk5=D^3I3tD({SDx0v_>ig_y-{Ze_Jz8^GTr1M>2%t!{uTh4!YD>8M$6f`ne zzHcXlB3dPLSFz}}uy&pEXWF&nd-MziY@M~-ZdA&YuQ%-L-szEs^dth%1SFYPn&5{hIOB|tK%HQ&8{8{&^l}=aNCOWb@JdqZW>hPxfafeoQTdK|oUE3lJ zV*_V5i#qzTxOt#DHXxgMZM_ob@WjTbIdxOHA{Po2d0mDlN5iwQCd0#`(}d2ca4uGLGpkT3E^C~n|KdFdjKK)Pl^AWps^OhsekTTV0p$*2tNaO zKQQL36#VJLRUa8fh4pzgaq;o5&7>DxIsxxo1g>xUKLK2G*psQtoaV5`92#qG5Lcoe zH;8)}#NMZDPkIpZC^LwI6T-}Jte5Oa#h1N3U>xy~oxX6%z=>uIjjkC^;tJpNqk72Z z;fQD5fDJ!a?VNrCWAs37XN#ul!MO=${qR0s8JB>r%g=RYK9IY(WXITpxHWf0^S{>) zF2`)wtjsCFnnO8M!TY6NM_;I4mnwt(ebTlF(z6NiM)IYj39rh)MbH0{;QjDRRw_Ks z`r-HR#|S5RzJsgJU-*IcQ11D{kDfV1Rt`TnfWhI1WaHkm?Q&(~#o?_xO4C!0j(Jx2 z;q-)CW?N)gRcOa6g(_2C9_VJ;&NWKv{W^;+8cvcP;c_iG2K(zu>K$Gy>5xxqP^#9M z_#h}%%aDD~buW%mui%yOFQrjx^`GP}zH8)Jy1>56sk?VJ(m(!8j^*Ny@ImzG5G-wJPR-@lw(cx^@#~vNt zqog4^tW1*56pb&$3{resFN8=j;$Lt`0e7)nqjF%Wm0iC(Gk>XHr;+OROgM&U6 zPMk$tIB_o55GN3t8k|5tl)?$=TRl%SqBe)}v7-^?sOo40f`7W@HfHBZtj!^0UCx$A znK>kI11|cX>9L*dpw$B^K_r|B#@GyFBLjIU4k*abJ<-7t1qAvwM%#gZgn z6zNW%&>hC^orC7xHHNPte2d^|wE7Fy#q`&IaSi)x$o1FCOn-^ibN-Ti$RiF+=KPxL zuS4-84^8(3-4Dw}sr0ZR=u4u~CaIhFZ=_$AIq|Rl2;B?c8xF{K0=sJ}9iU;VdlN_c z^0uGpUiZ$S$x}W@9}WinrT$${T;p+?YuLZ15$D5l4++w1&OU+oWww9OOTS0^H(%Ow zHnS()d}N0DF4E0*4=}cUy*V?K7nza6^yTTJbily3=&1!A?uDVf24OKqH*2w}ke#Ma3>(Q*Ejn)23<<&G!Zz42;eo;TJBCdQkaP|GD{tD>l zQM|DY84jDxG)Jg3F|zz5j;+cFl4J*nemGDFNAY?R*D&e2>m|9Lu2b zl^H9GblZZlQt4bxM=a>O1CEvaNAGT|EWL{kajaa)n9#m?IH!GwxW>v43E^0&f@oLK z_L4gd&9O7+n!m-FjaJ{T9mt*9X?BB08Fs@-jB+@KFw4zKJ1$9B(~9zl-?e8Ih=$Ij z$rg%+{ANVcQX?GaSGhkKRI?wqS+|PiK^5Af!ym#gq<;u0Yk0X6+kUNh1zJ(OwzE0>C+2WdBqGa5cl=n)Cv{&*P#6y+x-ez^XZK{T9vZ`FYw$+R5 zv)Jr)u0f2a6<+(6k;CzoCydBf2q#G;)YwU)a)_i-vux5&k?zzn%?5HEbGWY2hjcG; zM6Tz3Cmg3lV@Yy?VCQljEukdXLRoZ8NWZU z*dbuaBOr$s8_~z5yfwaxJ(up11lKBSkmOC4j(sWL77cUm>aY{h^jBubw&BXsOJG1a zBfiERBi`GZeX~bAgwN${pa*_|SGAj4`EzQO-OcrMr{yPUc07&5ltYTUwK_aqD=aT` z?5uH*(L+5hLSrbYhm$Uudi0=0^{3d8G=Pmvu06 zm|Zp>)CF=U-EQTT>*$2#@Fv=sRr)UyLcD*Z!~4eu_$|Db9P^>T<}+~dIJW?6ga2VZ z*a4aRH**cgk9-S2S#yubq!(QB%24hpo~TOR$UL>Cd}%VS?irqF?q$kwlobeSbC0P= z5;U&mNO}4s9mx6}de_m($9>#O-m?d^Lb)w%E?TNzLbX%q&43-_GPSC+hj;xN!=j(v zU|wM`+EB6OOt6Q-i@uEZ{d+>#Pv0aiJoq<)?R&K| z|68~7b7{Lz6T)`>5^=TjK0>#hO9sE$Kh_!?ky^q-T1sWla`Q5iWuN61&Kp~`ih8}8 zHY+bb5DHJ7P-$~s6`M6qYodzmRqYjvue*(*{+P-?Ax@R z5IL6j7{t$Vf3*g`R_%Bq$!2BeUzN?uY&HWfn|_{cH8P41DkQIlVpyZn%Zp`+33X>&aoI&3Wecq+k=Ru?{QQDj#yj0AP{! z|8XhyPAX#y^7;o=w>FcrcHxnAXK6Fs^5JMj!7$I0YJ+G6dL$cc8-UL!{pmXfvu#ju zbuHUAkoJn&VE+~e_d94$_*5c#r;83J$)sn^QH(K51g@U#H7Ws#=QFDkz)4wWL~Bqu z;-9rd=f)}ptZ_;KHr`vSZ0-wG0%}`-411*m6jb6milzp(#L-yMWX5rh-*UL2OflLC zUJ7|lCFLjZVE1DG4D=xT+`0@e`*dKp^6c0Q{IS3VyE+5cxI7owdo%DqBd&4zDXxB8 zN>5HO{qlCCBxeQ6USNLW#>5`7o9=BIQ6?Sdo0#Vrd&OjY-y=2vNk1%I`@gMzaCB{) zZ&TfmAo%ar8l;!7nQ(tXNWW%@D?LgvDfk5r{xq&WAFb5`y0-T>P1iogaQYoxYaJ|I zThFMs^Ymcn?3)jTuHC}hZWH)-bnVwq*D~}d8JGX_=}|E!naeXQPmJq&$7kI$Jh3ys zlX~#hW~ouNCVp&5Gy9^y=S=XbF{b`{!GGtH0vYa zpCR~u6z`$mKe-@2#PQAC%?{ZqAErhTZh|xYOYJ| zry1|X&A%=_l4*r`CUP)b-`LTugNhHqochh!W&kXmGOthX?oM#&)6RUHxO~@)zdf+x-N~`^Xd;WI`6nFO1m^xkJ{W(xMcW)3F16% zWQmX8j(zg~e*B96l%`9tkHx-ejPQAGnvQ0S5tcEae|3zolX7#T1CPgbqqJ5Rui4mT zET^H8UcD&^o!w*-lIOv^pyI0p&cFscl4`}Z!;)S-u^@NDw{*6DWarkJWtu<4*Yp1J zchbcrxbKhQyz%@a_9-6zfYW%01|AP$O-2}|IF2RE&v#>@rQOElE^UyzIDJ=WV9Cr~ zaLAXtm{(}Dm+<3@HZbnbMLUd{a@1O;UN}7+WzM78u;X*ccgmbz=%Rv(w)FYDl3tyI zc0njum!vWhRReVEBswM6BfvZ#FA*!93|&F>8;OFF{;f?;R%(2_ihL|(AFImEu@ZCa z13Fg1$FjS%2->YfEz8P+brl_PkrB8^tg47%X$A~e??8=5W1mOVZ`ODujW#Vz-jk1S zoKW7A$TuB>58$-q33zg}!?YyVF0QDVR8n7p%)B+vn~Gu`^1-*@(P)9hgwY6L@I-{B zbR?ex#fLcPj5@5ejQ@k~fL*XKCv8Vk=b}vAhE~$Tj1zp$uN1Yid9%Uta*o*<8F@)6 zjLapwTkD{W>KdPeyGyQcOgobAx?GQy`i_OSd6q7gD9TBl4NpsR=gq=Tk@38gJ;xdj zXsS8~JZC;%65aN876pY90s8TCuBn=q2w}v&H_+AP?(TWyXEv76yNo?JE0>z0oGaxL z&Lq6h%M8E)Vi*^2p4vy!BFHnpAB@22+z#Cj3UB) zqHNlt5-^cK?`Sk>WFQ6*1N&Uvrc(8ZTEnqwbZW}r#>7;kGKar$y`?SW@1(NgpN8Zsw z1z9v(kVdg!6YmxCPC!j`0S#8cKFt^$>})1!x+Qjpm|YrOXT&sy1>)ogMMDjug3hRF z4f=yrbqj_$yBO@?TyZ5S=pCo?$D3UYAf(+L%x;ZivmMRu zLg(mC*maX-^V{k;-A@1e^=@jNe*w;$Zr{T`rO%J>E9sNcTR-gMI|T_ll)g~XTP_xZ z2!PkySb11#9Kpn7d#gHj&~ux?-{c4{7>c7#@a&!Osd(p5a6+dx1+x zsx$uF%||Or`{ZC2eT`g}Hr#kJ>yriSU}ja-y<@Tp-{L=wrw0(2AnfdoCmZ_|Pc(+r z8&4O4?M?9%OkX7N6t^uCPgv7YW{+8!@q{D3c=FsIzwN~EJ?0dZG9|sNQXMp5zDIx$ z24tGS_0Xm*@`0N8|54j=8P4Aa&TEH5uupb48qRBnrP!ZFcF0a&EOx+JlEw}peMb*v z+5ty=cJRC~(_OU4Es2HBikC!slww9GkM;|8k8v`K^!~ca3hQt>PfE`ysoZPWv_+mq z-M+*m!cF(n1y1gV${%{C?G85x&U^oL*r)d%dY|#~6R}VJoCzoXWUiO^3$CjRIBu$3 z=Jr?6+L-ibnVKh7t9HIup>p(ZEOqs?K4njoMfiShxVkXxS^oSg6ztAP_pzc#9u~NT1h(PR+($ zgPGEI9IgYL#2NJ^(ch-ZY7_n-$1@}pKCY>mAUZ99e++;H<2h1=gWCf^_-FDUHf{9$*lcM02<%92VFg{TMgBi9IuqpW)u$fe7d2NFP?J4@xbpr;8VO zbo;eM67jC+7D5SFfVx$EIM>dKI!(Y4ZUN4-gT=fCn}zyUNqu9%#_(NulHh~Mo6s`X z7hZe61=H8DQ3}^?4@da|JP*_aoc7WPw(H^cfTO&GxHrMz`z+@ELVT65NNgz*+FUd zHY?ACZJ4JV2HC=0M`E^RRuwi4<=JS&EWrt3*vMy+6xj!fXPB`I-9P22$fq{5%WhzM z!FlbnsdAyQN09T~TB>UYXvJY())=#;aox?<^F?%F#34tjC+#`u{}|&R41sHLeo3wN z$TB0raF?@zy{F)NE3W-0Jz-us(o-)dJ>C7!)6>2F^wj%5ot_Rg_v@smix7T)dP4hF zlj({0=ILp!YY$3K7m_{FVuvbQW-C zdYbO)sk}s5-^zN@(_DQk=#i!={d-ftZ$0TLt{%_u7WCfrq$j!h=7p!;)i*CZ6I^}s z!ZXg*Q$33Qus-U8sPAU1k4pI~{ROLwt<*9cZES7LKNs%>&PM|SR_a!Qx>hRkAH4JN zTJ2PBQ2CV$Hv;)DaVqnPC*dfMBA&5cY6*v-E0vp*P}jc!@j7oPF2Ub2T0mDeYnn#V zcsX@CEwLDJ+j{#SEc9#@FF2ii4lOu`euCMlyT}m1)ZO$mpI~YlGQg5;Pezzg$2Lur zSYw}SidaT1)t_=0WYG8E6f8(aA+@pI1fM$`j9#QLlQIm+Xp||dvCvlaApCQxkG-&k zb>M0F6IxG=Dp|Rvl2s6{$VDY9^*qYvaHP-oQC|a*r&DdFxBCtDFjt~2uAgBMG>tp{ zjuO?isXjz?=WXDqE<8qQ&*6cJ3KFHbngw|*&h}|5ymmnoW(+iO?T=YsG{*bQQgjKGb&TbW&_~7HW-C{I%gjrKLq<^o1@{x zAD<1L`QK`TX-F3sn?`+^&x#GOoOLb|0`+4`3(Q~b$HW}RQ}J+?So6=o&md}Tu;!nK z&EnLFc*X}VB~ZCBazB#Dyv6wEWId$70%guwv`R3wxhEoKD1%c$!YImk#%jV?&b}3XeG5R`+J9^X*s(s8mxIZBvwJILr5BWzkn4=$7{cU+d3n? zja%`wzzRhi=E*lEmA%}>9`7x>dD?TJqG)4!nHv>d3iPV$scM%^ZK(R z_Nfe@{zK7ITK^U7dWz>r8a)?g911!foID*pvoss3ll@m$@5d8QafTm?ZWC`M(eC4- zso^FHFySV<;St!>&i3^Xn<&U@8*yfLO9XUz5fLz>i3n(ZF02t?&Y}E5#*6%&I5-&R z(>y7$DaF~-a1;kG!+GOiJ@zRMzJL=w#lgOalbioXp0!0VKAyER@iXXQy88U{v1y*Q zTL|D;dw`y`tK4Ue6#T5wS%33cqf=Acn1~)l&)WTnyTACXC67Y@n~3dy^0@t@xPAxW zNqU|iit8TOr?{@cuQ#q~d>6%ay+==R{Rh~!|0B;E#T%YCigG8$bMd_G7)=c_(J+FZ zxAK?%;`5eVi~u(g3IF7g`zOyEmDyBk$n!&S@Ejb)!K-lIIQSC#6bE0!iJrzZ!~ij; zF=4kzKkw#wF}oOfUNOqHn91{sGiy0GM^y`3`5|rp;qpyw;S7<+I&%JJJ8is<|e2jUu3G+ zFg34X7`3q_(*(F;Su7RH;>^whHy$anO^dkp$^MlxfYR1MaJRux-$;A>jxg_9Be0Kn z4_uF5Nqdx5iBX<#kB?J%em2Z7f>`y*YmsA8d5%fsIYnjk zjfk>Fl-BQ}vVdSDU#mPQ}8m4y6Vomn$m32$LS!Yo0+rwz*t8TyE6M zxLiBFoLwbvk5%p?N_S^hrG}bp@&L!rqWnaDbzUOB6tmu)(XO3vKco#8b#1r|UfNxK z)s~`CbJ1kmL}?<)b;m@hsXP|Gf^j9kAtE&|HR=ik@!Sg$#0m}~tq)qogG{hIL|*Ug zHG3nO*;ROSFf$43lG|P67P@5ILZYP3?vkn{Gvp?6$qX2X5U^8{C#8(K1g)W6*#CG* zBHp9c?qYXFHE%FH?_{U!&MB-Q#P7>1@yd%`=Y6?zigumhDsnp3dx-a5;h2lAo=Ocf zHq2gg5$=?p)otM!4mh452=uICE>M|`ZFyR&NYlk=y3oR;xHEpJ2VkqHE&k!nyeQ^e z7q8}t7%fa1qlHOxX<Q?p4O_RdpD& zxf4>JMA1lW7q!AavVFu!l5Ka#Ag4G6>S5K^wzO*NORzk4v1)58Z5W|9e!JTETkSM{ z;BuTPcXM#S?v|M;yBQPZUVKUomF8k1TB0{E5iU*87}FimJRuKbqM)c_!^LExj(!u# z^4H~UvGjGhW1^x&fyYE$H#3np=wzadFgGMG4$Q?`GtQ8>mTj?SOH0RFd)`;(|TclHux1j9>o5m;E($_t-CRc^!WAqLwr8?tv>!R_Nko3hc`0x zwJ`Os@Oz+-Z-n-IoO7;^QyDuA3~P*J_;Vljsf=BLUnyg;8TbJI=(^*wGxfw5fKT!9 zS=jFnezlJ;$3B7?xU&gP{m)M{!P|qs)&%bjzOD(r9rzC(PIZJ&vA=}s2;I^zxOIf~ zb~Wk<)u4_t|>gOrwKSd;)t0i%@JzvGul1@S2RZ7XOZYjwg zbWIJ=f}Tjz1w9=J7j^c7UlS2%fq6!fiLLqSh(e_9ZjAhwl)zO5YfRx;!lCC0k?vYSrIVx161WRD*|rrLs?WtMSx9&_d`Ths1&b> znURHxK!=8N$V46dPpeb}P+}KJiS1Sd*hKVUq|E5zBG&|+OvGilggLV!P(~GjvW$uV zdy18Ye4b`_;#LIAqv1~!{)nOde-|oL1cqUBE0tS+wH|O5&Y|-D8aQux-vb#EmG|4= z*IQ1v!2S$ytTURyKf@hU+YHK_3|@+Cn#%j*@$2=6IF`WiO9Q#z>UyomJdH)pl>AJl<NIg-x+^zv-PM?MZi||!D$&AaJ}t=&cGAFww3ijf@t<+rS?tZ4Pj@-z zI@I>7OwJpFp!|)%T&IQ1%`5U9n+DM4Hq+ZN>{^?mg!4CDGx)DOx0Jrlg`+XJoe=Ly z{Ejg7cS`rv|AQ~HWIQJ{WS!Feh4__pPw56zRs&0sZi>;Gmww4jIr+AYlw%|1=w zA5E&yiDH>e8=);K#Dzy7qVW+{Ow4e;#9~@;X(V}7o%j`X+cKk>enp}f#LIpah+hRB zznmmSeo@csdedwXJ!q6@O?#`w(GZ=pl#*?Uxv>y5 zly3c#FKtP5B4A+OC2d1Sk18rCS<5j5;f^9^l(KRo}#qjU+`F17CKSt#U*z6HFuian7KG~i6`o->KU*cDieM9M0 zVqeUWfqnnM{21pw1oI8Lcf?}I{T=&Ky&EP&rsQpWBMNhEu@S&Eo@Z)DMnTxb)Rli? zyL#B;GB~g8Zo)p0Co<$6V_-d0mZ#LyF%7>rrr;FhQEZPyrsLT+td5?2skQt zz5HtI9}HK3`1EpQP=QO}WSvLxXD-;2aHtt)=ywDA25zK}Zwp4>lGzOo_I1P43ET8t zshK{G8f%~djJ_L`XY?`$WK(6aNx#nXfMLAe@%rQFfxw`{rXGkC@y(xyLiUf+^EzDb zB~H&yLdIeNXf{lsZ;j_tpi3Dez+-67DtDGWiefs)W+{Tw2Kv14bw+bmp>tMCEbd)` z(-RTrtjttHQ;dqjb^$u6oNE<0XO&?ANj{6Fj%=2)D2<_6EkA+L$Z_&J-#M!kpC#b4 zvYoRsQy2}O7#q!Y++{$~IWL(I+*qnQah7>mLu znCUj&XT-^=sJ#mvR8$A0v_|Q$8=N=o6Q2UNZxj4HuuGfZ&w;(t1gAbFYJc+kPu+bo z_Dh~Ey6$xFS#aKGg*d%?U)}`AK;r;jy*GPSobof*eO~BUqQ79s!slx1x}e`JWA25c zFLTQqufBSV`eLKc=K7Q4f3{VT!U?zIVUmL0JiwbO3!B#Wh5pW_^tnbK-<8h?`-M#hOHd`X)DLSGsk`Q z!*T*$?rO>&Up1{C1O4)*^y`g27+8Tc@+>5F6pxL0j?D};MQTm(OSN`g`fM#nj)1S!9C zPBA$}pYEpy=UjdB!t<1?Z(ev-xccUW=V4dhyzt!b>YEpyyIpmpasL}g(!{L!4QUCqjf6Ril&xh2wEq%bJVmp z;iZxLAL5Or;nJzqiEzcnsWGSj)Vyh7xyBUaIvI}vi zes!oDzBj;sLij8*zQSFv9O`2+&Xg=L+MXEt#xJpthFvxh?dJp3eDrX3VQRK z+o&Es32(a@@1h0pOW#E=aO&6F;U1}-VJsZgf5kq1unjW?_Js4=4RumpN9s5qKL`8d zkJP)xAF8{b1$Q?b$|l!;y4F2#Ps33?R_)*M7pl)u`d9%zlgd9UjW>2@{u1UZ!m|Hl zzG7+W7rbY>ZJ5oUqqvz-$+~1^deQe9SK6PEUa0-qoe$a?_d_$M?fN`E#&2F1E&Q;56gBwkCd!ab8NWh zvPxg8o)DCeQPYHAe72yxtYIev$`1JkmpFZPr13S81C?NXUi{FEiqkB9Rw*&i(@J@d z=_hCpD^fgF!Fl7m2>TS@L*TseJr4VA;12NdBe75Z&@(6gnAbI|kI~x1UntNP@%KHw zKNMg_NP&~3VtUr^2cSPIM?X5jz-eGcpyLsICo3NTZ&AAx{+k}eD2%c%jN*KzqG293 z`3$o#t(}L(rSr@cA{O2{e#0|WJ=Tt6D0kfOFcu?BZ6KZ-3F4F6f$*B6^a|N!4U6>x z54jh}c27R9R;184fIm=sU7!|MYr!5{g>e{qQLCL(h3@({tW0v*#R#d_Cv=rQ5YX zmt1yV8L!t@ijF?PG}@a&sqbMe49xC}(OzUPx9IER_+a;OJm?)vf8ol@AurFA_crq0 zj=Wbe{iQ2!33Mh2uDlfT(oA^|Bk$qJ zy9d+XxbhOnOETqV(u(cOS+TnnwXnO{ee3GsOgY<)Myu78PVJV5Bi(rL`RrYT@BGEI~S zrZFSO+&_kCCW`DX$->TfHV!OF?G8y%wi_|-xJJG?eDkw=*M{gj+&h0%Hd;AH()*+g zD^HYRG+BZZ@S2N}=Ikydsn^KAP-z^a-iEX$R#=hT*)E`eo$-mr4Y-+3cBk}r6ri#4%2_9S5O<6NH$Z3}R{>2O$SR$jJE9X*+%UGWP^h!Ym2OLVe?yA8z_nuz<#H*os$H*jJA7@%6dJAUb# zIC(kY?)hP?g%sx73)44n!tPkv{V5&yb36`U1GOJ_@h{4A%q3}y;)g08n`LlV1FpL1 zIRjEppfZQbB&z#*%b&T}N8>S%+w*c-(U$nla9;kh;qUr5^}03YAO z@cn)K2JBOLht+m6{P`36RAK_N;kB30caWh!3;R^JqHp+m!`U6< z4auK@`1SJk*zXQL!N(KWCx2v(RqY^wZ;kJER0mf`-sMtNGA7jo-y zA*UY48F*pHsmC>av>?RQxO%&=&MuIFftWNngsheiYKmj7nqX)imjm=|So+$Qek2YR zn~9V`J0E&&I1$@U&Bm$jRm|kckf`ys4C9-2Ts(}S!4ly##(jqB!|}#=NxU)Q3@TYo zpUp_^gKVMXz*HT*wPO5=)i^O5t%nIbpr$qz#%kxdZuDK$GW|>Dn~_Ftu4o1q;s!Ve zMhhs_GHcc&{|hvnh0sP*ZpqTHRzj~IeJsP2xDb~yC3#!$w8?CPAQhNqKnw~+?Buv> zSX_sAO~O3|M|~ZV#_9d=0XUj|=S`cm#(i&a>L>AXpa2cYCMRhS$&vr4Oe81Vc|SSk zXG&l4x67g_9itOZ|NfUJtwXC$AN9v>GY3x&6`pzQ9}^CoIdT0e3`G3p$*eRx+15elq-Y>7EEaeZH?=+HBKgx)p7fn#vpZ>g>qPygT+blG+cb-fts zdf6s%#WL%9IOJr>uBAN-%yazZcxxEZG#-1W5bYF9{Xog4S2sHnL>D}lo%{`#)F|*y zu7?qm=SQ6M5H^*R96M@1T_2iceSn z#}7{V?y-N+YySzG+au%nIM*Ji+VGznc}US1U&hC&y>A(genxq)BuFP+NiSrX zWAG!ysdz`x7L?ipkBo&w^>9vg1yj*m6Ok$lWnWaLVQ`UCafd%#aUVpdUqa(o4LFtR4gBndScFTzlc*D^VB@dl;Q;%)8Ls)i$ll)qOys2_6+n2_S z|AylqBD|?L;qS(RxI6~~561y3i81%-(iA2*ISY>kQ)Lv4Jvyb%3W1$Cu5Jue z9c*U@X?9Dh05O)^IJtS(!Z^B?@ZhgpDT=RcZ7ij>Ei~Pt*x_$yQaj^eaCmhHpoHdm zOS|B=8ZHeNg`={S^c~>noo56b8ZG!ehxlV~lx{wNBY#%G(Q`~3mkWFj=kq#^5gH^zjB{kp&HW`dy`PSMc|1qB4VjU!SC{vi4N-W6vqr*Ze zw8d~$%g--!Io32IG5+viXQwW84*2z#7(LaaeuXv`L_Idu0UPMY!(tt#=@zR$Cg~oy zGw*M&0EsU69dJD~l59^4&mBtb8vcbIWax9dKpU<)dbdcn~<8pRd0H&ER5fEx}+bqeA1j7*2S*T*S; zAb(zl^ZK(M`;;cWfD?Zx4lc+3OsDTUB-ZEeDzWkZLH~97XEY&{a38icpDdQz5till z0=8T8`?I(Btq`#Vy}NdY8|1k+vRxfq67E1axo6@>!I6!QhZ7t5Y?1xH*%m>RA+@m0 zCe#_6xZ{a!NvbPhbm$+z(tH!nYs(K#L*jirTS1*n6wkTcF&!4W z78TkZ%oE-L?N)`R-Ks-oyA=*OwQhRcxT(i<69sIipU7^XYJ&{DlikkzCe3e!`E6@{ z+uQBzBsyik5MxC3r=L7sDFfwTBbQIU;R70m_l9cCvWoNuuq&F2@**B4#; zR+zV(3b!eZ)&Hbx%*`r0IDQB04w(&aZY8-4cg@Fs90~DcIBy;`51iHpyTZq*zPUXZ%~AI1_XVf< zFE98w)fGT+KfMWl5cuLI z_yTb11M~ZX_uIfjP4FwgU+{3M<5Hhpgz}VFI^yOjn0IaRlz%e!TCzMl9I10YuvXXQ zH_G$E)#GWBb!-h1rGJvOc5HA6xN~C}RV5mrHdTptuvxL6Cd@>bdpv7{vg6X2`0v<2uir)!bRbR6X=w1b8^$qpfrhg`;Tz5w`AO`oBf%7mjF6m zP>0kJ0PgMBv_;|9y01B>D}4MXY4#$VzYb2)Af?Ig;VA7>`(+dNPk*RW_%%g@x_;?Q^^}&p(6TRIxgPO2s;LyBKr?)@)qnil-lN~ zs5kM4UbYn02Bbv=sL~wA^wtofatfjn%dsIUu|(z+ip-Lan;V%&Lun#&H8ztE!W5cv z-LfsS1J8|PPeROyW7h<<&V`9%e0i2`9?5bvk^?W4?9JRb&X@hYeCk33n(FbJ;Jk58 z`PWJ~>DQHVm7YaP3*GVSO$%d8TByUX*B|0G^t*dF^|wwy+*y=HO43-e+dR{`b_?@N zx4<)<%ayuLn1nRL`w-xent{zy;_L@7Khl#%;`yPXVv|S?`NT~mr(u&5M#xDtSId63 zvwx55V;UqfHIsU_eCL+km9~LWcba%?!w(J=49$wOFbj0yD@3g7Wout z+}0#@b7B7#-F#+L2S6}=Y_fP4W=7D-Z-easN6&*-{~XvV zxJ!KeF|hC8ZufC&XD9@F#>eUTI~Qz?kAH=Idj8M~kn#MXD~0po1b)5YAx_UM-ooq*+?8peHwlpXh_?4pP%zr!31JQZQ*t>r84_VNxUO;!8S)M)He z`9IdDCr<5WG;UA)p>iL?fT_VbVcTgeeq{3Wn4K_bB!M&{-(N^%rV$+Sr4i3kRb(X- z&pFvxs*AmAcpC9)%6&HrH(9!7;f0R+upWGBrx+DGda4*Bn^KnY=G^b^ek6(&?3gyRarAXtuOb7&~>f@?||nGv%j%YzLSSyh%rVan(Z=-7% zb_SWz0uVtO`cO~vyXiB;b@h=Tyl@VOgS18p4@aYU)E=&Rv(rgUJn9Jr@qS8QwdagO27+6w+y|OcAIXNgvP4hR2kUcZ53>?ozl%;XZ<+ z29a)XwCwW{aF@e94)-Y>Naaa5v4MziwpMv`w4jsUOK5&>@5Lf_r4cxPEU%@4C z$5??Yum{{iI9jZ9CET}g#R$wmxV_*`fLjXp5*#f6UK&PXh1(nMWVl=4(3ukW8Lm7M z2n>ar4tE;dZE&x{ZGdYNMdv5nQnb)FToO;nNVo&x&W5`i?p?Tz za2;ZfKV$HF5FEY%61Wd;HCz^AtP|W=xVdl_!aWH00bD2-owIN|z|DiZ1nv>Ib#Re9 zbUecC1a~;xVz?D>pTNbCJM@5SD(uASaqK9#EB}pVOXvP4_>;Kqdbm8KQ1R~=&o;5% z*xwEAYPe_MzJx18O790J=lu8g|2$sPi6-~sXS`usJS1^N0lN;r(jPJJ+Ewg7OhlJBcd0Sb!5?t3W`L8EKV-B=|~Fr%L={$;JbT8*?TNn zrQmrHy{haU7QLq6IuX6D>>L)op&%`yHyM93`UfmF>qOl*AI_^&_emS7ooV=r;u`MD)9|Wi0wb!D12psq7RMZB%f$h&CzPhedc%5EJYqB7C(> z*bo+33aUjER942Kkb;PavX%Xa>X?-dD_94>CWt6|nMF|rkBBHo*-b2pDY!&Lab+j6 zC|AKe5#=eH%A$M)JBX-2*)}XHRM16431uxBI>2=X%_WXaJPv1C|km!z6#D3 zQ9ot#S=3*_fg&29Y@%N@QbaW>>cygg3X&q)Mp-V4JSO;kt}($N6@3O~rSbkFCU{Fk zLzF$iqHPu2AtHS2UQWD%MYRgf5YaGYN3sZCrj)a0h-kR7U08%Ka*Aj>5sg&VokgP* zv=Py0WjQPwqhP}vV}k9KeGF!$>lC~$B7CGwg76rN#woZ>MB|lR#-be*oF<|jl^w>S z2@0l*XeVV8ShTZ(p(5HvS(RT@E~0uBg;}(#f}amICYY$~Loh47n}Ss$nxyPu7EM-g zi->ktb}@_gP;jz{rYLJ*(VhzS7SUeH#`zd%yMEfgyfJHMDEEUmAWf!pM00k$A=s;z2STsw)ULu;Utd2zoDHtfC zgOydXXpVwn5zSRbpJ}nuhbZ`VwlP72viHHP^gIPCMRcgLds%dtg6lPelW&b*WOt4tNrvPk%%ay&xqAL_UE}|=y-O8e?6kIN% zCCW}^k;j-vi0En+?aQKT6znXbYn5%wqU#iN6Vdg`TC(T{1yK>*sO+biWP+s%J_2A9 z+@$Ok7Tv7iQ4!su>}D1%Q*fz>ZdG;?i*8eJsEBS?HjPEg73?UYJCqG#(VYsqis&w7 zB`msILAHqQQTF`|GQqtH)&j5z?o;+6i|$wOkcb{ob|Z@(RB(}q9#VEZiyl^Rh=?9h zwkL}oRWMFOk14BR(Fz5fMfA9`A{ITNzyb&+uiJ!1dmAn6&gP(XXowFcBO6~ajrM2@ zZ?e(8=Cb{bah_B!ZwEs|n1U-s^t7@?EP6)4Q6hR)*?uf~PC>nho>x}OqLm7Ii0B1n ztyuJ;f|!Wxh+9GUWj_jdk%CVEg2|p8mmfEzYfsr6^ji-sb-n<@B(S6Tg@<#gY8B7-9 zP;DOsgwxh5K)QVK?fFa= zmLqr+%p?W#3_0(0m0j&W?;H`mq@rV3^s<6kBKl6*ZY=sQ)ZeT_wa(91syW~F~raIc7dQg#iCepYaIw20nsCZz|Xy0QpE1>6?c0Ih%uMG<`7n z+wYRTOHKNIXc|VHZ^3nihK}uMe*HQ$gEe{XrQkL9;zZ63-qN7G0EW+;D0omr?@G%4`;Ws2~df*;rQKIFlFC zrpb#fn4a?DApIhfL*MjqwKq;R<|xzXd>G71w^VS8h(6XUUCg3S6r3!gb;=r8^pS$S zMT8D#dF;lssFi}j0Kp{IQ8{jiQ;N_gg}fF0BIKcLPwX!u} zR=SOX7e$m*c0Y^SDYy{;X*RH&Ltx>zc9xu1NaK~9ezS#qUP8ef5n+`~5$(Yu46YMU zCn7B1C9FS-iWF1=AOuO2$;W5Q=AfNE(P&xoj_vO8H+so-i6by9XFi#jVfMnoxPGg;I{!EPezs%$umsuc7V5v@sR zp0Kto>ZTx1M40s?qF;9>6ZBB99)L~IQ`s9V>ZRaG5%pGfJB#`#xKc!Yl`UdXKLtmL zsK2uPSTsOEy@+a*)v{=yf*vB;Mp-Ks4N?#j(O_l2OePZyQSb=>n_ydIud-;Uf)ygF zRkn;p7}G1(T`Z#Ql%2w&;R+5H(FkSxuxO-$okTQB*$@_uR!}XXG0MtVw7r6ei0YL6 zIEhR!R>3*|Ho-V$FSBU8f=5KOgR+}gw4;Jc0D{SlA4s-~ey1kiDJk3aXRGH=#E7*2 zI@bn&wb+niqN(iuKQ%C}<}5@ICzS~r>DPi;>75juC!(E|9m}F!6dWX?dS#PYgpq&p zNR1KEL}h(hw3~tsBATSEfJKuPY~0lZe0ODEfLZB16uc{j2 z-V)J)%AR1+ECqLnXtuH|SagtrGemT-vLjhEN5Kpc%~iGwiw;q+oroHgb!X8$1#Luh zsInXu9j0KzF2)3hEBhGCN*|%%brBt@>@gM{rQkLZVT`Jz*2`ElU%_c2I!4)HELxyo zx`>WdHi1QH1w%!&P+1j=j#E%BqT`i?S#*MepLaGUI8oV$U{?Ah1*=4Kva*L+bc%vo zM0BdMi&=Dy(|#qU#kb6wwXJ zX0zx<1$&5Ssj|^5x=BHQ5#6k;J&SHpkPy)_Wq+bw#7f_);41(w%5GEk4vTJA@GL+u z8EB8UOB5Vtb5K{_+|(%5oV>qK&G8oNHA5u~%k`4=9ELj-3>VRz%6hQqE(L8xbhok? zi|$eI>kj6Y?^X5*n3cXy!5bpFU)c&4J)q!r5k07EF^e8jut-D?D?6M;k0{trM2{-l ziA9eos1?x)Wz{TtTtO=lJ)tbZq9+ynGTxZrDP`-xtn||gUKP?(~{gQ%45xuNzC5v8B z@PLR`DZ8FUuPV4eM6W4Z$fDO3%n{KW%JyK*zEP7i(rHI~9mSEAl3TS!^ zKkM%)`)Vwi;C%(}1F&edvS(T33DdnITBD+CSk$QCToHYsYypebDwr*z50y<~(K-dA zMf8!fJ}mlJL3qAZ_9pDOsXjuKgI2jpZ|<;v!uIlOtho5=3|n>pG4jWc(=Gjtk9 zW6Ifo-T(DAXlkZa&AW(Ley~5&$Ke|=E4^O98WDZ2?0FV_q2PWIeW~m^7Ja4Qd=Y)E zEX|^C6dWv~Z=+jPpOx*>%pvaNWt48!n!*mdXhz0Fi60iBEq6h!meZyR*n;JrigNs z9mOInBPpVpB8n@kXHl+#;UdaY)`LZu4=Fyi6%kfN78di1ejQ;-MQEL@-@r%ktgvrVh zcOk#%$L)*>+N$USunZHtETRe(J?IzRB%-8>F7%5|6j3`B&Gn0>im1Jc#`;CuhzJw3 z?w;_?|>HZjieZq&QM6`-U zyDNB1M0+T^g+)^oTqdGDm7UC@y%ZcKqN&REX3;bS6GXJPvcW9!7mMgXWhby`mVyQm%~rM-iw;sS zUPK2g8_1$L3Q{7PtE`wshbRb&s6pAcHDrQ$3K{{}1cxeH$)dv)JRqXOm0i!GBNSX9 zq9c_pWYJLy=7{KMWqYt_zJfXt9iyy2i_pg{Nwrc$$0|#(D6JqMqJ_%78bBuSq^I`* z*aXL^=vfvWui#!0ouKR*7M-ZzToIk5Yypc-Rxn#crzo4mqEi)&7SU?yzKE)kuhqN`YRu7a~fbe^)KS>&LIo8fx=2~vFZ!*YF~P+u`V`DcU!vem5nZb6aTa+3z8nC94tt_8 zbrHthI-7%b=gn8%mx>Fm0hf)+3-JG^mO*;6XCTlV_dl^*lDE;dsm8jdmPPtMwIq_? zCbC45cPS+AvP81{5G_m8)DlGg23OGn-=Bgz0PZZfyWrk|qggHOO9Fw>aI@jgg}WE- zeK=Y;tP-vcZVuc9a1X#W!Uf9$ffU?$xCXe3;U0$j5H8#j>(s$bfIAHCGPuX!K8DLF z$NIK#yTBa@cLm%NaG$~Dw!)g3a1-I?!!3b(8tx0Yg4Xy(B-~`UW8toadk*evIJ?ci zPsamrd{(x)OJ`flMHw*3@xO?FI>CM0Y z9yFWaI(EQ1`fvxsoey_E+!{EmV<6BOZXDbpa2LTn1h*D0yAt^h+>UUE!d(hivkC#{ z67Dk1+dcuyC=!K((G@B>+%MWsL|3Y4Cl+0$pjJdnlvT6n zY6Y!Cbd9nIi>_7hOAlj$>y)hnv(ncqcvVCSr-=FuAodr%aw&#bccc;yBibSsq6zVEA0`zETX$q^dO7w zR&bMu?ooCji|$o$qKNKOHkU>BE0`*x2b7Iv(Sr)M5z#}+I{8H{MD(zVvRL$pg73N+ z6FjPHHJFutOu-8xTA}Pd7Co-u1`$1>>^v4dso*#fJ*Dg*7Co(Ciin<3HikvdDi|Q5 z=ah9|(enyy5v^3Vv6}Ag1qELNa9;4DvUgeJiI(R?^pcA1W|1cqTq~lNRdhCsUQuwY zh*l{(kVUU5m@J~#l#OK3>k9gc=nZ8_zos3`Dl)-a3cdhf6TGeLEf&3_;As)P ztLzRIy{BM_h~8Ir28&iJm@lF=%4V>rQNctJeV}YR7Ohp#OGF-3UWpCk+Kb_ zidyN96?_K3Ciq0z>n!?I!4o3-OxbOI(G?3-2JBKlHALs|5d zg6<;vT3I=ZrYOh}(KpI|?m{N`R>8*rY=ZBUtzyyl3LX>D56W)wi!Kwn>zf@Gpq74edBKlR?4=FOiZwfvHU=#eV>?Iccq2OT= z{i$pzi#95_SVWtYo#6MWK}1-+R$k-xVo{cY@glO64P;SJK}tj+WyLJYRuB|XSlPFo z$pjGvjR0(dsIrwT%2Duuh+@jFXHi_i1tQ8-wva`b3n#ZbM@0F`_Fz$gf;tfuD(lZ8 zEOskCRf@<~mhg)LA}UhRSDnZN#R}dBU=y@Z_N-rYuZT)ibPbD26`U)gGGz-` zMbuJ7lUP))V6=!@DeJ?c)(YB-sEx9G7PVFICn~^vcNNM$2eZ;i1@DNcowBD`)Ly|| zBI=;*Di(Q$Zk#2ejw(8uMU@H;5K$*(yRxXWf)OH0DeK9iE($6{)KyuWMO6xZ!+Qan zpjz3dU{<=Df;UCfUD@L->Y-q{i0~ByNr;!TsF#A%Mbul_5iIJXV1E(yRkkyW`Y9MD zBFtlv%XMSX00pf@RHH1)qJawjh1VuF!8Xc1qF1T(AO)|9Xt1(JSu{k!ts>f1*`+KR zs^C-+)haubMZ*;AE28a`?Z~3x3bqx|2xVPaG*UrJ5sgxo&7#o?e!?3in_!HxwP03y zdj+qEs7~2KEE=oeW)Y23b`gulD>z9+J19GZMLQ~(CZY+-#<6H81%pJiv$D=C+C@Q$ zi0YMDEZSAU_jn;^6HHXL1`M4i3SJb^BxU#eMK_9QvWm`U(e4V47ttQd4rb951$&BU zPi5P)XfFjdBATkKqhC}cqG>AHgysn=y|;pI0N4ckD0`1Z`zm-|MAMbs!=n8ZTqmOa zm7U`krA0JDMYC8mQ^D>cIzZVd79FUdpNM8DYsaG53JOJZkg`9}f@7r*R`4YNn_!Nz zw^=k-!80N{MA@Bw(bXbqP|=xw(J>;Lr=ppD(QYC-R7JyCbeMwPB05}ITNWLmAWuX` zD*F`;Tvqxh1?vIW1V<}-gGKWdJSn1Ml-?RgnqTmt{U8?Lv7G0)bo`@DJo64fg73?6QE0k@+qAL}25z$r3 zTCiw|f{=)=R`wlQmaX(P3O)c}6I`q81r~Xd%7Y@hPDMAc=z0Ygis%Mq$Fb-}1#?BT zRM`|3-K1cwh;CLkfJL_`=p>?L%4`P{~qURO-jxHKD!AfPHfuUJY!CNAFQP~qLdP%_@B6?Zb6)bv1!5Jc2 zrR+!+y{ce_h+b2+3yWS?u$_qBP}ZGAZz^abqPLXgu;^_C8_W73Wkbkow6zxeWajVL?0^) zv*;5AKcj<>P4KC*55cVTX9`w{XuYzBS@gMrTSWAQvWr>trGk@1^p&y(7JaQ?ZxMZ? zY&?s;RWMjY-ziJ6=z9gFBKkpDkVQW#_yK*NY=WPZHG)~`pB2zre=Pb%*#j*4mx84t z+Mw(L7X7N=1QGqFYz~WlSFo3e{!muOqCXW36wyXyl`Pt%pjbp0dmt~%0TyK`_!eEm ze0P?z_ra`mP{B$Og_PaPqHG1%izuw@Toy$XEEG{x*=!c&DA+?pF=eA!6j#t+M7he^ zvnWqNLPYt>{zON)l`c^56#$!{P}w_v(X%2-sOT;h*$S=^QIWEbV+Y#56=Dd;Jp&dOS|D5W4SqAtq*l^_#zRq!bQ zo1jYBYb>f(@VJP&DZ7KBM~JAGvVB?9TfxpE>Z5F17WGxoO+@{a zwPaC$1yKG%(GUfPifCJ9 z(^xcA!Hy!TRW^u4!xVHC(RRv8STtNgwunY3`@VooFjB!<05-uWWiPU5w1S63G)CEt zEZSbdMIx$Gc07y5DmX+$`O2!y{CfrM6{Q(XIL~`4~QR&b|? z4pMd{iw;(BrikV!JBmef70eXTA@!T*0q#V}c`; zeFA2sk5ur6h>lXWf<;FwxLri^l`Uq`F$xxmXo0fBS#+#|{X~>jwiAmMDyS9FamuP$ zbi9IA02ql{i$SR$WXa|r`ZzY0WP3#hrN#oyACy{i71W$5oS>Jv8_Y_dsNh-=ouuq+ z7M-l%SP`9~>_8Tss$jB+PE$6LMT->l718O+k}NtyL4k<$*4r(lVQ&R0fX7)CRjg83r4P}vL?U8G>5h%Q#P9g8ke&FX4H2Ea++ zdSS1Wykf+qlA?ww$6+c7sb2d#s7@nGF9=FZ-NxodWpYuu<_&f#k;Rj`+cZcA6wxipDp|Bl0Tz9CZs}HKSk4=_ben>2!$x$wGOW)G(Q*Y?Z{P9h4rTag0z`Kz zz~?7m20U&j4N0?cXmikxj-7};$acd1NoK|6tZ7&+c+X(cqTimulEl`OhfL9vMLQWjv*-3q=%Y;nAQs;e-+4~A9{1uFrtFf>9=!Ntx= z6kK?9QY~^e=lri!jt2zif2{zSmLvK?8A>CFzEps6-4U%lz%0aZ%}Myj8R$crL0krAr5{#snus1zb{LBubwSmP zP<1}WT`QPqrB~?Q7(V>Cf&o_g3Ek^rhk~J0g%t?rSvjduL42jTF@Iwi>yd@+P--+L zrL4v;?OM5wrIFI9)rm;O#;I{fVmXRv*TAs8xE}=V+G8;R7r(dS7cY^4k@)&Lar%1( zj2xQOnZIcMHdU_vA;0j&7vnvHfi5WMdISTBl9-ihL!l{+*>Pvfjs>xa3^d#+R2{eM zm=oNp91EC34m1JZneG-1b<19}6j!lxf)$0SoxzH-6WMk&wG(ZI>_{5Lekc)2wWb@l z!#U}WR7!rI6$s~A(G*7id(03vW(czxTP5ufC|alWbY9TVSJlL*y;b`;-niSKwYiD^dZsj)DAlUYMr zq5|P;4*K45HWvnlTm?UgE({E!H4A8SLSV?sfNT!B#%!WAZ=j<+1Kr2dZ(*Q&ihh%U zTD)1~c}uzVqfokwyIq53931TAf>64%yIs?d4|a7yC|%`l*OcKPU7QcqVleHQr zYXfeatT1u1!rat3CQg1)=m% zcf009lZaLYYL8-Ft$Qq#9_DV>V0>9Ov1&2k*1bhaXE$Q<(s ztjHQP+HB6va-W8|S+3Gk8ySdvnyYRs&E(oRfbhm5z z;~-hS&>He=KsH?)e`jp`oeAtJ6WFy`wSPiwrKh<*h0=Sw+cj(XAYNqMJDKWk*F4Dw z_i;fey|24na{~@icmh@}|<)&PvaARiX4j?sipgG<~{zq4X?wyQ<7e&vf@f=>y#De_M$dMk9?7MEd&@IVU-9 zxuNxi>aVH35bSAjIY)Y{bPhge6}D1CPzH9Tx+#OTi|VgI{kuwd$P)F;4#0kkObpM~1g zVuA>)pJNP{;UO-k=>+JrQRoWb<*`7>Dqe7d z^K+x~v()*y$@#h2`MJgUS%x3f4);PhW8v!IC1;}6kyR897v*q(8g}?1FxSpW4Mm7k zFla0hPGRU3jz=37(V?gw3eUsm!NNydiO_;8;A=%Hg_Ui?xzXx)6xFn&upMuVm&6+* z(G=FD4X?H$3$BAM(yf)bYPNI9eqRRWCbIc5RTHerjp1x~I}e}a3oqcXgM^9TJ6+)g zd>b3X5d!$!7FB^4&^=l6$!}{upD~|QIjLiCRkGdwFd~f0whUlnW|LN?s9>`O{O6#; zHtYf?ou?3Klx}*#p_k3AD^nVz`r2?fZ$0i??4wUMkcG4$X_TH9s;_keqxK`O{w(a1 z{};E0tr!;?;M^AO{)4^~%3EN7eea%T-F+0m7uB`G&VUxD9GSe20_|lenF9_I{ zleSVJnAo*MmRK(<(|WEyHf>R&#Cyeb$5u&%jqarjocCVPOB3i0Hweyq?{(Nmw_RYe zkK_K>pF{8~{`l^F?*F!Xe-7zjCh`_LKYfVYJ93pg6Y+VTTqQ3v=5fdu^Z63D`5b|g zC9qcw@6f{;PGJ;f*qV=Sk5FnNHt~?Bk%=u}}HVO+Gzw%GVz7aC#=k zVt)pu%XqrMO_$jjrCs*lE$uk@u?0VnpZ?9XF&|cn#ZL04+LH!^Q`#8p;qji?f%_nyMQJ0Mp68~G7IsB)A;k4|1@f#G zCT&z?=213SR{b_TW?VQGWrtLY6 z^Gs^as_tTxi9~i$8%NFAW*bkonQ*er`BbSI*o%zJcQ>#THqGgU&Z&R=KkR)Ed{kGJ z|1f{v{LLiqO)?3ACV`Ul!Q>ARXd%!FLRy;TPlOZ#(n26<0}V->B$UdZM4>A*wANZ( zR7Cn`-L9f#T~ut@N(;8wMP=FA?J7prW!KbVOSM*9k@HJt)lZpg3Y+BZLD zI{EAzPY5GxRr!J1kk>GGs>M_h%T;Oa%=hU+1gcZ@sR1>pdaK3X=JbL1$I!)%-%{lg>txR=_H`!Q^6p68iw^FTPn%8_oP4W{> zw5d>}bx9^#l1iq5a`^V}Y&5m$s66bqlm{oCH{*FKt_PFc8}VEV_oGSfZ{qn5xGz9C zvX)OOw>faDPjYX=GnHF3gA;5zKHS6Qc2AOja;J3STQnwpvgv!^Cfk_pM!CH@ZA{13 zeUO%2$LE;QOt25L!I?^Xllq&m*k*o7E;L+Ee50{pJoU)LtuFT4_pXcQi8oS~TGSo@+FHfRkw+ddAP;%6N4hC?1v@I!9ZJ$(#> zqPn$geFfA%P0gNu4BFtW_$Oc#uCPxV+j%q8le?Ei7@M8$z#FB4up_rNlqE>1Sz&Fg z7S@-5h)?yDRBK~G1=<*GtSFh8ZrDX?CAB<^gk*<2JR%JGS6sZslwF# zWDEGE<%jaLe1o2w` zai!Gtliys9#gysyQnIdzTcgpii@Dk;?HZBips+@x2ewARxHSs7Br8PIQFXy8l08yg z$p+~fAz*jQCy}%eTO_Wy#tL_Eh#n&gq~yJ3r&uEcY0XFRsqp9uphDNfoMa%IP z<}}_*_v>FlGEAFwt)X7mCfYqy5lLG)1*&sGX2{o5D%+emXmsE532!E|gc zv8mn)2VO}1%g<)2(Kb?(d>wn*l77wjz)8+T$`dz)+T8awKA;~ZLS)m z1gQ|iN~1iX5=r7;NMlR%g(wZ8J2r~RX~m(4R;-navY6{sbGfj6K${R6uT4PmxdlJc zrH&Ntp75OI5P8t)ao6g|VkGFII}hC{bO!-P!oIL)_CG*E+GItai2Q_dg3fBU0{gt^ zQEif{_4VnY##! zg0!-#yxOWzR?w|xsVJ@>&XY|dY)Q+d zb2*nE^3Bdur1KPE-tsEmycCN~qqehAc4Xr@`%UC6!?c@;*{DLrQV7oL_!O8@Z0{L~ z`&@k*glQ(r%$x9AX7LLtntl^AOn!^BiKgFN6dXL=&@UT==SddNlQcX{>6bYo6_ZWR zBeltvR1AS*q6?)JsYaElDxpGcTTwHf2{NWT(b!Ls8F0xi(A_wV~043aH-DSYZXZIvi`M4g;oGxjQ~p(6wn(6RX3i zM!QU-JK|A%q(-KN(q^SW_1-yA?@=3E1>n>HvmSs+vK<3Vfce0;kP_UVf%~m+bD|w- zZNL8`+#AWOq-bkrF~C43&_9LeweVk# z>dzW)DcrD?!PcGRj+MMz&tnm6LOqWaIo$8Tx|;+#zQ}ijmULXAdUrVEJ^0g?MeSzNRMQ89e z9IfMPF#2)6D$%FtDpTi{mCnDyO^nl`{-u_U>I|{j<#L!|a55vYESo$h!3f*0Oh8-6 z9D0?xGYhmNq`D|e#(Ese;$YjdP)lC7Lw)j}0j#=7ZO|FepN|2o?w`gp(WkXA);8!f zc!v7*>GP92wLwqeYS5uRc`lysAl-C#ZZdQei=tS*HJXxJE5<&HG$m0p@g_+#<(ep) zCKg3uQI8mH`WRx>T%Cm;o3pA$b5-g1N~TgIUTQA=gOCd*5M|dSfB|@pJNioq5A%y= z&qSzN&$Xa{mQ8q~y(b5^`I)s8_$ntfOtM0VCDHh^H8nuw-E3wz~DL2sRDc+@be`1ckoQ~ zV*rCb$>;{i=ysBkzw=&0Mxm=S7S6p!LsI(?ujVx*9&8ubO6A124K~j{~aE6{K`_6coocFD3AV#W$Vp2k1~ZGWp1@B z7#dbd``^+dx2+fkdnwuE8J$}U`-4H53Tc!p&?di5w#h3JtukIES>+jqRi42{)Lyum zW+QY5rXfoF(UM==TH7*k|6y5i7I7TWzlXb8B<9?vqhmbXI_EY{n}&Y!H0zw(SnY<; z80`k@oLhmIbMq-x7);9-E0;of#Cht1Vx*9pL*}y_%r&12#d}39P{*p{)I80l=2wmP zgDcZNXE#SVVZCT$&&Zo9W0& zN@s4;^JpWT+3HAjlo}TEgXr2&$5t{m%N;5geErhfXgHR~8;()?Z;X{2St9w9 zN<*qvYGr7KR)T5R5-UT47~)LRimeO{m<)yd(Tby$YZ!w!;i|D2ZFS6+)y-*&xmscTZ+O&$qmcChvHM&b2v61OWrZHjm z-l5M^z|3&_pVqSe5MZt2NPVgM`(H`!n8dQ(4){%y`v%#r+?v$xT!H6u_@y;BR{FQ# zc`4jKpXB}rJlDbf4is{$|7Y>c=}dB``3_EJk~_`&aypaTufsSF^=0qF)k>e*&G>?r z?cbB!aq2zS^*A%$tm}zyejt#xrQvF&L+&)ra*f5E=2a&nUo~XYJ)K)ko9@ztBGqVa z*mPsfkUP<)<5i-~!SYnLoi^N%ayas8QNH3U&x&EoXzC)zzL^?LVYj}L`mvE&)&*&X zC-_b9WGq{iJ>41aK*OCp&=`rBJ>fLWeiU>em(kOBkB+L@6Bf(NBH5x4$Z5XGzqPfB zVr8nWr9+<3>^Cz@9Ffg_v;8&}F;crL0x;TLU^DZ-zjb3I(?bATl8&Y0nds!;YS5v+ z?7zZo3CT$5+-ArqO%n@vF**<*Z*V0_2yc=kWa-0`goHfw+Xom942ZlWl!K)g`;-H@zQ~3l(S&kf zGJ`mlR0T-VrW!~Z!(T(U4l?usXx!T>V;TpdwRJR(ZFQ$|^)jFUvbMUH;hA(|8m@*; zQ2AVpXR?*a>o>`rY$cs_VbGy5X&Pht0O^psv&+;Wmv!LJw3S02`QwErKE=VSKa}Xx zkcn8J;lvvM7If)+(H^+9JczrNPXleG)n@kSJ8;}etIXsrtuD*<_Y}(ZgEV!{-`QHd z@l_*oU@*Se-eMRMLmP2u?P~S=>vcG;B9C<4QdrR{cXLLNi_(y)rIhL=D4Oj*0aiKu z3eO~m-vg|2*pFvu3+;dSs3C`|vo>ur?WvJ#(qUHV$>D7IDMVwkWC)ugQmJFcA&<=f zD?hg4nfUS7fH*&#wqN3Tfv^wT4Srmed4Ysh)J>WTJF;C4t|8=Tu$;y5%SoJ1L#xCj zj+ny{;gy#E1OuHVBNLYVqlrc%SuHpsB+lHyn*$8>oBCFOd*aJ@fWa3k#{-S^(>NB5 zeLe%Q^7kb?6CG;z7`G7zx)264gBXIg zEceljhN;F?mbJY({i_I|WuW7j;gr2JRrJEpItZfk7!=K4S_jB;dLhLUJ?%ydI)kpD z5_AVWnhkS^4y?-=p?ffPAv;_y<-t(E5i(?Rf=awUz7{8%_dl|$owR*}Cf`I#RgbD* z9?t7=x8SrGCFmWD2rZMI2^L*7nll>RQTt`WY#3mY(@5eSfMjZw$8+RKHg z^Tg^UjVC69UWZtO$k1{CeXWeQB79L@V zk)luKcky*c=|Rwfhjg*%$ems5cdO3HhiS!;>dC7`!n_!Q@G6eEE3o=V<~ta4ixo#Q z^AAzxGvgf@tluETkiOD_0W5-qEFwV<2MYw#uy8RzDG$I;8fJ~ELT*|>RS8xo04#*} zV&EefsP?G-MUNt!s?>&j!8APks`h!ZYXhnasY5drsiTM_5f7G29W%|Z9DlNDIf)I# z98USbC6N*TDKq}T(H}hs`n0Ucpnr0R^mDF6U#`b8=$|m@_s_pflV1PtGtBpc%YVT1 zKQMo3?$b!$@hhayW76|U`8)Df*sE$W^$HTP!lN?0liRION9a?wjy0%CF=>`vfwG{u zROxkavIdp<`10Gv{%em(pBJfd0%L_o%=DS@=UU@GJlOcxQ2dslGX7I${L>JB32ZaY zd8zedgr+KYg&Qj%-KBX-?s5!@V{>7KN0t%{k#iyyclpm8;#Q{j&=t~qaIooJ+kbjb zn(1AO^hRWQLr#%k)rl0V&eEGjl6h~>RCK*~=DS#d!9wN&Wcu}e#2;H9Yx4dGFAgGi-ZOxkG*MTeK@5#aD58Fcelg9}&f2KYp@b?Kbe)GMljiitJ z&G)9hWJ6g=WmsSL%J&W%Dlz`qs~q_SD}+MF3it4P>Pyw(?Rcv`z?V>no0a?mXheRF zFyqF~cm>NxM01Mo$inxei^&s|0{I3v^a6@wau@L!XCCF?p3-$Kz-Tv6dxG4H05<{B z0hQ<<3VZs9nO_RipFJ1sbKuk;Y-XVy?{-#IDbI(l6dv~YgCwc}!tXZuRfYKJXHVvf z-Q)}3S@~i&_(C`IA|aYMUx+U8g}}-eawonJSoy-41Bw+o*?y5ciFfo%DSZ=COH-`S zChe)yHU??Ag1xlU3YWOFC_l$#`53|DGnAh^i-%a@PAShT(kFY^5B;Nk=;tQT-!WMF zWWV~Mf8+}Ey9P_2>_f<&((2R+FA# zzp$~K7H~6xSmCAf$@O94`-@k2|MnH$U%0~i^YXou&pf$;eolxL9+LdNqJPpi_&+#U z|D-?ge_*iwNgv?u& ze$JJZ-d>X)OpC2Bp}xtG^-Vf@C#Y|@iblopmP1t0$VaTO@!jKNu2|#SBjX!LKkNJG zZ=!u!eFgpPy@Gz7qL?N(HDA1UzVYG<=PMX2$oGczA5(_ZqHutnF=%oI4nTwZa)-nEzu~!OoCu}Af`@4=&!={Ob^Ci(3-{yeC&G(OT&~R)#<3A+~QqnR&p264%ZsY zQD6)NGT?pr)JOH;!GSByG0+@AFMxEH4rHb=4{Do`|BnFP4|r9$@&1EY;UlbnB>!{- zMx)b|f114t%TU9r3zdMx0k=){2$qT)$3I)_a?h5P=LXP|nHBeUS z&P6M>3TH~nb)Fu#Y@?H?iCSS*R&9-g1wZ+;y(-}Jke+$5CV_h^tDU)|9l5MpbhL+1 zt*}yK+@lc}!bUjkkMf6Wpq?xiXo#~$0rv?=B76;LbTOr(kyLDu1V<6_A$HY=<~J5e zgsW=P(nny>L;ooT=Bh#}e5q>LbetlBF_1KZP7FMfwBK;ZTTm zHVh>-v^b;)HBJ+1Y)6uLuaBX}nHD`JO=C?~u{#N>>{HWlN{gY(VMv1XE#Lu-(k!Dh zWtUxkqD=ZG*GG?m5{-iH(0L6$p+h_;vKr51+oKkD+}fU!?x%4j{d^8r(ob@yag?9n zYS6*0?KQwY0z80)ye2+Y_>ifew;*tZML#oGKSvt+=~JrIyYyw6wy_stm=0Y6V2UO!Z@QNmW#TX(rC;%veqjZ2QTr{5-sIgMsxL zsj%wx{z2>Y$V9ykszK;=@QQk!m7v#IiF%C^j6pZj>ojd-l3r($UT2bCds#8Pp^)k& zy{2UYer(9r^d_mHIZzwCOw>?QuZ?1%qFB({pSxwKY=nYaVyL)Yhx_WaTj+I$q1PkD zhPQt88e`l-uia9wGf;#Ky&f6Y>yb%%O+!s~FvFtPv{97wy4|9W)W_R{XVPmrhR~{~ zKbP)w{2|+2Jd<9NJLz>69<2VU+>lt7Dsr~b_q^)F8;gaSAUgzI1SOZBge@h`mo%}uC(bKbrF63@L!1?4<0F7U5?i1b_Eoj&C>fqv5v={K@}YX8w02~)0Yf3AZ!v;DuwX*SV@ zZha8cYI{CI%H6;1flsnL9M@l{-5H7c7N?D6&>R->!L9yxZS(hQbIy_u6Q3XivKMaw zsO~unm;ms>-P-1-`F|Q`I|V>LfakA`x<{1fdQ<-AKnQz?&H4vsAG7y)svX!qYhuhdUJQ*Gzj1*+EzFnp~__zb1rpT0*&bp^;owF%?o6Nsd&8 zdK^Y)QAKYt4@kX2f6*@*B>pS+7yY6&A{rxJ6~p&NTO`lyFXoB7+IRyb*Wkq|hL?=%k=sN{zW0)JcIa>ZOFx91D3u z8pMHVQV*JQbi@R8Q$%ylXqYLYoAN9uILanbH-!nf(eV-elp`{jXwMn_6dCNhJ-5q# zO5gTeBKL66ni#k?nsYcLUcWw9;MFO2>m}rNa%a^fcK@2b~%|M-iIG>sP5f(Rw>7Pvc1)r8||U_v6`Go({kb zD~GwyP37s=0BS3~2!Eq-{ZCwtwja5BK#bauxwsnc@M2pk-S5Gb;-!84__KQi*N@=A z8t--lqPTB{`^~tP;VR1SYH9B+?E^JlA;bz#^sWC3tnZJT^*`+&=K2wAP3m=C?Y>6kk3 z;YCKm3p$TjzR0w`NYfm`9gDj@W-Q{kDvP_!B?NstgN9$G-6W9Zl3dbFJwY`@KFHGvtWG-_qp%HJ@qwkE*7s(Fx(%k_t|(p2%!4K>R-q6j{y$I(&|oQ=V@@G^^UZLisBXe z8F)vGpF7FT)(QDLa#j_Ov11C?p06uamzB+6g?=5zOn9zI(ci$cGQqBsd&2Y+2*wIM zOpoS|Xy5!c(kG!u*gn0}kUlC}v29iyoNXL#Jk*1;P5BRgKXPCBlO_Z-m#2zW>0oG3 zM>~{OPJ8JK-9AsarmupKs`xc0#w0k1Qv~r~vjPQiiy(;_M5V~5ITR7ZD?+%jS)W2E z2$7^=I;mTHz4Lg;hV)}Hz$#a=31xt}0INPN!87@%war%dyQMoV7Pr!IE`qOxW556+9Q)prvP%NMyOTKNZ06x`9-O34%kZ4jo5Tz)BFW z#XGmjG^connMs^Kz%o$8J4I7m{LZ1zK8!{Nj6MlCPzg(5nnlKX zLDZVc85?f+*(c5!b5xQNk=;stradTJ zy5lYws3bqTO_#_9JU(DP+VjWNh8IU_;rO8G7`YXXACEs);PIjOV+4<%h(C_TbK*yb!UbK(qrL{rEMBPB;Zmf(P7L;8Y4$CkhnDAPT=-S~hdV!o_&G>ee+}No zFGLkjqI504yQ7{1(G)t(f3RYY<0gG&y(Oz9|^L$e-+Q;;7;St zR`(CW?NPX0N^-|^3b)@v(08ljh-}qu4fr&K4>kzRph@Vn&C_%lxj< zFscegpuI6g5c*x<7a4lie!NO5AC?M+eP9L5V$I`~dgSi>8zTY?)hiCtBagnCN`WaN z%es4_z=`NYtj?+`zF$>7KFrVP7FA`hDjy|OiJi7J!k>zJ9^xav`2$(a?(I4~OwLz4Po7;)85sDaMnG4zIH*`Gc& z!=2jvodB!6-^BBEfN+w2JP5Zh0B8-d)j#RYMZnx7_a%5Hy;+H?p*LJPvAw_a8)^@c zeYNP%9z(o;EdBY65rIX2$PWF9^@pZ=|4)C0q(2u;{lThH+lR^ixH>;;idPfnzD9HA z)*8D6or%^5Z<4H!WfvqBM{6ZhZLt9kG+~nKn1ZidQH1hT8w3{B%(&WHDyTN+MhuoZ z&!_6985yy}%X=LxQFnfha##nOP;h9V2&Ykd!9t^WgO$KulfdDD2t;ODLzh`Yf8GrJ zPXmQ^7T;tI-ewKH&kX+jK*1yLr`AdKVk?b=Bz(c7@!~)Pu!Z}Yk1Ep; zw%UkRnb!HJN#2Y77PNW+8yqxDR#L?p;szRRqQP-}r0zW3Yc{G1eh%vIZnNa3TLdSC zH|spP%|#PO`Y>t19g8y{*N0-^!>Gxxg91Wt_MgRDa=^x_<1NawX z3$&~o>nlzFgG^J=nEoH`PYoRUk#a4=KtJfjtyy4&i~QK_f?Sj zbAMqnKV;@Q5_ zhmE{n4VhEs|J-H%QPGC`mXYtPAoJsYVKRT($otihIc5IOS>_L-?fN#gT^*gz82L_J z=3BmlY=3Ar+Q-9fyri{Z?G$%}Dk#vUKGXXRYI0r!bX}H(nek9<-02+HR z+<%OF4EXTcC#(BnxV-_GCC8@>|BLWU@z&yMjhFUAVc3fIl^F3Zxqsz2&(iL<-Z^G( zk96OBX<6ePcQ`X1*mkLUea6z>t{R)|ons@~y~}#@H)7!9xU>7kRd;;wd8e)S6Brre zS4(@(EfKF?;5Rgv=&-$ncpjoUR_T1!)I=P;B{dO;SekRuLq2&klhwk$ne?o`6XeL< zzM0ekC&*>GeM+`sIbV+4O*va8nlQ2vpWp58xJ~n{uCd4)@z+={VDO!IN^&*U3mEP+ zFH5ioVDO#v;O_uL=ODn4QxfmK{eQe08t+Cx$L|+&H=YER zzXBL^NRQvZvy{bie*{_RcUdK|;15HT#1{~t;O~*dxFoI;&Ie^8F`xCcgg^VECtfGwV?XK2BvI*!jG{cdYMBlZ7A+w$~^HX^AuOc$G90 zFQ?LMaxP7twC2fWTG3ILZLJP*u$+g_R?7-#0f+dEw_6x!%v##@Mv@e9m!^D-wRdvq z9g0#Frd6Y5prs|B)@yv%QB>pjVs1iV`UHX$oIvj5A~X&T^n`pejd?N9^;u4Vb8$*N z;@h@7-Y%yRZJ0+)s0B=RXmm$u$5&_3)-hHG$#7m2w%L!^xXvGH-O!2DYk*H!WJofn z`hv>YSjf_lExFTY)k&u+aJA~fQasapI-A|_Pr8tU=Lbm_Je|i(U2x)za$yj$wbrbM zhk8c2V0D@!q*ytfaB#Rdhmq=IhrTXeT3yi!5{hdGc5^=h6#N1ijEmY7gJq>zg81mT z@mo-xhblLc&o00Z0S3Q`|K|WCpI-v3@^M2BR93wM%jfu?RzB;k z@|k2CF*Nyn0s#srbN~O!=R1E|`P^-l&*%|Dl+T9|pg{lsPd*`J3Ey}i`}V?BmJcnh ze-cc`AZyAhz^udcpmhFvGEgq@;w7#jdq+eS8T z2jEnaJGDQ^=Jf)sHjmbckj-=AYS5uN=}yWk$;{vRqA4@lAS3D|AL^vxZjdpme_114 z25V*eMAZ7u;>jA$z9q5JH%v*csxwF5kRVs{tAJePM@lr02q6{0t2ZZjPh1c$)W99h zbU+Q0Ta4~&Ht{cAN1Xwc$;?E-`#mI;K8AtUJ{_) zq3Gk$XZI+z+{svsn`~^?5oSZtKLk&Hu{+R>K8!o0M1KewX-ZO|H@-&YgQX_aR8~Oava3f@SoKGf60*3 zRUC`aqa-C`B<48yIHZx72?`khAN@0a@WX;}dmA5kG5B5po)Evr1FZadw{e#`_)V?< z@8G`SE-D|s&VM%ej&JOEW%;0eK*kqfhdK)oeqfDavlkWEz&9=>_yht~q9}Xh(gukH z!anycm?U7AG7P@b5y`c;l)T{ymo4ywJke*scnuc^&hE!i5aM9^fd}k8qMVF$LtGB1 zS={_7oR~Db*RAU)r)Ga}@Pqf>37O(6LwBN^h&?{sTjURG8!{Yfok?}z-vZtO7-fO# zKw=N+0(FtBxTEgI;Xge9hCXa#N3XhbSd>#CEnt!A7MetX{zOduLnK8U|D39PX@HD1Ee5G~@&8b`qC;?0XU|ild7eKPA z0Z@Av$+a~B+5uYtI{>=@6z{aZ0aBdU3o-3sahJ1r+D>sda`Cin;%?O9X%ra#@)k!n z;F9lO9BH6y>Eg)kbS+vOxs9%o#gPSc4K0pT(lu*w6z#3l%#$IW!SDY^&z%6{<0>+dg zjl>vYZYF?IPYYw|N>E_AFT(v~z%+}S;g7EG1FQqw45$HE-_iXC`*FL+;u%xQ;`voF%@P)6>HG&+>reUUW|Wz@dNN{2FfUu3C6xn^Ia z+M(p_i&Qz3eDA)<99(?+A~SLE?~6>uC9p42ic8wQ$aS~`_eBbDN#7S4iA%=52zIaM ztNS8;T(o@=r$Y(vGdTU!WpJA6I9gBt1(Z{}z7e($M@akvrL_i!Rr?gnGH=YmdgPH1 z?#`Eu@=V{i5lt2x4P%VR4)yC-*tt7GZsnKz#jz<{toN3C!mLO zndm$Zu+q`-{B;10eN)*+S>`!aH|~E9cmqJTh1_Y6W32GJTz@ald)NnASHA4(c;h$kCZJA5ycLfQ=oMa(@`l zMCWq=D;<*UQ-E&(l4VYMa1LO|JXUzlln>P*U<0jJf5i|C*1Sl$q_Ae)63G#70`kpyyb+6I`1mX=pv`wE<3EXX z34ea+j|N=CCr8cZ<=}@Q&ApJr8Lz_Nm+fl+YuoZUJX729C4kYk6#c2g%-_N9XMV)o ze>)1a(0;$de&&Zv|1>Pozklm~=G~@$N{1NxFlYrTp7pKPsnH_}A?8oAcn-g(~8ZtmS6=_&2VHPvq@ zy&I!%LqkTSH)R0Q8{!@H|3iRMz-$1?$#Ad6J^5drFD0`M&Vp$+y$?KPVHAQJwAX ze9Oo;kCU=hOJSVU8FD$WU_0!gX~Otw(CAD!@CsI(nu+mjF&h<#SIvmmV|)qxczouh z(7u_T@MZOBs0xI4nmU2^=n9ZbnmQT$XzPU3Yzhsbp8!~G&A;K9Y|UAKVM`P0v(Ddv z)i`XE$4ht0`c#aUei^c$@zMf5A2*kVOFxg{L+fxUeK8Wp;|d~u$4gi8_rS=8-GlhQ z1bWh|z4J0fi@B`Cv2ydg<-SAPI84+!w4H{LQR5U-8qoYZ8ZtG zkq)Y#mI2Vdp#3@K7;+t+8v$gu$vswBYkog%I^6zV@{2&3~dlbxn;#U;!o@9O*jOuq77~{0^{8T!Iz7HSz4(t+xEd#q&CP__z4or);4uUO;EPVdBry7>A!I=4q1~z2QC|_icc0C%Jzg&!jI@mZ=Prf5GoVW`E~JxPO)St#rO^@EZp` zOLn8XW9fRS8zGIaZT?w9`w3$ZI!fcB{l`Hn8EyS)sS_5u2DF@%90TYcjWdZU< zc^?lj@=k5a<7+~emE<6*DXfDR!5$T!n!}m6a z*#GM?`)7me|7|h-53c{WN&4@5UK7=ElsEdJPq-Wv^}v0?C3wqy!W!IMxlf3?Ah}OS z^#5diLRvU_oazewTBsUU{@6XniG{rX7qU!k|8FjD!o_w=AJ)%qL75I<+i#%9?Umbp zJzM`3?I92L-(G;0TetlpYU{S&)nHTfGrke6`Papl^6<9bWq8weE6~;-f>eHhW5gED zbZjLe7yWCfP<@Ej*W-4}XqBxmYBEkB0kd+^c{O0jQoe+)v{k^)s)hwz@Bd zTMu9&WNoGMK0H&Iorf!xS%c0RJlpYHZ}Cs<3S;~L^P&zzOL*jfl_Z6EQM+CX>6uI& z&iFwA(o1<653uGX+149*Bs)*-lH~v^Pas96L%cQUB<0=tUd#J`f)~$=`psqJo$EK2 zI}TtSZvAF=Y<&f#(7u^WfPFKSNPQbj1j_ED=$j~)K2avPOv*4QlUT$>Wv>7*RDGg$?S6n&pPrI*4&!R*6Va!#N@eV2fZ?C??7#6W zd97SsUT5~@b*JFA>VUsV?HWKHs*iuKl};e`G)Ez?_7 zL+83uowGN!1rw?9P#n zH^v=rbdQvdZE;84ohu#xG42?0ho$3xnU44bwEHotP7gpqHF>Bm=bu>U$;Nlo=yQi5 zr$=?YZ#9-A%GOW1u(S9Q^jC>v51^oo2nEsoMM;WgrH^P;gWN3>TA=z`7C{2iTblGX zgS@4Q87(>2g-@>v5*_p|kl3@c9DkkAf-+T+^i?c9!@$f}XlO*JBy`GyPs3eH-(Xkq z^<$iF?at4@*WX08d87&Z!RRAQj&O}57h@byQ=EM};JzlKZ9w+H+Q&BB$%a$=>iYnz zZTTsl>D#y@a0+Yqr#|^&xa~`FM<&=teFIl39eB54jU5BETZj(T3A6^1es)I{jd~#~ zqMTq93ps)twB8{~2?n!B#O7d@9YYE>nx7(lq`0U}ISxQ=AEF=cpS7C(C$gXPBPv9V zXwc8_OV?Ooll1T8HF@788;b957mxP%Aq*cxkst{n2pl~OqP#MZ1Yw~WE1YkRZ@K6N ze#l=H4=!?ijWRw5FFT%yCNO6>Sc=gmOc zzK;A_)`KQymQA$z{V&PI1iQ`oOXTNVIsPTu06!ppc4onR_Z{f8E(-P<2A&7IA>kS= zg~9H=Bd2{A1!L$`e!k9Zun&HennoGFi4vKhphlaEY$WL(wau;Nq7=^rD*@K>Me7%D z06doD{ttL2I!^04qmRBd{yxzd^}#!+z$O) z&{X<7ELoWG-$9I`t~07ST6rPXZkQ!u2n(r`YqKla&csU0kjq%`g7_H$Smi=IC;l7b z#D-j`PMQVS4Y11Pb9g2?PXMfR@W^AzG_GvaNkSfb`<55Mu_94kYUKAduU7p~o$$R* zq~!|d;jfhT-)>mATs2Ob#L7iFa$5AnpPunM;K9t`Zb=mGl+u|jnkHFdd zZP)^A*h!z7MW2UV!QYSl{Zx;Nvt~kph$9PMk`3@4J5t@^>(J76)u`yDhy1D^4J6lP z6Fit6|EVE0`Q8s*$vIztgr<0^d9b6{N(9TaEDxot>F!#4 zRc)F(Z#mlTsP3uh{t>hkirn08#|({VwX1HV*UkA--9&ZraXUU9tzs>cs-Vf{Q?X%2 z^(8dfe4GY&7TKj;3{@d~g1tsjgUBvE9=tr{g>B@|9tS*V6T#9_n}`$Ok!>Q6*(Qoi z1_c$3-Wt$AI1oY@RFY;GWQ^NU^u2e{jzSwzwwcJ@Q8}suU^w4wGsOz$nfmC5JN>9q z>mn|2t1G#^RBh@DwZG_RY0q)mk%}FhZrAbe1!2)#>W|-U~KCk|CxMWy^-!$GG5L2iF=$G z-Os&fE7;`Bc;0F2j@{OM{+&vXeOdSK+6$L9Zk&z70q?mKyMBFOS??M&M)7V$yL)Nx zS@czxcfWAQ>zTbD2Y-e0vfl5q^NXu)CtA+|#R^-I>iS1>ko9BTv89b&xQS(Lfn)cD zrLn9{xLLmZ@gx78p7Ho$p!?qGaFrjOb;q&oMYi72Xi+w9zsZ@=`+G$FqI2A*Zp8hY zxL;m=^bU|iVn6VK@}tu$10BKXuGRQ5-nN;sG`eoz8W_=?wuhqeE?K&4SK0v(Prr|b zZR)$zC^g;pI=iP9!^5u1K=m_+@cQ+f@}sYP7ln4li|yHsy~s)|ONWQ`wq;9VuiSUE zLar*92(co0+8M8rA$#-ng;AKgfo-Y|ItjkH)t#?n}a zCzeIdG0yR8^aXQpApJfMZUm>hH#xUAT(XJ$iM*x1Yo_Rvgd$VhFWTGFkfjY2{Dwppd!_qgcVz%CGInkCY=6@^V{0J#f$i_Jwf{Pn zwS)5FZhtLyL+q7Zl^2D>E_dvFK`s`rpMm0` z1~YoU54Gw3UH7lLZ};HkuF7-e-`%y~(ypmFXM>3S(u}t{GN!ZYba-|xIQQB&k-r%i z+Fjc(+dE1h9f#sE9iN0Bxb(LDAr^xpv878oRUkIp| zIA~76vg#$hMQ~fT-nOK74*WAoh*Tk$*s1&8p{N`kbBNxxc#lAiF(RUN5kEW^8u7nA zs=M-hx2M~?Yr)y-5A?o3#cuhr?uOp&4d-km`WGuNVSFIgOKpSh%5%M0i2K-!F3K#N zW1{R(A?a}SPR2VZRri97?%M*rClPM>?O+`GV(nmex9ua-*0yap+wLeodhE5m@Vh>< z(Y75N#kVIpuGoT%O%>e>JQ2uhfhTrb=Ig&i>X3Ux+zl?A?XEm4Y4~5PJcAS=NoS7r zR)ZFjY$P=ba?fYj)(093hQG}HnJ6}-J{_LkS(N$4Mp%g6pTN`dW5~=bitZ_UKbn4S`$Z8hmUWmk z@AbRZdwS7jwk_wBaKRwGJ|~nIr30nl>;si&s~@O5S4}*fN(K(@)xG#q9(Zvk)^RTO z3af3b<817e?Z-1&k&WaFd7bHPKyr>DvYR-OZ0RWZ3z7WazB=mYZ(m(L?{>1MhfhGa zpCz=c`{Ilj+S0q-&=Y&?)bETo4i_n0+AZ<=+A(`e_Ar&;NO<_z0 z->A0A;ZS6&!Vb^^s9RNc@NC~qXp3SNtGANzXO3> zsDGSZ?P86iJB(Y|GI}R~r8wvoT)VBi(o;fi)#6PxzwzMBjP6;z7eMLC}*8Yr1W2Yv~LLTd^dCWA;ym|-V4lJ;?k*Y zzmaT@t-}lP$Fip2C9D@0&yym*v8j}Z?z!VKb~TO5cmNPN8_)VBWF0w`|;mp)K=u{xHONg3?8RNjHwAcyjEA(k~-UJLk&)WP34 z@>ltGdF6%j3p0M(;eK`zD8KH%@7Epf?iZdro8iB(Ybqt_x3BD)N)g<#>Vw}s7AxG3 zV6nm{7(dDQ0ONy<4*}0eqhKBOUmtsoy04JJ5x8=GK5|}1fqQ(@Z&4?twG+;2C45a2 z;i-*;Z>$Htb9dH5d`a8Emupt@#kG8`XrzJ;&O$GdQSpwjdB zZhF4&?4?-jMb`6CJgpzmi!P&W`FgZnoN#QM3GInxd2qY^M)F|m@W4+N`DrBDv8({zf!!In z5dWHRr85QW+@FL$+vU)Oa~ekQSRL^hhpXU2%!?wc;>>LrL3fsFz8vbJw1m6JG2BH7Bw4K{!o*Wu z1h;W|iVJiN!qg#TU$Hl=V{kz!iuku-ASRxsdYL9W_Z=ztHY6UM@lI67&TJiW^p)gx zVsgl-qoe7AUU8yN7rW@065q%qa3;FbR*vxKW2y=MPy2PSUUAD1J()fnJM|r8r^gp? zWQsd{v5nSa8b8EpBk%!G<3L2>M{blya>tku)~+_0>8JTC_#J4h1>G`{PU6!b##zu5 zjQdCW2N;(z_UWK40q;bcdRhaF;fzGe!LTi6nhkl`>EQZSy^ti7-G$IjOyvSWbUeAI zcc9~%zTmIRjo6WFvb^?iHhfK@IO+Q5=4Ep*}us)l0M@RWnO5FKl^l!sWDtdOg zS2{$N8oIwAy9+Fbg%SD}FQoeWL7~`h*Nbq~kAX_OQ0jBwmLr2?v&!Z$86;U55(e>}rFd4}B?o*cA0mS@=PuJMq#8hNcJqlnVw(_xF0%W6>%1)wyb z#PN^#0x{U2bj+hz;Ypb{C(p6KA7t!suCUi;3=~PWuP03@@!IiKVjXf&&d4}OR!~#6 z$H+a8+k-if!6`GJNF3YsZ3yTr&e3dq!>7b3#4_J*XwZlWnaK6a6o_o_Y=nV^t2*Mr z0eU47E*iq8Pq~)@e25UKqmRBe3zO^Xq6i`Z@!C#x78&bT1J_1T<&@7f7No#!^ z`x#C$;vd2JvHDd7QQngf=6FE)tl>YthF32^dNbp#&U5fW`5_t5ZyWLhId;*7?@L^I zDT07nuaQn;jF)K@{rqs zg)FK&r+)Sq;lojtyCTiYYucx{ydfpx=6g((1-zuVi%9-sy zM4QxM`xM+z&ed%Q;GBLxp0>e@Q*e75G9+$&?yS zB(hQZCT>VF3P0A2M>$jDl+xmq0;SyeU_~5@5$1z z%$qaord2>9voMZie@SKqfDQo3CJO*RkXb;=tPd|Jhn*B@CnrMkB17=Nod{s|jo z*NX+WG6iqrbp@CFl5iUc`h;Kh8jc&D>{`ADt8);TXd@f^)2V;M1n_dS5x0Zpqu7pz zb+jmy?DDdrf-X2w74P$*_M?)*BJCnUvc`0gT=NUMNXFTqR$!!)>O=b3^_ifRRqC)u zMo_gkj?-f2wHC;$Dx)eHC?;YPYeN@t4KWc1DJI=WcicAf9(qe$#qdJ53MQM{7HSx) z_7!KDCTms)RfjZJ8u>-GzbEJ}q0@GQPP6(mWlVC0xVgVW`9ggU8BgQ{knJA>H`sXC zW4mL@NTnofufnoTw|hK!_P_Ur%)gYL+u}kK}CoxUVEe{<6)Fl!}sg( zJPn>nZlqWAJGF%P8G#g9K$(p{)eJKYny3?~zE}0RV0l2Z+o|T^$`c$gC5RBSIO&{@ z0)&z27{%!bDEiF^J|5AiMMi4=3xVcxAZo8r+Ue)8a|^|6pL`ECrN8!x7k<&cVp~V| zm|wh#wB}1%E|w3-+t7vyI_=|8BdJ$R8{F&lb%7R znDIo$Qy5QUJd^P(#&a3ZV?3X6HRBq_wTxFXUd_0kaUe_-9gKG} z-p%+S#*Z-G!+0;_{fwVr{3PQ8j1MwC#P~4dBaDwSKF;_Ae_-msyuyWxRu3j`RHq#wQt{ zV*Dh}uRpuUGCs$+m+=M0=NX@5e2Vegj4v|2#MsFx_b?7H&S0F$IEV3Q z#s!SWG1eIuGoHwJ3gc;vXEL6}crN34jOR11W?aK~CF6(MNH-o~yod2##`_sR!T3qW z2N)k@e2DRG#yc7BVBE!c3*$|U+ZneqZerZXxSsK9#w!`uGOl4<&3HcJd5q^Wp2c`3 z<7teiFrLV`n6b`y9ODAUqZ#Kg&SadyIKbG$*vZ(&_!4X8MaFM4zQFiA<6g$+7@uW) zhViS6UuJxY@kz!f7$0YRl<^V9hZ!GYe30=htYLr+XFQkjJjU}GPvP|?vlvffJd-gF z&PAwkj0+f#W}L$~lW_*)0AmkhCu1AqV#b$PA1*R}oACw4=Nb1hKF9bh<1>t3W&ASZ zQ;bhCKEe1nqGv3R1593D|Kg4)9<5tG)j5jgf!nlj^ z4#qnfA7PmmaETkuIEV2##z*<>amFVYpJaTB@ym=~WqgM5S;prW_cA`u_yXg%8DC_4 ziLs4iaWeKW4lvGOT*I8NWjv4Ze8%;R8yPn-Ze`rgcoX9-jC&cMXFP@Vq?mCA;{an1 zV<%%9<7td>3N18eBI8WPIgCd$E?_*4@!L%QBI8EpYQ5kyyX<7VoAE=8A7Q+Q@m|LJ z89%}JNyY~lA7p%p@hs-aOvcj~PhmWfaWUh$jQ4V?_AuVUct7J!jN2KvGHzo05aW8r zs~N9kT+6tTaTntqjCV5L&G-?l86Ra_%QadJ<7&q9 z8P8)pm+>sdGa0XB+{kz}<9f!Au$9=$ct7JO7(dB)4=}Cw-_2KJi2$|1Y21>2oxd4@ z?&#ZCI9GI8`86)wzu{%7hIfRo#iXW~zjKRVwlELePT;YpxEp#FSae79<8HX?0DBupjTtF!x2jBs`@yVd=0N@bd(}2?e`u*rk(DoAGAmFor9e_1} zD!>H5F97zR1Z@Gp|KPq0;k1W?wmd)uU_M|4U=1J&*a3J5un%wma0Kvuz|R0V2s;yS zGoS{r5^yJgeuo|n+Fk~{4aj&5ba8D2WIhj4#jOu(;p2W=+-KchT; zDrg%Gr~s@0v;yu28~~gIoCWwk9kfjbGyx6*P5^!Zu>VcaHWp9~*aFxGI0ASD@D3n% zPtbM~U@4#(a6e!l;4t9(fd2+u0u+4)d;yakI11;QZb@Dku6K!c1* z0lNY8oA6U{9s3i++k-H;o&e^PT~(0Ixoc`~j)}MF1P%)VGi>z-mAS;Mv2F z37`fr0q~1&LY{!H0v-f31LgxJ0x|#>zJd3EuL2$hGy|#u#Q+cBXJ1FU0QUp#1mpr< zIux{R0$dLW0?z$o(DpUJZoquN6u@Y}|9lN{1bhwf5TF@w6JRvpfBqq8`w`$vfH$53 zorB;D;10kZz-hp*0F&{4J>Y%-{pP*^op}*y0UQS8oIu_Ip9P!-O!+SE0fzwJ2fP6o z`x4>>tN=U=cpA_H@cc9K30MvAd;&TN+OGgM0mgzh{VM(~Xgl*t(6$ZW0le`;lsiB* z-0An(zYE%G0hxf8zX)3ar~%vrm;gBWwl+^>KyfWrXWSCMDH(}1y% z-BLgl(1bkf!cAQ!M2e(87T5!g6D58$%^`n~bbklRUwhwkje{TBgSaK8_5 zJ={MGI0`rqnDRZ8Kfq%E`c;8H9|fEM1Yd>@06q#h4p5+9d4THyO92}Jdja&@_+wnp zz&_(z3#g!H!0{hJw{iU{-IE)B-#}dFWqg|;izlT#p8o;(1<(PfzYjeGJbMZ}_!nFO zKKLsIOn}>Zy!&fhZ^HE*_^02_XTW1X2KX=;@B;4XclqC88vuI%jewhwrZ-*<+P(qU z1eghU8Re!1?yZ0wfIWaB`28xb`|)lQzyp70!NcTV+H@?sl)nJRXfa-?z?Xv7p@J6* z#-%Y?Z7yB1{VKk_!w6ugdkvs=HTZcm?7=<3jHjl>?c zqh*2Lnd8j(P^B|t9=~_l_CKT84nN`McJiK?fd7--au@$-F1H8TmIHjqn5Vp`e{|7>~!`N1Oo173YijqJRFFuVuQKPX)8r zA`V2tVG?*%P$yqWepq-GCnes^UQ$zFFwe+W0{`Lx=C-s$bELRg+SnUVv9fW)x>c>w zmb+FqH?-Hau3OpGbdS)8`lhCpOPZMFrHxW2m#k~p(9qnrV9t_t%^e#WqU-Kn($dsH zx-@@XbAzN^Q6V|Au%&(7o$DH+S8xaI6zOj3Kf;vhj`<_eZ6?OtJLG($I3%+&?!*!r z8Xx0yIS-XH`LWjY0PfBw;8rCwe-!2Hq^B@ENN)(XiXwJYvCLl zV9ufi)wWsH^XE`Jv*y5U?&4dQRxUBFt7b2mbL*}2Zr%dA*wzxomS{!cBwr!s8u>ST z{)zNeH?6&`^{!}LeM4d*DP6Z!-?Di2+{&vG&uwiD(Zm?8Qu^yqwbTG55l?|HbFo$I0-WV*7q1Sz%I5ayx`s9* z>nX~8QS+RZ4XsTL?G5!Q<#!P*e_Oki7A0)>{9Dv~YjbNydlJ!9=*?k`;cTXqu4+`0 zQLeF5&EK6ZEW8x?R2hx7py|cGRQNNup=~W%7*vVhQx|Ps*L+uM`J3H#_aYRgd!p;w zuY&$BY6d-v@lQR!pjWxEp_z(#O8Njg3)kMgv?1CC&dI`_iX4bu!#%Utv{4&YWHY7o zEoiBy)>r*4x6P%dEdNqTAK9OKhgU9TOMOmV>zp+e6?OF+*R^p6VzBv348NhHseRq- zI1%J*koiiaL#7Q0XjbuWRpU zGnlUBf-`E&~_A!Rm!Eq7=7~NiIxn@cNMy8r}K1Nlt>` zu+ul@D$|?Wa!+$pOI`g!(UBi^x^8Q=P)UJbMtV}^yGYMq^-7Lbnp%+fjI<1rFNxtG z{X~ah(;0J>=m=vs{QOXOv)?;Rp3G@!y?40$q_C;Rzo2Df!*JuLux9+EqQm7ueDGw> zh9UI(6V;%iVo5_2tS5Jf>o%m2o&-9To7x*h>vj0~qanBkN-ZS{zv1#p&}nI+$&F#s zmzdXL zsePPGpQ$CJo01Y;1 zjG!{?^0=t^w&o31N-5;4)ynE&)4@oMwd+1?I!hAA0ESJ662qk>J_e8yzp2KBK_2F~ zZgM$Z)XamGL^P4&F!Q^%r5PiP?KLg3<+QM+o~LVvYpZW$Tm|Ch&l@9nrq)aly z<@4f(yCA5B=*=xrIX5jwMu*9#+nS>W#c0b03&~;9qkNJG&8eed(!sQ*SY0r`VPiuR z@;FR7FqIqE)i*3@!pJR^kipX7)f#56#`;9cgx?_3V-1O3jrB1FI%5*)3@a_%q7rA; z4m&@hRkp6VE=o%QhR2g7?Jcdt4U5U;1q~ZoqW3OtXlrPfXJ(9`pG^RziXH}?wk1uo zX_=5%aMRKeUE4t8{cA<9gH|Ek5^d>do%8;|<`wiP)Vzi!Oe0rR%n@dPb_37f)U?Rg zgU^35y{3k`D5aVEr)6bB$tR`D)Nn~xJ`XuPCY^1`ga)abiNPu=#w0onKVONXr^BXm zTeEdAcli7vyGD#3qW+ltWknYhkci=@WA@s+n_KQ_YN)@fA*J-d-Y?-|a%;V)h=wU| zlg`4r4crhKJ{`_a6Kcs+_=8DX5)+ZJ3<3|I-_%fomdPiDsF9F*AA1n26MKY zz2WMS=-YE1o{m$^$p6lH965K z(W~dxprX094iiJn!9mKSzx3Txx2_%STaiX8IQQZSHRqk{2EVSOKe`aGph*c#A$=HH zt4}5TJ;PX6(qDcs^DlFhYJRBkB!4OJr8U~nS{H4Autal=DW*WLt!`rj3ycU|4LX)# zw^ZrPrnTl*Azh#&Qk6pfNFQrjT3ec0?z)!-Ct8}ZHb_Gv3fW4e1mRv3rZ#?LQ>)%CGJ*U1T3=5ec-FbKO%N(bA7|6q2`x+_7vLE9!z!{ ziXJA1<@R8*;}H0m9F*IG$&M+}OXw*NS{}(ssHjNjbEiND<-#OB`0`)|G37{oFVj`3 z#Z{q4Wh#aIVQzv}1C!3h`>H9?!`u*)97?@ororS_LZ3H<^oYKyNk86SB^g{Dx@{)W zLDO5nn+~y(ph?^fB`ro+^z4klLymW`s67_JEMvuhNdHjeWuyUDG(y=Jmo1!Awrb(3 zg>zQbRL)*CdrmF#B;DrB>+3eVwyzt)F6k$1A2)>U;}(y%Y}|r{s}?L+weYqDtFZWc z)q+KHZ<~*eO9|<@Wp3dlk;r(u<8DLd=bXldwRek7?Cgzo>zZhZBgMC-?yfSlB-_FrPpYMk%O`Y1Z;{O@w^x%ZxX&bjBD8;Of_d!yP(gHPWsR#bY!Q{oGI z>^*50GF7R`9II2}*X|*Pt#Y`l!5`DN2VI4{bhl;HylL_4-EJQ=Z`QiTTX5>}+V*l# z{xI69+rvDlD^m+GifnSq`LOscw;NDPfnTkX%NOb!rRsViUtB2`mg|K|rCfPr=FYj< zr5XI0eKdO^o7>GE?)LUtO^N%+wiqCk?KYc-`}D#c{8h+c`YDxb_2Sz4YGJKVsuh-f zFLUgrcC+2fZXND688MW_Z$z_Z+l(bcXt4417^Mt*EY$PmN};~Igs~M%#ac19T70?d zan_8hl!w=}1R`fQA@<&Y*w20sv0U2+AW{2O9N%cAbez85Vyys9i2<*aH%fM>=vanY zMEtr8Zwt;Ro7whmHl>r3*}ZPBN7G%l**NUAdfA=E-RupZs18usy+*Hh8-eoKP7AlO zC$qcFTUod-Fl^{#7Blp?aS6}vIs@v*s$)-=jZ$uDwNS5>>*e)A$t(fTWu8l5W0(9r zd(h27uSq3J_7O*voi?bmyPbVm^<}FFQpt+)zyGLA#8EZm@s|0#Qm9mmSchP~5n_A$ ziA~9-A!v6G4`f#|mK>q#Tv&z!g2Cx(6 zGIhL56IO&V6f^oJ9^{<4ii<$8Qj=h=%n z|FJJ{Ch4|I0g)AjbgR~KVCYz*7cXMDxYguGkV}pLf|^`kAdydd8_9>jM>ZiTs<>+X z(xYPD^7+n%_foA|1uLvwax|NF9M>=2aMnG~%Ca&z z<-yHUSg|9m}5Nm-6B>e1O~AyTSyC zY=2ybRP^{-3~`R+)(W+PRk&tn7KDODC*hmBq3kAZh?=Sd4f<&2%eKF=QOegSu;z2C zp}@Kz6tE3BovVp-U>aB1?^CS(QsHW3*DuJamG2&Ql(lY)Um~MuVNGhh+z4e(@;S$Ik7ChbRFqts~AWttGAk&%%E?v@vPjWth6k)SwjJB>T- z9ms=lxl=s}qCZ%66XsUf;UasJgx!ISjKyQ+%}O}x1}**VIxesCSPOWT2y5)MD+z~; zByX*VmQ^>qJ2&7LFPjM#1TEVG&Xd>Fb#L*r>%&Rmp3owi`x5?fph zeK+AHp^F2&7hE2U2(}jq{@hd^;0&^pw`1{!1e}MJBZ>B+$Rn3qcYzjcmf#CpZCEUU z%04YIYIu+wq9QnqS}@k{MyYUZowB_n*P=)$`7Q(!<$aC|8>Vu z7S!o-=aU&XG#BiUjjCsji$;=h%|dh`hv6{`E7)eX2VM-GlifVr>$H(VRTT2>!A&Hn zLJ}g&I!$*Wep5AM>1Ovqb+ugcYS-M%q8zPUWdY;!9FGE+vUd|gJ9^3JItMRJTP$+0 z=7O^m<%AKEg}@OJnTZa-a7FIp?UzGDQ-i+BqH(QO)!Ogqb$Iwd; zPIoiZb*5|;&LI0v8Zmh@bexS2EISp|o&mU&p+#4v1Q3E7dBI!IzNjq)|yjYvq zkF>N|wHp1(!Ix}JFH3ZJK4vV?qNyJ4$$m-4VR)?=KFj&sdU3r{Uh?}?PQC;}O{W4d zjYf8}i43r(koc8zJ5J$P|GZ5sTwJdN{k!ukLSF4()7^?3U@p$GXd%1Admi`+F!Brr zWrps-aKNo0N8SJ&CvMP=qg1F-6t2pG@?s^r?8S}N5pT)zgWB=B3Bcv z%eapktsKW;`^|GB@ggkNu^dWlP}P>S1;2e6SfaS zwM5tBp4c*A-ivU4dDjJfhGzm&q*9%b{%OfWonRd3{Mo4ero3Ly;<~!qYy
vX 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
I1RIb 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
>=lg@RbTanY|_D%Gsjc+=_E-lB$i*DVt z0d^I5*ym&Z!kRYV(Oe#%=JAD6p)`yhYLeN0!G`3l>>YwLuqlguKn`vx#+}d1J)g~AG7v8C9BK3K6~)ZxI@~L&KFDO zQ>^E`e?3t0jc>b=r^36+&-tGAu}f{5JuAMX^AAf}Z_%{u(0i2AcJB4peIr@H>o@=5 z=T;}Z>pG7ar|&Ph|2DV0zgqcy{6^hyCdd(mu$Y6utO}U((8M_1Bj&?Turp%jqakM7EbLGUUMAlC~kS zHY6#r(M~LASMs|NyAAEM7COvrj#kJhsx66-(U&efS|I7dHB}F^AM>m%%DmpPxf#Dr z8c1*cEpErF+x1#~+b7#%h&X(G(5fc0A35gN^G*6A@s|PP=?5?4XSYqQZR`}`AzH8#A4`r$p~k=HGP{;p170FX0JhupQUf{HfNqmj=en~Ok!UevAAW6 zz#2LJkGCOR8>YFEYHgS&HMHTVf7FHrP$Z@%I)AJU2geUjiq(*IEcj?UE{v`(_1*Pt z+YP>c-`c!eT@h&&{6*2?t6#Y_?0F>VU5+BSU&F?y+3L=JZCbeS^8Uz-`h$-9=Zv{~ z%cqy~f+wY&eZE_DDXwIWXP+liCA%9PX0HB#QSZ>uwQq4o2-zxi_OpTm^hx1?z9=id)MWxMwLAM;xwJ96X^zkb=%H7%db+JE`${fY&6<#3?Mc)4K$EGPNv9f`6B_t%I+pHa_>BhM zTHi*ssa=>ho|fvKs<+TgLl+yvvT{0Cg^i4lbgvQALz|k~B|5UpaGrZ~tcF&Q%sH`z zG@s@ccocLoy_y(=4_pmX@TskwXJXvCeILKZrl&*epZu=`MK@Is742~`(TSK*>GG0!ohbi`xlyz@ea#e?y2;IoZ?wNwaDKk|=A3}`tCo72J6=D1 zJL88oaTZs0@=6j9Jag+1&A;Opli1+iq2V^q>#P+fjGxiu`-jChiyvO+d_St;sRi0= zI|tv`CwB5lzn8w_lq;LFX7kftho^U(XOnrZ(VOdo$0YR`YSXowS5kwbN0O!6WmoEr zvVG&2QIa`sOZ>CHmhZG~()sD6LG_f&29-BCVV{*qxl0;s>^Rr$=i+B!o6NQ~Uhd}M z*Yc|Kw};-Q&+mIEXM6VaAr;D!zN<6%o!!UnzQ(C%KkAne%?F)%u#WEUHp5T7`^=={ z2UN~+(ZNgi#cQ`5X{DHyf9ud*$4l(dFjEgm$gnndE-@ZwenINuMoPbzuTC!$jZDRqS1o-uE_?+M#UOb@)BZn9a4PZn} z#v&q&KBPuF#ueiyh9kPMNLHpv4t={C21Azi7T%E=7&vho(G8&{7&BS+9t|(4xY#7F zJ>7^LvU0G}-}%Y$>dtLTw;>1XJG5YK|K^0mM#m*3CnOKYqrEx4aQ#Y6HeP9NdgVvW z+#~;&TV!>YtxoFqM`QMjnT~g#?<|@bVsqLv=z>E?!H%Ej4vK!+e{99ZKFOX*E0#z7 z9DgEeh+yo&shp>!!-9t$YkN0rXX(2O{dV0I6z@5CwP4g&oqz6ee@*bh6Fr)2kC<_5 z@Vc}%jz78uxbIH<$tTaoX4E$$B64`A++1>c9T{_O+3z~tZ~vlh^nxBw=6!qf z`PA@Bd%qO#_%?SqE-5TN{Pgmi9Vd=H3V)v5_1m2#Zja4-w(Q$&+wxca*DqW?V|~DJ z%R|qUw1AOQ_#A=F{g#z zD5Z`ehATRXSS=6yAOng>5}3md!~Q|2g~jkJYYg9Mf4Z%~rm@VLG$og(VuTZ8a(Q%0 zD&5`~h($NIt~Hn@C9<|Li#grja4igOFWL`ANI$}Y!L_fR-x$Wqb}$BDeV{>*F4DlWy=Y`KiF^WEzA z{mow|)E^UImv_;kLD|9cyZ1v8ACDJ_a_?r$@xxAv*^-q~B*eRJx`qE3mE23pP9 z7fHKYLb5FHO(sxP9m!Ev651O1pd`;IE-JUT*I4?9_dkZD$YY zH7~BwwcDQOTK(#?@zUhJE!)oS*k|3f+1oCJo^$Hh*55O&v0ve;rgJMR`Uu#GOVb}s zG3)a*x}N{OM{nrtIs;+wy!6ISnSSx*7{7?($O+FXTA#@2RMXgHoiMQ_nAkL>8xxaY zWp4u?(|BT(+&F$o(e8#B6zrVg1Sh1Los-cLa%Fvcu4{BhY)R1~jv=Hj3Jj3CC2Kg5 zqqT9#8a#O_hBG=fmXn;6kiqRr`;cqR?G=VgI0hRT$T(GU;E9?TsmZ85t>bv<;(}8r z246yE632(3)Y(m%Oycm9HVy#)+b#RYW_gPyx2BqGbK72KdH7=77kwjIkNUH`d&$)S zz1v2OC^-<;vhVXX4VtCJeS1mtrAM2DdMRIQx-z&yz}g1$3Q8V3 zoSvr%aX-E0s_(;~mTE7>iJo^hAABJFGWcYhvnS6?T6VAW|#s@rbP z({cN`U6e`Jb}aE;)hlvAxMRwbrW3Btx*Ito{b*dvZH>}fEZ%y!U-#h4U-K@kw&~`1 zWKsUibHN*y44NwJ|Kp=Cq9Qp~N9nY7je18--nnO7TsHSf?1`H%f0|t^yq4QJd4y(g z#FXWg*7JuR3=N`soc!^{x(PQtF52IbY@G5_w_Wx*r7c%H3X@!4cGX}uC&O$`qCE^& z1ZD?aRqbYnS7qmFoy8^SY-TJS4f9z)BBzI0&Wo;Qb(@;Qth|&EEet9;_pHd^GTD`oY);{7rK2x+k!SZP6qSHt;(lIN^~T@%WxrM)5*F7 zCW%dG2SXy}EaNxx>iq?#iycYuMr`yJYg^Nf+!k~*96-ZqWEgz}_VVk(?IIM3O>Aea zrqy&LIqApP4W-u~e_KJ<``t(SinWc;<=3zjjB&M}+M;#*Ch_xveQUQ(Y!w;&c17+` z>-D2sr#EeT{jbL@%=<}Sk6LgvHf+Njy398$@@h)*l{R%s-Bb7YJw5lu+abqK4K=?t zW2IW#`r>oRtW6ird@Jv%j%5uC^>HC?=r6bmgaSw3nCh; zuN;5f+kftB&G59pT;?C$Bea?B_jdMQuG@Or?Q8J$qB=KxtsB1*bvD2DU7*?1)s2QY z+%4bd(ko@8u#X?KQg>$FtWRB18bS&>g{iNSrrsc9n&?1vdthugqhk|yQ&L6+8$yBkh&c)6) zqdeF&asK%#R+3c8|Z#v98HR;j>_49xm8@#@7 zo1J)P>9TF1uXAsYSbNVSVN8H~)~?0P10+AMYsNl5(91#Q|G0gYOW3;yA>U2?)g$IK zH~#jBeDQ7Nqo=LmVp(Kkyfg1z2(ug-3Tg%noZDyds=v&~+>3O*yMruk1Vov>`*Te~q)q#-aeMs+af z);IpBYX&tko~grah(%NpEunc_0WIYU!`@S)Zx&fK8tRa=LU6%PL;y#MtD>-DSItu+g~ z&f5LF*_5$s3S|?&lvq+%A2@WQHeC3oj#ayLTOVbN*z~&VtFK!&R=l1OwWq$cgR8lE z|EiX0-7|;V?5=lotNH9XYvX-WE@w5UyKzaYlm=a#D_0#I|I%+@AI0VeJ(fpxwUeC+ z4ook(-ZN)V&m{L*XAZRK>@(7@Wx#lwlfUde+ko}XrdU&V?N762&bY7Q9@|qiD{j00 z)#-m&yLE|K($cHQwKrCMTh6a)TWm9KcFQR^mT8nVS=Mhk3WpM*9?bl&9_iU)&Dkup zD0*HyKuq8 z-SLS9*;YM2&!~;_;?Fbc&ok=JGwRPXYO>pEMwSmh_Q2Vy%e_*Zj^NjlQj2a81 zpJ&wnYiHE9o9JxYb^mi`)Ywon86Ov9?Z8fomEOIkUUN1VyZC1RexmJR9MfZ>?aby_ zyd671(>`<9nAitJlU}hr#%#LmN)J7_z~jP~0Y7eO_3FQH(#;Cs?zsCBa&Z`6VAFCVtLRR7MOA%h3YFZcC)sT8F>p=&EFgfiaIS30}IKa=mxe>1s>6lXlH^ zuFke`r?YK387E8T=9p>Ow7{_@##$jWEt|SHglfjr*TfNu&e~;B-=GJ!m}g~eWM{3T zvkIXP7Oak}8eUUbD~1)0T->5@ONWL+ui@!`*v?#ZkHuEK`0Y@$hHy2inl{7P2x%z_ z!q#G!r~2Z&-bKpF-nx5ivTpSqYx5>MjK;%^%ScqbmSgIc!t61^Q9)3UUEdN@xI}D< z_S5eZq!c(ld-U6qzq%#-+JyeD$jNk8PQ11L)BaDycSA^vxcaqwz5i8}@5X;f5?EpR zu;11GEoD=ejV)W?(6R1gixnbe^GUy)h!h$DE8Wuk*hmQn46?MHS5T!g>@s>-OO#% zKJr)UsPovK1L|FLan6yK{oMDr-&&W9ntVjHu-o1HdG)#;*;UWC{+Ej`{@(UA$4$65 zW?}C9eb4)hYh2Xdy6dX1`h_MMR^+=tQXT($JTIy{iTvOBVSK8K39~BCxR@=O+0w~p zkNQXZLwgU;S30(OQ2cX1wSCK4eb8$0!kAcBz15d%L$z}4OARa-^Jl+V6>isWEC{df zI)1{0D_K)6cD9+zI-b0w>DT2K58rJx@LQL-8P}!zcPBLLzWhOv=jD2r4$*0D(Yr=@ z^V};&R-FHCpdiSr=~vBr?sBNte&bgGEB8#Gf7*QK_v6%`H~;E&+~IPXd-QGTwgmw&r-|yL4*y6C$di&+STq+&Qwq3UFo!_L$;=+c% zw_n*jw9!RNWp3ap|JMT>9JHGD?%|$s${`msO0teV?(Eh1%IQIxfIBPQwc~#{b!~fe zt9x30%PoCw#d$Vuwcf8&Nb`|9cHZBxeA$WL_c^!PqQ2u-R`-HiAl5fm11p`ufq$Ke zjM!w}^gqoXR0^jH{Kxzm{6VXHF#bp7HfxosG>P+Q)@(?01`AGt7dj6}kL;Qg{75ja z@A6-Z?zuO!d3!5-qsxya$8U`v7|_HfH6-G@Nq??#e<+*UuCd~3cXsrlm51lI2)pS& z_V>#^trWInGumIxdt1@>K7GN9`fHWz&5Zr?zg@A@;da}p7dLs`@?V=#)Vam1$`|sP zs;*l``V<_l#}%3(mjnzdm)c&1fIj zrSW%Chf1eynzeSk_u*W1t9 z{-cG;!y$IiEytpPEoXHadS!Xb=<^|+pZ*%|_b#w`ON*TQ^+MiGoV)VGA=T^e)Pt2@ zXRVlU!1LUhCy#y@E*|QUb2e_zvcxU1;$y*mD=#!XdSYnXx$~SF?=AV}`1&6Yr)-d~ zxRUiny@nHq)V-1P0KM6p``_JMm8p5Jx*%jbfVp~7&7^RivdlUiH17@{)YKWccR M5sh>4gl_!(AISNCssI20 literal 0 HcmV?d00001 diff --git a/MTC_Adapter/MTC_Adapter/ExtLib/Siemens.Sinumerik.Operate.Services.dll b/MTC_Adapter/MTC_Adapter/ExtLib/Siemens.Sinumerik.Operate.Services.dll new file mode 100644 index 0000000000000000000000000000000000000000..f00469d5380b0d4992aca28c8538f8c47ecc14ac GIT binary patch literal 230248 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 c5s#O2h`9RD@9mdYEq`-F^yHjw?3tqf2el8{..\packages\NLog.4.4.4\lib\net45\NLog.dll True + + False + ExtLib\Siemens.Sinumerik.Operate.Services.dll + @@ -178,6 +182,8 @@ Designer + + From b2c10649aa47de6bff81caed5f0c1c3051254117 Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Thu, 29 Jun 2017 18:23:13 +0200 Subject: [PATCH 08/21] Aggiunta info source x allarmi da ottimizzare duplicazione... --- MTC_Adapter/MTC_Adapter/AdapterSiemens.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MTC_Adapter/MTC_Adapter/AdapterSiemens.cs b/MTC_Adapter/MTC_Adapter/AdapterSiemens.cs index 7e8a540..7d119eb 100644 --- a/MTC_Adapter/MTC_Adapter/AdapterSiemens.cs +++ b/MTC_Adapter/MTC_Adapter/AdapterSiemens.cs @@ -762,7 +762,7 @@ namespace MTC_Adapter // da gestire instance = PATH!!! 1/2, x cui raddoppia i messaggi... - string codAllarme = string.Format("P{0}:{1}", allarme.Instance, allarme.Id); + string codAllarme = string.Format("P{0}:S{1}:{2}", allarme.Instance, allarme.Source.Name, allarme.Id); #if false // se ho asse accodo ad asse altrimenti no... if (allarme.axis == 0) From ea324b6f81b6643a281dcc57a6354230542bf6bc Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Fri, 30 Jun 2017 11:36:50 +0200 Subject: [PATCH 09/21] refresh bigEndianness=false x FANUC... --- MTC_Adapter/MTC_Adapter/AdapterFanuc.cs | 6 +- .../DATA/CONF/Adapter_ItemList.xml | 138 +----------------- .../MTC_Adapter/DATA/CONF/AlarmList.map | 4 +- 3 files changed, 8 insertions(+), 140 deletions(-) diff --git a/MTC_Adapter/MTC_Adapter/AdapterFanuc.cs b/MTC_Adapter/MTC_Adapter/AdapterFanuc.cs index 0bded35..55825b7 100644 --- a/MTC_Adapter/MTC_Adapter/AdapterFanuc.cs +++ b/MTC_Adapter/MTC_Adapter/AdapterFanuc.cs @@ -80,13 +80,15 @@ namespace MTC_Adapter /// /// public AdapterFanuc(MainForm caller, AdapterConf adpConf) : base(caller, adpConf) - { + { + // è littel endian (NON serve conversione) + hasBigEndian = false; + lg.Info("Start init Adapter FANUC all'IP {0}", utils.CRS("ipPLC")); parentForm.commPlcActive = true; Runtime.CreateNC(CNC.NcType.FANUC, utils.CRS("ipPLC")); parentForm.commPlcActive = false; - // inizializzo posizioni assi... prevPosAxis = new double[adpConf.nAxis]; prevDirAxis = new int[adpConf.nAxis]; diff --git a/MTC_Adapter/MTC_Adapter/DATA/CONF/Adapter_ItemList.xml b/MTC_Adapter/MTC_Adapter/DATA/CONF/Adapter_ItemList.xml index 66f2df4..9bf8da6 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 - ADAPTER_SIEMENS - SIEMENS + ADAPTER_FANUC + FANUC 0 0 0 @@ -83,10 +83,6 @@ Path_01 - - Path_02 - - @@ -173,135 +169,5 @@ - - Axis_07 - - - Axis_07_Type - LINEAR - - - Axis_07_Grp - 00 - - - - - Axis_08 - - - Axis_08_Type - LINEAR - - - Axis_08_Grp - 00 - - - - - Axis_09 - - - Axis_09_Type - LINEAR - - - Axis_09_Grp - 00 - - - - - Axis_10 - - - Axis_10_Type - LINEAR - - - Axis_10_Grp - 00 - - - - - Axis_11 - - - Axis_11_Type - LINEAR - - - Axis_11_Grp - 00 - - - - - Axis_12 - - - Axis_12_Type - LINEAR - - - Axis_12_Grp - 00 - - - - - 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 6698345..c799ba6 100644 --- a/MTC_Adapter/MTC_Adapter/DATA/CONF/AlarmList.map +++ b/MTC_Adapter/MTC_Adapter/DATA/CONF/AlarmList.map @@ -377,7 +377,7 @@ 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 +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 @@ -431,7 +431,7 @@ 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] - +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] - ... From 517526d454afd6b469ec1b360164ceea11c4bd83 Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Fri, 30 Jun 2017 12:31:11 +0200 Subject: [PATCH 10/21] fix fastcopy x FANUC... --- MTC_Adapter/MTC_Adapter/AdapterFanuc.cs | 6 +++--- MTC_Adapter/MTC_Adapter/AdapterGeneric.cs | 1 - MTC_Adapter/MTC_Adapter/AdapterOsai.cs | 2 +- MTC_Adapter/MTC_Adapter/AdapterSiemens.cs | 2 +- 4 files changed, 5 insertions(+), 6 deletions(-) diff --git a/MTC_Adapter/MTC_Adapter/AdapterFanuc.cs b/MTC_Adapter/MTC_Adapter/AdapterFanuc.cs index 55825b7..d29904a 100644 --- a/MTC_Adapter/MTC_Adapter/AdapterFanuc.cs +++ b/MTC_Adapter/MTC_Adapter/AdapterFanuc.cs @@ -80,8 +80,8 @@ namespace MTC_Adapter /// /// public AdapterFanuc(MainForm caller, AdapterConf adpConf) : base(caller, adpConf) - { - // è littel endian (NON serve conversione) + { + // è little endian (NON serve conversione) hasBigEndian = false; lg.Info("Start init Adapter FANUC all'IP {0}", utils.CRS("ipPLC")); @@ -513,7 +513,7 @@ namespace MTC_Adapter } else { - Buffer.BlockCopy(MemBlock, 0, AlarmFlags, i, MemBlock.Length); + Buffer.BlockCopy(MemBlock, 0, AlarmFlags, i * 4, MemBlock.Length); } // segnalo allarme letto! memorizzo allarme nel vettore ack.... diff --git a/MTC_Adapter/MTC_Adapter/AdapterGeneric.cs b/MTC_Adapter/MTC_Adapter/AdapterGeneric.cs index 28c10da..36ee860 100644 --- a/MTC_Adapter/MTC_Adapter/AdapterGeneric.cs +++ b/MTC_Adapter/MTC_Adapter/AdapterGeneric.cs @@ -3189,7 +3189,6 @@ namespace MTC_Adapter { // leggo 32bit alla volta... AlarmBlock = (StFlag32)BitConverter.ToUInt32(AlarmFlags, i * 4); - for (int j = 0; j < 32; j++) { // converto! e aggiungo allarmi sollevati al corretto controller allarmi... diff --git a/MTC_Adapter/MTC_Adapter/AdapterOsai.cs b/MTC_Adapter/MTC_Adapter/AdapterOsai.cs index 8a746b1..b81aeb1 100644 --- a/MTC_Adapter/MTC_Adapter/AdapterOsai.cs +++ b/MTC_Adapter/MTC_Adapter/AdapterOsai.cs @@ -199,7 +199,7 @@ namespace MTC_Adapter vettGCodes_02 = new ushort[14]; contChkGCod = utils.CRI("contChkGCod"); - // è littel endian (NON serve conversione) + // è little endian (NON serve conversione) hasBigEndian = false; lg.Info("Start init Adapter OSAI all'IP {0}", utils.CRS("ipPLC")); diff --git a/MTC_Adapter/MTC_Adapter/AdapterSiemens.cs b/MTC_Adapter/MTC_Adapter/AdapterSiemens.cs index 7d119eb..59c8e69 100644 --- a/MTC_Adapter/MTC_Adapter/AdapterSiemens.cs +++ b/MTC_Adapter/MTC_Adapter/AdapterSiemens.cs @@ -203,7 +203,7 @@ namespace MTC_Adapter MemBlock_MST = new byte[46]; // salto NON necessario! saltoMST = 0; - // è littel endian (SERVE conversione) + // è little endian (SERVE conversione) hasBigEndian = true; lg.Info("Start init Adapter SIEMENS"); From a6548d228e891d6e3dc1d83a500bb09ad851c6db Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Fri, 30 Jun 2017 14:26:28 +0200 Subject: [PATCH 11/21] aumentato log x fanuc... --- MTC_Adapter/MTC_Adapter/AdapterFanuc.cs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/MTC_Adapter/MTC_Adapter/AdapterFanuc.cs b/MTC_Adapter/MTC_Adapter/AdapterFanuc.cs index d29904a..1266853 100644 --- a/MTC_Adapter/MTC_Adapter/AdapterFanuc.cs +++ b/MTC_Adapter/MTC_Adapter/AdapterFanuc.cs @@ -448,7 +448,7 @@ namespace MTC_Adapter // log bitmap se verboso attivo + ho allarmi da refreshare if ((Alarm2Refresh != StFlag32.NONE) && utils.CRB("verbose")) { - lg.Info("Richiesto refresh allarmi x bitmask: {0}", utils.binaryForm((int)Alarm2Refresh)); + lg.Info("RAS | Richiesto refresh allarmi x bitmask: {0}", utils.binaryForm((int)Alarm2Refresh)); } bool ackReturned = false; @@ -476,12 +476,11 @@ namespace MTC_Adapter try { // aggiorno vettore allarmi x intero! size del vettore di destinazione (in byte!!!!) - //Buffer.BlockCopy(MemBlock, 0, AlarmFlags, 0, MemBlock.Length); // da testare FANUC!!! Buffer.BlockCopy(MemBlock, 0, AlarmFlags, 0, AlarmFlags.Length); } catch (Exception exc) { - lg.Error(string.Format("Errore in BLOCKCOPY{0}{1}", Environment.NewLine, exc)); + lg.Error(string.Format("RAS | Errore in BLOCKCOPY{0}{1}", Environment.NewLine, exc)); } } } @@ -500,7 +499,6 @@ namespace MTC_Adapter inizio = DateTime.Now; FanucMemRW(R, FANUC.MemType.R, memIndex + i * 4, ref MemBlock); if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-STRB_DW0", MemBlock.Length), DateTime.Now.Subtract(inizio).Ticks); - // da testare metodo copia alternativo, condizionato a web.config if (!utils.CRB("fastCopy")) { @@ -515,6 +513,11 @@ namespace MTC_Adapter { Buffer.BlockCopy(MemBlock, 0, AlarmFlags, i * 4, MemBlock.Length); } + if (utils.CRB("verbose")) + { + UInt32 valore = BitConverter.ToUInt32(MemBlock,0); + lg.Info("RAS | Bit allarme rilevato dalla posizione {0} | {1}", i * 32, utils.binaryForm((int)valore)); + } // segnalo allarme letto! memorizzo allarme nel vettore ack.... retACK_DW0 = utils.setBitOnStFlag(retACK_DW0, true, i); From bac8f0a948ff50d09632de8ef53dc6160f365e2b Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Fri, 30 Jun 2017 16:16:24 +0200 Subject: [PATCH 12/21] fix visualizzazione ripetuta allarmi SIEMENS --- .../CMSCncLib/CNC/CNC.SIEMENS/CNC.SIEMENS.vb | 36 +- MTC_Adapter/MTC_Adapter/AdapterFanuc.cs | 2708 ++++++++--------- MTC_Adapter/MTC_Adapter/AdapterGeneric.cs | 10 +- MTC_Adapter/MTC_Adapter/AdapterSiemens.cs | 15 +- .../DATA/CONF/Adapter_ItemList.xml | 138 +- .../MTC_Adapter/DATA/CONF/AlarmList.map | 4 +- 6 files changed, 1517 insertions(+), 1394 deletions(-) diff --git a/MTC_Adapter/CMSCncLib/CNC/CNC.SIEMENS/CNC.SIEMENS.vb b/MTC_Adapter/CMSCncLib/CNC/CNC.SIEMENS/CNC.SIEMENS.vb index 79ac07e..93de10f 100644 --- a/MTC_Adapter/CMSCncLib/CNC/CNC.SIEMENS/CNC.SIEMENS.vb +++ b/MTC_Adapter/CMSCncLib/CNC/CNC.SIEMENS/CNC.SIEMENS.vb @@ -1116,42 +1116,22 @@ Namespace CNC ''' ''' Public Sub AlarmList(guid As Guid, alarms() As Alarm) - ' are we in GUI thread (main) ? - ' No we are Not in GUI thread => send message to GUI thread - If (False) Then - 'If (lstAlarms.InvokeRequired) Then + ' RIFERIMENTO: + ' SynumerikOperate_Net, pg 101 --> 110 (NON serve verifica theread...) - ' chiamo delegato - 'AlarmListChanged alarmDelegate = New AlarmListChanged(AlarmList); - 'BeginInvoke(alarmDelegate, New Object[] { guid, alarms }); - Else - ' sono in main thread --> eseguo! - - ' check if guid Is correct - If (m_AlarmGuid.Equals(guid)) Then - ' salvo! - currAlarms = alarms - - '// clear the listbox - 'lstAlarms.Items.Clear(); - 'setStatus("new alarms"); - '// go through the array for each alarm - 'foreach(Alarm element In alarms) - '{ - '// write the timeStamp, alarmnumber And the alarmmessage to - '// the listbox - 'lstAlarms.Items.Add(element.TimeStamp.ToString() + " | " + - 'element.Id.ToString() + " | " + - 'element.Message); - End If + ' verifico di essere il "corretto responditore"... + If (m_AlarmGuid.Equals(guid)) Then + ' salvo nel mio oggetto in memoria... + currAlarms = alarms End If + End Sub Public Function getCncAlarm() As Alarm() ' RIFERIMENTO: ' SynumerikOperate_Net, pg 101 --> 110 - '' restituisco vettore allarmi... + ' restituisco vettore allarmi... Return currAlarms End Function diff --git a/MTC_Adapter/MTC_Adapter/AdapterFanuc.cs b/MTC_Adapter/MTC_Adapter/AdapterFanuc.cs index 1266853..79fbfcb 100644 --- a/MTC_Adapter/MTC_Adapter/AdapterFanuc.cs +++ b/MTC_Adapter/MTC_Adapter/AdapterFanuc.cs @@ -8,1363 +8,1361 @@ using System.Text; namespace MTC_Adapter { - public class AdapterFanuc : AdapterGeneric + public class AdapterFanuc : AdapterGeneric + { + ///

+ /// Oggetto MAIN x connessione FANUC + /// + protected FANUC FANUC_ref; + + /// + /// wrapper chiamata lettura/scrittura SINGOLO BYTE... + /// + /// + /// + /// + /// + /// + public bool FanucMemRW(bool bWrite, FANUC.MemType MemType, Int32 memIndex, ref byte Value) { - /// - /// Oggetto MAIN x connessione FANUC - /// - protected FANUC FANUC_ref; - - /// - /// wrapper chiamata lettura/scrittura SINGOLO BYTE... - /// - /// - /// - /// - /// - /// - public bool FanucMemRW(bool bWrite, FANUC.MemType MemType, Int32 memIndex, ref byte Value) + bool answ = false; + if (FANUC_ref.Connected) + { + try { - bool answ = false; - if (FANUC_ref.Connected) - { - try - { - parentForm.commPlcActive = true; - answ = FANUC_ref.F_RW_Byte(bWrite, MemType, memIndex, ref Value); - } - catch - { } - } - parentForm.commPlcActive = false; - return answ; - } - /// - /// wrapper chiamata lettura/scrittura MULTI BYTE... - /// - /// - /// - /// - /// - /// - public bool FanucMemRW(bool bWrite, FANUC.MemType MemType, Int32 memIndex, ref byte[] Value) - { - bool answ = false; - if (FANUC_ref.Connected) - { - try - { - parentForm.commPlcActive = true; - answ = FANUC_ref.F_RW_Byte(bWrite, MemType, memIndex, ref Value); - } - catch - { } - } - parentForm.commPlcActive = false; - return answ; - } - - /// - /// struttura dati fanuc x ALL DYN DATA - /// C:\Users\samuele\Documents\FOCAS A02B-0207-K737_04.20\Document\SpecE\Position\cnc_rddynamic2.htm - /// - protected CMSCncLib.Focas1.ODBDY2_1 allDynData; - /// - /// Vettore degli allarmi CNC attivi - /// - public CMSCncLib.Focas1.ODBALMMSG2 allarmiCNC; - - /// - /// estende l'init della classe base... - /// - /// - /// - public AdapterFanuc(MainForm caller, AdapterConf adpConf) : base(caller, adpConf) - { - // è little endian (NON serve conversione) - hasBigEndian = false; - - lg.Info("Start init Adapter FANUC all'IP {0}", utils.CRS("ipPLC")); - - parentForm.commPlcActive = true; - Runtime.CreateNC(CNC.NcType.FANUC, utils.CRS("ipPLC")); - parentForm.commPlcActive = false; - // inizializzo posizioni assi... - prevPosAxis = new double[adpConf.nAxis]; - prevDirAxis = new int[adpConf.nAxis]; - - FANUC_ref = (FANUC)Runtime.NC; - if (utils.CRB("verbose")) lg.Info("FANUC_ref da CMSCncLib"); - - // disconnetto e connetto... - if (utils.CRB("verbose")) lg.Info("FANUC: tryDisconnect"); - tryDisconnect(); - lg.Info("FANUC: tryConnect"); - tryConnect(); - lg.Info("End init Adapter FANUC"); - } - /// - /// Override disconnessione - /// - public override void tryDisconnect() - { - if (connectionOk) - { - string szStatusConnection = ""; - try - { - FANUC_ref.Disconnect(ref szStatusConnection); - connectionOk = false; - lg.Info(szStatusConnection); - lg.Info("Effettuata disconnessione adapter FANUC!"); - } - catch (Exception exc) - { - lg.Fatal(exc, "Errore nella disconnessione dall'adapter FANUC"); - } - } - else - { - lg.Error("IMPOSSIBILE effettuare disconnessione: Connessione non disponibile..."); - } - } - /// - /// Override connessione - /// - public override void tryConnect() - { - if (!connectionOk) - { - string szStatusConnection = ""; - try - { - parentForm.commPlcActive = true; - FANUC_ref.Connect(ref szStatusConnection); - parentForm.commPlcActive = false; - lg.Info("szStatusConnection: " + szStatusConnection); - connectionOk = true; - // refresh stato allarmi!!! - if (connectionOk) - { - if (adpRunning) - { - // carico status allarmi (completo) - lg.Info("Inizio refresh completo stato allarmi..."); - forceAlarmCheck(); - lg.Info("Completato refresh completo stato allarmi!"); - } - else - { - lg.Info("Connessione OK"); - } - } - else - { - lg.Error("Impossibile procedere, connessione mancante..."); - } - } - catch (Exception exc) - { - lg.Fatal(string.Format("Errore nella connessione all'adapter FANUC: {0}{1}{2}", szStatusConnection, Environment.NewLine, exc)); - connectionOk = false; - lg.Info(string.Format("Segnalo Adapter NON running, pausa di {0} msec prima di ulteriori tentativi di riconnessione", utils.CRI("waitRecMSec"))); - } - } - } - - /// - /// Verifico connessione FANUC... - /// - /// - public override bool connectionOk - { - get - { - return FANUC_ref.Connected; - } - } - - /// - /// Effettuo lettura dei 16 byte di strobe/status - /// - public override void getStrobeAndAckStatus() - { - base.getStrobeAndAckStatus(); - if (connectionOk) - { - // leggo TUTTO ack e strobe, - byte[] MemBlock = new byte[Strobes.Length + Acknowl.Length]; - int memIndex = 10500; - inizio = DateTime.Now; - FanucMemRW(R, FANUC.MemType.R, memIndex, ref MemBlock); - if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-STROBES", MemBlock.Length), DateTime.Now.Subtract(inizio).Ticks); - - // suddivido! - Buffer.BlockCopy(MemBlock, 0, Acknowl, 0, Acknowl.Length); - Buffer.BlockCopy(MemBlock, Acknowl.Length, Strobes, 0, Strobes.Length); - } - else - { - lg.Error("Errore connessione mancante in getStrobeAndAckStatus"); - } - } - /// - /// processing strobe! - /// - public override void processStrobe() - { - // inizializzo userAction - string UserAction = ""; - string TestingData = ""; - string UnkStrobe = ""; - // !!!FARE!!! multipath... - // verifico i vari strobe x recuperare i dati... PER ORA SOLO DW1 per path1 (indice 0)... - int idxPath = 0; - int memIndex = 0; - int bitNum = 0; - inizio = DateTime.Now; - // byte di acknowledge... - byte[] retACK_DW1 = new byte[4]; - try - { - // controllo TUTTI i flag: se ce ne sono di alzati DEVO processare... - if (STRB_DW1 != StFlag32.NONE) - { - // blocco memoria x lettura TUTTI i dati di buffer M/S/T: 46 byte: 2byte (16bit) x (11+6+6) aree - byte[] MemBlock = new byte[46]; - - // leggo tutto!!! - memIndex = 10660; - inizio = DateTime.Now; - FanucMemRW(R, FANUC.MemType.R, memIndex, ref MemBlock); - if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-STRB_DW1", MemBlock.Length), DateTime.Now.Subtract(inizio).Ticks); - - // check COD_M - bitNum = 0; - gestStrobeCodMST(bitNum, ref retACK_DW1, 0, MemBlock, "M"); - - // check COD_S - bitNum = 1; - gestStrobeCodMST(bitNum, ref retACK_DW1, 11, MemBlock, "S"); - - // check COD_T - bitNum = 2; - gestStrobeCodMST(bitNum, ref retACK_DW1, 17, MemBlock, "T"); - - - // check FILE DATI MODIFICATO: ricaricare... - bitNum = 3; - if (STRB_DW1.HasFlag((StFlag32)Math.Pow(2, bitNum))) - { - lg.Info("Notifica file modificato"); - try - { - // reload dati da file... - reloadDataFromFile(); - - // memorizzo allarme nel vettore ack.... - retACK_DW1 = utils.setBitOnStFlag(retACK_DW1, true, bitNum); - } - catch - { - lg.Info("Errore lettura dati da file"); - } - } - - // AREA strobe USER ACTION - // chiamato Start... - bitNum = 4; - gestStrobeUserAction(idxPath, bitNum, ref retACK_DW1, ref UserAction, " (START) "); - // chiamato Stop... - bitNum = 5; - gestStrobeUserAction(idxPath, bitNum, ref retACK_DW1, ref UserAction, " (STOP) "); - // chiamato Reset... - bitNum = 6; - gestStrobeUserAction(idxPath, bitNum, ref retACK_DW1, ref UserAction, " (RESET) "); - - // processo tutti gli strobe x i BIT 7-29 NON gestiti in modo da dare comunque ACK e event... - for (int i = 7; i < 30; i++) - { - gestStrobeUserAction(idxPath, i, ref retACK_DW1, ref UnkStrobe, string.Format(" [STROBE_{0:00}] ", i)); - } - - // AREA strobe x TEST - // INIZIO TEST... - bitNum = 30; - if (STRB_DW1.HasFlag((StFlag32)Math.Pow(2, bitNum))) - { - // formatto stringa risultato - TestingData = string.Format("START TEST{0}", getTestData(utils.CRS("testCharSep"))); - - // memorizzo allarme nel vettore ack.... - retACK_DW1 = utils.setBitOnStFlag(retACK_DW1, true, bitNum); - } - // FINE TEST... - bitNum = 31; - if (STRB_DW1.HasFlag((StFlag32)Math.Pow(2, bitNum))) - { - // formatto stringa risultato - TestingData = string.Format("STOP TEST{0}", getTestData(utils.CRS("testCharSep"))); - - // memorizzo allarme nel vettore ack.... - retACK_DW1 = utils.setBitOnStFlag(retACK_DW1, true, bitNum); - } - } - else - { - // se mi sono rimasti degli strobe di lettura allarmi alzati li abbasso - if (ACK_DW1 != StFlag32.NONE) - { - // inizializzo 4 byte a zero!!! - retACK_DW1 = new byte[4]; - } - } - } - catch - { - lg.Info("Errore in strobe"); - } - - // 2017.01.16 INVIO vettore azioni (1 o +)... SE CE NE SONO! - if (UserAction.Trim() != "") - { - mUserAction.ForceChanged(); - mUserAction.Value = UserAction.Trim(); - } - - // Invio comunque strobe non riconosciuti - if (mUnkStrobe.Value.ToString() != UnkStrobe.Trim()) - { - mUnkStrobe.Value = UnkStrobe.Trim(); - } - - // INVIO COMUNQUE stato test... - mTestingData.Value = TestingData.Trim(); - - memIndex = 10504; - // scrivo update ad ack SE VARIATO!!! - if (ACK_DW1 != (StFlag32)BitConverter.ToUInt32(retACK_DW1, 0)) - { - inizio = DateTime.Now; - FanucMemRW(W, FANUC.MemType.R, memIndex, ref retACK_DW1); - if (utils.CRB("recTime")) TimingData.addResult(string.Format("W{0}-DW1", retACK_DW1.Length), DateTime.Now.Subtract(inizio).Ticks); - } - - sendWatchDog(); - } - - /// - /// Scrive watchdog - /// - /// - /// - public override bool writeWatchDog(ref byte[] retACK_DW) - { - int memIndex = 10508; - return FanucMemRW(W, FANUC.MemType.R, memIndex, ref retACK_DW); - } - - /// - /// Recupero info su test: numero + elenco parametri IN/OUT - /// - /// - /// - private string getTestData(string charSep) - { - string answ = ""; - // Area di memoria x test... 64 byte - byte[] MemBlockTestData = new byte[64]; - // variabili numero test e num parametri impiegati - int testNum = 0; - int numPar = 0; - // variabile dove parcheggiare conversione codici dei parametri del test (IN o OUT) - UInt32 testParam = 0; - - // leggo tutto!!! - int memIndex = 11000; - inizio = DateTime.Now; - FanucMemRW(R, FANUC.MemType.R, memIndex, ref MemBlockTestData); - if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-TEST_DATA_DW1", MemBlockTestData.Length), DateTime.Now.Subtract(inizio).Ticks); - - // recupero cod univoco test e numero parametri impiegati - testNum = BitConverter.ToUInt16(MemBlockTestData, 0); - numPar = BitConverter.ToUInt16(MemBlockTestData, 2); - - - // riporto separatore + numero test + num parametri - answ = string.Format("{0}TN:{1}{0}NP:{2}", charSep, testNum, numPar); - // se ci sono parametri da accodare li recupero! - if (numPar > 0) - { - for (int i = 0; i < numPar; i++) - { - testParam = BitConverter.ToUInt32(MemBlockTestData, 4 * (1 + i)); - answ += string.Format("{0}{1}", charSep, testParam); - } - } - - return answ; - } - - /// - /// Gestione STROBE --> ACK per codici M/S/T - /// - /// 0/1/2 - /// vettore da restituire di ACK - /// shift memoria x buffer dati da leggere - /// Vettore completo dei valori + buffer code M/S/T - /// Quale coda: M/S/T - private void gestStrobeCodMST(int bitNum, ref byte[] retACK_DW1, int memShift, byte[] MemBlock, string Coda) - { - int numEv = 0; - int codEv = 0; - int idxPath = 0; // Hard coded path 0 soltanto... - if (STRB_DW1.HasFlag((StFlag32)Math.Pow(2, bitNum))) - { - // verifico sia > 0 il numero di valori da leggere indice 0 sull'area... - numEv = BitConverter.ToUInt16(MemBlock, 2 * memShift); - if (numEv > 0) - { - // il num ev rappresenta quanti slot 16bit (da 2 byte) sono stati valorizzati, VA FATTO CICLO E LETTI TUTTI - for (int i = 0; i < numEv; i++) - { - // leggo valore Codice - codEv = BitConverter.ToUInt16(MemBlock, 2 * (i + 1 + memShift)); - // accodo evento Codice - appendCodeMST(Coda, codEv.ToString(), idxPath); - } - } - // memorizzo allarme nel vettore ack.... - retACK_DW1 = utils.setBitOnStFlag(retACK_DW1, true, bitNum); - } - } - /// - /// recupera allarmi ed aggiorna strobe (privato) degli allarmi - /// - /// 32bit mask degli allarmi da aggiornare - /// boolean: se si debba tornare ACK - public override void refreshAlarmState(StFlag32 Alarm2Refresh, bool giveAck) - { - // log bitmap se verboso attivo + ho allarmi da refreshare - if ((Alarm2Refresh != StFlag32.NONE) && utils.CRB("verbose")) - { - lg.Info("RAS | Richiesto refresh allarmi x bitmask: {0}", utils.binaryForm((int)Alarm2Refresh)); - } - - bool ackReturned = false; - // byte di acknowledge... - byte[] retACK_DW0 = new byte[4]; - // inizio impostando una bitmap x ACK che abbia i bit abbassati se lo strobe è disattivo: AND logico tra STR e ACK - retACK_DW0 = BitConverter.GetBytes(Convert.ToUInt32(STRB_DW0 & ACK_DW0)); - - inizio = DateTime.Now; - byte[] MemBlock; - // primo blocco memoria allarmi - int memIndex = 10532; - // controllo, SE devo leggere tutto uso un unico accesso ai 128byte, altrimenti leggo a blocchi di 32bit... - - if (Alarm2Refresh == (StFlag32)unchecked((int)UInt32.MaxValue)) - { - // blocco memoria x lettura dati COMPLETO (4Byte*32 = 128Byte) - MemBlock = new byte[128]; - // recupero tutti i 32 bit del blocco - inizio = DateTime.Now; - FanucMemRW(R, FANUC.MemType.R, memIndex, ref MemBlock); - if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-STRB_DW0", MemBlock.Length), DateTime.Now.Subtract(inizio).Ticks); - if (AlarmFlags != null) - { - try - { - // aggiorno vettore allarmi x intero! size del vettore di destinazione (in byte!!!!) - Buffer.BlockCopy(MemBlock, 0, AlarmFlags, 0, AlarmFlags.Length); - } - catch (Exception exc) - { - lg.Error(string.Format("RAS | Errore in BLOCKCOPY{0}{1}", Environment.NewLine, exc)); - } - } - } - else - { - if (Alarm2Refresh != StFlag32.NONE) - { - // blocco memoria x lettura dati - MemBlock = new byte[4]; - // verifico gli allarmi di tutti i bit alzati... - for (int i = 0; i < 32; i++) - { - if (Alarm2Refresh.HasFlag((StFlag32)Math.Pow(2, i))) - { - // recupero tutti i 32 bit del blocco - inizio = DateTime.Now; - FanucMemRW(R, FANUC.MemType.R, memIndex + i * 4, ref MemBlock); - if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-STRB_DW0", MemBlock.Length), DateTime.Now.Subtract(inizio).Ticks); - // da testare metodo copia alternativo, condizionato a web.config - if (!utils.CRB("fastCopy")) - { - // aggiorno nel vettore allarmi i byte interessati - for (int j = 0; j < 4; j++) - { - // copy array a blocchi - AlarmFlags[i * 4 + j] = MemBlock[j]; - } - } - else - { - Buffer.BlockCopy(MemBlock, 0, AlarmFlags, i * 4, MemBlock.Length); - } - if (utils.CRB("verbose")) - { - UInt32 valore = BitConverter.ToUInt32(MemBlock,0); - lg.Info("RAS | Bit allarme rilevato dalla posizione {0} | {1}", i * 32, utils.binaryForm((int)valore)); - } - - // segnalo allarme letto! memorizzo allarme nel vettore ack.... - retACK_DW0 = utils.setBitOnStFlag(retACK_DW0, true, i); - } - } - // scrivo ack se richiesto!!! - if (giveAck) - { - // mi preparo a scrivere ACK - memIndex = 10500; - // scrivo update ad ack!!! - inizio = DateTime.Now; - FanucMemRW(W, FANUC.MemType.R, memIndex, ref retACK_DW0); - if (utils.CRB("recTime")) TimingData.addResult(string.Format("W{0}-ACK_DW0", retACK_DW0.Length), DateTime.Now.Subtract(inizio).Ticks); - ackReturned = true; - } - } - } - - // SE non ho già tornato un ACK... - if (!ackReturned) - { - // se è diverso il vettori degli ACK in memoria da quello PLC... - if (ACK_DW0 != (StFlag32)BitConverter.ToUInt32(retACK_DW0, 0)) - { - memIndex = 10500; - // invio INTERO set ACK_DW0 con bit abbassati... - retACK_DW0 = BitConverter.GetBytes(Convert.ToUInt32(STRB_DW0 & ACK_DW0)); - inizio = DateTime.Now; - FanucMemRW(W, FANUC.MemType.R, memIndex, ref retACK_DW0); - if (utils.CRB("recTime")) TimingData.addResult(string.Format("W{0}-ACK_DW0", retACK_DW0.Length), DateTime.Now.Subtract(inizio).Ticks); - } - } - } - /// - /// processing! - /// - public override void processStatus() - { - // update status da DW2/ DW3 - - // EMstop: verifico BIT e di conseguenza imposto - if (STRB_DW2.HasFlag(StFlag32.B00)) - { - mEStop.Value = "TRIGGERED"; - } - else - { - mEStop.Value = "ARMED"; - } - - // verifico POWER ON... - if (STRB_DW2.HasFlag(StFlag32.B01)) - { - mPower.Value = "ON"; - } - else - { - mPower.Value = "OFF"; - } - - // Processo selezionato 0=P1, 1=P2 - string procSel = ""; - if (STRB_DW2.HasFlag(StFlag32.B02)) - { - procSel = "P2"; - } - else - { - procSel = "P1"; - } - if (mProcSel.Value.ToString() != procSel) - { - mProcSel.Value = procSel; - } - - // HARD CODE: forzo path 1 (indice 0...) - int idxPath = 0; - - // verifico tipo processo path... - if (STRB_DW2.HasFlag(StFlag32.B03)) - { - vettPath[idxPath].mPathType.Value = "LAVORO"; - } - else - { - vettPath[idxPath].mPathType.Value = "ASSERV"; - } - - // switch su RUN mode... - string runMode = ""; - if (STRB_DW2.HasFlag(StFlag32.B04)) - { - runMode = "AUTOMATIC"; - } - else if (STRB_DW2.HasFlag(StFlag32.B05)) - { - runMode = "EDIT"; - } - else if (STRB_DW2.HasFlag(StFlag32.B06)) - { - runMode = "MANUAL_DATA_INPUT"; - } - else if (STRB_DW2.HasFlag(StFlag32.B07)) - { - runMode = "MANUAL"; - } - else if (STRB_DW2.HasFlag(StFlag32.B08)) - { - runMode = "SEMI_AUTO"; - } - // salvo valore selezionato - if (vettPath[idxPath].mPathRunMode.Value.ToString() != runMode) - { - vettPath[idxPath].mPathRunMode.Value = runMode; - } - - // switch su EXE mode... - string exeMode = ""; - if (STRB_DW2.HasFlag(StFlag32.B09)) - { - exeMode = "ACTIVE"; - } - else if (STRB_DW2.HasFlag(StFlag32.B10)) - { - exeMode = "READY"; - } - else if (STRB_DW2.HasFlag(StFlag32.B11)) - { - exeMode = "STOPPED"; - } - else if (STRB_DW2.HasFlag(StFlag32.B12)) - { - exeMode = "FEED_HOLD"; - } - else if (STRB_DW2.HasFlag(StFlag32.B13)) - { - exeMode = "OPTIONAL_STOP"; - } - else if (STRB_DW2.HasFlag(StFlag32.B14)) - { - exeMode = "PROGRAM_STOPPED"; - } - else if (STRB_DW2.HasFlag(StFlag32.B15)) - { - exeMode = "PROGRAM_COMPLETED"; - } - // salvo valore selezionato - if (vettPath[idxPath].mPathExeMode.Value.ToString() != exeMode) - { - vettPath[idxPath].mPathExeMode.Value = exeMode; - } - - - - // processo eventuali altri bit status non noti... - string UnkStatus = ""; - // cerco i bit alzati --> aggiungo in stringa! - for (int i = 14; i < 32; i++) - { - // converto! e aggiungo allarmi sollevati al corretto controller allarmi... - if (STRB_DW2.HasFlag((StFlag32)Math.Pow(2, i))) - { - UnkStatus += string.Format(" [STATUS_{0:00}] ", i); - } - } - // invio comunque... - mUnkStatus.Value = UnkStatus.Trim(); - - // inizializzo SEMPRE a vuoto... - string SubMode = ""; - // verifico sulla STRB_DW3 i submode che POTREBBERO tutti sovrapposti... - if (STRB_DW3 != StFlag32.NONE) - { - // cerco i bit alzati --> aggiungo relativo submode! - for (int i = 0; i < 32; i++) - { - // converto! e aggiungo allarmi sollevati al corretto controller allarmi... - if (STRB_DW3.HasFlag((StFlag32)Math.Pow(2, i))) - { - SubMode += string.Format(" [{0}]", elencoSubMode[i.ToString()]); - } - } - - } - // 2017.01.16 INVIO SOLO SE CAMBIA:.. - if (vettPath[idxPath].mPathSubMode.Value.ToString() != SubMode.Trim()) - { - // INVIO SEMPRE (x prendere il reset/fronte discesa)... - vettPath[idxPath].mPathSubMode.Value = SubMode.Trim(); - } - } - - /// - /// Gestione lettura dati manutenzione - /// - public override bool getMtzDataFromPlc() - { - bool fatto = false; - try - { - if (maintData.Length > 0) - { - - // recupero i dati di manutenzione dall'area di memoria IN BLOCCO - int memIndex = 14000; - byte[] tabDatiMtzByte = new byte[4 * maintData.Length]; - uint[] tabDatiMtz = new uint[maintData.Length]; - inizio = DateTime.Now; - FanucMemRW(R, FANUC.MemType.R, memIndex, ref tabDatiMtzByte); - if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-DatiMtz", tabDatiMtzByte.Length), DateTime.Now.Subtract(inizio).Ticks); - // copio byte --> word! - Buffer.BlockCopy(tabDatiMtzByte, 0, tabDatiMtz, 0, tabDatiMtzByte.Length); - // decodifico aree memoria secondo tab configurazione - processMaintData(tabDatiMtz, maintData); - } - fatto = true; - } - catch - { } - return fatto; - } - /// - /// Gestione lettura dati analogici - /// - public override bool getAnalogDataFromPlc() - { - bool fatto = false; - try - { - if (analogData.Length > 0) - { - // recupero i dati di manutenzione dall'area di memoria IN BLOCCO - int memIndex = 15000; - byte[] tabDatiAnalogByte = new byte[4 * analogData.Length]; - uint[] tabDatiAnalog = new uint[analogData.Length]; - inizio = DateTime.Now; - FanucMemRW(R, FANUC.MemType.R, memIndex, ref tabDatiAnalogByte); - if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-DatiAnalog", tabDatiAnalogByte.Length * 4), DateTime.Now.Subtract(inizio).Ticks); - // copio byte --> word! - Buffer.BlockCopy(tabDatiAnalogByte, 0, tabDatiAnalog, 0, tabDatiAnalogByte.Length); - // decodifico aree memoria secondo tab configurazione - processAnalogData(tabDatiAnalog, analogData); - } - fatto = true; - } - catch - { } - return fatto; - - } - - /// - /// Gestione lettura dati status da PLC - /// - public override bool getStatusDataFromPlc() - { - bool fatto = false; - try - { - if (statusData.Length > 0) - { - // recupero i dati di manutenzione dall'area di memoria IN BLOCCO - int memIndex = 14512; - int numByte = 1 + (statusData.Length / 8); - byte[] tabDatiStatus = new byte[numByte]; - inizio = DateTime.Now; - FanucMemRW(R, FANUC.MemType.R, memIndex, ref tabDatiStatus); - if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-DatiStatus", tabDatiStatus.Length), DateTime.Now.Subtract(inizio).Ticks); - - // decodifico aree memoria secondo tab configurazione - processStatusData(tabDatiStatus, statusData); - } - fatto = true; - } - catch - { } - return fatto; - } - /// - /// Leggo dati globali comuni (x path, assi...) - /// - public override void getGlobalData() - { - // svuoto... - parentForm.dataMonitor_1 = ""; - parentForm.dataMonitor_2 = ""; - parentForm.dataMonitor_3 = ""; - - // accodo dati path in DataMonitor...... - StringBuilder sb1 = new StringBuilder(); - StringBuilder sb2 = new StringBuilder(); - - // dati base... - sb1.AppendLine(string.Format("POWER {0}: | EmStop:{1:N3} | ProcSel: {2}", mPower.Value, mEStop.Value, mProcSel.Value)); - - // leggo dati globali... - parentForm.commPlcActive = true; - inizio = DateTime.Now; - allDynData = FANUC_ref.getAllDynData(); - if (utils.CRB("recTime")) TimingData.addResult("R-ALL-DYN-DATA", DateTime.Now.Subtract(inizio).Ticks); - parentForm.commPlcActive = false; - - FeedRate = allDynData.actf; - - int memIndex = 12000; - byte[] PathData_mem = new byte[4]; - inizio = DateTime.Now; - FanucMemRW(R, FANUC.MemType.R, memIndex, ref PathData_mem); - if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-PathData", PathData_mem.Length), DateTime.Now.Subtract(inizio).Ticks); - - // 2016.07.19 mod con Fabio - //JogRateOver = PathData_mem[0]; - FeedRateOver = PathData_mem[1]; - RapidOver = PathData_mem[2]; - SpeedRateOver = PathData_mem[3]; - - sb1.AppendLine(string.Format("FeedRate: {0} mm/min", FeedRate)); - sb1.AppendLine(string.Format("FeedRateOver: {0} %", FeedRateOver)); - sb1.AppendLine(string.Format("RapidOver: {0} %", RapidOver)); - sb1.AppendLine(string.Format("SpeedRateOver: {0} %", SpeedRateOver)); - - // se ho allarmi li accodo... - if (allDynData.alarm != 0) - { - sb1.AppendLine(string.Format("Allarmi CNC: {0}", allDynData.alarm)); - - parentForm.commPlcActive = true; - inizio = DateTime.Now; - allarmiCNC = FANUC_ref.getCncAlarm(); - if (utils.CRB("recTime")) TimingData.addResult("R-CNC-ALARMS", DateTime.Now.Subtract(inizio).Ticks); - parentForm.commPlcActive = false; - checkCNCAlarms(); - } - else - { - allarmiCNC = new CMSCncLib.Focas1.ODBALMMSG2(); - } - - // accodo dati base! - parentForm.dataMonitor_1 = sb1.ToString(); - // accodo dati UT... - for (int i = 0; i < currAdpConf.nUnOp; i++) - { - sb2.AppendLine(string.Format("UT: ToolId {0} | VitaRes {1} | TipoVita {2} ", vettUnOp[i].mUnOpToolId.Value, vettUnOp[i].mUnOpVitaRes.Value, vettUnOp[i].mUnOpVitaResType.Value)); - } - parentForm.dataMonitor_2 = sb2.ToString(); - - // gestisco lettura dati manutenzione da PLC... - getMtzDataFromPlc(); - // gestisco lettura dati analogici da PLC... - getAnalogDataFromPlc(); - // gestisco lettura dati status da PLC... - getStatusDataFromPlc(); - } - /// - /// Carico file conf dati CMS - /// - protected override void loadOtherFile() - { - base.loadOtherFile(); - loadMaintData("R", 14000, 4); - loadStatusData("R", 14512, 1); - } - /// - /// Processing allarmi CNC - /// - public override void processAlarm() - { - base.processAlarm(); - - // aggiungo gestione allarmi CNC - checkCNCAlarms(); - } - /// - /// Verifica i 10 allarmi CNC SE presenti - /// - private void checkCNCAlarms() - { - // faccio parse allarmi: se ci sono invio e presento - sendAlarmIfPresent(allarmiCNC.msg1); - sendAlarmIfPresent(allarmiCNC.msg2); - sendAlarmIfPresent(allarmiCNC.msg3); - sendAlarmIfPresent(allarmiCNC.msg4); - sendAlarmIfPresent(allarmiCNC.msg5); - sendAlarmIfPresent(allarmiCNC.msg6); - sendAlarmIfPresent(allarmiCNC.msg7); - sendAlarmIfPresent(allarmiCNC.msg8); - sendAlarmIfPresent(allarmiCNC.msg9); - sendAlarmIfPresent(allarmiCNC.msg10); - } - - /// - /// Invia singolo allarme CNC se presente - /// - /// - protected void sendAlarmIfPresent(CMSCncLib.Focas1.ODBALMMSG2_data allarme) - { - // controllo valore... - if (allarme.alm_no > 0) - { - try - { - StringBuilder sb = new StringBuilder(); - if (utils.CRI("loglevel") > 5) - { - lg.Info(string.Format("Allarmi CNC: NUM {0} | MESS: {1} | ASSE: {2} | TYPE: {3}", allarme.alm_no, allarme.alm_msg, allarme.axis, allarme.type)); - } - // se ho asse accodo ad asse altrimenti no... - string codAllarme = string.Format("T{0}-N{1}", allarme.type, allarme.alm_no); - if (allarme.axis == 0) - { - mAlarmCNC.Add(MTConnect.Condition.Level.FAULT, allarme.alm_msg, codAllarme, "", ""); - } - else - { - vettAxis[allarme.axis - 1].mAxAlarmCNC.Add(MTConnect.Condition.Level.FAULT, allarme.alm_msg, codAllarme, "", ""); - } - // mostro in form! - sb.AppendLine(codAllarme); - parentForm.dataMonitor_1 += sb.ToString(); - } - catch (Exception exc) - { - lg.Error(string.Format("{0}", exc)); - } - } - } - /// - /// Recupero dati x UnOp - /// - public override void getUnOp() - { - // leggo in blocco tutte le speed da memoria... - int memIndex = 3140; - // buffer memoria 60 byte... speed (16bit 2 * 20) + load (8bit 1 * 20) visto che sono 20 teste max - byte[] unOpSpeedMem = new byte[60]; - - inizio = DateTime.Now; - FanucMemRW(R, FANUC.MemType.D, memIndex, ref unOpSpeedMem); - if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-SPEED_UNOP", unOpSpeedMem.Length), DateTime.Now.Subtract(inizio).Ticks); - - procUnOp(unOpSpeedMem); - } - /// - /// Procedura di processing lettura memoria x DatiUt - Step 4 - /// - /// - /// - /// - public override int getDatiUt_step4(ref byte[] int32Mem, int j) - { - int memIndex = 13100 + 4 * j; - inizio = DateTime.Now; - FanucMemRW(R, FANUC.MemType.D, memIndex, ref int32Mem); - if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-TabUT-VitaRes", int32Mem.Length), DateTime.Now.Subtract(inizio).Ticks); - return memIndex; - } - /// - /// Procedura di processing lettura memoria x DatiUt - Step 3b - /// - /// - /// - /// - public override int getDatiUt_step3b(ref byte int8Mem, int j) - { - int memIndex = 10700 + 1 * j; - inizio = DateTime.Now; - FanucMemRW(R, FANUC.MemType.D, memIndex, ref int8Mem); - if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-TabUT-FamUT", 8), DateTime.Now.Subtract(inizio).Ticks); - return memIndex; - } - /// - /// Procedura di processing lettura memoria x DatiUt - Step 3a - /// - /// - /// - public override int getDatiUt_step3a(ref byte[] tabFam_FamUt) - { - int memIndex = 8900; - inizio = DateTime.Now; - FanucMemRW(R, FANUC.MemType.D, memIndex, ref tabFam_FamUt); - if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-TabFamUT-FamUT", tabFam_FamUt.Length), DateTime.Now.Subtract(inizio).Ticks); - return memIndex; - } - /// - /// Procedura di processing lettura memoria x DatiUt - Step 2b - /// - /// - /// - /// - public override int getDatiUt_step2b(ref byte[] int16Mem, int j) - { - int memIndex = 11700 + 2 * j; - inizio = DateTime.Now; - FanucMemRW(R, FANUC.MemType.D, memIndex, ref int16Mem); - if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-TabUT-FamUT", int16Mem.Length), DateTime.Now.Subtract(inizio).Ticks); - return memIndex; - } - /// - /// Procedura di processing lettura memoria x DatiUt - Step 2a - /// - /// - /// - public override int getDatiUt_step2a(ref byte[] tabUt_UT) - { - int memIndex = 11300; - inizio = DateTime.Now; - FanucMemRW(R, FANUC.MemType.D, memIndex, ref tabUt_UT); - if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-TabUT-UT", tabUt_UT.Length), DateTime.Now.Subtract(inizio).Ticks); - return memIndex; - } - /// - /// Procedura di processing lettura memoria x DatiUt - Step 1 - /// - /// - /// - public override int getDatiUt_step1(ref byte[] elencoUtMem) - { - int memIndex = 2960; - inizio = DateTime.Now; - FanucMemRW(R, FANUC.MemType.D, memIndex, ref elencoUtMem); - if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-NUMUT", elencoUtMem.Length), DateTime.Now.Subtract(inizio).Ticks); - return memIndex; - } - - public override void getPath() - { - base.getPath(); - - // recupero vettore generale G MODE - parentForm.commPlcActive = true; - inizio = DateTime.Now; - CMSCncLib.Focas1.ODBGCD vettGCodes = FANUC_ref.getPathGCodeMod(); - if (utils.CRB("recTime")) TimingData.addResult("R-GCodModal", DateTime.Now.Subtract(inizio).Ticks); - parentForm.commPlcActive = false; - - string GCodAttivi = ""; - GCodAttivi += string.Format("[{0}]", vettGCodes.gcd0.code); - GCodAttivi += string.Format("[{0}]", vettGCodes.gcd1.code); - GCodAttivi += string.Format("[{0}]", vettGCodes.gcd2.code); - GCodAttivi += string.Format("[{0}]", vettGCodes.gcd3.code); - GCodAttivi += string.Format("[{0}]", vettGCodes.gcd4.code); - GCodAttivi += string.Format("[{0}]", vettGCodes.gcd5.code); - GCodAttivi += string.Format("[{0}]", vettGCodes.gcd6.code); - GCodAttivi += string.Format("[{0}]", vettGCodes.gcd7.code); - GCodAttivi += string.Format("[{0}]", vettGCodes.gcd8.code); - GCodAttivi += string.Format("[{0}]", vettGCodes.gcd9.code); - GCodAttivi += string.Format("[{0}]", vettGCodes.gcd10.code); - GCodAttivi += string.Format("[{0}]", vettGCodes.gcd11.code); - GCodAttivi += string.Format("[{0}]", vettGCodes.gcd12.code); - GCodAttivi += string.Format("[{0}]", vettGCodes.gcd13.code); - GCodAttivi += string.Format("[{0}]", vettGCodes.gcd14.code); - GCodAttivi += string.Format("[{0}]", vettGCodes.gcd15.code); - GCodAttivi += string.Format("[{0}]", vettGCodes.gcd16.code); - GCodAttivi += string.Format("[{0}]", vettGCodes.gcd17.code); - GCodAttivi += string.Format("[{0}]", vettGCodes.gcd18.code); - GCodAttivi += string.Format("[{0}]", vettGCodes.gcd19.code); - GCodAttivi += string.Format("[{0}]", vettGCodes.gcd20.code); - GCodAttivi += string.Format("[{0}]", vettGCodes.gcd21.code); - GCodAttivi += string.Format("[{0}]", vettGCodes.gcd22.code); - GCodAttivi += string.Format("[{0}]", vettGCodes.gcd23.code); - GCodAttivi += string.Format("[{0}]", vettGCodes.gcd24.code); - GCodAttivi += string.Format("[{0}]", vettGCodes.gcd25.code); - GCodAttivi += string.Format("[{0}]", vettGCodes.gcd26.code); - GCodAttivi += string.Format("[{0}]", vettGCodes.gcd27.code); - - parentForm.commPlcActive = true; - inizio = DateTime.Now; - vettGCodes = FANUC_ref.getPathGCode1Shot(); - parentForm.commPlcActive = false; - if (utils.CRB("recTime")) TimingData.addResult("R-GCodOneShot", DateTime.Now.Subtract(inizio).Ticks); - if (vettGCodes.gcd0.flag > 0) GCodAttivi += string.Format("[{0}]", vettGCodes.gcd0.code); - if (vettGCodes.gcd1.flag > 0) GCodAttivi += string.Format("[{0}]", vettGCodes.gcd1.code); - if (vettGCodes.gcd2.flag > 0) GCodAttivi += string.Format("[{0}]", vettGCodes.gcd2.code); - if (vettGCodes.gcd3.flag > 0) GCodAttivi += string.Format("[{0}]", vettGCodes.gcd3.code); - - parentForm.commPlcActive = true; - inizio = DateTime.Now; - CMSCncLib.Focas1.ODB5AXMAN vettTTCoord = FANUC_ref.getPathTTCoord(); - if (utils.CRB("recTime")) TimingData.addResult("R-TTCoord", DateTime.Now.Subtract(inizio).Ticks); - parentForm.commPlcActive = false; - - // ciclo su path - StringBuilder sb_2; - StringBuilder sb_3; - for (int i = 0; i < currAdpConf.nPath; i++) - { - // accodo dati path in DataMonitor... - sb_2 = new StringBuilder(); - sb_3 = new StringBuilder(); - - vettPath[i].mPathCodG_Act.Value = GCodAttivi; - - vettPath[i].mPathPosActX.Value = ((decimal)vettTTCoord.data1) / utils.CRI("fattdecimale"); - vettPath[i].mPathPosActY.Value = ((decimal)vettTTCoord.data2) / utils.CRI("fattdecimale"); - vettPath[i].mPathPosActZ.Value = ((decimal)vettTTCoord.data3) / utils.CRI("fattdecimale"); - vettPath[i].mPathPosActI.Value = ((decimal)vettTTCoord.c1) / utils.CRI("fattdecimale"); - vettPath[i].mPathPosActJ.Value = ((decimal)vettTTCoord.c2) / utils.CRI("fattdecimale"); - vettPath[i].mPathPosActK.Value = "0"; // è 5 assi...nullo... - - // 2017.01.16 da rivedere - vettPath[i].mPathCurrProgRowNum.Value = ""; - vettPath[i].mPathActiveAxes.Value = ""; - - sb_2.AppendLine(string.Format("Path {0}, PROG: {1}", i + 1, vettPath[i].mPathCurrProg.Value)); - sb_3.AppendLine(string.Format("Path {0}, GCodes: {1}", i + 1, GCodAttivi)); - - sb_3.AppendLine(string.Format("Path {0}, Asse 1: {1:N3}", i + 1, ((decimal)vettTTCoord.data1) / utils.CRI("fattdecimale"))); - sb_3.AppendLine(string.Format("Path {0}, Asse 2: {1:N3}", i + 1, ((decimal)vettTTCoord.data2) / utils.CRI("fattdecimale"))); - sb_3.AppendLine(string.Format("Path {0}, Asse 3: {1:N3}", i + 1, ((decimal)vettTTCoord.data3) / utils.CRI("fattdecimale"))); - sb_3.AppendLine(string.Format("Path {0}, Cent 1: {1:N3}", i + 1, ((decimal)vettTTCoord.c1) / utils.CRI("fattdecimale"))); - sb_3.AppendLine(string.Format("Path {0}, Cent 2: {1:N3}", i + 1, ((decimal)vettTTCoord.c2) / utils.CRI("fattdecimale"))); - - parentForm.dataMonitor_2 += sb_2.ToString(); - parentForm.dataMonitor_3 += sb_3.ToString(); - } - - } - - public override void getAxis() - { - // mostro assi in DataMonitor...... - StringBuilder sb = new StringBuilder(); - - parentForm.commPlcActive = true; - inizio = DateTime.Now; - CMSCncLib.Focas1.ODBPOS posAssi = FANUC_ref.getAllAxisPos(); - if (utils.CRB("recTime")) TimingData.addResult("R-AXIS_POS", DateTime.Now.Subtract(inizio).Ticks); - - inizio = DateTime.Now; - CMSCncLib.Focas1.ODBSVLOAD loadAssi = FANUC_ref.getAllAxisLoad(); - if (utils.CRB("recTime")) TimingData.addResult("R-AXIS_LOAD", DateTime.Now.Subtract(inizio).Ticks); - parentForm.commPlcActive = false; - - CMSCncLib.Focas1.LOADELM valLoad = new CMSCncLib.Focas1.LOADELM(); - CMSCncLib.Focas1.POSELMALL valPos = new CMSCncLib.Focas1.POSELMALL(); - - // nuova posizione (per calcoli) - double newPos = 0; - double distPerc = 0; - int newDir = 0; - string tipoAsse = ""; - string direzione = ""; - - for (int i = 0; i < currAdpConf.nAxis; i++) - { - // per sicurezza try-catch - try - { - // in base a indice scelgo valore posizione e load - switch (i) - { - case 0: - valPos = posAssi.p1; - valLoad = loadAssi.svload1; - break; - case 1: - valPos = posAssi.p2; - valLoad = loadAssi.svload2; - break; - case 2: - valPos = posAssi.p3; - valLoad = loadAssi.svload3; - break; - case 3: - valPos = posAssi.p4; - valLoad = loadAssi.svload4; - break; - case 4: - valPos = posAssi.p5; - valLoad = loadAssi.svload5; - break; - case 5: - valPos = posAssi.p6; - valLoad = loadAssi.svload6; - break; - case 6: - valPos = posAssi.p7; - valLoad = loadAssi.svload7; - break; - case 7: - valPos = posAssi.p8; - valLoad = loadAssi.svload8; - break; - case 8: - valPos = posAssi.p9; - valLoad = loadAssi.svload9; - break; - case 9: - valPos = posAssi.p10; - valLoad = loadAssi.svload10; - break; - case 10: - valPos = posAssi.p11; - valLoad = loadAssi.svload11; - break; - case 11: - valPos = posAssi.p12; - valLoad = loadAssi.svload12; - break; - case 12: - valPos = posAssi.p13; - valLoad = loadAssi.svload13; - break; - case 13: - valPos = posAssi.p14; - valLoad = loadAssi.svload14; - break; - case 14: - valPos = posAssi.p15; - valLoad = loadAssi.svload15; - break; - case 15: - valPos = posAssi.p16; - valLoad = loadAssi.svload16; - break; - case 16: - valPos = posAssi.p17; - valLoad = loadAssi.svload17; - break; - case 17: - valPos = posAssi.p18; - valLoad = loadAssi.svload18; - break; - case 18: - valPos = posAssi.p19; - valLoad = loadAssi.svload19; - break; - case 19: - valPos = posAssi.p20; - valLoad = loadAssi.svload20; - break; - case 20: - valPos = posAssi.p21; - valLoad = loadAssi.svload21; - break; - case 21: - valPos = posAssi.p22; - valLoad = loadAssi.svload22; - break; - case 22: - valPos = posAssi.p23; - valLoad = loadAssi.svload23; - break; - case 23: - valPos = posAssi.p24; - valLoad = loadAssi.svload24; - break; - case 24: - valPos = posAssi.p25; - valLoad = loadAssi.svload25; - break; - case 25: - valPos = posAssi.p26; - valLoad = loadAssi.svload26; - break; - case 26: - valPos = posAssi.p27; - valLoad = loadAssi.svload27; - break; - case 27: - valPos = posAssi.p28; - valLoad = loadAssi.svload28; - break; - case 28: - valPos = posAssi.p29; - valLoad = loadAssi.svload29; - break; - case 29: - valPos = posAssi.p30; - valLoad = loadAssi.svload30; - break; - case 30: - valPos = posAssi.p31; - valLoad = loadAssi.svload31; - break; - case 31: - valPos = posAssi.p32; - valLoad = loadAssi.svload32; - break; - default: - // 2017.03.01 suggerimento Fabio: in CMS_FANUC in advanced compiler options mettere FS30D=1,SIEMENS=1 x leggere + assi?!? - valPos = posAssi.p1; - valLoad = loadAssi.svload1; - break; - } - - // popolo valori... - vettAxis[i].mAxLoad.Value = (double)(valLoad.data) / Math.Pow(10, valLoad.dec); - newPos = (double)(valPos.abs.data) / Math.Pow(10, valPos.abs.dec); - vettAxis[i].mAxPosAct.Value = newPos; - vettAxis[i].mAxPosTgt.Value = newPos + (double)(valPos.dist.data) / Math.Pow(10, valPos.dist.dec); - - vettAxis[i].mAxFeedAct.Value = FeedRate; - - // calcolo distanza e salvo valore... - distPerc = newPos - prevPosAxis[i]; - - // sistemo direzione +/- (POS/NEG se lineari, CCW/CW se rotativi) - if (distPerc != 0) - { - newDir = Convert.ToInt32(distPerc / Math.Abs(distPerc)); - } - else - { - newDir = prevDirAxis[i]; - } - - // verifico tipo direzione da tipo asse... - tipoAsse = vettAxis[i].mAxType.Value.ToString(); - if (tipoAsse == "LINEAR") - { - // ?: conditional operator. - direzione = (newDir > 0) ? "POSITIVE" : "NEGATIVE"; - } - else if (tipoAsse == "ROTARY") - { - direzione = (newDir > 0) ? "CLOCKWISE" : "COUNTER_CLOCKWISE"; - } - - vettAxis[i].mAxDir.Value = direzione; - - - if (utils.CRB("verbose")) - { - sb.AppendLine(string.Format("Asse {0}: PosAct:{1:N3}, ToGo:{2:N3}{3} | {4}", valPos.abs.name, (double)(valPos.abs.data) / Math.Pow(10, valPos.abs.dec), valPos.dist.name, (double)(valPos.dist.data) / Math.Pow(10, valPos.dist.dec), direzione)); - } - - // salvo valori vettore prec... - prevPosAxis[i] = newPos; - prevDirAxis[i] = newDir; - - //vettAxis[i].mAxMainProc.Value = AxData.AxisMainProc; - //vettAxis[i].mAxIsMaster.Value = AxData.AxisIsMaster; - //vettAxis[i].mAxMastId.Value = AxData.AxisMastId; - vettAxis[i].mAxFeedOver.Value = FeedRateOver; - //vettAxis[i].mAxAccelAct.Value = AxData.AxisAccel; - //vettAxis[i].mAxBattery.Value = AxData.AxisBattery; - } - catch - { - lg.Error(string.Format("Errore in lettura asse {0}", i)); - } - } - - parentForm.dataMonitor_3 += sb.ToString(); + parentForm.commPlcActive = true; + answ = FANUC_ref.F_RW_Byte(bWrite, MemType, memIndex, ref Value); } + catch + { } + } + parentForm.commPlcActive = false; + return answ; } + /// + /// wrapper chiamata lettura/scrittura MULTI BYTE... + /// + /// + /// + /// + /// + /// + public bool FanucMemRW(bool bWrite, FANUC.MemType MemType, Int32 memIndex, ref byte[] Value) + { + bool answ = false; + if (FANUC_ref.Connected) + { + try + { + parentForm.commPlcActive = true; + answ = FANUC_ref.F_RW_Byte(bWrite, MemType, memIndex, ref Value); + } + catch + { } + } + parentForm.commPlcActive = false; + return answ; + } + + /// + /// struttura dati fanuc x ALL DYN DATA + /// C:\Users\samuele\Documents\FOCAS A02B-0207-K737_04.20\Document\SpecE\Position\cnc_rddynamic2.htm + /// + protected CMSCncLib.Focas1.ODBDY2_1 allDynData; + /// + /// Vettore degli allarmi CNC attivi + /// + public CMSCncLib.Focas1.ODBALMMSG2 allarmiCNC; + + /// + /// estende l'init della classe base... + /// + /// + /// + public AdapterFanuc(MainForm caller, AdapterConf adpConf) : base(caller, adpConf) + { + // è little endian (NON serve conversione) + hasBigEndian = false; + + lg.Info("Start init Adapter FANUC all'IP {0}", utils.CRS("ipPLC")); + + parentForm.commPlcActive = true; + Runtime.CreateNC(CNC.NcType.FANUC, utils.CRS("ipPLC")); + parentForm.commPlcActive = false; + // inizializzo posizioni assi... + prevPosAxis = new double[adpConf.nAxis]; + prevDirAxis = new int[adpConf.nAxis]; + + FANUC_ref = (FANUC)Runtime.NC; + if (utils.CRB("verbose")) lg.Info("FANUC_ref da CMSCncLib"); + + // disconnetto e connetto... + if (utils.CRB("verbose")) lg.Info("FANUC: tryDisconnect"); + tryDisconnect(); + lg.Info("FANUC: tryConnect"); + tryConnect(); + lg.Info("End init Adapter FANUC"); + } + /// + /// Override disconnessione + /// + public override void tryDisconnect() + { + if (connectionOk) + { + string szStatusConnection = ""; + try + { + FANUC_ref.Disconnect(ref szStatusConnection); + connectionOk = false; + lg.Info(szStatusConnection); + lg.Info("Effettuata disconnessione adapter FANUC!"); + } + catch (Exception exc) + { + lg.Fatal(exc, "Errore nella disconnessione dall'adapter FANUC"); + } + } + else + { + lg.Error("IMPOSSIBILE effettuare disconnessione: Connessione non disponibile..."); + } + } + /// + /// Override connessione + /// + public override void tryConnect() + { + if (!connectionOk) + { + string szStatusConnection = ""; + try + { + parentForm.commPlcActive = true; + FANUC_ref.Connect(ref szStatusConnection); + parentForm.commPlcActive = false; + lg.Info("szStatusConnection: " + szStatusConnection); + connectionOk = true; + // refresh stato allarmi!!! + if (connectionOk) + { + if (adpRunning) + { + // carico status allarmi (completo) + lg.Info("Inizio refresh completo stato allarmi..."); + forceAlarmCheck(); + lg.Info("Completato refresh completo stato allarmi!"); + } + else + { + lg.Info("Connessione OK"); + } + } + else + { + lg.Error("Impossibile procedere, connessione mancante..."); + } + } + catch (Exception exc) + { + lg.Fatal(string.Format("Errore nella connessione all'adapter FANUC: {0}{1}{2}", szStatusConnection, Environment.NewLine, exc)); + connectionOk = false; + lg.Info(string.Format("Segnalo Adapter NON running, pausa di {0} msec prima di ulteriori tentativi di riconnessione", utils.CRI("waitRecMSec"))); + } + } + } + + /// + /// Verifico connessione FANUC... + /// + /// + public override bool connectionOk + { + get + { + return FANUC_ref.Connected; + } + } + + /// + /// Effettuo lettura dei 16 byte di strobe/status + /// + public override void getStrobeAndAckStatus() + { + base.getStrobeAndAckStatus(); + if (connectionOk) + { + // leggo TUTTO ack e strobe, + byte[] MemBlock = new byte[Strobes.Length + Acknowl.Length]; + int memIndex = 10500; + inizio = DateTime.Now; + FanucMemRW(R, FANUC.MemType.R, memIndex, ref MemBlock); + if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-STROBES", MemBlock.Length), DateTime.Now.Subtract(inizio).Ticks); + + // suddivido! + Buffer.BlockCopy(MemBlock, 0, Acknowl, 0, Acknowl.Length); + Buffer.BlockCopy(MemBlock, Acknowl.Length, Strobes, 0, Strobes.Length); + } + else + { + lg.Error("Errore connessione mancante in getStrobeAndAckStatus"); + } + } + /// + /// processing strobe! + /// + public override void processStrobe() + { + // inizializzo userAction + string UserAction = ""; + string TestingData = ""; + string UnkStrobe = ""; + // !!!FARE!!! multipath... + // verifico i vari strobe x recuperare i dati... PER ORA SOLO DW1 per path1 (indice 0)... + int idxPath = 0; + int memIndex = 0; + int bitNum = 0; + inizio = DateTime.Now; + // byte di acknowledge... + byte[] retACK_DW1 = new byte[4]; + try + { + // controllo TUTTI i flag: se ce ne sono di alzati DEVO processare... + if (STRB_DW1 != StFlag32.NONE) + { + // blocco memoria x lettura TUTTI i dati di buffer M/S/T: 46 byte: 2byte (16bit) x (11+6+6) aree + byte[] MemBlock = new byte[46]; + + // leggo tutto!!! + memIndex = 10660; + inizio = DateTime.Now; + FanucMemRW(R, FANUC.MemType.R, memIndex, ref MemBlock); + if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-STRB_DW1", MemBlock.Length), DateTime.Now.Subtract(inizio).Ticks); + + // check COD_M + bitNum = 0; + gestStrobeCodMST(bitNum, ref retACK_DW1, 0, MemBlock, "M"); + + // check COD_S + bitNum = 1; + gestStrobeCodMST(bitNum, ref retACK_DW1, 11, MemBlock, "S"); + + // check COD_T + bitNum = 2; + gestStrobeCodMST(bitNum, ref retACK_DW1, 17, MemBlock, "T"); + + + // check FILE DATI MODIFICATO: ricaricare... + bitNum = 3; + if (STRB_DW1.HasFlag((StFlag32)Math.Pow(2, bitNum))) + { + lg.Info("Notifica file modificato"); + try + { + // reload dati da file... + reloadDataFromFile(); + + // memorizzo allarme nel vettore ack.... + retACK_DW1 = utils.setBitOnStFlag(retACK_DW1, true, bitNum); + } + catch + { + lg.Info("Errore lettura dati da file"); + } + } + + // AREA strobe USER ACTION + // chiamato Start... + bitNum = 4; + gestStrobeUserAction(idxPath, bitNum, ref retACK_DW1, ref UserAction, " (START) "); + // chiamato Stop... + bitNum = 5; + gestStrobeUserAction(idxPath, bitNum, ref retACK_DW1, ref UserAction, " (STOP) "); + // chiamato Reset... + bitNum = 6; + gestStrobeUserAction(idxPath, bitNum, ref retACK_DW1, ref UserAction, " (RESET) "); + + // processo tutti gli strobe x i BIT 7-29 NON gestiti in modo da dare comunque ACK e event... + for (int i = 7; i < 30; i++) + { + gestStrobeUserAction(idxPath, i, ref retACK_DW1, ref UnkStrobe, string.Format(" [STROBE_{0:00}] ", i)); + } + + // AREA strobe x TEST + // INIZIO TEST... + bitNum = 30; + if (STRB_DW1.HasFlag((StFlag32)Math.Pow(2, bitNum))) + { + // formatto stringa risultato + TestingData = string.Format("START TEST{0}", getTestData(utils.CRS("testCharSep"))); + + // memorizzo allarme nel vettore ack.... + retACK_DW1 = utils.setBitOnStFlag(retACK_DW1, true, bitNum); + } + // FINE TEST... + bitNum = 31; + if (STRB_DW1.HasFlag((StFlag32)Math.Pow(2, bitNum))) + { + // formatto stringa risultato + TestingData = string.Format("STOP TEST{0}", getTestData(utils.CRS("testCharSep"))); + + // memorizzo allarme nel vettore ack.... + retACK_DW1 = utils.setBitOnStFlag(retACK_DW1, true, bitNum); + } + } + else + { + // se mi sono rimasti degli strobe di lettura allarmi alzati li abbasso + if (ACK_DW1 != StFlag32.NONE) + { + // inizializzo 4 byte a zero!!! + retACK_DW1 = new byte[4]; + } + } + } + catch + { + lg.Info("Errore in strobe"); + } + + // 2017.01.16 INVIO vettore azioni (1 o +)... SE CE NE SONO! + if (UserAction.Trim() != "") + { + mUserAction.ForceChanged(); + mUserAction.Value = UserAction.Trim(); + } + + // Invio comunque strobe non riconosciuti + if (mUnkStrobe.Value.ToString() != UnkStrobe.Trim()) + { + mUnkStrobe.Value = UnkStrobe.Trim(); + } + + // INVIO COMUNQUE stato test... + mTestingData.Value = TestingData.Trim(); + + memIndex = 10504; + // scrivo update ad ack SE VARIATO!!! + if (ACK_DW1 != (StFlag32)BitConverter.ToUInt32(retACK_DW1, 0)) + { + inizio = DateTime.Now; + FanucMemRW(W, FANUC.MemType.R, memIndex, ref retACK_DW1); + if (utils.CRB("recTime")) TimingData.addResult(string.Format("W{0}-DW1", retACK_DW1.Length), DateTime.Now.Subtract(inizio).Ticks); + } + + sendWatchDog(); + } + + /// + /// Scrive watchdog + /// + /// + /// + public override bool writeWatchDog(ref byte[] retACK_DW) + { + int memIndex = 10508; + return FanucMemRW(W, FANUC.MemType.R, memIndex, ref retACK_DW); + } + + /// + /// Recupero info su test: numero + elenco parametri IN/OUT + /// + /// + /// + private string getTestData(string charSep) + { + string answ = ""; + // Area di memoria x test... 64 byte + byte[] MemBlockTestData = new byte[64]; + // variabili numero test e num parametri impiegati + int testNum = 0; + int numPar = 0; + // variabile dove parcheggiare conversione codici dei parametri del test (IN o OUT) + UInt32 testParam = 0; + + // leggo tutto!!! + int memIndex = 11000; + inizio = DateTime.Now; + FanucMemRW(R, FANUC.MemType.R, memIndex, ref MemBlockTestData); + if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-TEST_DATA_DW1", MemBlockTestData.Length), DateTime.Now.Subtract(inizio).Ticks); + + // recupero cod univoco test e numero parametri impiegati + testNum = BitConverter.ToUInt16(MemBlockTestData, 0); + numPar = BitConverter.ToUInt16(MemBlockTestData, 2); + + + // riporto separatore + numero test + num parametri + answ = string.Format("{0}TN:{1}{0}NP:{2}", charSep, testNum, numPar); + // se ci sono parametri da accodare li recupero! + if (numPar > 0) + { + for (int i = 0; i < numPar; i++) + { + testParam = BitConverter.ToUInt32(MemBlockTestData, 4 * (1 + i)); + answ += string.Format("{0}{1}", charSep, testParam); + } + } + + return answ; + } + + /// + /// Gestione STROBE --> ACK per codici M/S/T + /// + /// 0/1/2 + /// vettore da restituire di ACK + /// shift memoria x buffer dati da leggere + /// Vettore completo dei valori + buffer code M/S/T + /// Quale coda: M/S/T + private void gestStrobeCodMST(int bitNum, ref byte[] retACK_DW1, int memShift, byte[] MemBlock, string Coda) + { + int numEv = 0; + int codEv = 0; + int idxPath = 0; // Hard coded path 0 soltanto... + if (STRB_DW1.HasFlag((StFlag32)Math.Pow(2, bitNum))) + { + // verifico sia > 0 il numero di valori da leggere indice 0 sull'area... + numEv = BitConverter.ToUInt16(MemBlock, 2 * memShift); + if (numEv > 0) + { + // il num ev rappresenta quanti slot 16bit (da 2 byte) sono stati valorizzati, VA FATTO CICLO E LETTI TUTTI + for (int i = 0; i < numEv; i++) + { + // leggo valore Codice + codEv = BitConverter.ToUInt16(MemBlock, 2 * (i + 1 + memShift)); + // accodo evento Codice + appendCodeMST(Coda, codEv.ToString(), idxPath); + } + } + // memorizzo allarme nel vettore ack.... + retACK_DW1 = utils.setBitOnStFlag(retACK_DW1, true, bitNum); + } + } + /// + /// recupera allarmi ed aggiorna strobe (privato) degli allarmi + /// + /// 32bit mask degli allarmi da aggiornare + /// boolean: se si debba tornare ACK + public override void refreshAlarmState(StFlag32 Alarm2Refresh, bool giveAck) + { + // log bitmap se verboso attivo + ho allarmi da refreshare + if ((Alarm2Refresh != StFlag32.NONE) && utils.CRB("verbose")) + { + lg.Info("RAS | Richiesto refresh allarmi x bitmask: {0}", utils.binaryForm((int)Alarm2Refresh)); + } + + bool ackReturned = false; + // byte di acknowledge... + byte[] retACK_DW0 = new byte[4]; + // inizio impostando una bitmap x ACK che abbia i bit abbassati se lo strobe è disattivo: AND logico tra STR e ACK + retACK_DW0 = BitConverter.GetBytes(Convert.ToUInt32(STRB_DW0 & ACK_DW0)); + + inizio = DateTime.Now; + byte[] MemBlock; + // primo blocco memoria allarmi + int memIndex = 10532; + // controllo, SE devo leggere tutto uso un unico accesso ai 128byte, altrimenti leggo a blocchi di 32bit... + + if (Alarm2Refresh == (StFlag32)unchecked((int)UInt32.MaxValue)) + { + // blocco memoria x lettura dati COMPLETO (4Byte*32 = 128Byte) + MemBlock = new byte[128]; + // recupero tutti i 32 bit del blocco + inizio = DateTime.Now; + FanucMemRW(R, FANUC.MemType.R, memIndex, ref MemBlock); + if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-STRB_DW0", MemBlock.Length), DateTime.Now.Subtract(inizio).Ticks); + if (AlarmFlags != null) + { + try + { + // aggiorno vettore allarmi x intero! size del vettore di destinazione (in byte!!!!) + Buffer.BlockCopy(MemBlock, 0, AlarmFlags, 0, AlarmFlags.Length); + } + catch (Exception exc) + { + lg.Error(string.Format("RAS | Errore in BLOCKCOPY{0}{1}", Environment.NewLine, exc)); + } + } + } + else + { + if (Alarm2Refresh != StFlag32.NONE) + { + // blocco memoria x lettura dati + MemBlock = new byte[4]; + // verifico gli allarmi di tutti i bit alzati... + for (int i = 0; i < 32; i++) + { + if (Alarm2Refresh.HasFlag((StFlag32)Math.Pow(2, i))) + { + // recupero tutti i 32 bit del blocco + inizio = DateTime.Now; + FanucMemRW(R, FANUC.MemType.R, memIndex + i * 4, ref MemBlock); + if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-STRB_DW0", MemBlock.Length), DateTime.Now.Subtract(inizio).Ticks); + // da testare metodo copia alternativo, condizionato a web.config + if (!utils.CRB("fastCopy")) + { + // aggiorno nel vettore allarmi i byte interessati + for (int j = 0; j < 4; j++) + { + // copy array a blocchi + AlarmFlags[i * 4 + j] = MemBlock[j]; + } + } + else + { + Buffer.BlockCopy(MemBlock, 0, AlarmFlags, i * 4, MemBlock.Length); + } + if (utils.CRB("verbose")) + { + UInt32 valore = BitConverter.ToUInt32(MemBlock, 0); + lg.Info("RAS | Bit allarme rilevato dalla posizione {0} | {1}", i * 32, utils.binaryForm((int)valore)); + } + + // segnalo allarme letto! memorizzo allarme nel vettore ack.... + retACK_DW0 = utils.setBitOnStFlag(retACK_DW0, true, i); + } + } + // scrivo ack se richiesto!!! + if (giveAck) + { + // mi preparo a scrivere ACK + memIndex = 10500; + // scrivo update ad ack!!! + inizio = DateTime.Now; + FanucMemRW(W, FANUC.MemType.R, memIndex, ref retACK_DW0); + if (utils.CRB("recTime")) TimingData.addResult(string.Format("W{0}-ACK_DW0", retACK_DW0.Length), DateTime.Now.Subtract(inizio).Ticks); + ackReturned = true; + } + } + } + + // SE non ho già tornato un ACK... + if (!ackReturned) + { + // se è diverso il vettori degli ACK in memoria da quello PLC... + if (ACK_DW0 != (StFlag32)BitConverter.ToUInt32(retACK_DW0, 0)) + { + memIndex = 10500; + // invio INTERO set ACK_DW0 con bit abbassati... + retACK_DW0 = BitConverter.GetBytes(Convert.ToUInt32(STRB_DW0 & ACK_DW0)); + inizio = DateTime.Now; + FanucMemRW(W, FANUC.MemType.R, memIndex, ref retACK_DW0); + if (utils.CRB("recTime")) TimingData.addResult(string.Format("W{0}-ACK_DW0", retACK_DW0.Length), DateTime.Now.Subtract(inizio).Ticks); + } + } + } + /// + /// processing! + /// + public override void processStatus() + { + // update status da DW2/ DW3 + + // EMstop: verifico BIT e di conseguenza imposto + if (STRB_DW2.HasFlag(StFlag32.B00)) + { + mEStop.Value = "TRIGGERED"; + } + else + { + mEStop.Value = "ARMED"; + } + + // verifico POWER ON... + if (STRB_DW2.HasFlag(StFlag32.B01)) + { + mPower.Value = "ON"; + } + else + { + mPower.Value = "OFF"; + } + + // Processo selezionato 0=P1, 1=P2 + string procSel = ""; + if (STRB_DW2.HasFlag(StFlag32.B02)) + { + procSel = "P2"; + } + else + { + procSel = "P1"; + } + if (mProcSel.Value.ToString() != procSel) + { + mProcSel.Value = procSel; + } + + // HARD CODE: forzo path 1 (indice 0...) + int idxPath = 0; + + // verifico tipo processo path... + if (STRB_DW2.HasFlag(StFlag32.B03)) + { + vettPath[idxPath].mPathType.Value = "LAVORO"; + } + else + { + vettPath[idxPath].mPathType.Value = "ASSERV"; + } + + // switch su RUN mode... + string runMode = ""; + if (STRB_DW2.HasFlag(StFlag32.B04)) + { + runMode = "AUTOMATIC"; + } + else if (STRB_DW2.HasFlag(StFlag32.B05)) + { + runMode = "EDIT"; + } + else if (STRB_DW2.HasFlag(StFlag32.B06)) + { + runMode = "MANUAL_DATA_INPUT"; + } + else if (STRB_DW2.HasFlag(StFlag32.B07)) + { + runMode = "MANUAL"; + } + else if (STRB_DW2.HasFlag(StFlag32.B08)) + { + runMode = "SEMI_AUTO"; + } + // salvo valore selezionato + if (vettPath[idxPath].mPathRunMode.Value.ToString() != runMode) + { + vettPath[idxPath].mPathRunMode.Value = runMode; + } + + // switch su EXE mode... + string exeMode = ""; + if (STRB_DW2.HasFlag(StFlag32.B09)) + { + exeMode = "ACTIVE"; + } + else if (STRB_DW2.HasFlag(StFlag32.B10)) + { + exeMode = "READY"; + } + else if (STRB_DW2.HasFlag(StFlag32.B11)) + { + exeMode = "STOPPED"; + } + else if (STRB_DW2.HasFlag(StFlag32.B12)) + { + exeMode = "FEED_HOLD"; + } + else if (STRB_DW2.HasFlag(StFlag32.B13)) + { + exeMode = "OPTIONAL_STOP"; + } + else if (STRB_DW2.HasFlag(StFlag32.B14)) + { + exeMode = "PROGRAM_STOPPED"; + } + else if (STRB_DW2.HasFlag(StFlag32.B15)) + { + exeMode = "PROGRAM_COMPLETED"; + } + // salvo valore selezionato + if (vettPath[idxPath].mPathExeMode.Value.ToString() != exeMode) + { + vettPath[idxPath].mPathExeMode.Value = exeMode; + } + + + + // processo eventuali altri bit status non noti... + string UnkStatus = ""; + // cerco i bit alzati --> aggiungo in stringa! + for (int i = 14; i < 32; i++) + { + // converto! e aggiungo allarmi sollevati al corretto controller allarmi... + if (STRB_DW2.HasFlag((StFlag32)Math.Pow(2, i))) + { + UnkStatus += string.Format(" [STATUS_{0:00}] ", i); + } + } + // invio comunque... + mUnkStatus.Value = UnkStatus.Trim(); + + // inizializzo SEMPRE a vuoto... + string SubMode = ""; + // verifico sulla STRB_DW3 i submode che POTREBBERO tutti sovrapposti... + if (STRB_DW3 != StFlag32.NONE) + { + // cerco i bit alzati --> aggiungo relativo submode! + for (int i = 0; i < 32; i++) + { + // converto! e aggiungo allarmi sollevati al corretto controller allarmi... + if (STRB_DW3.HasFlag((StFlag32)Math.Pow(2, i))) + { + SubMode += string.Format(" [{0}]", elencoSubMode[i.ToString()]); + } + } + + } + // 2017.01.16 INVIO SOLO SE CAMBIA:.. + if (vettPath[idxPath].mPathSubMode.Value.ToString() != SubMode.Trim()) + { + // INVIO SEMPRE (x prendere il reset/fronte discesa)... + vettPath[idxPath].mPathSubMode.Value = SubMode.Trim(); + } + } + + /// + /// Gestione lettura dati manutenzione + /// + public override bool getMtzDataFromPlc() + { + bool fatto = false; + try + { + if (maintData.Length > 0) + { + + // recupero i dati di manutenzione dall'area di memoria IN BLOCCO + int memIndex = 14000; + byte[] tabDatiMtzByte = new byte[4 * maintData.Length]; + uint[] tabDatiMtz = new uint[maintData.Length]; + inizio = DateTime.Now; + FanucMemRW(R, FANUC.MemType.R, memIndex, ref tabDatiMtzByte); + if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-DatiMtz", tabDatiMtzByte.Length), DateTime.Now.Subtract(inizio).Ticks); + // copio byte --> word! + Buffer.BlockCopy(tabDatiMtzByte, 0, tabDatiMtz, 0, tabDatiMtzByte.Length); + // decodifico aree memoria secondo tab configurazione + processMaintData(tabDatiMtz, maintData); + } + fatto = true; + } + catch + { } + return fatto; + } + /// + /// Gestione lettura dati analogici + /// + public override bool getAnalogDataFromPlc() + { + bool fatto = false; + try + { + if (analogData.Length > 0) + { + // recupero i dati di manutenzione dall'area di memoria IN BLOCCO + int memIndex = 15000; + byte[] tabDatiAnalogByte = new byte[4 * analogData.Length]; + uint[] tabDatiAnalog = new uint[analogData.Length]; + inizio = DateTime.Now; + FanucMemRW(R, FANUC.MemType.R, memIndex, ref tabDatiAnalogByte); + if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-DatiAnalog", tabDatiAnalogByte.Length * 4), DateTime.Now.Subtract(inizio).Ticks); + // copio byte --> word! + Buffer.BlockCopy(tabDatiAnalogByte, 0, tabDatiAnalog, 0, tabDatiAnalogByte.Length); + // decodifico aree memoria secondo tab configurazione + processAnalogData(tabDatiAnalog, analogData); + } + fatto = true; + } + catch + { } + return fatto; + + } + + /// + /// Gestione lettura dati status da PLC + /// + public override bool getStatusDataFromPlc() + { + bool fatto = false; + try + { + if (statusData.Length > 0) + { + // recupero i dati di manutenzione dall'area di memoria IN BLOCCO + int memIndex = 14512; + int numByte = 1 + (statusData.Length / 8); + byte[] tabDatiStatus = new byte[numByte]; + inizio = DateTime.Now; + FanucMemRW(R, FANUC.MemType.R, memIndex, ref tabDatiStatus); + if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-DatiStatus", tabDatiStatus.Length), DateTime.Now.Subtract(inizio).Ticks); + + // decodifico aree memoria secondo tab configurazione + processStatusData(tabDatiStatus, statusData); + } + fatto = true; + } + catch + { } + return fatto; + } + /// + /// Leggo dati globali comuni (x path, assi...) + /// + public override void getGlobalData() + { + // svuoto... + resetDebugConsole(); + + // accodo dati path in DataMonitor...... + StringBuilder sb1 = new StringBuilder(); + StringBuilder sb2 = new StringBuilder(); + + // dati base... + sb1.AppendLine(string.Format("POWER {0}: | EmStop:{1:N3} | ProcSel: {2}", mPower.Value, mEStop.Value, mProcSel.Value)); + + // leggo dati globali... + parentForm.commPlcActive = true; + inizio = DateTime.Now; + allDynData = FANUC_ref.getAllDynData(); + if (utils.CRB("recTime")) TimingData.addResult("R-ALL-DYN-DATA", DateTime.Now.Subtract(inizio).Ticks); + parentForm.commPlcActive = false; + + FeedRate = allDynData.actf; + + int memIndex = 12000; + byte[] PathData_mem = new byte[4]; + inizio = DateTime.Now; + FanucMemRW(R, FANUC.MemType.R, memIndex, ref PathData_mem); + if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-PathData", PathData_mem.Length), DateTime.Now.Subtract(inizio).Ticks); + + // 2016.07.19 mod con Fabio + //JogRateOver = PathData_mem[0]; + FeedRateOver = PathData_mem[1]; + RapidOver = PathData_mem[2]; + SpeedRateOver = PathData_mem[3]; + + sb1.AppendLine(string.Format("FeedRate: {0} mm/min", FeedRate)); + sb1.AppendLine(string.Format("FeedRateOver: {0} %", FeedRateOver)); + sb1.AppendLine(string.Format("RapidOver: {0} %", RapidOver)); + sb1.AppendLine(string.Format("SpeedRateOver: {0} %", SpeedRateOver)); + + // se ho allarmi li accodo... + if (allDynData.alarm != 0) + { + sb1.AppendLine(string.Format("Allarmi CNC: {0}", allDynData.alarm)); + + parentForm.commPlcActive = true; + inizio = DateTime.Now; + allarmiCNC = FANUC_ref.getCncAlarm(); + if (utils.CRB("recTime")) TimingData.addResult("R-CNC-ALARMS", DateTime.Now.Subtract(inizio).Ticks); + parentForm.commPlcActive = false; + checkCNCAlarms(); + } + else + { + allarmiCNC = new CMSCncLib.Focas1.ODBALMMSG2(); + } + + // accodo dati base! + parentForm.dataMonitor_1 = sb1.ToString(); + // accodo dati UT... + for (int i = 0; i < currAdpConf.nUnOp; i++) + { + sb2.AppendLine(string.Format("UT: ToolId {0} | VitaRes {1} | TipoVita {2} ", vettUnOp[i].mUnOpToolId.Value, vettUnOp[i].mUnOpVitaRes.Value, vettUnOp[i].mUnOpVitaResType.Value)); + } + parentForm.dataMonitor_2 = sb2.ToString(); + + // gestisco lettura dati manutenzione da PLC... + getMtzDataFromPlc(); + // gestisco lettura dati analogici da PLC... + getAnalogDataFromPlc(); + // gestisco lettura dati status da PLC... + getStatusDataFromPlc(); + } + /// + /// Carico file conf dati CMS + /// + protected override void loadOtherFile() + { + base.loadOtherFile(); + loadMaintData("R", 14000, 4); + loadStatusData("R", 14512, 1); + } + /// + /// Processing allarmi CNC + /// + public override void processAlarm() + { + base.processAlarm(); + + // aggiungo gestione allarmi CNC + checkCNCAlarms(); + } + /// + /// Verifica i 10 allarmi CNC SE presenti + /// + private void checkCNCAlarms() + { + // faccio parse allarmi: se ci sono invio e presento + sendAlarmIfPresent(allarmiCNC.msg1); + sendAlarmIfPresent(allarmiCNC.msg2); + sendAlarmIfPresent(allarmiCNC.msg3); + sendAlarmIfPresent(allarmiCNC.msg4); + sendAlarmIfPresent(allarmiCNC.msg5); + sendAlarmIfPresent(allarmiCNC.msg6); + sendAlarmIfPresent(allarmiCNC.msg7); + sendAlarmIfPresent(allarmiCNC.msg8); + sendAlarmIfPresent(allarmiCNC.msg9); + sendAlarmIfPresent(allarmiCNC.msg10); + } + + /// + /// Invia singolo allarme CNC se presente + /// + /// + protected void sendAlarmIfPresent(CMSCncLib.Focas1.ODBALMMSG2_data allarme) + { + // controllo valore... + if (allarme.alm_no > 0) + { + try + { + StringBuilder sb = new StringBuilder(); + if (utils.CRI("loglevel") > 5) + { + lg.Info(string.Format("Allarmi CNC: NUM {0} | MESS: {1} | ASSE: {2} | TYPE: {3}", allarme.alm_no, allarme.alm_msg, allarme.axis, allarme.type)); + } + // se ho asse accodo ad asse altrimenti no... + string codAllarme = string.Format("T{0}-N{1}", allarme.type, allarme.alm_no); + if (allarme.axis == 0) + { + mAlarmCNC.Add(MTConnect.Condition.Level.FAULT, allarme.alm_msg, codAllarme, "", ""); + } + else + { + vettAxis[allarme.axis - 1].mAxAlarmCNC.Add(MTConnect.Condition.Level.FAULT, allarme.alm_msg, codAllarme, "", ""); + } + // mostro in form! + sb.AppendLine(codAllarme); + parentForm.dataMonitor_1 += sb.ToString(); + } + catch (Exception exc) + { + lg.Error(string.Format("{0}", exc)); + } + } + } + /// + /// Recupero dati x UnOp + /// + public override void getUnOp() + { + // leggo in blocco tutte le speed da memoria... + int memIndex = 3140; + // buffer memoria 60 byte... speed (16bit 2 * 20) + load (8bit 1 * 20) visto che sono 20 teste max + byte[] unOpSpeedMem = new byte[60]; + + inizio = DateTime.Now; + FanucMemRW(R, FANUC.MemType.D, memIndex, ref unOpSpeedMem); + if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-SPEED_UNOP", unOpSpeedMem.Length), DateTime.Now.Subtract(inizio).Ticks); + + procUnOp(unOpSpeedMem); + } + /// + /// Procedura di processing lettura memoria x DatiUt - Step 4 + /// + /// + /// + /// + public override int getDatiUt_step4(ref byte[] int32Mem, int j) + { + int memIndex = 13100 + 4 * j; + inizio = DateTime.Now; + FanucMemRW(R, FANUC.MemType.D, memIndex, ref int32Mem); + if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-TabUT-VitaRes", int32Mem.Length), DateTime.Now.Subtract(inizio).Ticks); + return memIndex; + } + /// + /// Procedura di processing lettura memoria x DatiUt - Step 3b + /// + /// + /// + /// + public override int getDatiUt_step3b(ref byte int8Mem, int j) + { + int memIndex = 10700 + 1 * j; + inizio = DateTime.Now; + FanucMemRW(R, FANUC.MemType.D, memIndex, ref int8Mem); + if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-TabUT-FamUT", 8), DateTime.Now.Subtract(inizio).Ticks); + return memIndex; + } + /// + /// Procedura di processing lettura memoria x DatiUt - Step 3a + /// + /// + /// + public override int getDatiUt_step3a(ref byte[] tabFam_FamUt) + { + int memIndex = 8900; + inizio = DateTime.Now; + FanucMemRW(R, FANUC.MemType.D, memIndex, ref tabFam_FamUt); + if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-TabFamUT-FamUT", tabFam_FamUt.Length), DateTime.Now.Subtract(inizio).Ticks); + return memIndex; + } + /// + /// Procedura di processing lettura memoria x DatiUt - Step 2b + /// + /// + /// + /// + public override int getDatiUt_step2b(ref byte[] int16Mem, int j) + { + int memIndex = 11700 + 2 * j; + inizio = DateTime.Now; + FanucMemRW(R, FANUC.MemType.D, memIndex, ref int16Mem); + if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-TabUT-FamUT", int16Mem.Length), DateTime.Now.Subtract(inizio).Ticks); + return memIndex; + } + /// + /// Procedura di processing lettura memoria x DatiUt - Step 2a + /// + /// + /// + public override int getDatiUt_step2a(ref byte[] tabUt_UT) + { + int memIndex = 11300; + inizio = DateTime.Now; + FanucMemRW(R, FANUC.MemType.D, memIndex, ref tabUt_UT); + if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-TabUT-UT", tabUt_UT.Length), DateTime.Now.Subtract(inizio).Ticks); + return memIndex; + } + /// + /// Procedura di processing lettura memoria x DatiUt - Step 1 + /// + /// + /// + public override int getDatiUt_step1(ref byte[] elencoUtMem) + { + int memIndex = 2960; + inizio = DateTime.Now; + FanucMemRW(R, FANUC.MemType.D, memIndex, ref elencoUtMem); + if (utils.CRB("recTime")) TimingData.addResult(string.Format("R{0}-NUMUT", elencoUtMem.Length), DateTime.Now.Subtract(inizio).Ticks); + return memIndex; + } + + public override void getPath() + { + base.getPath(); + + // recupero vettore generale G MODE + parentForm.commPlcActive = true; + inizio = DateTime.Now; + CMSCncLib.Focas1.ODBGCD vettGCodes = FANUC_ref.getPathGCodeMod(); + if (utils.CRB("recTime")) TimingData.addResult("R-GCodModal", DateTime.Now.Subtract(inizio).Ticks); + parentForm.commPlcActive = false; + + string GCodAttivi = ""; + GCodAttivi += string.Format("[{0}]", vettGCodes.gcd0.code); + GCodAttivi += string.Format("[{0}]", vettGCodes.gcd1.code); + GCodAttivi += string.Format("[{0}]", vettGCodes.gcd2.code); + GCodAttivi += string.Format("[{0}]", vettGCodes.gcd3.code); + GCodAttivi += string.Format("[{0}]", vettGCodes.gcd4.code); + GCodAttivi += string.Format("[{0}]", vettGCodes.gcd5.code); + GCodAttivi += string.Format("[{0}]", vettGCodes.gcd6.code); + GCodAttivi += string.Format("[{0}]", vettGCodes.gcd7.code); + GCodAttivi += string.Format("[{0}]", vettGCodes.gcd8.code); + GCodAttivi += string.Format("[{0}]", vettGCodes.gcd9.code); + GCodAttivi += string.Format("[{0}]", vettGCodes.gcd10.code); + GCodAttivi += string.Format("[{0}]", vettGCodes.gcd11.code); + GCodAttivi += string.Format("[{0}]", vettGCodes.gcd12.code); + GCodAttivi += string.Format("[{0}]", vettGCodes.gcd13.code); + GCodAttivi += string.Format("[{0}]", vettGCodes.gcd14.code); + GCodAttivi += string.Format("[{0}]", vettGCodes.gcd15.code); + GCodAttivi += string.Format("[{0}]", vettGCodes.gcd16.code); + GCodAttivi += string.Format("[{0}]", vettGCodes.gcd17.code); + GCodAttivi += string.Format("[{0}]", vettGCodes.gcd18.code); + GCodAttivi += string.Format("[{0}]", vettGCodes.gcd19.code); + GCodAttivi += string.Format("[{0}]", vettGCodes.gcd20.code); + GCodAttivi += string.Format("[{0}]", vettGCodes.gcd21.code); + GCodAttivi += string.Format("[{0}]", vettGCodes.gcd22.code); + GCodAttivi += string.Format("[{0}]", vettGCodes.gcd23.code); + GCodAttivi += string.Format("[{0}]", vettGCodes.gcd24.code); + GCodAttivi += string.Format("[{0}]", vettGCodes.gcd25.code); + GCodAttivi += string.Format("[{0}]", vettGCodes.gcd26.code); + GCodAttivi += string.Format("[{0}]", vettGCodes.gcd27.code); + + parentForm.commPlcActive = true; + inizio = DateTime.Now; + vettGCodes = FANUC_ref.getPathGCode1Shot(); + parentForm.commPlcActive = false; + if (utils.CRB("recTime")) TimingData.addResult("R-GCodOneShot", DateTime.Now.Subtract(inizio).Ticks); + if (vettGCodes.gcd0.flag > 0) GCodAttivi += string.Format("[{0}]", vettGCodes.gcd0.code); + if (vettGCodes.gcd1.flag > 0) GCodAttivi += string.Format("[{0}]", vettGCodes.gcd1.code); + if (vettGCodes.gcd2.flag > 0) GCodAttivi += string.Format("[{0}]", vettGCodes.gcd2.code); + if (vettGCodes.gcd3.flag > 0) GCodAttivi += string.Format("[{0}]", vettGCodes.gcd3.code); + + parentForm.commPlcActive = true; + inizio = DateTime.Now; + CMSCncLib.Focas1.ODB5AXMAN vettTTCoord = FANUC_ref.getPathTTCoord(); + if (utils.CRB("recTime")) TimingData.addResult("R-TTCoord", DateTime.Now.Subtract(inizio).Ticks); + parentForm.commPlcActive = false; + + // ciclo su path + StringBuilder sb_2; + StringBuilder sb_3; + for (int i = 0; i < currAdpConf.nPath; i++) + { + // accodo dati path in DataMonitor... + sb_2 = new StringBuilder(); + sb_3 = new StringBuilder(); + + vettPath[i].mPathCodG_Act.Value = GCodAttivi; + + vettPath[i].mPathPosActX.Value = ((decimal)vettTTCoord.data1) / utils.CRI("fattdecimale"); + vettPath[i].mPathPosActY.Value = ((decimal)vettTTCoord.data2) / utils.CRI("fattdecimale"); + vettPath[i].mPathPosActZ.Value = ((decimal)vettTTCoord.data3) / utils.CRI("fattdecimale"); + vettPath[i].mPathPosActI.Value = ((decimal)vettTTCoord.c1) / utils.CRI("fattdecimale"); + vettPath[i].mPathPosActJ.Value = ((decimal)vettTTCoord.c2) / utils.CRI("fattdecimale"); + vettPath[i].mPathPosActK.Value = "0"; // è 5 assi...nullo... + + // 2017.01.16 da rivedere + vettPath[i].mPathCurrProgRowNum.Value = ""; + vettPath[i].mPathActiveAxes.Value = ""; + + sb_2.AppendLine(string.Format("Path {0}, PROG: {1}", i + 1, vettPath[i].mPathCurrProg.Value)); + sb_3.AppendLine(string.Format("Path {0}, GCodes: {1}", i + 1, GCodAttivi)); + + sb_3.AppendLine(string.Format("Path {0}, Asse 1: {1:N3}", i + 1, ((decimal)vettTTCoord.data1) / utils.CRI("fattdecimale"))); + sb_3.AppendLine(string.Format("Path {0}, Asse 2: {1:N3}", i + 1, ((decimal)vettTTCoord.data2) / utils.CRI("fattdecimale"))); + sb_3.AppendLine(string.Format("Path {0}, Asse 3: {1:N3}", i + 1, ((decimal)vettTTCoord.data3) / utils.CRI("fattdecimale"))); + sb_3.AppendLine(string.Format("Path {0}, Cent 1: {1:N3}", i + 1, ((decimal)vettTTCoord.c1) / utils.CRI("fattdecimale"))); + sb_3.AppendLine(string.Format("Path {0}, Cent 2: {1:N3}", i + 1, ((decimal)vettTTCoord.c2) / utils.CRI("fattdecimale"))); + + parentForm.dataMonitor_2 += sb_2.ToString(); + parentForm.dataMonitor_3 += sb_3.ToString(); + } + + } + + public override void getAxis() + { + // mostro assi in DataMonitor...... + StringBuilder sb = new StringBuilder(); + + parentForm.commPlcActive = true; + inizio = DateTime.Now; + CMSCncLib.Focas1.ODBPOS posAssi = FANUC_ref.getAllAxisPos(); + if (utils.CRB("recTime")) TimingData.addResult("R-AXIS_POS", DateTime.Now.Subtract(inizio).Ticks); + + inizio = DateTime.Now; + CMSCncLib.Focas1.ODBSVLOAD loadAssi = FANUC_ref.getAllAxisLoad(); + if (utils.CRB("recTime")) TimingData.addResult("R-AXIS_LOAD", DateTime.Now.Subtract(inizio).Ticks); + parentForm.commPlcActive = false; + + CMSCncLib.Focas1.LOADELM valLoad = new CMSCncLib.Focas1.LOADELM(); + CMSCncLib.Focas1.POSELMALL valPos = new CMSCncLib.Focas1.POSELMALL(); + + // nuova posizione (per calcoli) + double newPos = 0; + double distPerc = 0; + int newDir = 0; + string tipoAsse = ""; + string direzione = ""; + + for (int i = 0; i < currAdpConf.nAxis; i++) + { + // per sicurezza try-catch + try + { + // in base a indice scelgo valore posizione e load + switch (i) + { + case 0: + valPos = posAssi.p1; + valLoad = loadAssi.svload1; + break; + case 1: + valPos = posAssi.p2; + valLoad = loadAssi.svload2; + break; + case 2: + valPos = posAssi.p3; + valLoad = loadAssi.svload3; + break; + case 3: + valPos = posAssi.p4; + valLoad = loadAssi.svload4; + break; + case 4: + valPos = posAssi.p5; + valLoad = loadAssi.svload5; + break; + case 5: + valPos = posAssi.p6; + valLoad = loadAssi.svload6; + break; + case 6: + valPos = posAssi.p7; + valLoad = loadAssi.svload7; + break; + case 7: + valPos = posAssi.p8; + valLoad = loadAssi.svload8; + break; + case 8: + valPos = posAssi.p9; + valLoad = loadAssi.svload9; + break; + case 9: + valPos = posAssi.p10; + valLoad = loadAssi.svload10; + break; + case 10: + valPos = posAssi.p11; + valLoad = loadAssi.svload11; + break; + case 11: + valPos = posAssi.p12; + valLoad = loadAssi.svload12; + break; + case 12: + valPos = posAssi.p13; + valLoad = loadAssi.svload13; + break; + case 13: + valPos = posAssi.p14; + valLoad = loadAssi.svload14; + break; + case 14: + valPos = posAssi.p15; + valLoad = loadAssi.svload15; + break; + case 15: + valPos = posAssi.p16; + valLoad = loadAssi.svload16; + break; + case 16: + valPos = posAssi.p17; + valLoad = loadAssi.svload17; + break; + case 17: + valPos = posAssi.p18; + valLoad = loadAssi.svload18; + break; + case 18: + valPos = posAssi.p19; + valLoad = loadAssi.svload19; + break; + case 19: + valPos = posAssi.p20; + valLoad = loadAssi.svload20; + break; + case 20: + valPos = posAssi.p21; + valLoad = loadAssi.svload21; + break; + case 21: + valPos = posAssi.p22; + valLoad = loadAssi.svload22; + break; + case 22: + valPos = posAssi.p23; + valLoad = loadAssi.svload23; + break; + case 23: + valPos = posAssi.p24; + valLoad = loadAssi.svload24; + break; + case 24: + valPos = posAssi.p25; + valLoad = loadAssi.svload25; + break; + case 25: + valPos = posAssi.p26; + valLoad = loadAssi.svload26; + break; + case 26: + valPos = posAssi.p27; + valLoad = loadAssi.svload27; + break; + case 27: + valPos = posAssi.p28; + valLoad = loadAssi.svload28; + break; + case 28: + valPos = posAssi.p29; + valLoad = loadAssi.svload29; + break; + case 29: + valPos = posAssi.p30; + valLoad = loadAssi.svload30; + break; + case 30: + valPos = posAssi.p31; + valLoad = loadAssi.svload31; + break; + case 31: + valPos = posAssi.p32; + valLoad = loadAssi.svload32; + break; + default: + // 2017.03.01 suggerimento Fabio: in CMS_FANUC in advanced compiler options mettere FS30D=1,SIEMENS=1 x leggere + assi?!? + valPos = posAssi.p1; + valLoad = loadAssi.svload1; + break; + } + + // popolo valori... + vettAxis[i].mAxLoad.Value = (double)(valLoad.data) / Math.Pow(10, valLoad.dec); + newPos = (double)(valPos.abs.data) / Math.Pow(10, valPos.abs.dec); + vettAxis[i].mAxPosAct.Value = newPos; + vettAxis[i].mAxPosTgt.Value = newPos + (double)(valPos.dist.data) / Math.Pow(10, valPos.dist.dec); + + vettAxis[i].mAxFeedAct.Value = FeedRate; + + // calcolo distanza e salvo valore... + distPerc = newPos - prevPosAxis[i]; + + // sistemo direzione +/- (POS/NEG se lineari, CCW/CW se rotativi) + if (distPerc != 0) + { + newDir = Convert.ToInt32(distPerc / Math.Abs(distPerc)); + } + else + { + newDir = prevDirAxis[i]; + } + + // verifico tipo direzione da tipo asse... + tipoAsse = vettAxis[i].mAxType.Value.ToString(); + if (tipoAsse == "LINEAR") + { + // ?: conditional operator. + direzione = (newDir > 0) ? "POSITIVE" : "NEGATIVE"; + } + else if (tipoAsse == "ROTARY") + { + direzione = (newDir > 0) ? "CLOCKWISE" : "COUNTER_CLOCKWISE"; + } + + vettAxis[i].mAxDir.Value = direzione; + + + if (utils.CRB("verbose")) + { + sb.AppendLine(string.Format("Asse {0}: PosAct:{1:N3}, ToGo:{2:N3}{3} | {4}", valPos.abs.name, (double)(valPos.abs.data) / Math.Pow(10, valPos.abs.dec), valPos.dist.name, (double)(valPos.dist.data) / Math.Pow(10, valPos.dist.dec), direzione)); + } + + // salvo valori vettore prec... + prevPosAxis[i] = newPos; + prevDirAxis[i] = newDir; + + //vettAxis[i].mAxMainProc.Value = AxData.AxisMainProc; + //vettAxis[i].mAxIsMaster.Value = AxData.AxisIsMaster; + //vettAxis[i].mAxMastId.Value = AxData.AxisMastId; + vettAxis[i].mAxFeedOver.Value = FeedRateOver; + //vettAxis[i].mAxAccelAct.Value = AxData.AxisAccel; + //vettAxis[i].mAxBattery.Value = AxData.AxisBattery; + } + catch + { + lg.Error(string.Format("Errore in lettura asse {0}", i)); + } + } + + parentForm.dataMonitor_3 += sb.ToString(); + } + } } diff --git a/MTC_Adapter/MTC_Adapter/AdapterGeneric.cs b/MTC_Adapter/MTC_Adapter/AdapterGeneric.cs index 36ee860..e5f5415 100644 --- a/MTC_Adapter/MTC_Adapter/AdapterGeneric.cs +++ b/MTC_Adapter/MTC_Adapter/AdapterGeneric.cs @@ -834,6 +834,10 @@ namespace MTC_Adapter ///
public bool hasBigEndian = false; /// + /// Verifica se siano stati giĂ  mostrati gli allarmi x debug... + /// + public bool alarmMsgDispl = true; + /// /// dimensione massima vettore memorie UT /// public short numMemUt = 200; @@ -2065,12 +2069,14 @@ namespace MTC_Adapter } } - private void resetDebugConsole() + public void resetDebugConsole() { // resetto console debug... parentForm.dataMonitor_1 = ""; parentForm.dataMonitor_2 = ""; parentForm.dataMonitor_3 = ""; + // indico msg allarme NON inviati + alarmMsgDispl = false; } /// @@ -2100,7 +2106,7 @@ namespace MTC_Adapter sb2.AppendLine(string.Format("UT: ToolId {0} | VitaRes {1} | TipoVita {2} ", vettUnOp[i].mUnOpToolId.Value, vettUnOp[i].mUnOpVitaRes.Value, vettUnOp[i].mUnOpVitaResType.Value)); } parentForm.dataMonitor_2 = sb2.ToString(); - + // gestisco lettura dati status da PLC... getStatusDataFromPlc(); // gestisco lettura dati analogici da PLC... diff --git a/MTC_Adapter/MTC_Adapter/AdapterSiemens.cs b/MTC_Adapter/MTC_Adapter/AdapterSiemens.cs index 59c8e69..1bcb8b7 100644 --- a/MTC_Adapter/MTC_Adapter/AdapterSiemens.cs +++ b/MTC_Adapter/MTC_Adapter/AdapterSiemens.cs @@ -741,6 +741,7 @@ namespace MTC_Adapter } } } + alarmMsgDispl = true; } /// @@ -762,7 +763,7 @@ namespace MTC_Adapter // da gestire instance = PATH!!! 1/2, x cui raddoppia i messaggi... - string codAllarme = string.Format("P{0}:S{1}:{2}", allarme.Instance, allarme.Source.Name, allarme.Id); + string codAllarme = string.Format("P{0}:S{1} | {2} | {3}", allarme.Instance+1, allarme.Source.Name, allarme.Id, allarme.Message); #if false // se ho asse accodo ad asse altrimenti no... if (allarme.axis == 0) @@ -774,10 +775,14 @@ namespace MTC_Adapter vettAxis[allarme.axis - 1].mAxAlarmCNC.Add(MTConnect.Condition.Level.FAULT, allarme.alm_msg, codAllarme, "", ""); } #endif - // mostro in form! - sb.AppendLine(codAllarme); - parentForm.dataMonitor_1 += sb.ToString(); - + // se NON ancora mostrati allarmi... + if (!alarmMsgDispl) + { + // mostro in form! + sb.AppendLine(codAllarme); + parentForm.dataMonitor_1 += sb.ToString(); + } + mAlarmCNC.Add(MTConnect.Condition.Level.FAULT, allarme.Message, codAllarme, "", ""); } diff --git a/MTC_Adapter/MTC_Adapter/DATA/CONF/Adapter_ItemList.xml b/MTC_Adapter/MTC_Adapter/DATA/CONF/Adapter_ItemList.xml index 9bf8da6..66f2df4 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 - ADAPTER_FANUC - FANUC + ADAPTER_SIEMENS + SIEMENS 0 0 0 @@ -83,6 +83,10 @@ Path_01 + + Path_02 + + @@ -169,5 +173,135 @@ + + Axis_07 + + + Axis_07_Type + LINEAR + + + Axis_07_Grp + 00 + + + + + Axis_08 + + + Axis_08_Type + LINEAR + + + Axis_08_Grp + 00 + + + + + Axis_09 + + + Axis_09_Type + LINEAR + + + Axis_09_Grp + 00 + + + + + Axis_10 + + + Axis_10_Type + LINEAR + + + Axis_10_Grp + 00 + + + + + Axis_11 + + + Axis_11_Type + LINEAR + + + Axis_11_Grp + 00 + + + + + Axis_12 + + + Axis_12_Type + LINEAR + + + Axis_12_Grp + 00 + + + + + 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 c799ba6..6698345 100644 --- a/MTC_Adapter/MTC_Adapter/DATA/CONF/AlarmList.map +++ b/MTC_Adapter/MTC_Adapter/DATA/CONF/AlarmList.map @@ -377,7 +377,7 @@ 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 +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 @@ -431,7 +431,7 @@ 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] - ... +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] - ... From aa2e5f4d58e9f4b4c5abbe3258518c981acdc012 Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Fri, 30 Jun 2017 17:51:15 +0200 Subject: [PATCH 13/21] porto a 5 sec (5x1000) le letture COMPLETE del buffer allarmi FANUC x evitare problemi di "segnali doppi sovrapposti" --- MTC_Adapter/MTC_Adapter/App.CMS-FANUC.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MTC_Adapter/MTC_Adapter/App.CMS-FANUC.config b/MTC_Adapter/MTC_Adapter/App.CMS-FANUC.config index 822e337..9c12d45 100644 --- a/MTC_Adapter/MTC_Adapter/App.CMS-FANUC.config +++ b/MTC_Adapter/MTC_Adapter/App.CMS-FANUC.config @@ -7,7 +7,7 @@ - + From 2feb3ad03db8d2ade2ea701a9ebe613e65534808 Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Fri, 30 Jun 2017 18:35:14 +0200 Subject: [PATCH 14/21] Completata gestione distance to go x SIEMENS! --- MTC_Adapter/CMSCncLib/CNC/CNC.SIEMENS/CNC.SIEMENS.vb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/MTC_Adapter/CMSCncLib/CNC/CNC.SIEMENS/CNC.SIEMENS.vb b/MTC_Adapter/CMSCncLib/CNC/CNC.SIEMENS/CNC.SIEMENS.vb index 93de10f..18e293c 100644 --- a/MTC_Adapter/CMSCncLib/CNC/CNC.SIEMENS/CNC.SIEMENS.vb +++ b/MTC_Adapter/CMSCncLib/CNC/CNC.SIEMENS/CNC.SIEMENS.vb @@ -955,10 +955,11 @@ Namespace CNC ' RIFERIMENTO: ' txt Giuseppe - ReDim itemRead(2) + ReDim itemRead(3) 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 Do @@ -978,7 +979,7 @@ Namespace CNC For i As Integer = 0 To 15 'datiAssi(i).PosAct = itemRead(0).Value(i) datiAssi(i).PosAct = UIntegerToSingle(itemRead(0).Value(i)) - 'datiAssi(i).PosTgt = UIntegerToSingle(itemRead(3).Value(i)) + datiAssi(i).PosTgt = Convert.ToSingle(itemRead(3).Value(i)) Next i For i As Integer = 0 To 19 datiAssi(i).Speed = UIntegerToSingle(itemRead(1).Value(i)) From 922f5d9fb100beecb0a49c4ff0cdeb3dfa533ce8 Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Fri, 30 Jun 2017 18:35:28 +0200 Subject: [PATCH 15/21] update visualizzazione distance ToGo x SIEMENS --- MTC_Adapter/MTC_Adapter/AdapterSiemens.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MTC_Adapter/MTC_Adapter/AdapterSiemens.cs b/MTC_Adapter/MTC_Adapter/AdapterSiemens.cs index 1bcb8b7..23bb3ec 100644 --- a/MTC_Adapter/MTC_Adapter/AdapterSiemens.cs +++ b/MTC_Adapter/MTC_Adapter/AdapterSiemens.cs @@ -1081,7 +1081,7 @@ namespace MTC_Adapter if (utils.CRB("verbose")) { - sb.AppendLine(string.Format("Asse {0}: PosAct:{1:N3}, ToGo:{2:N3}{3} | {4}", i, newPos, 0, "-", direzione)); + sb.AppendLine(string.Format("Asse {0}: PosAct:{1:N3}, ToGo:{2:N3}{3} | {4}", i, newPos, ValAssi[i].PosTgt, "", direzione)); } // salvo valori vettore prec... From 0e85a8c5b5d3bab883eb428590cee0b7769cac34 Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Tue, 4 Jul 2017 13:54:05 +0200 Subject: [PATCH 16/21] fix monopath x OSAI --- MTC_Adapter/MTC_Adapter/AdapterOsai.cs | 7 +- .../DATA/CONF/Adapter_ItemList.xml | 144 +- .../MTC_Adapter/DATA/CONF/AlarmList.map | 1526 ++++++----------- .../MTC_Adapter/DATA/CONF/AnalogData.map | 8 +- .../MTC_Adapter/DATA/CONF/CounterList.map | 4 +- 5 files changed, 520 insertions(+), 1169 deletions(-) diff --git a/MTC_Adapter/MTC_Adapter/AdapterOsai.cs b/MTC_Adapter/MTC_Adapter/AdapterOsai.cs index b81aeb1..a0c1dc7 100644 --- a/MTC_Adapter/MTC_Adapter/AdapterOsai.cs +++ b/MTC_Adapter/MTC_Adapter/AdapterOsai.cs @@ -911,7 +911,10 @@ namespace MTC_Adapter parentForm.commPlcActive = true; inizio = DateTime.Now; OSAI_ref.getPathGCodeMod(1, ref vettGCodes_01); - OSAI_ref.getPathGCodeMod(2, ref vettGCodes_02); + if (currAdpConf.nPath > 1) + { + OSAI_ref.getPathGCodeMod(2, ref vettGCodes_02); + } if (utils.CRB("recTime")) TimingData.addResult("R-GCodModal", DateTime.Now.Subtract(inizio).Ticks); parentForm.commPlcActive = false; } @@ -919,7 +922,7 @@ namespace MTC_Adapter { contChkGCod--; } - + for (int i = 0; i < currAdpConf.nPath; i++) { // accodo dati path in DataMonitor... diff --git a/MTC_Adapter/MTC_Adapter/DATA/CONF/Adapter_ItemList.xml b/MTC_Adapter/MTC_Adapter/DATA/CONF/Adapter_ItemList.xml index 66f2df4..e9e51b4 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 - ADAPTER_SIEMENS - SIEMENS + ADAPTER_OSAI + OSAI 0 0 0 @@ -41,13 +41,11 @@ ProtMagazzino_01 - - - SlittaMagazzino_ + ProtMagazzino_02 - + Cooler_01 @@ -83,10 +81,6 @@ Path_01 - - Path_02 - - @@ -173,135 +167,5 @@ - - Axis_07 - - - Axis_07_Type - LINEAR - - - Axis_07_Grp - 00 - - - - - Axis_08 - - - Axis_08_Type - LINEAR - - - Axis_08_Grp - 00 - - - - - Axis_09 - - - Axis_09_Type - LINEAR - - - Axis_09_Grp - 00 - - - - - Axis_10 - - - Axis_10_Type - LINEAR - - - Axis_10_Grp - 00 - - - - - Axis_11 - - - Axis_11_Type - LINEAR - - - Axis_11_Grp - 00 - - - - - Axis_12 - - - Axis_12_Type - LINEAR - - - Axis_12_Grp - 00 - - - - - 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 6698345..98bcf27 100644 --- a/MTC_Adapter/MTC_Adapter/DATA/CONF/AlarmList.map +++ b/MTC_Adapter/MTC_Adapter/DATA/CONF/AlarmList.map @@ -1,1025 +1,503 @@ # Commenti con "#", elenco tipo COD_NUM|GRUPPO|LEVEL|DESCRIZIONE completa -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 +000001|PLC|FAULT|[COD 001] - 152 AXIS X DRIVING GEAR NOT READY +000002|PLC|FAULT|[COD 002] - 152 AXIS Y DRIVING GEAR NOT READY +000003|PLC|FAULT|[COD 003] - 152 AXIS Z DRIVING GEAR NOT READY +000004|PLC|FAULT|[COD 004] - 152 AXIS V DRIVING GEAR NOT READY +000005|PLC|FAULT|[COD 005] - 152 AXIS B DRIVING GEAR NOT READY +000006|PLC|FAULT|[COD 006] - 152 AXIS C DRIVING GEAR NOT READY +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] - Potenza spenta +000066|PLC|FAULT|[COD 066] - Assi non riferiti +000067|PLC|FAULT|[COD 067] - Errore nel ciclo azzeramento assi +000068|PLC|FAULT|[COD 068] - Errore abilitazione assi +000069|PLC|FAULT|[COD 069] - Assi non abilitati +000070|PLC|FAULT|[COD 070] - Errore preset origini +000071|PLC|FAULT|[COD 071] - Livello minimo lubrificazione +000072|PLC|FAULT|[COD 072] - Contr.tempo esecuzione background +000073|PLC|FAULT|[COD 073] - Pulsante di start rifiutato +000074|PLC|FAULT|[COD 074] - Troppi assi selezionati +000075|PLC|FAULT|[COD 075] - Teach pendant abilitata +000076|PLC|FAULT|[COD 076] - +000077|PLC|FAULT|[COD 077] - Errore salvataggio file XML +000078|PLC|FAULT|[COD 078] - Parametri AMP assi sovrascritti +000079|PLC|FAULT|[COD 079] - Azion.OsWire in attesa rapid-halt +000080|PLC|FAULT|[COD 080] - Azion.OsWire attesa I/O emer.man. +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] - Err. gestione file mappatura I/O +000085|PLC|FAULT|[COD 085] - Azionamenti guasti +000086|PLC|FAULT|[COD 086] - Errore durante l'inizializzazione +000087|PLC|FAULT|[COD 087] - Watch dog console Top 5 +000088|PLC|FAULT|[COD 088] - Errore gestione reset +000089|PLC|FAULT|[COD 089] - Errore file XML configuraz. PLC +000090|PLC|FAULT|[COD 090] - Errore file XML configuraz. assi +000091|PLC|FAULT|[COD 091] - Errore Ethercat +000092|PLC|FAULT|[COD 092] - +000093|PLC|FAULT|[COD 093] - Azionamento mandrino 4 guasto +000094|PLC|FAULT|[COD 094] - Azionamento mandrino 3 guasto +000095|PLC|FAULT|[COD 095] - Azionamento mandrino 2 guasto +000096|PLC|FAULT|[COD 096] - Azionamento mandrino 1 guasto +000097|PLC|FAULT|[COD 097] - Ripari aperti +000098|PLC|FAULT|[COD 098] - Mancanza pressostato aria +000099|PLC|FAULT|[COD 099] - Intervento termici generici +000100|PLC|FAULT|[COD 100] - Oltrecorsa asse ausiliario +000101|PLC|FAULT|[COD 101] - Teach pendant liveman +000102|PLC|FAULT|[COD 102] - Disabilitazione assi +000103|PLC|FAULT|[COD 103] - +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] - +000111|PLC|FAULT|[COD 111] - +000112|PLC|FAULT|[COD 112] - +000113|PLC|FAULT|[COD 113] - Rotaz. mandr. 1 con pezzo sbloc. +000114|PLC|FAULT|[COD 114] - Rotaz. mandr. 1 con utens. sbloc. +000115|PLC|FAULT|[COD 115] - Err.paritŕ sensori uten.1 blo/sbl +000116|PLC|FAULT|[COD 116] - Memoria utens. in mandr. 1 errata +000117|PLC|FAULT|[COD 117] - Rotaz. mandr. 1 con riferim. alti +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] - +000123|PLC|FAULT|[COD 123] - +000124|PLC|FAULT|[COD 124] - +000125|PLC|FAULT|[COD 125] - +000126|PLC|FAULT|[COD 126] - +000127|PLC|FAULT|[COD 127] - +000128|PLC|FAULT|[COD 128] - +000129|PLC|FAULT|[COD 129] - Pezzo 1 non bloccato +000130|PLC|FAULT|[COD 130] - Pezzo 1 non sbloccato +000131|PLC|FAULT|[COD 131] - Utensile 1 non sbloccato +000132|PLC|FAULT|[COD 132] - Utensile 1 non bloccato +000133|PLC|FAULT|[COD 133] - Cambio utensile 1 fuori fase +000134|PLC|FAULT|[COD 134] - Cappa aspirazione non alta +000135|PLC|FAULT|[COD 135] - Cappa aspirazione non bassa +000136|PLC|FAULT|[COD 136] - Uten.mand.1 non allineato con RCM +000137|PLC|FAULT|[COD 137] - +000138|PLC|FAULT|[COD 138] - +000139|PLC|FAULT|[COD 139] - +000140|PLC|FAULT|[COD 140] - +000141|PLC|FAULT|[COD 141] - +000142|PLC|FAULT|[COD 142] - +000143|PLC|FAULT|[COD 143] - +000144|PLC|FAULT|[COD 144] - +000145|PLC|FAULT|[COD 145] - Errore gestione asse ausiliario w +000146|PLC|FAULT|[COD 146] - Messaggio dal processo 1 +000147|PLC|FAULT|[COD 147] - Pulsante sblocco uten.1 rifiutato +000148|PLC|FAULT|[COD 148] - Rotazione G96 non ammessa Mandr.1 +000149|PLC|FAULT|[COD 149] - Attesa mandrino 1 a regime +000150|PLC|FAULT|[COD 150] - Errore gestione mandrino 1 +000151|PLC|FAULT|[COD 151] - Modalitŕ rotaz.G96/G97 variata P1 +000152|PLC|FAULT|[COD 152] - Errore funzione T programmata Pr1 +000153|PLC|FAULT|[COD 153] - Errore aggiornamento offset ut. 1 +000154|PLC|FAULT|[COD 154] - Errore gestione assi condivisi +000155|PLC|FAULT|[COD 155] - Premere start per iniziare RCM +000156|PLC|FAULT|[COD 156] - Premere start per riprendere lav. +000157|PLC|FAULT|[COD 157] - Errore nel ciclo di ricerca mem. +000158|PLC|FAULT|[COD 158] - Attesa sistema pronto SW/HW +000159|PLC|FAULT|[COD 159] - +000160|PLC|FAULT|[COD 160] - +000161|PLC|FAULT|[COD 161] - Rotaz. mandr. 2 con pezzo sbloc. +000162|PLC|FAULT|[COD 162] - Rotaz. mandr. 2 con utens. sbloc. +000163|PLC|FAULT|[COD 163] - Err.paritŕ sensori uten.2 blo/sbl +000164|PLC|FAULT|[COD 164] - Memoria utens. in mandr. 2 errata +000165|PLC|FAULT|[COD 165] - +000166|PLC|FAULT|[COD 166] - +000167|PLC|FAULT|[COD 167] - --- ATTESA CONFERMA CMS CONTROL +000168|PLC|FAULT|[COD 168] - --- ADAPTER MTCONNECT NON DISPONIBILE +000169|PLC|FAULT|[COD 169] - 720 LIQUIDO NEBULIZZATORE NON OK +000170|PLC|FAULT|[COD 170] - 666 SPINDLE 2 SAFETY DEVICE FAILURE +000171|PLC|FAULT|[COD 171] - 546 B-Z AXIS NOT IN ZERO POSITION +000172|PLC|FAULT|[COD 172] - 229 THERMAL RELAY HYDRAULIC PUMP 2 +000173|PLC|FAULT|[COD 173] - 120 RANGE ACTIVATION NOT OK 2 +000174|PLC|FAULT|[COD 174] - 135 CONVERTER 2 IN WARNING +000175|PLC|FAULT|[COD 175] - 135 CONVERTER 2 IN FAULT +000176|PLC|FAULT|[COD 176] - 520 STALL MODE FUNCTION ACTIVE 2 +000177|PLC|FAULT|[COD 177] - 135 CONVERTER 2 BLOCKED +000178|PLC|FAULT|[COD 178] - 168 CONVERTER 2 DISABLED +000179|PLC|FAULT|[COD 179] - 163 CONVERTER 2 BRAKE OUT OF ORDER +000180|PLC|FAULT|[COD 180] - 100 CONVERTER 2 OFF +000181|PLC|FAULT|[COD 181] - 514 TOOL CRIB 4 PROTECTION NOT IN POSITION +000182|PLC|FAULT|[COD 182] - 181 TOOL CHANGE 2 PROGRAM NOT CALLD +000183|PLC|FAULT|[COD 183] - 489 COUPLING 2 FAILURE +000184|PLC|FAULT|[COD 184] - 177 SERVO-DRIVE BRAKING MODULE OUT OF ORDER A +000185|PLC|FAULT|[COD 185] - 177 SERVO-DRIVE BRAKING MODULE OUT OF ORDER B +000186|PLC|FAULT|[COD 186] - 228 THERMAL RELAY TOOL COOLANT PUMP 2 +000187|PLC|FAULT|[COD 187] - 487 SPINDLE 2 JOINT INSUFFICIENT WATER +000188|PLC|FAULT|[COD 188] - 488 INSUFFICIENT TOOL 2 COOLING +000189|PLC|FAULT|[COD 189] - 493 A+ AXIS ONLY ENABLED TO MOVEMENT +000190|PLC|FAULT|[COD 190] - 490 TOOLS POSITION CHECK 2 +000191|PLC|FAULT|[COD 191] - 432 TOOL 2 NOT UNCLAMPED +000192|PLC|FAULT|[COD 192] - 450 TOOL 2 NOT LOCKED +000193|PLC|FAULT|[COD 193] - 407 OVER EXTRA-STROKE A AXIS +000194|PLC|FAULT|[COD 194] - 407 OVER EXTRA-STROKE B AXIS +000195|PLC|FAULT|[COD 195] - 818 DOORS OPENED WITH SLAB ON MANIPULATOR +000196|PLC|FAULT|[COD 196] - 514 PROTEZIONE MAGAZZINO 3 NON IN POSIZIONE +000197|PLC|FAULT|[COD 197] - 545 UTENSILE ERRATO PER APERTURA MANIPOLATORE +000198|PLC|FAULT|[COD 198] - 545 ROTATION WITHOUT WATER NOT ALLOWED +000199|PLC|FAULT|[COD 199] - 561 LASER NOT IN POSITION +000200|PLC|FAULT|[COD 200] - --- VENTOSA SINCR. 1 NON OK +000201|PLC|FAULT|[COD 201] - --- VENTOSA SINCR. 2 NON OK +000202|PLC|FAULT|[COD 202] - --- VENTOSA SINCR. 3 NON OK +000203|PLC|FAULT|[COD 203] - --- VENTOSA SINCR. 4 NON OK +000204|PLC|FAULT|[COD 204] - --- VENTOSA SINCR. 5 NON OK +000205|PLC|FAULT|[COD 205] - --- VENTOSA SINCR. 6 NON OK +000206|PLC|FAULT|[COD 206] - --- VENTOSA SINCR. 7 NON OK +000207|PLC|FAULT|[COD 207] - --- VENTOSA SINCR. 8 NON OK +000208|PLC|FAULT|[COD 208] - --- VENTOSA SINCR. 9 NON OK +000209|PLC|FAULT|[COD 209] - --- VENTOSA SINCR. 10 NON OK +000210|PLC|FAULT|[COD 210] - --- VENTOSA SINCR. 11 NON OK +000211|PLC|FAULT|[COD 211] - --- VENTOSA SINCR. 12 NON OK +000212|PLC|FAULT|[COD 212] - --- VENTOSA SINCR. 13 NON OK +000213|PLC|FAULT|[COD 213] - --- VENTOSA SINCR. 14 NON OK +000214|PLC|FAULT|[COD 214] - --- VENTOSA SINCR. 15 NON OK +000215|PLC|FAULT|[COD 215] - --- VENTOSA SINCR. 16 NON OK +000216|PLC|FAULT|[COD 216] - --- VENTOSA SINCR. 17 NON OK +000217|PLC|FAULT|[COD 217] - --- VENTOSA SINCR. 18 NON OK +000218|PLC|FAULT|[COD 218] - --- VENTOSA SINCR. 19 NON OK +000219|PLC|FAULT|[COD 219] - --- VENTOSA SINCR. 20 NON OK +000220|PLC|FAULT|[COD 220] - --- VENTOSA SINCR. 21 NON OK +000221|PLC|FAULT|[COD 221] - --- VENTOSA SINCR. 22 NON OK +000222|PLC|FAULT|[COD 222] - --- VENTOSA SINCR. 23 NON OK +000223|PLC|FAULT|[COD 223] - --- VENTOSA SINCR. 24 NON OK +000224|PLC|FAULT|[COD 224] - 534 VENTOSE IN MOVIMENTO +000225|PLC|FAULT|[COD 225] - 503 PULIZIA CONI IN CORSO +000226|PLC|FAULT|[COD 226] - 177 MODULO FRENATURA AZIONAMENTO ASSE U NON OK +000227|PLC|FAULT|[COD 227] - 488 RECYCLED WATER NOT OK +000228|PLC|FAULT|[COD 228] - 443 RAFFREDDAMENTO POMPA VUOTO 2 NON OK +000229|PLC|FAULT|[COD 229] - 538 ROTARY TABLE NOT IN POSITION +000230|PLC|FAULT|[COD 230] - 346 PARATIA NON IN POSIZIONE +000231|PLC|FAULT|[COD 231] - 595 SAFETY BARRIERS +000232|PLC|FAULT|[COD 232] - 666 SETTING FEED ERROR +000233|PLC|FAULT|[COD 233] - 805 SAFETY DOOR LOCK ERROR +000234|PLC|FAULT|[COD 234] - 666 AXES FEED OUT OF RANGE +000235|PLC|FAULT|[COD 235] - 124 INCORRECT VECTRON DATASET CONFIGURATION FILE +000236|PLC|FAULT|[COD 236] - 442 BLADE CRIB 1 NOT IN POSITION +000237|PLC|FAULT|[COD 237] - 442 BLADE CRIB 2 NOT IN POSITION +000238|PLC|FAULT|[COD 238] - 125 VECTRON PARAMETERS WRITING IN PROGRESS +000239|PLC|FAULT|[COD 239] - 546 Z AXIS NOT IN POSITION +000240|PLC|FAULT|[COD 240] - 285 THERMAL RELAY LOAD ROLLER HYDRAULIC PUMP MOTOR +000241|PLC|FAULT|[COD 241] - --- AUTOMATIC ZEROING HEIDENAHIN NOT OK +000242|PLC|FAULT|[COD 242] - --- HEIDENAHIN ACTIVATION NOT ALLOWED WITH TOOL +000243|PLC|FAULT|[COD 243] - 561 HEIDENAHIN NOT IN POSITION +000244|PLC|FAULT|[COD 244] - 442 BLADE CRIB NOT IN POSITION +000245|PLC|FAULT|[COD 245] - 533 COLLET NOT IN POSITION +000246|PLC|FAULT|[COD 246] - 199 SPINDLE 1 NOT IN POSITION +000247|PLC|FAULT|[COD 247] - 124 INCORRECT TRANSPORTS CONFIGURATION FILE +000248|PLC|FAULT|[COD 248] - 556 INTERRUPTED LOAD/UNLOAD CYCLE +000249|PLC|FAULT|[COD 249] - 553 LOADING/UNLOADING CYCLE BLOCKED +000250|PLC|FAULT|[COD 250] - 575 PIECE IN LOADING/UNLOADING PHASE +000251|PLC|FAULT|[COD 251] - 548 ROLLER LOADER NOT IN POSITION +000252|PLC|FAULT|[COD 252] - 576 PIECE-LOADER EMPTY +000253|PLC|FAULT|[COD 253] - 135 CONVERTER UNLOAD BELT NOT READY +000254|PLC|FAULT|[COD 254] - 135 CONVERTER MACHINE BELT NOT READY +000255|PLC|FAULT|[COD 255] - 135 CONVERTER LOAD BELT NOT READY +000256|PLC|FAULT|[COD 256] - 135 CONVERTER UNLOAD ROLLER NOT READY +000257|PLC|FAULT|[COD 257] - 135 CONVERTER MACHINE ROLLER NOT READY +000258|PLC|FAULT|[COD 258] - 135 CONVERTER LOAD ROLLER NOT READY +000259|PLC|FAULT|[COD 259] - 549 SAFETY UNLOAD BELT +000260|PLC|FAULT|[COD 260] - 549 SAFETY MACHINE BELT +000261|PLC|FAULT|[COD 261] - 549 SAFETY LOAD BELT +000262|PLC|FAULT|[COD 262] - 549 SAFETY UNLOAD ROLLER +000263|PLC|FAULT|[COD 263] - 549 SAFETY MACHINE ROLLER +000264|PLC|FAULT|[COD 264] - 549 SAFETY LOAD ROLLER +000265|PLC|FAULT|[COD 265] - 599 MANUAL MOVEMENT UNLOAD BELT NOT ALLOWED +000266|PLC|FAULT|[COD 266] - 599 MANUAL MOVEMENT MACHINE BELT NOT ALLOWED +000267|PLC|FAULT|[COD 267] - 599 MANUAL MOVEMENT LOAD BELT NOT ALLOWED +000268|PLC|FAULT|[COD 268] - 599 MANUAL MOVEMENT UNLOAD ROLLER NOT ALLOWED +000269|PLC|FAULT|[COD 269] - 599 MANUAL MOVEMENT MACHINE ROLLER NOT ALLOWED +000270|PLC|FAULT|[COD 270] - 599 MANUAL MOVEMENT LOAD ROLLER NOT ALLOWED +000271|PLC|FAULT|[COD 271] - 125 UNLOAD BELT PARAMETERS ERROR +000272|PLC|FAULT|[COD 272] - 125 MACHINE BELT PARAMETERS ERROR +000273|PLC|FAULT|[COD 273] - 125 LOAD BELT PARAMETERS ERROR +000274|PLC|FAULT|[COD 274] - 125 UNLOAD ROLLER PARAMETERS ERROR +000275|PLC|FAULT|[COD 275] - 125 MACHINE ROLLER PARAMETERS ERROR +000276|PLC|FAULT|[COD 276] - 125 LOAD ROLLER PARAMETERS ERROR +000277|PLC|FAULT|[COD 277] - 285 THERMAL RELAY MACHINE ROLLER MOTOR +000278|PLC|FAULT|[COD 278] - 285 THERMAL RELAY UNLOAD ROLLER MOTOR +000279|PLC|FAULT|[COD 279] - 285 THERMAL RELAY LOAD BELT MOTOR +000280|PLC|FAULT|[COD 280] - 285 THERMAL RELAY MACHINE BELT MOTOR +000281|PLC|FAULT|[COD 281] - 285 THERMAL RELAY UNLOAD BELT MOTOR +000282|PLC|FAULT|[COD 282] - 125 SAVING FGE POINTS +000283|PLC|FAULT|[COD 283] - 287 PROTEZIONE TERMICA IMPIANTO CERIO +000284|PLC|FAULT|[COD 284] - 659 ACCENSIONE PROLUNGATA POMPA CERIO +000285|PLC|FAULT|[COD 285] - 705 AMP SETTINGS FOR N.T.S. ERROR +000286|PLC|FAULT|[COD 286] - 779 NTS IN LOW POSITION +000287|PLC|FAULT|[COD 287] - 779 NTS NOT IN POSITION +000288|PLC|FAULT|[COD 288] - 599 Q MOVEMENT NOT ALLOWED +000289|PLC|FAULT|[COD 289] - 493 Q+ AXIS ONLY ENABLED TO MOVEMENT +000290|PLC|FAULT|[COD 290] - 493 Q- AXIS ONLY ENABLED TO MOVEMENT +000291|PLC|FAULT|[COD 291] - 250 SHAPES DETECTOR ON SPINDLE +000292|PLC|FAULT|[COD 292] - 250 PULIZIA PIANO IN CORSO +000293|PLC|FAULT|[COD 293] - 124 ERRORE FILE CONFIGURAZINE SICU-CU +000294|PLC|FAULT|[COD 294] - 442 TOOL CRIB 2 NOT IN POSITION +000295|PLC|FAULT|[COD 295] - 514 TOOL CRIB 2 PROTECTION NOT IN POSITION +000296|PLC|FAULT|[COD 296] - 545 AXES NOT IN PROBING POSITION +000297|PLC|FAULT|[COD 297] - 251 PROBE CYCLE INTERRUPTED +000298|PLC|FAULT|[COD 298] - 251 PRESETTING LASER CYCLE INTERRUPTED +000299|PLC|FAULT|[COD 299] - 495 SINGLE AXIS ZEROING NOT ENABLE +000300|PLC|FAULT|[COD 300] - 285 RELAIS THERMIQUE ROULEAUX MACHINE +000301|PLC|FAULT|[COD 301] - 438 SPINDLE OFF WITH PROBE ACTIVATED +000302|PLC|FAULT|[COD 302] - 538 TABLE NOT POSITIONED +000303|PLC|FAULT|[COD 303] - 294 SUCTION CUPS NOT IN POSITION +000304|PLC|FAULT|[COD 304] - 547 COLLISION MANIPULATOR AND PROBE +000305|PLC|FAULT|[COD 305] - 197 REMOVE PARTS FROM MANIPULATOR +000306|PLC|FAULT|[COD 306] - 545 AXES NOT IN POSITION TO OPEN MANIPULATOR +000307|PLC|FAULT|[COD 307] - 538 AXIS MOVEMENT NOT ALLOWED WITH MANIPULATOR OPEN +000308|PLC|FAULT|[COD 308] - 305 MANIPLATOR VACUUM CLAMPS NOT OK +000309|PLC|FAULT|[COD 309] - 197 PART NOT LOCKED BY MANIPULATOR +000310|PLC|FAULT|[COD 310] - 785 CONSENSO APERTURA PORTE NEGATO +000311|PLC|FAULT|[COD 311] - 482 PIECE CLEANING WATER NOT OK +000312|PLC|FAULT|[COD 312] - 488 INSUFFICIENT TOOL DRILL COOLING +000313|PLC|FAULT|[COD 313] - 482 MANIPULATOR WATER NOT OK +000314|PLC|FAULT|[COD 314] - 146 FIELDBUS KO (375) +000315|PLC|FAULT|[COD 315] - 250 CICLO RAVVIVA FORETTI IN CORSO +000316|PLC|FAULT|[COD 316] - 250 CICLO RAVVIVA MOLE IN CORSO +000317|PLC|FAULT|[COD 317] - 407 OVER EXTRA-STROKE X AXIS +000318|PLC|FAULT|[COD 318] - 407 OVER EXTRA-STROKE Y AXIS +000319|PLC|FAULT|[COD 319] - 407 OVER EXTRA-STROKE Z AXIS +000320|PLC|FAULT|[COD 320] - 407 OVER EXTRA-STROKE V AXIS +000321|PLC|FAULT|[COD 321] - 148 AXES PRE-ALERTED +000322|PLC|FAULT|[COD 322] - 147 AXES ALERTED +000323|PLC|FAULT|[COD 323] - 149 Z AXIS PRE-ALERTED +000324|PLC|FAULT|[COD 324] - 149 W AXIS PRE-ALERTED +000325|PLC|FAULT|[COD 325] - 747 LAYING THE TOOL DOWN TO THE FLOOR (START) +000326|PLC|FAULT|[COD 326] - 748 TAKE UP TOOL FROM THE FLOOR (START) +000327|PLC|FAULT|[COD 327] - 151 DRIVING GEARS NOT POWERED +000328|PLC|FAULT|[COD 328] - 150 SERVO DRIVES NOT ENABLED +000329|PLC|FAULT|[COD 329] - 656 CLUTCH LOCKED +000330|PLC|FAULT|[COD 330] - 655 CLUTCH NOT LOCKED +000331|PLC|FAULT|[COD 331] - 404 Z-AXIS BALANCING INSUFFICIENT +000332|PLC|FAULT|[COD 332] - 464 TOOL LIFE EXHAUSTED +000333|PLC|FAULT|[COD 333] - 484 MACHINE STOPPED +000334|PLC|FAULT|[COD 334] - 177 SERVO-DRIVE BRAKING MODULE OUT OF ORDER X +000335|PLC|FAULT|[COD 335] - 177 SERVO-DRIVE BRAKING MODULE OUT OF ORDER Y +000336|PLC|FAULT|[COD 336] - 177 SERVO-DRIVE BRAKING MODULE OUT OF ORDER Z +000337|PLC|FAULT|[COD 337] - 305 VACUUM CLAMPING INEFFICIENT +000338|PLC|FAULT|[COD 338] - 177 SERVO-DRIVE BRAKING MODULE OUT OF ORDER V +000339|PLC|FAULT|[COD 339] - 593 SAFETY GUARDS +000340|PLC|FAULT|[COD 340] - 594 CHECK DOORS SECURITY +000341|PLC|FAULT|[COD 341] - 584 OPENING DOORS REQUEST +000342|PLC|FAULT|[COD 342] - 487 SPINDLE JOINT INSUFFICIENT WATER +000343|PLC|FAULT|[COD 343] - 488 INSUFFICIENT TOOL COOLING +000344|PLC|FAULT|[COD 344] - 594 FRONT DOORS NOT LOCKED +000345|PLC|FAULT|[COD 345] - 594 BACK DOORS NOT LOCKED +000346|PLC|FAULT|[COD 346] - 584 LATERAL DOOR NOT LOCKED +000347|PLC|FAULT|[COD 347] - 124 INCORRECT PLC CONFIGURATION FILE +000348|PLC|FAULT|[COD 348] - 124 INCORRECT I/O FILE +000349|PLC|FAULT|[COD 349] - AXES AMP PARAMETER OVERWRITE +000350|PLC|FAULT|[COD 350] - ERROR DURING BOOT +000351|PLC|FAULT|[COD 351] - 124 INCORRECT CONFIG.COLLISIONI FILE +000352|PLC|FAULT|[COD 352] - 124 INCORRECT CONFIG.COMPENSAZIONE FILE +000353|PLC|FAULT|[COD 353] - 124 INCORRECT CONFIG.MACCHINA FILE +000354|PLC|FAULT|[COD 354] - 489 COUPLING FAILURE +000355|PLC|FAULT|[COD 355] - 146 BUS ETHERCAT NOT OK +000356|PLC|FAULT|[COD 356] - 145 AXIS BOARDS NOT READY +000357|PLC|FAULT|[COD 357] - 583 MACHINE OFF +000358|PLC|FAULT|[COD 358] - 443 VACUUM PUMP COOLING SYSTEM MALFUNCTION +000359|PLC|FAULT|[COD 359] - 406 EMERGENCY PUSH-BUTTON +000360|PLC|FAULT|[COD 360] - 583 E-STOP CONTACT OPEN +000361|PLC|FAULT|[COD 361] - 667 SAFETY CIRCUIT FAILURE +000362|PLC|FAULT|[COD 362] - 666 SAFETY DEVICE FAILURE +000363|PLC|FAULT|[COD 363] - 127 OVERRIDE AT ZERO +000364|PLC|FAULT|[COD 364] - 305 VACUUM CLAMPING 2 INEFFICIENT +000365|PLC|FAULT|[COD 365] - 127 RAPID OVERRIDE AT ZERO +000366|PLC|FAULT|[COD 366] - 406 POWER OFF BUTTON PUSHED +000367|PLC|FAULT|[COD 367] - 577 TABLE IN MOTION +000368|PLC|FAULT|[COD 368] - 590 FRONT DOORS NOT CLOSED +000369|PLC|FAULT|[COD 369] - 590 BACK DOORS NOT CLOSED +000370|PLC|FAULT|[COD 370] - 230 THERMAL RELAY VACUUM PUMP 1 +000371|PLC|FAULT|[COD 371] - 230 THERMAL RELAY VACUUM PUMP 2 +000372|PLC|FAULT|[COD 372] - 229 THERMAL RELAY HYDRAULIC PUMP +000373|PLC|FAULT|[COD 373] - 641 TABLE CHANGE INTERRUPTED +000374|PLC|FAULT|[COD 374] - 534 TABLE LOCKING PIN NOT UP +000375|PLC|FAULT|[COD 375] - 534 TABLE LOCKING PIN NOT DOWN +000376|PLC|FAULT|[COD 376] - 403 OVERHEATING ELECTRICAL BOX +000377|PLC|FAULT|[COD 377] - 260 AUTOMATIC ADJUSTMENT OF FEED OVERRIDE IN PROGRESS +000378|PLC|FAULT|[COD 378] - 305 VACUUM CLAMPING 1 INEFFICIENT +000379|PLC|FAULT|[COD 379] - 611 TOOL CHANGE MOTOR NON IN POSITION +000380|PLC|FAULT|[COD 380] - 459 B AXIS LOCKED +000381|PLC|FAULT|[COD 381] - 458 B AXIS UNLOCKED +000382|PLC|FAULT|[COD 382] - 459 C AXIS LOCKED +000383|PLC|FAULT|[COD 383] - 458 C AXIS UNLOCKED +000384|PLC|FAULT|[COD 384] - 305 VACUUM CLAMPING INC. PLANE 1 INEFFICIENT +000385|PLC|FAULT|[COD 385] - 305 VACUUM CLAMPING INC. PLANE 2 INEFFICIENT +000386|PLC|FAULT|[COD 386] - 229 THERMAL RELAY RECYCLE WATER PUMP +000387|PLC|FAULT|[COD 387] - 228 THERMAL RELAY TOOL COOLANT PUMP +000388|PLC|FAULT|[COD 388] - 590 CABIN DOOR NOT CLOSED +000389|PLC|FAULT|[COD 389] - 179 TOOL CHANGE MOTOR NOT POWERED/ENABLED +000390|PLC|FAULT|[COD 390] - 300 RIGHT PRESSURE CLAMPING INEFFICIENT +000391|PLC|FAULT|[COD 391] - 300 LEFT PRESSURE CLAMPING INEFFICIENT +000392|PLC|FAULT|[COD 392] - 360 REFERENCE CYLINDERS 1 NOT IN POSITION +000393|PLC|FAULT|[COD 393] - 360 REFERENCE CYLINDERS 2 NOT IN POSITION +000394|PLC|FAULT|[COD 394] - 124 INCORRECT CONFIG.MOTORI CANBUS +000395|PLC|FAULT|[COD 395] - 135 TOOL CHANGE CONVERTER BLOCKED +000396|PLC|FAULT|[COD 396] - 135 TOOL CHANGE CONVERTER ON WARNIG +000397|PLC|FAULT|[COD 397] - 530 EXTERNAL MACHINE PANEL ENABLED +000398|PLC|FAULT|[COD 398] - 412 AXIS AUTOMATIC ZEROING UNDER WAY +000399|PLC|FAULT|[COD 399] - 442 TOOL CRIB 1 NOT IN POSITION +000400|PLC|FAULT|[COD 400] - 514 TOOL CRIB 1 PROTECTION NOT IN POSITION +000401|PLC|FAULT|[COD 401] - 495 AXIS ZEROING WITH TOOL IN ELECTROSPINDLE +000402|PLC|FAULT|[COD 402] - 606 PART-PROGRAM NOT FOUND (PC) +000403|PLC|FAULT|[COD 403] - 163 CONVERTER BRAKE OUT OF ORDER +000404|PLC|FAULT|[COD 404] - 603 PRESS START CYCLE +000405|PLC|FAULT|[COD 405] - 001 TOOLTABLES CHECKED? PRESS SOFTKEY «YES» +000406|PLC|FAULT|[COD 406] - 002 ARE YOU SURE? PRESS SOFTKEY «YES» +000407|PLC|FAULT|[COD 407] - 606 PART-PROGRAM NOT FOUND +000408|PLC|FAULT|[COD 408] - 135 CONVERTER BLOCKED +000409|PLC|FAULT|[COD 409] - 106 STOP FROM EXTERNAL PUSH-BUTTON PANEL +000410|PLC|FAULT|[COD 410] - 105 MACHINE IN HOLD STATUS +000411|PLC|FAULT|[COD 411] - 168 CONVERTER DISABLED +000412|PLC|FAULT|[COD 412] - 700 TABLES UNDER MODIFICATION +000413|PLC|FAULT|[COD 413] - 161 VECTRON COMMUNICATION ERROR +000414|PLC|FAULT|[COD 414] - 162 VECTRON FATAL ERROR: STOP THE MACHINE +000415|PLC|FAULT|[COD 415] - 176 FAULTY SPINDLE POWER SUPPLY +000416|PLC|FAULT|[COD 416] - 125 WEAR CONSTANT OUT OF RANGE +000417|PLC|FAULT|[COD 417] - 125 WRONG PARAMETER READING +000418|PLC|FAULT|[COD 418] - 125 PRESSURE RANGE NOT CORRECT +000419|PLC|FAULT|[COD 419] - 106 STOP FROM EXTERNAL PUSH-BUTTON CONTROL PANEL +000420|PLC|FAULT|[COD 420] - 125 COMPENSATION VERSOR ERROR +000421|PLC|FAULT|[COD 421] - 245 THERMAL CUT-OUT TOOL CRIB PROTECTION +000422|PLC|FAULT|[COD 422] - 741 TOOL CHANGE CODE PROCESS NOT SELECTED +000423|PLC|FAULT|[COD 423] - 390 T FUNCTION NOT PERMITTED +000424|PLC|FAULT|[COD 424] - 804 MOVE FEED/RAPID OVERRIDE +000425|PLC|FAULT|[COD 425] - 661 UNLOAD THE TOOL AND LOAD IT IN HIS POSITION ON THE TOOL CRIB +000426|PLC|FAULT|[COD 426] - 657 PLATFORM BALANCE HEAD NOT IN POSITION +000427|PLC|FAULT|[COD 427] - 741 HEADS 1 NOT SELECTED +000428|PLC|FAULT|[COD 428] - 488 RAFFREDDAMENTO DISCO INFERIORE +000429|PLC|FAULT|[COD 429] - 294 DISCO TAGLIO INFERIORE NON IN POSIZIONE +000430|PLC|FAULT|[COD 430] - 181 TOOL CHANGE PROGRAM NOT CALLED +000431|PLC|FAULT|[COD 431] - 546 Z AXIS NOT IN ZERO POSITION +000432|PLC|FAULT|[COD 432] - 545 B AXIS NOT IN POSITION +000433|PLC|FAULT|[COD 433] - 689 TOOLMANAGER WARNING +000434|PLC|FAULT|[COD 434] - 689 TOOLMANAGER WARNING +000435|PLC|FAULT|[COD 435] - 250 PRESETTING LASER ENABLED +000436|PLC|FAULT|[COD 436] - 817 HEADS SELECTION ERROR +000437|PLC|FAULT|[COD 437] - 517 INCORRECT VALUE FROM TABLE +000438|PLC|FAULT|[COD 438] - 390 M07 FUNCTION NOT PERMITTED +000439|PLC|FAULT|[COD 439] - 411 AXES WITHOUT ZERO POINTS (M97-HOME) +000440|PLC|FAULT|[COD 440] - 390 T FUNCTION NOT PERMITTED +000441|PLC|FAULT|[COD 441] - 399 GREASE TANK EMPTY +000442|PLC|FAULT|[COD 442] - 400 LUBRICATION INEFFICIENT +000443|PLC|FAULT|[COD 443] - 152 DRIVING GEARS NOT READY +000444|PLC|FAULT|[COD 444] - 530 SETTING MODE ENABLED +000445|PLC|FAULT|[COD 445] - 398 INSUFFICIENT AIR PRESSURE +000446|PLC|FAULT|[COD 446] - 528 “PROGRAM TEST” MODE ACTIVE +000447|PLC|FAULT|[COD 447] - 125 FLOATING WRONG PARAMETER +000448|PLC|FAULT|[COD 448] - 561 PROBE NOT IN POSITION +000449|PLC|FAULT|[COD 449] - 100 CONVERTER OFF +000450|PLC|FAULT|[COD 450] - 520 STALL MODE FUNCTION ACTIVE +000451|PLC|FAULT|[COD 451] - 120 RANGE ACTIVATION NOT OK +000452|PLC|FAULT|[COD 452] - 135 CONVERTER IN FAULT +000453|PLC|FAULT|[COD 453] - 135 CONVERTER IN WARNING +000454|PLC|FAULT|[COD 454] - 235 SPINDLE THERMAL PROTECTION +000455|PLC|FAULT|[COD 455] - 522 SPINDLE R.P.M. TOO HIGH +000456|PLC|FAULT|[COD 456] - 115 SPINDLE SPEED CONTROL +000457|PLC|FAULT|[COD 457] - 498 MAXIMAL CHARGE ON THE SPINDLE +000458|PLC|FAULT|[COD 458] - 441 SPINDLE COOLING SYSTEM MALFUNCTION +000459|PLC|FAULT|[COD 459] - 672 COOLANT CIRCUIT OUT OF ORDER +000460|PLC|FAULT|[COD 460] - 490 TOOLS POSITION CHECK +000461|PLC|FAULT|[COD 461] - 666 SPINDLE SAFETY DEVICE FAILURE +000462|PLC|FAULT|[COD 462] - --- TURNING OFF --- +000463|PLC|FAULT|[COD 463] - 450 TOOL NOT LOCKED +000464|PLC|FAULT|[COD 464] - 432 TOOL NOT UNCLAMPED +000465|PLC|FAULT|[COD 465] - 503 TOOL-CHANGE IN EXECUTION +000466|PLC|FAULT|[COD 466] - 504 TOOL-CHANGE INTERRUPTED +000467|PLC|FAULT|[COD 467] - 493 Z+ AXIS ONLY ENABLED TO MOVEMENT +000468|PLC|FAULT|[COD 468] - 493 Z- AXIS ONLY ENABLED TO MOVEMENT +000469|PLC|FAULT|[COD 469] - 493 Y+ AXIS ONLY ENABLED TO MOVEMENT +000470|PLC|FAULT|[COD 470] - 493 Y- AXIS ONLY ENABLED TO MOVEMENT +000471|PLC|FAULT|[COD 471] - 493 X+ AXIS ONLY ENABLED TO MOVEMENT +000472|PLC|FAULT|[COD 472] - 493 X- AXIS ONLY ENABLED TO MOVEMENT +000473|PLC|FAULT|[COD 473] - 493 C+ AXIS ONLY ENABLED TO MOVEMENT +000474|PLC|FAULT|[COD 474] - 493 C- AXIS ONLY ENABLED TO MOVEMENT +000475|PLC|FAULT|[COD 475] - 493 B+ AXIS ONLY ENABLED TO MOVEMENT +000476|PLC|FAULT|[COD 476] - 493 B- AXIS ONLY ENABLED TO MOVEMENT +000477|PLC|FAULT|[COD 477] - 484 MACHINE STOPPED BY LUBRICATION INEFFICIENT +000478|PLC|FAULT|[COD 478] - 654 VERIFY AXES COLLISION +000479|PLC|FAULT|[COD 479] - --- SAFETY COLLISION FUNCTION OFF --- +000480|PLC|FAULT|[COD 480] - 573 POSITIVE OVERSTROKE FLOATING AXIS +000481|PLC|FAULT|[COD 481] - 573 NEGATIVE OVERSTROKE FLOATING AXIS +000482|PLC|FAULT|[COD 482] - 538 TABLE MOVEMENT NOT ALLOWED +000483|PLC|FAULT|[COD 483] - 538 TABLE RELEASE NOT ALLOWED +000484|PLC|FAULT|[COD 484] - 235 SONDA TERMICA MANDRINO 2 +000485|PLC|FAULT|[COD 485] - 522 GIRI TROPPO ELEVATI MANDRINO 2 +000486|PLC|FAULT|[COD 486] - 115 CONTROLLO VELOCITŔ MANDRINO 2 +000487|PLC|FAULT|[COD 487] - 498 CARICO MASSIMO SUL MANDRINO 2 +000488|PLC|FAULT|[COD 488] - 176 MANDRINO 2 NON INIZIALIZZATO +000489|PLC|FAULT|[COD 489] - 741 UNITŔ OPERATRICE 2: MANDRINO NON SELEZIONATO O IN CAMBIO UTENSIL +000490|PLC|FAULT|[COD 490] - 538 AXES MOVEMENT NOT ENABLED-PROBE IN POSITION +000491|PLC|FAULT|[COD 491] - 595 SAFETY LOAD BARRIERS +000492|PLC|FAULT|[COD 492] - 595 SAFETY UNLOAD BARRIERS +000493|PLC|FAULT|[COD 493] - 550 CHECK POPUP MODULE +000494|PLC|FAULT|[COD 494] - 550 ASCENT POPUP MODULE NOT ALLOWE +000495|PLC|FAULT|[COD 495] - 550 POPUP MODULE UP +000496|PLC|FAULT|[COD 496] - 552 CHECK INPUT BULKHEAD +000497|PLC|FAULT|[COD 497] - 552 CHECK OUTPUT BULKHEAD +000498|PLC|FAULT|[COD 498] - 551 WAITING INPUT BULKHEAD OPEN +000499|PLC|FAULT|[COD 499] - 551 WAITING INPUT BULKHEAD CLOSE +000500|PLC|FAULT|[COD 500] - 551 WAITING OUTPUT BULKHEAD OPEN +000501|PLC|FAULT|[COD 501] - 551 WAITING OUTPUT BULKHEAD CLOSE +000502|PLC|FAULT|[COD 502] - 550 WAITING POPUP IN POSITION \ 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 9177953..9e81ede 100644 --- a/MTC_Adapter/MTC_Adapter/DATA/CONF/AnalogData.map +++ b/MTC_Adapter/MTC_Adapter/DATA/CONF/AnalogData.map @@ -1 +1,7 @@ -# 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 +# 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 diff --git a/MTC_Adapter/MTC_Adapter/DATA/CONF/CounterList.map b/MTC_Adapter/MTC_Adapter/DATA/CONF/CounterList.map index 59c12a6..55e0c09 100644 --- a/MTC_Adapter/MTC_Adapter/DATA/CONF/CounterList.map +++ b/MTC_Adapter/MTC_Adapter/DATA/CONF/CounterList.map @@ -21,8 +21,8 @@ 020|VacAct_02_Count |COUNT 021|Lubro_01_Num |COUNT 022|SlittaTastatore_Count |COUNT -023|SlittaMagazzino_01_Count |COUNT -024|ProtMagazzino_01_Count |COUNT +023|ProtMagazzino_01_Count |COUNT +024|ProtMagazzino_02_Count |COUNT 025|UnOp_01_NumCambiUT |COUNT 026|Axis_01_AccTime |COUNT 027|Axis_02_AccTime |COUNT From 3dcae93ba906a915b8b137ea3fc6affbb5c85698 Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Tue, 4 Jul 2017 14:08:17 +0200 Subject: [PATCH 17/21] fix siemens multipath x singolo path (x codici G) come OSAI --- MTC_Adapter/MTC_Adapter/AdapterSiemens.cs | 2 +- .../DATA/CONF/Adapter_ItemList.xml | 140 +- .../MTC_Adapter/DATA/CONF/AlarmList.map | 1526 +++++++++++------ .../MTC_Adapter/DATA/CONF/AnalogData.map | 8 +- .../MTC_Adapter/DATA/CONF/CounterList.map | 4 +- 5 files changed, 1164 insertions(+), 516 deletions(-) diff --git a/MTC_Adapter/MTC_Adapter/AdapterSiemens.cs b/MTC_Adapter/MTC_Adapter/AdapterSiemens.cs index 23bb3ec..45b4291 100644 --- a/MTC_Adapter/MTC_Adapter/AdapterSiemens.cs +++ b/MTC_Adapter/MTC_Adapter/AdapterSiemens.cs @@ -953,7 +953,7 @@ namespace MTC_Adapter string[,] vettGCod = new string[2, 64]; // recupero vettore generale G MODE inizio = DateTime.Now; - SIEMENS_ref.getPathGCodeMod(2, ref vettGCod); + SIEMENS_ref.getPathGCodeMod(currAdpConf.nPath, ref vettGCod); if (utils.CRB("recTime")) TimingData.addResult("R-GCodModal", DateTime.Now.Subtract(inizio).Ticks); diff --git a/MTC_Adapter/MTC_Adapter/DATA/CONF/Adapter_ItemList.xml b/MTC_Adapter/MTC_Adapter/DATA/CONF/Adapter_ItemList.xml index e9e51b4..ee9d1b6 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 - ADAPTER_OSAI - OSAI + ADAPTER_SIEMENS + SIEMENS 0 0 0 @@ -41,11 +41,13 @@ ProtMagazzino_01 + + - ProtMagazzino_02 + SlittaMagazzino_ - + Cooler_01 @@ -167,5 +169,135 @@ + + Axis_07 + + + Axis_07_Type + LINEAR + + + Axis_07_Grp + 00 + + + + + Axis_08 + + + Axis_08_Type + LINEAR + + + Axis_08_Grp + 00 + + + + + Axis_09 + + + Axis_09_Type + LINEAR + + + Axis_09_Grp + 00 + + + + + Axis_10 + + + Axis_10_Type + LINEAR + + + Axis_10_Grp + 00 + + + + + Axis_11 + + + Axis_11_Type + LINEAR + + + Axis_11_Grp + 00 + + + + + Axis_12 + + + Axis_12_Type + LINEAR + + + Axis_12_Grp + 00 + + + + + 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 98bcf27..6698345 100644 --- a/MTC_Adapter/MTC_Adapter/DATA/CONF/AlarmList.map +++ b/MTC_Adapter/MTC_Adapter/DATA/CONF/AlarmList.map @@ -1,503 +1,1025 @@ # Commenti con "#", elenco tipo COD_NUM|GRUPPO|LEVEL|DESCRIZIONE completa -000001|PLC|FAULT|[COD 001] - 152 AXIS X DRIVING GEAR NOT READY -000002|PLC|FAULT|[COD 002] - 152 AXIS Y DRIVING GEAR NOT READY -000003|PLC|FAULT|[COD 003] - 152 AXIS Z DRIVING GEAR NOT READY -000004|PLC|FAULT|[COD 004] - 152 AXIS V DRIVING GEAR NOT READY -000005|PLC|FAULT|[COD 005] - 152 AXIS B DRIVING GEAR NOT READY -000006|PLC|FAULT|[COD 006] - 152 AXIS C DRIVING GEAR NOT READY -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] - Potenza spenta -000066|PLC|FAULT|[COD 066] - Assi non riferiti -000067|PLC|FAULT|[COD 067] - Errore nel ciclo azzeramento assi -000068|PLC|FAULT|[COD 068] - Errore abilitazione assi -000069|PLC|FAULT|[COD 069] - Assi non abilitati -000070|PLC|FAULT|[COD 070] - Errore preset origini -000071|PLC|FAULT|[COD 071] - Livello minimo lubrificazione -000072|PLC|FAULT|[COD 072] - Contr.tempo esecuzione background -000073|PLC|FAULT|[COD 073] - Pulsante di start rifiutato -000074|PLC|FAULT|[COD 074] - Troppi assi selezionati -000075|PLC|FAULT|[COD 075] - Teach pendant abilitata -000076|PLC|FAULT|[COD 076] - -000077|PLC|FAULT|[COD 077] - Errore salvataggio file XML -000078|PLC|FAULT|[COD 078] - Parametri AMP assi sovrascritti -000079|PLC|FAULT|[COD 079] - Azion.OsWire in attesa rapid-halt -000080|PLC|FAULT|[COD 080] - Azion.OsWire attesa I/O emer.man. -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] - Err. gestione file mappatura I/O -000085|PLC|FAULT|[COD 085] - Azionamenti guasti -000086|PLC|FAULT|[COD 086] - Errore durante l'inizializzazione -000087|PLC|FAULT|[COD 087] - Watch dog console Top 5 -000088|PLC|FAULT|[COD 088] - Errore gestione reset -000089|PLC|FAULT|[COD 089] - Errore file XML configuraz. PLC -000090|PLC|FAULT|[COD 090] - Errore file XML configuraz. assi -000091|PLC|FAULT|[COD 091] - Errore Ethercat -000092|PLC|FAULT|[COD 092] - -000093|PLC|FAULT|[COD 093] - Azionamento mandrino 4 guasto -000094|PLC|FAULT|[COD 094] - Azionamento mandrino 3 guasto -000095|PLC|FAULT|[COD 095] - Azionamento mandrino 2 guasto -000096|PLC|FAULT|[COD 096] - Azionamento mandrino 1 guasto -000097|PLC|FAULT|[COD 097] - Ripari aperti -000098|PLC|FAULT|[COD 098] - Mancanza pressostato aria -000099|PLC|FAULT|[COD 099] - Intervento termici generici -000100|PLC|FAULT|[COD 100] - Oltrecorsa asse ausiliario -000101|PLC|FAULT|[COD 101] - Teach pendant liveman -000102|PLC|FAULT|[COD 102] - Disabilitazione assi -000103|PLC|FAULT|[COD 103] - -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] - -000111|PLC|FAULT|[COD 111] - -000112|PLC|FAULT|[COD 112] - -000113|PLC|FAULT|[COD 113] - Rotaz. mandr. 1 con pezzo sbloc. -000114|PLC|FAULT|[COD 114] - Rotaz. mandr. 1 con utens. sbloc. -000115|PLC|FAULT|[COD 115] - Err.paritŕ sensori uten.1 blo/sbl -000116|PLC|FAULT|[COD 116] - Memoria utens. in mandr. 1 errata -000117|PLC|FAULT|[COD 117] - Rotaz. mandr. 1 con riferim. alti -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] - -000123|PLC|FAULT|[COD 123] - -000124|PLC|FAULT|[COD 124] - -000125|PLC|FAULT|[COD 125] - -000126|PLC|FAULT|[COD 126] - -000127|PLC|FAULT|[COD 127] - -000128|PLC|FAULT|[COD 128] - -000129|PLC|FAULT|[COD 129] - Pezzo 1 non bloccato -000130|PLC|FAULT|[COD 130] - Pezzo 1 non sbloccato -000131|PLC|FAULT|[COD 131] - Utensile 1 non sbloccato -000132|PLC|FAULT|[COD 132] - Utensile 1 non bloccato -000133|PLC|FAULT|[COD 133] - Cambio utensile 1 fuori fase -000134|PLC|FAULT|[COD 134] - Cappa aspirazione non alta -000135|PLC|FAULT|[COD 135] - Cappa aspirazione non bassa -000136|PLC|FAULT|[COD 136] - Uten.mand.1 non allineato con RCM -000137|PLC|FAULT|[COD 137] - -000138|PLC|FAULT|[COD 138] - -000139|PLC|FAULT|[COD 139] - -000140|PLC|FAULT|[COD 140] - -000141|PLC|FAULT|[COD 141] - -000142|PLC|FAULT|[COD 142] - -000143|PLC|FAULT|[COD 143] - -000144|PLC|FAULT|[COD 144] - -000145|PLC|FAULT|[COD 145] - Errore gestione asse ausiliario w -000146|PLC|FAULT|[COD 146] - Messaggio dal processo 1 -000147|PLC|FAULT|[COD 147] - Pulsante sblocco uten.1 rifiutato -000148|PLC|FAULT|[COD 148] - Rotazione G96 non ammessa Mandr.1 -000149|PLC|FAULT|[COD 149] - Attesa mandrino 1 a regime -000150|PLC|FAULT|[COD 150] - Errore gestione mandrino 1 -000151|PLC|FAULT|[COD 151] - Modalitŕ rotaz.G96/G97 variata P1 -000152|PLC|FAULT|[COD 152] - Errore funzione T programmata Pr1 -000153|PLC|FAULT|[COD 153] - Errore aggiornamento offset ut. 1 -000154|PLC|FAULT|[COD 154] - Errore gestione assi condivisi -000155|PLC|FAULT|[COD 155] - Premere start per iniziare RCM -000156|PLC|FAULT|[COD 156] - Premere start per riprendere lav. -000157|PLC|FAULT|[COD 157] - Errore nel ciclo di ricerca mem. -000158|PLC|FAULT|[COD 158] - Attesa sistema pronto SW/HW -000159|PLC|FAULT|[COD 159] - -000160|PLC|FAULT|[COD 160] - -000161|PLC|FAULT|[COD 161] - Rotaz. mandr. 2 con pezzo sbloc. -000162|PLC|FAULT|[COD 162] - Rotaz. mandr. 2 con utens. sbloc. -000163|PLC|FAULT|[COD 163] - Err.paritŕ sensori uten.2 blo/sbl -000164|PLC|FAULT|[COD 164] - Memoria utens. in mandr. 2 errata -000165|PLC|FAULT|[COD 165] - -000166|PLC|FAULT|[COD 166] - -000167|PLC|FAULT|[COD 167] - --- ATTESA CONFERMA CMS CONTROL -000168|PLC|FAULT|[COD 168] - --- ADAPTER MTCONNECT NON DISPONIBILE -000169|PLC|FAULT|[COD 169] - 720 LIQUIDO NEBULIZZATORE NON OK -000170|PLC|FAULT|[COD 170] - 666 SPINDLE 2 SAFETY DEVICE FAILURE -000171|PLC|FAULT|[COD 171] - 546 B-Z AXIS NOT IN ZERO POSITION -000172|PLC|FAULT|[COD 172] - 229 THERMAL RELAY HYDRAULIC PUMP 2 -000173|PLC|FAULT|[COD 173] - 120 RANGE ACTIVATION NOT OK 2 -000174|PLC|FAULT|[COD 174] - 135 CONVERTER 2 IN WARNING -000175|PLC|FAULT|[COD 175] - 135 CONVERTER 2 IN FAULT -000176|PLC|FAULT|[COD 176] - 520 STALL MODE FUNCTION ACTIVE 2 -000177|PLC|FAULT|[COD 177] - 135 CONVERTER 2 BLOCKED -000178|PLC|FAULT|[COD 178] - 168 CONVERTER 2 DISABLED -000179|PLC|FAULT|[COD 179] - 163 CONVERTER 2 BRAKE OUT OF ORDER -000180|PLC|FAULT|[COD 180] - 100 CONVERTER 2 OFF -000181|PLC|FAULT|[COD 181] - 514 TOOL CRIB 4 PROTECTION NOT IN POSITION -000182|PLC|FAULT|[COD 182] - 181 TOOL CHANGE 2 PROGRAM NOT CALLD -000183|PLC|FAULT|[COD 183] - 489 COUPLING 2 FAILURE -000184|PLC|FAULT|[COD 184] - 177 SERVO-DRIVE BRAKING MODULE OUT OF ORDER A -000185|PLC|FAULT|[COD 185] - 177 SERVO-DRIVE BRAKING MODULE OUT OF ORDER B -000186|PLC|FAULT|[COD 186] - 228 THERMAL RELAY TOOL COOLANT PUMP 2 -000187|PLC|FAULT|[COD 187] - 487 SPINDLE 2 JOINT INSUFFICIENT WATER -000188|PLC|FAULT|[COD 188] - 488 INSUFFICIENT TOOL 2 COOLING -000189|PLC|FAULT|[COD 189] - 493 A+ AXIS ONLY ENABLED TO MOVEMENT -000190|PLC|FAULT|[COD 190] - 490 TOOLS POSITION CHECK 2 -000191|PLC|FAULT|[COD 191] - 432 TOOL 2 NOT UNCLAMPED -000192|PLC|FAULT|[COD 192] - 450 TOOL 2 NOT LOCKED -000193|PLC|FAULT|[COD 193] - 407 OVER EXTRA-STROKE A AXIS -000194|PLC|FAULT|[COD 194] - 407 OVER EXTRA-STROKE B AXIS -000195|PLC|FAULT|[COD 195] - 818 DOORS OPENED WITH SLAB ON MANIPULATOR -000196|PLC|FAULT|[COD 196] - 514 PROTEZIONE MAGAZZINO 3 NON IN POSIZIONE -000197|PLC|FAULT|[COD 197] - 545 UTENSILE ERRATO PER APERTURA MANIPOLATORE -000198|PLC|FAULT|[COD 198] - 545 ROTATION WITHOUT WATER NOT ALLOWED -000199|PLC|FAULT|[COD 199] - 561 LASER NOT IN POSITION -000200|PLC|FAULT|[COD 200] - --- VENTOSA SINCR. 1 NON OK -000201|PLC|FAULT|[COD 201] - --- VENTOSA SINCR. 2 NON OK -000202|PLC|FAULT|[COD 202] - --- VENTOSA SINCR. 3 NON OK -000203|PLC|FAULT|[COD 203] - --- VENTOSA SINCR. 4 NON OK -000204|PLC|FAULT|[COD 204] - --- VENTOSA SINCR. 5 NON OK -000205|PLC|FAULT|[COD 205] - --- VENTOSA SINCR. 6 NON OK -000206|PLC|FAULT|[COD 206] - --- VENTOSA SINCR. 7 NON OK -000207|PLC|FAULT|[COD 207] - --- VENTOSA SINCR. 8 NON OK -000208|PLC|FAULT|[COD 208] - --- VENTOSA SINCR. 9 NON OK -000209|PLC|FAULT|[COD 209] - --- VENTOSA SINCR. 10 NON OK -000210|PLC|FAULT|[COD 210] - --- VENTOSA SINCR. 11 NON OK -000211|PLC|FAULT|[COD 211] - --- VENTOSA SINCR. 12 NON OK -000212|PLC|FAULT|[COD 212] - --- VENTOSA SINCR. 13 NON OK -000213|PLC|FAULT|[COD 213] - --- VENTOSA SINCR. 14 NON OK -000214|PLC|FAULT|[COD 214] - --- VENTOSA SINCR. 15 NON OK -000215|PLC|FAULT|[COD 215] - --- VENTOSA SINCR. 16 NON OK -000216|PLC|FAULT|[COD 216] - --- VENTOSA SINCR. 17 NON OK -000217|PLC|FAULT|[COD 217] - --- VENTOSA SINCR. 18 NON OK -000218|PLC|FAULT|[COD 218] - --- VENTOSA SINCR. 19 NON OK -000219|PLC|FAULT|[COD 219] - --- VENTOSA SINCR. 20 NON OK -000220|PLC|FAULT|[COD 220] - --- VENTOSA SINCR. 21 NON OK -000221|PLC|FAULT|[COD 221] - --- VENTOSA SINCR. 22 NON OK -000222|PLC|FAULT|[COD 222] - --- VENTOSA SINCR. 23 NON OK -000223|PLC|FAULT|[COD 223] - --- VENTOSA SINCR. 24 NON OK -000224|PLC|FAULT|[COD 224] - 534 VENTOSE IN MOVIMENTO -000225|PLC|FAULT|[COD 225] - 503 PULIZIA CONI IN CORSO -000226|PLC|FAULT|[COD 226] - 177 MODULO FRENATURA AZIONAMENTO ASSE U NON OK -000227|PLC|FAULT|[COD 227] - 488 RECYCLED WATER NOT OK -000228|PLC|FAULT|[COD 228] - 443 RAFFREDDAMENTO POMPA VUOTO 2 NON OK -000229|PLC|FAULT|[COD 229] - 538 ROTARY TABLE NOT IN POSITION -000230|PLC|FAULT|[COD 230] - 346 PARATIA NON IN POSIZIONE -000231|PLC|FAULT|[COD 231] - 595 SAFETY BARRIERS -000232|PLC|FAULT|[COD 232] - 666 SETTING FEED ERROR -000233|PLC|FAULT|[COD 233] - 805 SAFETY DOOR LOCK ERROR -000234|PLC|FAULT|[COD 234] - 666 AXES FEED OUT OF RANGE -000235|PLC|FAULT|[COD 235] - 124 INCORRECT VECTRON DATASET CONFIGURATION FILE -000236|PLC|FAULT|[COD 236] - 442 BLADE CRIB 1 NOT IN POSITION -000237|PLC|FAULT|[COD 237] - 442 BLADE CRIB 2 NOT IN POSITION -000238|PLC|FAULT|[COD 238] - 125 VECTRON PARAMETERS WRITING IN PROGRESS -000239|PLC|FAULT|[COD 239] - 546 Z AXIS NOT IN POSITION -000240|PLC|FAULT|[COD 240] - 285 THERMAL RELAY LOAD ROLLER HYDRAULIC PUMP MOTOR -000241|PLC|FAULT|[COD 241] - --- AUTOMATIC ZEROING HEIDENAHIN NOT OK -000242|PLC|FAULT|[COD 242] - --- HEIDENAHIN ACTIVATION NOT ALLOWED WITH TOOL -000243|PLC|FAULT|[COD 243] - 561 HEIDENAHIN NOT IN POSITION -000244|PLC|FAULT|[COD 244] - 442 BLADE CRIB NOT IN POSITION -000245|PLC|FAULT|[COD 245] - 533 COLLET NOT IN POSITION -000246|PLC|FAULT|[COD 246] - 199 SPINDLE 1 NOT IN POSITION -000247|PLC|FAULT|[COD 247] - 124 INCORRECT TRANSPORTS CONFIGURATION FILE -000248|PLC|FAULT|[COD 248] - 556 INTERRUPTED LOAD/UNLOAD CYCLE -000249|PLC|FAULT|[COD 249] - 553 LOADING/UNLOADING CYCLE BLOCKED -000250|PLC|FAULT|[COD 250] - 575 PIECE IN LOADING/UNLOADING PHASE -000251|PLC|FAULT|[COD 251] - 548 ROLLER LOADER NOT IN POSITION -000252|PLC|FAULT|[COD 252] - 576 PIECE-LOADER EMPTY -000253|PLC|FAULT|[COD 253] - 135 CONVERTER UNLOAD BELT NOT READY -000254|PLC|FAULT|[COD 254] - 135 CONVERTER MACHINE BELT NOT READY -000255|PLC|FAULT|[COD 255] - 135 CONVERTER LOAD BELT NOT READY -000256|PLC|FAULT|[COD 256] - 135 CONVERTER UNLOAD ROLLER NOT READY -000257|PLC|FAULT|[COD 257] - 135 CONVERTER MACHINE ROLLER NOT READY -000258|PLC|FAULT|[COD 258] - 135 CONVERTER LOAD ROLLER NOT READY -000259|PLC|FAULT|[COD 259] - 549 SAFETY UNLOAD BELT -000260|PLC|FAULT|[COD 260] - 549 SAFETY MACHINE BELT -000261|PLC|FAULT|[COD 261] - 549 SAFETY LOAD BELT -000262|PLC|FAULT|[COD 262] - 549 SAFETY UNLOAD ROLLER -000263|PLC|FAULT|[COD 263] - 549 SAFETY MACHINE ROLLER -000264|PLC|FAULT|[COD 264] - 549 SAFETY LOAD ROLLER -000265|PLC|FAULT|[COD 265] - 599 MANUAL MOVEMENT UNLOAD BELT NOT ALLOWED -000266|PLC|FAULT|[COD 266] - 599 MANUAL MOVEMENT MACHINE BELT NOT ALLOWED -000267|PLC|FAULT|[COD 267] - 599 MANUAL MOVEMENT LOAD BELT NOT ALLOWED -000268|PLC|FAULT|[COD 268] - 599 MANUAL MOVEMENT UNLOAD ROLLER NOT ALLOWED -000269|PLC|FAULT|[COD 269] - 599 MANUAL MOVEMENT MACHINE ROLLER NOT ALLOWED -000270|PLC|FAULT|[COD 270] - 599 MANUAL MOVEMENT LOAD ROLLER NOT ALLOWED -000271|PLC|FAULT|[COD 271] - 125 UNLOAD BELT PARAMETERS ERROR -000272|PLC|FAULT|[COD 272] - 125 MACHINE BELT PARAMETERS ERROR -000273|PLC|FAULT|[COD 273] - 125 LOAD BELT PARAMETERS ERROR -000274|PLC|FAULT|[COD 274] - 125 UNLOAD ROLLER PARAMETERS ERROR -000275|PLC|FAULT|[COD 275] - 125 MACHINE ROLLER PARAMETERS ERROR -000276|PLC|FAULT|[COD 276] - 125 LOAD ROLLER PARAMETERS ERROR -000277|PLC|FAULT|[COD 277] - 285 THERMAL RELAY MACHINE ROLLER MOTOR -000278|PLC|FAULT|[COD 278] - 285 THERMAL RELAY UNLOAD ROLLER MOTOR -000279|PLC|FAULT|[COD 279] - 285 THERMAL RELAY LOAD BELT MOTOR -000280|PLC|FAULT|[COD 280] - 285 THERMAL RELAY MACHINE BELT MOTOR -000281|PLC|FAULT|[COD 281] - 285 THERMAL RELAY UNLOAD BELT MOTOR -000282|PLC|FAULT|[COD 282] - 125 SAVING FGE POINTS -000283|PLC|FAULT|[COD 283] - 287 PROTEZIONE TERMICA IMPIANTO CERIO -000284|PLC|FAULT|[COD 284] - 659 ACCENSIONE PROLUNGATA POMPA CERIO -000285|PLC|FAULT|[COD 285] - 705 AMP SETTINGS FOR N.T.S. ERROR -000286|PLC|FAULT|[COD 286] - 779 NTS IN LOW POSITION -000287|PLC|FAULT|[COD 287] - 779 NTS NOT IN POSITION -000288|PLC|FAULT|[COD 288] - 599 Q MOVEMENT NOT ALLOWED -000289|PLC|FAULT|[COD 289] - 493 Q+ AXIS ONLY ENABLED TO MOVEMENT -000290|PLC|FAULT|[COD 290] - 493 Q- AXIS ONLY ENABLED TO MOVEMENT -000291|PLC|FAULT|[COD 291] - 250 SHAPES DETECTOR ON SPINDLE -000292|PLC|FAULT|[COD 292] - 250 PULIZIA PIANO IN CORSO -000293|PLC|FAULT|[COD 293] - 124 ERRORE FILE CONFIGURAZINE SICU-CU -000294|PLC|FAULT|[COD 294] - 442 TOOL CRIB 2 NOT IN POSITION -000295|PLC|FAULT|[COD 295] - 514 TOOL CRIB 2 PROTECTION NOT IN POSITION -000296|PLC|FAULT|[COD 296] - 545 AXES NOT IN PROBING POSITION -000297|PLC|FAULT|[COD 297] - 251 PROBE CYCLE INTERRUPTED -000298|PLC|FAULT|[COD 298] - 251 PRESETTING LASER CYCLE INTERRUPTED -000299|PLC|FAULT|[COD 299] - 495 SINGLE AXIS ZEROING NOT ENABLE -000300|PLC|FAULT|[COD 300] - 285 RELAIS THERMIQUE ROULEAUX MACHINE -000301|PLC|FAULT|[COD 301] - 438 SPINDLE OFF WITH PROBE ACTIVATED -000302|PLC|FAULT|[COD 302] - 538 TABLE NOT POSITIONED -000303|PLC|FAULT|[COD 303] - 294 SUCTION CUPS NOT IN POSITION -000304|PLC|FAULT|[COD 304] - 547 COLLISION MANIPULATOR AND PROBE -000305|PLC|FAULT|[COD 305] - 197 REMOVE PARTS FROM MANIPULATOR -000306|PLC|FAULT|[COD 306] - 545 AXES NOT IN POSITION TO OPEN MANIPULATOR -000307|PLC|FAULT|[COD 307] - 538 AXIS MOVEMENT NOT ALLOWED WITH MANIPULATOR OPEN -000308|PLC|FAULT|[COD 308] - 305 MANIPLATOR VACUUM CLAMPS NOT OK -000309|PLC|FAULT|[COD 309] - 197 PART NOT LOCKED BY MANIPULATOR -000310|PLC|FAULT|[COD 310] - 785 CONSENSO APERTURA PORTE NEGATO -000311|PLC|FAULT|[COD 311] - 482 PIECE CLEANING WATER NOT OK -000312|PLC|FAULT|[COD 312] - 488 INSUFFICIENT TOOL DRILL COOLING -000313|PLC|FAULT|[COD 313] - 482 MANIPULATOR WATER NOT OK -000314|PLC|FAULT|[COD 314] - 146 FIELDBUS KO (375) -000315|PLC|FAULT|[COD 315] - 250 CICLO RAVVIVA FORETTI IN CORSO -000316|PLC|FAULT|[COD 316] - 250 CICLO RAVVIVA MOLE IN CORSO -000317|PLC|FAULT|[COD 317] - 407 OVER EXTRA-STROKE X AXIS -000318|PLC|FAULT|[COD 318] - 407 OVER EXTRA-STROKE Y AXIS -000319|PLC|FAULT|[COD 319] - 407 OVER EXTRA-STROKE Z AXIS -000320|PLC|FAULT|[COD 320] - 407 OVER EXTRA-STROKE V AXIS -000321|PLC|FAULT|[COD 321] - 148 AXES PRE-ALERTED -000322|PLC|FAULT|[COD 322] - 147 AXES ALERTED -000323|PLC|FAULT|[COD 323] - 149 Z AXIS PRE-ALERTED -000324|PLC|FAULT|[COD 324] - 149 W AXIS PRE-ALERTED -000325|PLC|FAULT|[COD 325] - 747 LAYING THE TOOL DOWN TO THE FLOOR (START) -000326|PLC|FAULT|[COD 326] - 748 TAKE UP TOOL FROM THE FLOOR (START) -000327|PLC|FAULT|[COD 327] - 151 DRIVING GEARS NOT POWERED -000328|PLC|FAULT|[COD 328] - 150 SERVO DRIVES NOT ENABLED -000329|PLC|FAULT|[COD 329] - 656 CLUTCH LOCKED -000330|PLC|FAULT|[COD 330] - 655 CLUTCH NOT LOCKED -000331|PLC|FAULT|[COD 331] - 404 Z-AXIS BALANCING INSUFFICIENT -000332|PLC|FAULT|[COD 332] - 464 TOOL LIFE EXHAUSTED -000333|PLC|FAULT|[COD 333] - 484 MACHINE STOPPED -000334|PLC|FAULT|[COD 334] - 177 SERVO-DRIVE BRAKING MODULE OUT OF ORDER X -000335|PLC|FAULT|[COD 335] - 177 SERVO-DRIVE BRAKING MODULE OUT OF ORDER Y -000336|PLC|FAULT|[COD 336] - 177 SERVO-DRIVE BRAKING MODULE OUT OF ORDER Z -000337|PLC|FAULT|[COD 337] - 305 VACUUM CLAMPING INEFFICIENT -000338|PLC|FAULT|[COD 338] - 177 SERVO-DRIVE BRAKING MODULE OUT OF ORDER V -000339|PLC|FAULT|[COD 339] - 593 SAFETY GUARDS -000340|PLC|FAULT|[COD 340] - 594 CHECK DOORS SECURITY -000341|PLC|FAULT|[COD 341] - 584 OPENING DOORS REQUEST -000342|PLC|FAULT|[COD 342] - 487 SPINDLE JOINT INSUFFICIENT WATER -000343|PLC|FAULT|[COD 343] - 488 INSUFFICIENT TOOL COOLING -000344|PLC|FAULT|[COD 344] - 594 FRONT DOORS NOT LOCKED -000345|PLC|FAULT|[COD 345] - 594 BACK DOORS NOT LOCKED -000346|PLC|FAULT|[COD 346] - 584 LATERAL DOOR NOT LOCKED -000347|PLC|FAULT|[COD 347] - 124 INCORRECT PLC CONFIGURATION FILE -000348|PLC|FAULT|[COD 348] - 124 INCORRECT I/O FILE -000349|PLC|FAULT|[COD 349] - AXES AMP PARAMETER OVERWRITE -000350|PLC|FAULT|[COD 350] - ERROR DURING BOOT -000351|PLC|FAULT|[COD 351] - 124 INCORRECT CONFIG.COLLISIONI FILE -000352|PLC|FAULT|[COD 352] - 124 INCORRECT CONFIG.COMPENSAZIONE FILE -000353|PLC|FAULT|[COD 353] - 124 INCORRECT CONFIG.MACCHINA FILE -000354|PLC|FAULT|[COD 354] - 489 COUPLING FAILURE -000355|PLC|FAULT|[COD 355] - 146 BUS ETHERCAT NOT OK -000356|PLC|FAULT|[COD 356] - 145 AXIS BOARDS NOT READY -000357|PLC|FAULT|[COD 357] - 583 MACHINE OFF -000358|PLC|FAULT|[COD 358] - 443 VACUUM PUMP COOLING SYSTEM MALFUNCTION -000359|PLC|FAULT|[COD 359] - 406 EMERGENCY PUSH-BUTTON -000360|PLC|FAULT|[COD 360] - 583 E-STOP CONTACT OPEN -000361|PLC|FAULT|[COD 361] - 667 SAFETY CIRCUIT FAILURE -000362|PLC|FAULT|[COD 362] - 666 SAFETY DEVICE FAILURE -000363|PLC|FAULT|[COD 363] - 127 OVERRIDE AT ZERO -000364|PLC|FAULT|[COD 364] - 305 VACUUM CLAMPING 2 INEFFICIENT -000365|PLC|FAULT|[COD 365] - 127 RAPID OVERRIDE AT ZERO -000366|PLC|FAULT|[COD 366] - 406 POWER OFF BUTTON PUSHED -000367|PLC|FAULT|[COD 367] - 577 TABLE IN MOTION -000368|PLC|FAULT|[COD 368] - 590 FRONT DOORS NOT CLOSED -000369|PLC|FAULT|[COD 369] - 590 BACK DOORS NOT CLOSED -000370|PLC|FAULT|[COD 370] - 230 THERMAL RELAY VACUUM PUMP 1 -000371|PLC|FAULT|[COD 371] - 230 THERMAL RELAY VACUUM PUMP 2 -000372|PLC|FAULT|[COD 372] - 229 THERMAL RELAY HYDRAULIC PUMP -000373|PLC|FAULT|[COD 373] - 641 TABLE CHANGE INTERRUPTED -000374|PLC|FAULT|[COD 374] - 534 TABLE LOCKING PIN NOT UP -000375|PLC|FAULT|[COD 375] - 534 TABLE LOCKING PIN NOT DOWN -000376|PLC|FAULT|[COD 376] - 403 OVERHEATING ELECTRICAL BOX -000377|PLC|FAULT|[COD 377] - 260 AUTOMATIC ADJUSTMENT OF FEED OVERRIDE IN PROGRESS -000378|PLC|FAULT|[COD 378] - 305 VACUUM CLAMPING 1 INEFFICIENT -000379|PLC|FAULT|[COD 379] - 611 TOOL CHANGE MOTOR NON IN POSITION -000380|PLC|FAULT|[COD 380] - 459 B AXIS LOCKED -000381|PLC|FAULT|[COD 381] - 458 B AXIS UNLOCKED -000382|PLC|FAULT|[COD 382] - 459 C AXIS LOCKED -000383|PLC|FAULT|[COD 383] - 458 C AXIS UNLOCKED -000384|PLC|FAULT|[COD 384] - 305 VACUUM CLAMPING INC. PLANE 1 INEFFICIENT -000385|PLC|FAULT|[COD 385] - 305 VACUUM CLAMPING INC. PLANE 2 INEFFICIENT -000386|PLC|FAULT|[COD 386] - 229 THERMAL RELAY RECYCLE WATER PUMP -000387|PLC|FAULT|[COD 387] - 228 THERMAL RELAY TOOL COOLANT PUMP -000388|PLC|FAULT|[COD 388] - 590 CABIN DOOR NOT CLOSED -000389|PLC|FAULT|[COD 389] - 179 TOOL CHANGE MOTOR NOT POWERED/ENABLED -000390|PLC|FAULT|[COD 390] - 300 RIGHT PRESSURE CLAMPING INEFFICIENT -000391|PLC|FAULT|[COD 391] - 300 LEFT PRESSURE CLAMPING INEFFICIENT -000392|PLC|FAULT|[COD 392] - 360 REFERENCE CYLINDERS 1 NOT IN POSITION -000393|PLC|FAULT|[COD 393] - 360 REFERENCE CYLINDERS 2 NOT IN POSITION -000394|PLC|FAULT|[COD 394] - 124 INCORRECT CONFIG.MOTORI CANBUS -000395|PLC|FAULT|[COD 395] - 135 TOOL CHANGE CONVERTER BLOCKED -000396|PLC|FAULT|[COD 396] - 135 TOOL CHANGE CONVERTER ON WARNIG -000397|PLC|FAULT|[COD 397] - 530 EXTERNAL MACHINE PANEL ENABLED -000398|PLC|FAULT|[COD 398] - 412 AXIS AUTOMATIC ZEROING UNDER WAY -000399|PLC|FAULT|[COD 399] - 442 TOOL CRIB 1 NOT IN POSITION -000400|PLC|FAULT|[COD 400] - 514 TOOL CRIB 1 PROTECTION NOT IN POSITION -000401|PLC|FAULT|[COD 401] - 495 AXIS ZEROING WITH TOOL IN ELECTROSPINDLE -000402|PLC|FAULT|[COD 402] - 606 PART-PROGRAM NOT FOUND (PC) -000403|PLC|FAULT|[COD 403] - 163 CONVERTER BRAKE OUT OF ORDER -000404|PLC|FAULT|[COD 404] - 603 PRESS START CYCLE -000405|PLC|FAULT|[COD 405] - 001 TOOLTABLES CHECKED? PRESS SOFTKEY «YES» -000406|PLC|FAULT|[COD 406] - 002 ARE YOU SURE? PRESS SOFTKEY «YES» -000407|PLC|FAULT|[COD 407] - 606 PART-PROGRAM NOT FOUND -000408|PLC|FAULT|[COD 408] - 135 CONVERTER BLOCKED -000409|PLC|FAULT|[COD 409] - 106 STOP FROM EXTERNAL PUSH-BUTTON PANEL -000410|PLC|FAULT|[COD 410] - 105 MACHINE IN HOLD STATUS -000411|PLC|FAULT|[COD 411] - 168 CONVERTER DISABLED -000412|PLC|FAULT|[COD 412] - 700 TABLES UNDER MODIFICATION -000413|PLC|FAULT|[COD 413] - 161 VECTRON COMMUNICATION ERROR -000414|PLC|FAULT|[COD 414] - 162 VECTRON FATAL ERROR: STOP THE MACHINE -000415|PLC|FAULT|[COD 415] - 176 FAULTY SPINDLE POWER SUPPLY -000416|PLC|FAULT|[COD 416] - 125 WEAR CONSTANT OUT OF RANGE -000417|PLC|FAULT|[COD 417] - 125 WRONG PARAMETER READING -000418|PLC|FAULT|[COD 418] - 125 PRESSURE RANGE NOT CORRECT -000419|PLC|FAULT|[COD 419] - 106 STOP FROM EXTERNAL PUSH-BUTTON CONTROL PANEL -000420|PLC|FAULT|[COD 420] - 125 COMPENSATION VERSOR ERROR -000421|PLC|FAULT|[COD 421] - 245 THERMAL CUT-OUT TOOL CRIB PROTECTION -000422|PLC|FAULT|[COD 422] - 741 TOOL CHANGE CODE PROCESS NOT SELECTED -000423|PLC|FAULT|[COD 423] - 390 T FUNCTION NOT PERMITTED -000424|PLC|FAULT|[COD 424] - 804 MOVE FEED/RAPID OVERRIDE -000425|PLC|FAULT|[COD 425] - 661 UNLOAD THE TOOL AND LOAD IT IN HIS POSITION ON THE TOOL CRIB -000426|PLC|FAULT|[COD 426] - 657 PLATFORM BALANCE HEAD NOT IN POSITION -000427|PLC|FAULT|[COD 427] - 741 HEADS 1 NOT SELECTED -000428|PLC|FAULT|[COD 428] - 488 RAFFREDDAMENTO DISCO INFERIORE -000429|PLC|FAULT|[COD 429] - 294 DISCO TAGLIO INFERIORE NON IN POSIZIONE -000430|PLC|FAULT|[COD 430] - 181 TOOL CHANGE PROGRAM NOT CALLED -000431|PLC|FAULT|[COD 431] - 546 Z AXIS NOT IN ZERO POSITION -000432|PLC|FAULT|[COD 432] - 545 B AXIS NOT IN POSITION -000433|PLC|FAULT|[COD 433] - 689 TOOLMANAGER WARNING -000434|PLC|FAULT|[COD 434] - 689 TOOLMANAGER WARNING -000435|PLC|FAULT|[COD 435] - 250 PRESETTING LASER ENABLED -000436|PLC|FAULT|[COD 436] - 817 HEADS SELECTION ERROR -000437|PLC|FAULT|[COD 437] - 517 INCORRECT VALUE FROM TABLE -000438|PLC|FAULT|[COD 438] - 390 M07 FUNCTION NOT PERMITTED -000439|PLC|FAULT|[COD 439] - 411 AXES WITHOUT ZERO POINTS (M97-HOME) -000440|PLC|FAULT|[COD 440] - 390 T FUNCTION NOT PERMITTED -000441|PLC|FAULT|[COD 441] - 399 GREASE TANK EMPTY -000442|PLC|FAULT|[COD 442] - 400 LUBRICATION INEFFICIENT -000443|PLC|FAULT|[COD 443] - 152 DRIVING GEARS NOT READY -000444|PLC|FAULT|[COD 444] - 530 SETTING MODE ENABLED -000445|PLC|FAULT|[COD 445] - 398 INSUFFICIENT AIR PRESSURE -000446|PLC|FAULT|[COD 446] - 528 “PROGRAM TEST” MODE ACTIVE -000447|PLC|FAULT|[COD 447] - 125 FLOATING WRONG PARAMETER -000448|PLC|FAULT|[COD 448] - 561 PROBE NOT IN POSITION -000449|PLC|FAULT|[COD 449] - 100 CONVERTER OFF -000450|PLC|FAULT|[COD 450] - 520 STALL MODE FUNCTION ACTIVE -000451|PLC|FAULT|[COD 451] - 120 RANGE ACTIVATION NOT OK -000452|PLC|FAULT|[COD 452] - 135 CONVERTER IN FAULT -000453|PLC|FAULT|[COD 453] - 135 CONVERTER IN WARNING -000454|PLC|FAULT|[COD 454] - 235 SPINDLE THERMAL PROTECTION -000455|PLC|FAULT|[COD 455] - 522 SPINDLE R.P.M. TOO HIGH -000456|PLC|FAULT|[COD 456] - 115 SPINDLE SPEED CONTROL -000457|PLC|FAULT|[COD 457] - 498 MAXIMAL CHARGE ON THE SPINDLE -000458|PLC|FAULT|[COD 458] - 441 SPINDLE COOLING SYSTEM MALFUNCTION -000459|PLC|FAULT|[COD 459] - 672 COOLANT CIRCUIT OUT OF ORDER -000460|PLC|FAULT|[COD 460] - 490 TOOLS POSITION CHECK -000461|PLC|FAULT|[COD 461] - 666 SPINDLE SAFETY DEVICE FAILURE -000462|PLC|FAULT|[COD 462] - --- TURNING OFF --- -000463|PLC|FAULT|[COD 463] - 450 TOOL NOT LOCKED -000464|PLC|FAULT|[COD 464] - 432 TOOL NOT UNCLAMPED -000465|PLC|FAULT|[COD 465] - 503 TOOL-CHANGE IN EXECUTION -000466|PLC|FAULT|[COD 466] - 504 TOOL-CHANGE INTERRUPTED -000467|PLC|FAULT|[COD 467] - 493 Z+ AXIS ONLY ENABLED TO MOVEMENT -000468|PLC|FAULT|[COD 468] - 493 Z- AXIS ONLY ENABLED TO MOVEMENT -000469|PLC|FAULT|[COD 469] - 493 Y+ AXIS ONLY ENABLED TO MOVEMENT -000470|PLC|FAULT|[COD 470] - 493 Y- AXIS ONLY ENABLED TO MOVEMENT -000471|PLC|FAULT|[COD 471] - 493 X+ AXIS ONLY ENABLED TO MOVEMENT -000472|PLC|FAULT|[COD 472] - 493 X- AXIS ONLY ENABLED TO MOVEMENT -000473|PLC|FAULT|[COD 473] - 493 C+ AXIS ONLY ENABLED TO MOVEMENT -000474|PLC|FAULT|[COD 474] - 493 C- AXIS ONLY ENABLED TO MOVEMENT -000475|PLC|FAULT|[COD 475] - 493 B+ AXIS ONLY ENABLED TO MOVEMENT -000476|PLC|FAULT|[COD 476] - 493 B- AXIS ONLY ENABLED TO MOVEMENT -000477|PLC|FAULT|[COD 477] - 484 MACHINE STOPPED BY LUBRICATION INEFFICIENT -000478|PLC|FAULT|[COD 478] - 654 VERIFY AXES COLLISION -000479|PLC|FAULT|[COD 479] - --- SAFETY COLLISION FUNCTION OFF --- -000480|PLC|FAULT|[COD 480] - 573 POSITIVE OVERSTROKE FLOATING AXIS -000481|PLC|FAULT|[COD 481] - 573 NEGATIVE OVERSTROKE FLOATING AXIS -000482|PLC|FAULT|[COD 482] - 538 TABLE MOVEMENT NOT ALLOWED -000483|PLC|FAULT|[COD 483] - 538 TABLE RELEASE NOT ALLOWED -000484|PLC|FAULT|[COD 484] - 235 SONDA TERMICA MANDRINO 2 -000485|PLC|FAULT|[COD 485] - 522 GIRI TROPPO ELEVATI MANDRINO 2 -000486|PLC|FAULT|[COD 486] - 115 CONTROLLO VELOCITŔ MANDRINO 2 -000487|PLC|FAULT|[COD 487] - 498 CARICO MASSIMO SUL MANDRINO 2 -000488|PLC|FAULT|[COD 488] - 176 MANDRINO 2 NON INIZIALIZZATO -000489|PLC|FAULT|[COD 489] - 741 UNITŔ OPERATRICE 2: MANDRINO NON SELEZIONATO O IN CAMBIO UTENSIL -000490|PLC|FAULT|[COD 490] - 538 AXES MOVEMENT NOT ENABLED-PROBE IN POSITION -000491|PLC|FAULT|[COD 491] - 595 SAFETY LOAD BARRIERS -000492|PLC|FAULT|[COD 492] - 595 SAFETY UNLOAD BARRIERS -000493|PLC|FAULT|[COD 493] - 550 CHECK POPUP MODULE -000494|PLC|FAULT|[COD 494] - 550 ASCENT POPUP MODULE NOT ALLOWE -000495|PLC|FAULT|[COD 495] - 550 POPUP MODULE UP -000496|PLC|FAULT|[COD 496] - 552 CHECK INPUT BULKHEAD -000497|PLC|FAULT|[COD 497] - 552 CHECK OUTPUT BULKHEAD -000498|PLC|FAULT|[COD 498] - 551 WAITING INPUT BULKHEAD OPEN -000499|PLC|FAULT|[COD 499] - 551 WAITING INPUT BULKHEAD CLOSE -000500|PLC|FAULT|[COD 500] - 551 WAITING OUTPUT BULKHEAD OPEN -000501|PLC|FAULT|[COD 501] - 551 WAITING OUTPUT BULKHEAD CLOSE -000502|PLC|FAULT|[COD 502] - 550 WAITING POPUP IN POSITION \ 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 55e0c09..59c12a6 100644 --- a/MTC_Adapter/MTC_Adapter/DATA/CONF/CounterList.map +++ b/MTC_Adapter/MTC_Adapter/DATA/CONF/CounterList.map @@ -21,8 +21,8 @@ 020|VacAct_02_Count |COUNT 021|Lubro_01_Num |COUNT 022|SlittaTastatore_Count |COUNT -023|ProtMagazzino_01_Count |COUNT -024|ProtMagazzino_02_Count |COUNT +023|SlittaMagazzino_01_Count |COUNT +024|ProtMagazzino_01_Count |COUNT 025|UnOp_01_NumCambiUT |COUNT 026|Axis_01_AccTime |COUNT 027|Axis_02_AccTime |COUNT From c22caba1cd42756eec8e8c2800e19c7453a954c2 Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Tue, 4 Jul 2017 14:33:47 +0200 Subject: [PATCH 18/21] Aggiunta lettura file variabili analogiche... --- MTC_Adapter/MTC_Adapter/AdapterFanuc.cs | 1 + .../DATA/CONF/Adapter_ItemList.xml | 134 +----------------- .../MTC_Adapter/DATA/CONF/AlarmList.map | 4 +- .../MTC_Adapter/DATA/CONF/AnalogData.map | 3 +- 4 files changed, 7 insertions(+), 135 deletions(-) diff --git a/MTC_Adapter/MTC_Adapter/AdapterFanuc.cs b/MTC_Adapter/MTC_Adapter/AdapterFanuc.cs index 79fbfcb..a959f2b 100644 --- a/MTC_Adapter/MTC_Adapter/AdapterFanuc.cs +++ b/MTC_Adapter/MTC_Adapter/AdapterFanuc.cs @@ -879,6 +879,7 @@ namespace MTC_Adapter base.loadOtherFile(); loadMaintData("R", 14000, 4); loadStatusData("R", 14512, 1); + loadAnalogData("R", 15000, 4); } /// /// Processing allarmi CNC diff --git a/MTC_Adapter/MTC_Adapter/DATA/CONF/Adapter_ItemList.xml b/MTC_Adapter/MTC_Adapter/DATA/CONF/Adapter_ItemList.xml index ee9d1b6..9bf8da6 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 - ADAPTER_SIEMENS - SIEMENS + ADAPTER_FANUC + FANUC 0 0 0 @@ -169,135 +169,5 @@ - - Axis_07 - - - Axis_07_Type - LINEAR - - - Axis_07_Grp - 00 - - - - - Axis_08 - - - Axis_08_Type - LINEAR - - - Axis_08_Grp - 00 - - - - - Axis_09 - - - Axis_09_Type - LINEAR - - - Axis_09_Grp - 00 - - - - - Axis_10 - - - Axis_10_Type - LINEAR - - - Axis_10_Grp - 00 - - - - - Axis_11 - - - Axis_11_Type - LINEAR - - - Axis_11_Grp - 00 - - - - - Axis_12 - - - Axis_12_Type - LINEAR - - - Axis_12_Grp - 00 - - - - - 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 6698345..c799ba6 100644 --- a/MTC_Adapter/MTC_Adapter/DATA/CONF/AlarmList.map +++ b/MTC_Adapter/MTC_Adapter/DATA/CONF/AlarmList.map @@ -377,7 +377,7 @@ 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 +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 @@ -431,7 +431,7 @@ 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] - +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] - ... diff --git a/MTC_Adapter/MTC_Adapter/DATA/CONF/AnalogData.map b/MTC_Adapter/MTC_Adapter/DATA/CONF/AnalogData.map index 9177953..d2d1122 100644 --- a/MTC_Adapter/MTC_Adapter/DATA/CONF/AnalogData.map +++ b/MTC_Adapter/MTC_Adapter/DATA/CONF/AnalogData.map @@ -1 +1,2 @@ -# 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 +# 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|Temp_01 |NUM \ No newline at end of file From 060fe30a955bfdd44eb6749abec8a327f7b00f1c Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Tue, 4 Jul 2017 15:09:50 +0200 Subject: [PATCH 19/21] =?UTF-8?q?test=203=20variabili=20analogiche=20x=20S?= =?UTF-8?q?IEMENS=20(OK,=20dividere=20x=201000),=20togliere=202=C2=B0=20pa?= =?UTF-8?q?th=20SE=20non=20ci=20fosse...?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DATA/CONF/Adapter_ItemList.xml | 134 +++++++++++++++++- .../MTC_Adapter/DATA/CONF/AlarmList.map | 4 +- .../MTC_Adapter/DATA/CONF/AnalogData.map | 4 +- 3 files changed, 137 insertions(+), 5 deletions(-) diff --git a/MTC_Adapter/MTC_Adapter/DATA/CONF/Adapter_ItemList.xml b/MTC_Adapter/MTC_Adapter/DATA/CONF/Adapter_ItemList.xml index 9bf8da6..ee9d1b6 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 - ADAPTER_FANUC - FANUC + ADAPTER_SIEMENS + SIEMENS 0 0 0 @@ -169,5 +169,135 @@ + + Axis_07 + + + Axis_07_Type + LINEAR + + + Axis_07_Grp + 00 + + + + + Axis_08 + + + Axis_08_Type + LINEAR + + + Axis_08_Grp + 00 + + + + + Axis_09 + + + Axis_09_Type + LINEAR + + + Axis_09_Grp + 00 + + + + + Axis_10 + + + Axis_10_Type + LINEAR + + + Axis_10_Grp + 00 + + + + + Axis_11 + + + Axis_11_Type + LINEAR + + + Axis_11_Grp + 00 + + + + + Axis_12 + + + Axis_12_Type + LINEAR + + + Axis_12_Grp + 00 + + + + + 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 c799ba6..6698345 100644 --- a/MTC_Adapter/MTC_Adapter/DATA/CONF/AlarmList.map +++ b/MTC_Adapter/MTC_Adapter/DATA/CONF/AlarmList.map @@ -377,7 +377,7 @@ 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 +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 @@ -431,7 +431,7 @@ 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] - ... +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] - ... diff --git a/MTC_Adapter/MTC_Adapter/DATA/CONF/AnalogData.map b/MTC_Adapter/MTC_Adapter/DATA/CONF/AnalogData.map index d2d1122..cef4b8f 100644 --- a/MTC_Adapter/MTC_Adapter/DATA/CONF/AnalogData.map +++ b/MTC_Adapter/MTC_Adapter/DATA/CONF/AnalogData.map @@ -1,2 +1,4 @@ # 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|Temp_01 |NUM \ No newline at end of file +001|Analog_01 |NUM +001|Analog_02 |NUM +001|Analog_03 |NUM \ No newline at end of file From 15a4eb9475c6b8230f53062e32867501e5f8f4cd Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Tue, 4 Jul 2017 16:40:28 +0200 Subject: [PATCH 20/21] Ok gestione contatori "liberi" ma con configurazione XML (da levare...) --- MTC_Adapter/MTC_Adapter/AdapterConf.cs | 891 ++++++------- MTC_Adapter/MTC_Adapter/AdapterGeneric.cs | 101 +- .../DATA/CONF/Adapter_ItemList.xml | 26 +- .../MTC_Adapter/DATA/CONF/CounterList.map | 5 +- .../Resources/CMS/CounterListFANUC.map | 5 +- .../Resources/CMS/CounterListOSAI.map | 5 +- .../Resources/CMS/CounterListSIEMENS.map | 5 +- .../MTC_Adapter/Resources/CMS/FANUC.xml | 26 +- .../MTC_Adapter/Resources/CMS/OSAI.xml | 22 +- .../MTC_Adapter/Resources/CMS/SIEMENS.xml | 26 +- .../MTC_Adapter/SetupAdapter.Designer.cs | 766 ++++++------ MTC_Adapter/MTC_Adapter/SetupAdapter.cs | 1107 +++++++++-------- 12 files changed, 1634 insertions(+), 1351 deletions(-) diff --git a/MTC_Adapter/MTC_Adapter/AdapterConf.cs b/MTC_Adapter/MTC_Adapter/AdapterConf.cs index 85e35ab..f995a8e 100644 --- a/MTC_Adapter/MTC_Adapter/AdapterConf.cs +++ b/MTC_Adapter/MTC_Adapter/AdapterConf.cs @@ -6,453 +6,476 @@ using System.Xml.Serialization; namespace MTC_Adapter { - #region -- AdapterConf Class -- + #region -- AdapterConf Class -- + + /// + /// This Configuration class is basically just a set of + /// properties with a couple of static methods to manage + /// the serialization to and deserialization from a + /// simple XML file. + /// + /// ref: http://www.cambiaresearch.com/articles/33/how-can-i-easily-manage-an-xml-configuration-file-in-dotnet + /// + [Serializable] + public class AdapterConf + { + string sNomeAdapt; + int nVers; + double tContOreMaccOn; + double tContOreMaccLav; + double tContSlittaTast; + int[] _ContGiriElettrom; + float[] _ContKmMovAssi; + tipoAdapter etipoAdapt; + + element[] _VacuumPump; + element[] _VacuumAct; + element[] _Lubro; + element[] _Counters; + element[] _SlittaMag; + element[] _ProtMag; + element[] _Cooler; + element[] _Press; + element[] _Temp; + element[] _Path; + element[] _UnOp; + element[] _Axis; + element[] _MemArea; /// - /// This Configuration class is basically just a set of - /// properties with a couple of static methods to manage - /// the serialization to and deserialization from a - /// simple XML file. - /// - /// ref: http://www.cambiaresearch.com/articles/33/how-can-i-easily-manage-an-xml-configuration-file-in-dotnet + /// init conf adapter /// - [Serializable] - public class AdapterConf + public AdapterConf() { - string sNomeAdapt; - int nVers; - double tContOreMaccOn; - double tContOreMaccLav; - double tContSlittaTast; - int[] _ContGiriElettrom; - float[] _ContKmMovAssi; - tipoAdapter etipoAdapt; - - element[] _VacuumPump; - element[] _VacuumAct; - element[] _Lubro; - element[] _SlittaMag; - element[] _ProtMag; - element[] _Cooler; - element[] _Press; - element[] _Temp; - element[] _Path; - element[] _UnOp; - element[] _Axis; - element[] _MemArea; - - /// - /// init conf adapter - /// - public AdapterConf() - { - sNomeAdapt = ""; - etipoAdapt = tipoAdapter.DEMO; - } - public int nVacuumPump - { - get - { - int answ = 0; - if (VacuumPump != null) - { - try - { - answ = Convert.ToInt32(VacuumPump.Length); - } - catch - { } - } - return answ; - } - } - public int nVacuumAct - { - get - { - int answ = 0; - if (VacuumAct != null) - { - try - { - answ = Convert.ToInt32(VacuumAct.Length); - } - catch - { } - } - return answ; - } - } - public int nLubro - { - get - { - int answ = 0; - if (Lubro != null) - { - try - { - answ = Convert.ToInt32(Lubro.Length); - } - catch - { } - } - return answ; - } - } - public int nSlittaMag - { - get - { - int answ = 0; - if (SlittaMag != null) - { - try - { - answ = Convert.ToInt32(SlittaMag.Length); - } - catch - { } - } - return answ; - } - } - public int nProtMag - { - get - { - int answ = 0; - if (ProtMag != null) - { - try - { - answ = Convert.ToInt32(ProtMag.Length); - } - catch - { } - } - return answ; - } - } - public int nCooler - { - get - { - int answ = 0; - if (Cooler != null) - { - try - { - answ = Convert.ToInt32(Cooler.Length); - } - catch - { } - } - return answ; - } - } - public int nPress - { - get - { - int answ = 0; - if (Press != null) - { - try - { - answ = Convert.ToInt32(Press.Length); - } - catch - { } - } - return answ; - } - } - public int nTemp - { - get - { - int answ = 0; - if (Temp != null) - { - try - { - answ = Convert.ToInt32(Temp.Length); - } - catch - { } - } - return answ; - } - } - public int nPath - { - get - { - int answ = 0; - if (Path != null) - { - try - { - answ = Convert.ToInt32(Path.Length); - } - catch - { } - } - return answ; - } - } - public int nUnOp - { - get - { - int answ = 0; - if (UnOp != null) - { - try - { - answ = Convert.ToInt32(UnOp.Length); - } - catch - { } - } - return answ; - } - } - public int nAxis - { - get - { - int answ = 0; - if (Axis != null) - { - try - { - answ = Convert.ToInt32(Axis.Length); - } - catch - { } - } - return answ; - } - } - public int nMemArea - { - get - { - int answ = 0; - if (MemArea != null) - { - try - { - answ = Convert.ToInt32(MemArea.Length); - } - catch - { } - } - return answ; - } - } - - /// - /// Serializzazione XML dell'oggetto conf dell'adapter - /// - /// - /// - public static void Serialize(string file, AdapterConf c) - { - // prima provo a creare il file vuoto... - if (!File.Exists(file)) - { - string dirPath = file.Substring(0, file.LastIndexOf('\\')); - // verifico directory - if (!Directory.Exists(dirPath)) - { - Directory.CreateDirectory(dirPath); - } - } - // salvo effettivamente file... - System.Xml.Serialization.XmlSerializer xs = new System.Xml.Serialization.XmlSerializer(c.GetType()); - StreamWriter writer = File.CreateText(file); - xs.Serialize(writer, c); - writer.Flush(); - writer.Close(); - } - /// - /// deserializzazione oggetto conf adapter - /// - /// - /// - public static AdapterConf Deserialize(string file) - { - XmlSerializer xs = new XmlSerializer(typeof(AdapterConf)); - StreamReader reader = File.OpenText(file); - AdapterConf c = (AdapterConf)xs.Deserialize(reader); - reader.Close(); - return c; - } - /// - /// restitusice forma XML grezza del file - /// - /// - /// - public static string rawXml(string file) - { - string answ = ""; - System.Xml.Serialization.XmlSerializer xs = new System.Xml.Serialization.XmlSerializer(typeof(AdapterConf)); - StreamReader reader = File.OpenText(file); - answ = reader.ReadToEnd(); - reader.Close(); - return answ; - } - - public int Version - { - get { return nVers; } - set { nVers = value; } - } - public string NomeAdapt - { - get { return sNomeAdapt; } - set { sNomeAdapt = value; } - } - public tipoAdapter TipoAdapt - { - get { return etipoAdapt; } - set { etipoAdapt = value; } - } - public double ContOreMaccOn - { - get { return tContOreMaccOn; } - set { tContOreMaccOn = value; } - } - public double ContOreMaccLav - { - get { return tContOreMaccLav; } - set { tContOreMaccLav = value; } - } - public double ContSlittaTast - { - get { return tContSlittaTast; } - set { tContSlittaTast = value; } - } - public int[] ContGiriElettrom - { - get { return _ContGiriElettrom; } - set { _ContGiriElettrom = value; } - } - public float[] ContKmMovAssi - { - get { return _ContKmMovAssi; } - set { _ContKmMovAssi = value; } - } - public element[] VacuumPump - { - get { return _VacuumPump; } - set { _VacuumPump = value; } - } - public element[] VacuumAct - { - get { return _VacuumAct; } - set { _VacuumAct = value; } - } - public element[] Lubro - { - get { return _Lubro; } - set { _Lubro = value; } - } - public element[] SlittaMag - { - get { return _SlittaMag; } - set { _SlittaMag = value; } - } - public element[] ProtMag - { - get { return _ProtMag; } - set { _ProtMag = value; } - } - public element[] Cooler - { - get { return _Cooler; } - set { _Cooler = value; } - } - public element[] Press - { - get { return _Press; } - set { _Press = value; } - } - public element[] Temp - { - get { return _Temp; } - set { _Temp = value; } - } - public element[] Path - { - get { return _Path; } - set { _Path = value; } - } - public element[] UnOp - { - get { return _UnOp; } - set { _UnOp = value; } - } - public element[] Axis - { - get { return _Axis; } - set { _Axis = value; } - } - public element[] MemArea - { - get { return _MemArea; } - set { _MemArea = value; } - } - + sNomeAdapt = ""; + etipoAdapt = tipoAdapter.DEMO; } - - - [Serializable] - [XmlType(TypeName = "dataRef")] - public struct DataRefItem + public int nVacuumPump { - public K Key { get; set; } - public V Value { get; set; } - - public DataRefItem(K k, V v) : this() { Key = k; Value = v; } + get + { + int answ = 0; + if (VacuumPump != null) + { + try + { + answ = Convert.ToInt32(VacuumPump.Length); + } + catch + { } + } + return answ; + } + } + public int nVacuumAct + { + get + { + int answ = 0; + if (VacuumAct != null) + { + try + { + answ = Convert.ToInt32(VacuumAct.Length); + } + catch + { } + } + return answ; + } + } + public int nLubro + { + get + { + int answ = 0; + if (Lubro != null) + { + try + { + answ = Convert.ToInt32(Lubro.Length); + } + catch + { } + } + return answ; + } + } + public int nSlittaMag + { + get + { + int answ = 0; + if (SlittaMag != null) + { + try + { + answ = Convert.ToInt32(SlittaMag.Length); + } + catch + { } + } + return answ; + } + } + public int nCounters + { + get + { + int answ = 0; + if (Counters != null) + { + try + { + answ = Convert.ToInt32(Counters.Length); + } + catch + { } + } + return answ; + } + } + public int nProtMag + { + get + { + int answ = 0; + if (ProtMag != null) + { + try + { + answ = Convert.ToInt32(ProtMag.Length); + } + catch + { } + } + return answ; + } + } + public int nCooler + { + get + { + int answ = 0; + if (Cooler != null) + { + try + { + answ = Convert.ToInt32(Cooler.Length); + } + catch + { } + } + return answ; + } + } + public int nPress + { + get + { + int answ = 0; + if (Press != null) + { + try + { + answ = Convert.ToInt32(Press.Length); + } + catch + { } + } + return answ; + } + } + public int nTemp + { + get + { + int answ = 0; + if (Temp != null) + { + try + { + answ = Convert.ToInt32(Temp.Length); + } + catch + { } + } + return answ; + } + } + public int nPath + { + get + { + int answ = 0; + if (Path != null) + { + try + { + answ = Convert.ToInt32(Path.Length); + } + catch + { } + } + return answ; + } + } + public int nUnOp + { + get + { + int answ = 0; + if (UnOp != null) + { + try + { + answ = Convert.ToInt32(UnOp.Length); + } + catch + { } + } + return answ; + } + } + public int nAxis + { + get + { + int answ = 0; + if (Axis != null) + { + try + { + answ = Convert.ToInt32(Axis.Length); + } + catch + { } + } + return answ; + } + } + public int nMemArea + { + get + { + int answ = 0; + if (MemArea != null) + { + try + { + answ = Convert.ToInt32(MemArea.Length); + } + catch + { } + } + return answ; + } } /// - /// classe elemento base in cui salvare i dati di conf x recupero dati adapters + /// Serializzazione XML dell'oggetto conf dell'adapter /// - public class element + /// + /// + public static void Serialize(string file, AdapterConf c) { - /// - /// identificativo univoco x classe di elemento - /// - public string ident; - /// - /// Elenco riferimento dati x recupero (es posizioni memoria separate da #) - /// - public List> dataRefList; - - /// - /// init empty - /// - public element() + // prima provo a creare il file vuoto... + if (!File.Exists(file)) + { + string dirPath = file.Substring(0, file.LastIndexOf('\\')); + // verifico directory + if (!Directory.Exists(dirPath)) { - ident = ""; - dataRefList = new List>(); - } - /// - /// init element con dati - /// - /// Identificativo univoco - /// Parametri x recupero dati in forma dictionary - public element(string Idx, List> DataRef) - { - ident = Idx; - dataRefList = DataRef; + Directory.CreateDirectory(dirPath); } + } + // salvo effettivamente file... + System.Xml.Serialization.XmlSerializer xs = new System.Xml.Serialization.XmlSerializer(c.GetType()); + StreamWriter writer = File.CreateText(file); + xs.Serialize(writer, c); + writer.Flush(); + writer.Close(); + } + /// + /// deserializzazione oggetto conf adapter + /// + /// + /// + public static AdapterConf Deserialize(string file) + { + XmlSerializer xs = new XmlSerializer(typeof(AdapterConf)); + StreamReader reader = File.OpenText(file); + AdapterConf c = (AdapterConf)xs.Deserialize(reader); + reader.Close(); + return c; + } + /// + /// restitusice forma XML grezza del file + /// + /// + /// + public static string rawXml(string file) + { + string answ = ""; + System.Xml.Serialization.XmlSerializer xs = new System.Xml.Serialization.XmlSerializer(typeof(AdapterConf)); + StreamReader reader = File.OpenText(file); + answ = reader.ReadToEnd(); + reader.Close(); + return answ; } - #endregion + public int Version + { + get { return nVers; } + set { nVers = value; } + } + public string NomeAdapt + { + get { return sNomeAdapt; } + set { sNomeAdapt = value; } + } + public tipoAdapter TipoAdapt + { + get { return etipoAdapt; } + set { etipoAdapt = value; } + } + public double ContOreMaccOn + { + get { return tContOreMaccOn; } + set { tContOreMaccOn = value; } + } + public double ContOreMaccLav + { + get { return tContOreMaccLav; } + set { tContOreMaccLav = value; } + } + public double ContSlittaTast + { + get { return tContSlittaTast; } + set { tContSlittaTast = value; } + } + public int[] ContGiriElettrom + { + get { return _ContGiriElettrom; } + set { _ContGiriElettrom = value; } + } + public float[] ContKmMovAssi + { + get { return _ContKmMovAssi; } + set { _ContKmMovAssi = value; } + } + public element[] VacuumPump + { + get { return _VacuumPump; } + set { _VacuumPump = value; } + } + public element[] VacuumAct + { + get { return _VacuumAct; } + set { _VacuumAct = value; } + } + public element[] Lubro + { + get { return _Lubro; } + set { _Lubro = value; } + } + public element[] Counters + { + get { return _Counters; } + set { _Counters = value; } + } + public element[] SlittaMag + { + get { return _SlittaMag; } + set { _SlittaMag = value; } + } + public element[] ProtMag + { + get { return _ProtMag; } + set { _ProtMag = value; } + } + public element[] Cooler + { + get { return _Cooler; } + set { _Cooler = value; } + } + public element[] Press + { + get { return _Press; } + set { _Press = value; } + } + public element[] Temp + { + get { return _Temp; } + set { _Temp = value; } + } + public element[] Path + { + get { return _Path; } + set { _Path = value; } + } + public element[] UnOp + { + get { return _UnOp; } + set { _UnOp = value; } + } + public element[] Axis + { + get { return _Axis; } + set { _Axis = value; } + } + public element[] MemArea + { + get { return _MemArea; } + set { _MemArea = value; } + } + + } + + + [Serializable] + [XmlType(TypeName = "dataRef")] + public struct DataRefItem + { + public K Key { get; set; } + public V Value { get; set; } + + public DataRefItem(K k, V v) : this() { Key = k; Value = v; } + } + + /// + /// classe elemento base in cui salvare i dati di conf x recupero dati adapters + /// + public class element + { + /// + /// identificativo univoco x classe di elemento + /// + public string ident; + /// + /// Elenco riferimento dati x recupero (es posizioni memoria separate da #) + /// + public List> dataRefList; + + /// + /// init empty + /// + public element() + { + ident = ""; + dataRefList = new List>(); + } + /// + /// init element con dati + /// + /// Identificativo univoco + /// Parametri x recupero dati in forma dictionary + public element(string Idx, List> DataRef) + { + ident = Idx; + dataRefList = DataRef; + } + } + + #endregion } diff --git a/MTC_Adapter/MTC_Adapter/AdapterGeneric.cs b/MTC_Adapter/MTC_Adapter/AdapterGeneric.cs index e5f5415..52d3a37 100644 --- a/MTC_Adapter/MTC_Adapter/AdapterGeneric.cs +++ b/MTC_Adapter/MTC_Adapter/AdapterGeneric.cs @@ -89,6 +89,27 @@ namespace MTC_Adapter } } /// + /// Singolo oggetto CON contatore + /// + public class ObjCount : element + { + /// + /// valore numero attivazioni/disattivazioni slitta magazzino + /// + public Event mCounter; + /// + /// Classe Slitta Magazzino + /// + /// element base contenente parametri (da XML) + public ObjCount(element baseElem) + { + ident = baseElem.ident; + dataRefList = baseElem.dataRefList; + + mCounter = new Event(string.Format("{0}", ident)); + } + } + /// /// Singola Slitta Mag, 0..n /// public class SlittaMag : element @@ -713,6 +734,10 @@ namespace MTC_Adapter /// public uint[] currNumCambiUt; /// + /// Vettore ATTUALE dei contatori GENERICI + /// + public uint[] currCounters; + /// /// Vettore ATTUALE dei contatori del numero movimenti Slitta Magazzino /// public uint[] currSlittaMag; @@ -782,6 +807,10 @@ namespace MTC_Adapter /// public uint[] istNumCambiUt; /// + /// Vettore ISTANTANEO dei contatori generici + /// + public uint[] istCounters; + /// /// Vettore ISTANTANEO dei contatori del numero movimenti Slitta Magazzino /// public uint[] istSlittaMag; @@ -1090,6 +1119,7 @@ namespace MTC_Adapter public VacuumPump[] vettVacPump; public VacuumAct[] vettVacAct; public Lubro[] vettLubro; + public ObjCount[] vettCounters; public SlittaMag[] vettSlittaMag; public ProtMag[] vettProtMag; public Cooler[] vettCooler; @@ -1161,6 +1191,14 @@ namespace MTC_Adapter mAdapter.AddDataItem(mUnkStatus); mAdapter.AddDataItem(mUnkStrobe); + // contatori generici + vettCounters = new ObjCount[adpConf.nCounters]; + for (int i = 0; i < adpConf.nCounters; i++) + { + vettCounters[i] = new ObjCount(adpConf.Counters[i]); + mAdapter.AddDataItem(vettCounters[i].mCounter); + } + // Aree memoria vettMemArea = new MemArea[adpConf.nMemArea]; for (int i = 0; i < adpConf.nMemArea; i++) @@ -1837,6 +1875,17 @@ namespace MTC_Adapter // recupero valori... currLubroCount[i] = Convert.ToUInt32(riLubro.Value); } + currCounters = new uint[currAdpConf.nCounters]; + istCounters= new uint[currAdpConf.nCounters]; + for (int i = 0; i < currAdpConf.nCounters; i++) + { + // leggo tutti i dati... + List> listaDR = currAdpConf.Counters[i].dataRefList; + // punto all'item + DataRefItem riCounters = listaDR.Find(x => x.Key == string.Format("Counter_{0:000}", i + 1)); + // recupero valori... + currCounters[i] = Convert.ToUInt32(riCounters.Value); + } currSlittaMag = new uint[currAdpConf.nSlittaMag]; istSlittaMag = new uint[currAdpConf.nSlittaMag]; for (int i = 0; i < currAdpConf.nSlittaMag; i++) @@ -3292,6 +3341,20 @@ namespace MTC_Adapter { istSlittaTast = tabDatiMtz[i]; } + else if (maintData[i].varName.StartsWith("Counter_")) + { + try + { + numero = Convert.ToInt32(maintData[i].varName.Replace("Counter_", "")); + } + catch + { + } + if (numero > 0) + { + istCounters[numero - 1] = tabDatiMtz[i]; + } + } else if (maintData[i].varName.StartsWith("Path_")) { if (maintData[i].varName.EndsWith("_PZ_TOT")) @@ -3301,8 +3364,7 @@ namespace MTC_Adapter numero = Convert.ToInt32(maintData[i].varName.Replace("Path_", "").Replace("_PZ_TOT", "")); } catch - { - } + { } if (numero > 0) { vettPath[numero - 1].mPathPartCount.Value = tabDatiMtz[i]; @@ -3543,6 +3605,7 @@ namespace MTC_Adapter needSave = procPzProd(needSave); needSave = procGiriTotUnOp(needSave); needSave = procNumCU(needSave); + needSave = procCounters(needSave); needSave = procMovTotAssi(needSave); needSave = procAccTimeAssi(needSave); needSave = procNumInvAssi(needSave); @@ -4479,6 +4542,40 @@ namespace MTC_Adapter return needSave; } /// + /// Processing delle variabili generiche Counters + /// + /// + /// + public bool procCounters(bool needSave) + { + uint delta = 0; + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < currAdpConf.nCounters; i++) + { + delta = istCounters[i] - currCounters[i]; + // controllo delta < 50% max... + if (delta < uint.MaxValue / 2) + { + //processo comunque sempre... + uint contTot = updateValUIntByIncr(i, delta, "Counters_{0:000}"); + // passo valore totale all'adapter + vettCounters[i].mCounter.Value = contTot; + // controllo valore riferimento... + if (delta > 0) + { + // segnalo necessitĂ  salvataggio! + needSave = true; + } + // ...aggiorno valore riferimento... + currCounters[i] = istCounters[i]; + } + sb.AppendLine(vettCounters[i].mCounter.ToString().Replace("|", " | ")); + } + // salvo su maschera... + parentForm.dataMonitor_2 += sb.ToString(); + return needSave; + } + /// /// Processing delle variabili sui componenti SlittaMag /// /// diff --git a/MTC_Adapter/MTC_Adapter/DATA/CONF/Adapter_ItemList.xml b/MTC_Adapter/MTC_Adapter/DATA/CONF/Adapter_ItemList.xml index ee9d1b6..b2257b3 100644 --- a/MTC_Adapter/MTC_Adapter/DATA/CONF/Adapter_ItemList.xml +++ b/MTC_Adapter/MTC_Adapter/DATA/CONF/Adapter_ItemList.xml @@ -36,18 +36,32 @@ + + + Counter_001 + + + + Counter_002 + + + + Counter_003 + + + + + + SlittaMagazzino_01 + + + ProtMagazzino_01 - - - SlittaMagazzino_ - - - Cooler_01 diff --git a/MTC_Adapter/MTC_Adapter/DATA/CONF/CounterList.map b/MTC_Adapter/MTC_Adapter/DATA/CONF/CounterList.map index 59c12a6..064fc1a 100644 --- a/MTC_Adapter/MTC_Adapter/DATA/CONF/CounterList.map +++ b/MTC_Adapter/MTC_Adapter/DATA/CONF/CounterList.map @@ -29,4 +29,7 @@ 028|Axis_03_AccTime |COUNT 029|Axis_04_AccTime |COUNT 030|Axis_05_AccTime |COUNT -031|Axis_06_AccTime |COUNT \ No newline at end of file +031|Axis_06_AccTime |COUNT +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/Resources/CMS/CounterListFANUC.map b/MTC_Adapter/MTC_Adapter/Resources/CMS/CounterListFANUC.map index 59c12a6..064fc1a 100644 --- a/MTC_Adapter/MTC_Adapter/Resources/CMS/CounterListFANUC.map +++ b/MTC_Adapter/MTC_Adapter/Resources/CMS/CounterListFANUC.map @@ -29,4 +29,7 @@ 028|Axis_03_AccTime |COUNT 029|Axis_04_AccTime |COUNT 030|Axis_05_AccTime |COUNT -031|Axis_06_AccTime |COUNT \ No newline at end of file +031|Axis_06_AccTime |COUNT +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/Resources/CMS/CounterListOSAI.map b/MTC_Adapter/MTC_Adapter/Resources/CMS/CounterListOSAI.map index 55e0c09..fd5ce44 100644 --- a/MTC_Adapter/MTC_Adapter/Resources/CMS/CounterListOSAI.map +++ b/MTC_Adapter/MTC_Adapter/Resources/CMS/CounterListOSAI.map @@ -29,4 +29,7 @@ 028|Axis_03_AccTime |COUNT 029|Axis_04_AccTime |COUNT 030|Axis_05_AccTime |COUNT -031|Axis_06_AccTime |COUNT \ No newline at end of file +031|Axis_06_AccTime |COUNT +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/Resources/CMS/CounterListSIEMENS.map b/MTC_Adapter/MTC_Adapter/Resources/CMS/CounterListSIEMENS.map index 59c12a6..064fc1a 100644 --- a/MTC_Adapter/MTC_Adapter/Resources/CMS/CounterListSIEMENS.map +++ b/MTC_Adapter/MTC_Adapter/Resources/CMS/CounterListSIEMENS.map @@ -29,4 +29,7 @@ 028|Axis_03_AccTime |COUNT 029|Axis_04_AccTime |COUNT 030|Axis_05_AccTime |COUNT -031|Axis_06_AccTime |COUNT \ No newline at end of file +031|Axis_06_AccTime |COUNT +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/Resources/CMS/FANUC.xml b/MTC_Adapter/MTC_Adapter/Resources/CMS/FANUC.xml index 9bf8da6..7b65996 100644 --- a/MTC_Adapter/MTC_Adapter/Resources/CMS/FANUC.xml +++ b/MTC_Adapter/MTC_Adapter/Resources/CMS/FANUC.xml @@ -36,18 +36,32 @@ + + + Counter_001 + + + + Counter_002 + + + + Counter_003 + + + + + + SlittaMagazzino_01 + + + ProtMagazzino_01 - - - SlittaMagazzino_ - - - Cooler_01 diff --git a/MTC_Adapter/MTC_Adapter/Resources/CMS/OSAI.xml b/MTC_Adapter/MTC_Adapter/Resources/CMS/OSAI.xml index a3cdf8c..6bdb167 100644 --- a/MTC_Adapter/MTC_Adapter/Resources/CMS/OSAI.xml +++ b/MTC_Adapter/MTC_Adapter/Resources/CMS/OSAI.xml @@ -36,13 +36,29 @@ - + - ProtMagazzino_01 + Counter_001 - ProtMagazzino_02 + Counter_002 + + + + Counter_003 + + + + + + SlittaMagazzino_01 + + + + + + ProtMagazzino_01 diff --git a/MTC_Adapter/MTC_Adapter/Resources/CMS/SIEMENS.xml b/MTC_Adapter/MTC_Adapter/Resources/CMS/SIEMENS.xml index 66f2df4..15360b3 100644 --- a/MTC_Adapter/MTC_Adapter/Resources/CMS/SIEMENS.xml +++ b/MTC_Adapter/MTC_Adapter/Resources/CMS/SIEMENS.xml @@ -36,18 +36,32 @@ + + + Counter_001 + + + + Counter_002 + + + + Counter_003 + + + + + + SlittaMagazzino_01 + + + ProtMagazzino_01 - - - SlittaMagazzino_ - - - Cooler_01 diff --git a/MTC_Adapter/MTC_Adapter/SetupAdapter.Designer.cs b/MTC_Adapter/MTC_Adapter/SetupAdapter.Designer.cs index 7bd7585..8ad46e4 100644 --- a/MTC_Adapter/MTC_Adapter/SetupAdapter.Designer.cs +++ b/MTC_Adapter/MTC_Adapter/SetupAdapter.Designer.cs @@ -28,364 +28,420 @@ /// private void InitializeComponent() { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SetupAdapter)); - this.txtAdapter = new System.Windows.Forms.TextBox(); - this.label1 = new System.Windows.Forms.Label(); - this.label2 = new System.Windows.Forms.Label(); - this.txtFileName = new System.Windows.Forms.TextBox(); - this.btnSave = new System.Windows.Forms.Button(); - this.btnLoad = new System.Windows.Forms.Button(); - this.label3 = new System.Windows.Forms.Label(); - this.nVacPump = new System.Windows.Forms.TextBox(); - this.label4 = new System.Windows.Forms.Label(); - this.nVacAct = new System.Windows.Forms.TextBox(); - this.label5 = new System.Windows.Forms.Label(); - this.cbTipoAdapt = new System.Windows.Forms.ComboBox(); - this.label6 = new System.Windows.Forms.Label(); - this.nLubro = new System.Windows.Forms.TextBox(); - this.label7 = new System.Windows.Forms.Label(); - this.nCooler = new System.Windows.Forms.TextBox(); - this.label8 = new System.Windows.Forms.Label(); - this.nPress = new System.Windows.Forms.TextBox(); - this.label9 = new System.Windows.Forms.Label(); - this.nTempe = new System.Windows.Forms.TextBox(); - this.label10 = new System.Windows.Forms.Label(); - this.nPath = new System.Windows.Forms.TextBox(); - this.label11 = new System.Windows.Forms.Label(); - this.nUnOp = new System.Windows.Forms.TextBox(); - this.label12 = new System.Windows.Forms.Label(); - this.nAssi = new System.Windows.Forms.TextBox(); - this.label13 = new System.Windows.Forms.Label(); - this.nMemArea = new System.Windows.Forms.TextBox(); - this.label14 = new System.Windows.Forms.Label(); - this.nProtMag = new System.Windows.Forms.TextBox(); - this.label15 = new System.Windows.Forms.Label(); - this.nSlittaMag = new System.Windows.Forms.TextBox(); - this.SuspendLayout(); - // - // txtAdapter - // - this.txtAdapter.Location = new System.Drawing.Point(91, 10); - this.txtAdapter.Name = "txtAdapter"; - this.txtAdapter.Size = new System.Drawing.Size(214, 20); - this.txtAdapter.TabIndex = 0; - this.txtAdapter.Text = "CMS_ADAPTER_00"; - // - // label1 - // - this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(22, 13); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(58, 13); - this.label1.TabIndex = 1; - this.label1.Text = "ADAPTER"; - // - // label2 - // - this.label2.AutoSize = true; - this.label2.Location = new System.Drawing.Point(311, 13); - this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(63, 13); - this.label2.TabIndex = 3; - this.label2.Text = "FILE NAME"; - // - // txtFileName - // - this.txtFileName.Location = new System.Drawing.Point(380, 10); - this.txtFileName.Name = "txtFileName"; - this.txtFileName.Size = new System.Drawing.Size(122, 20); - this.txtFileName.TabIndex = 2; - this.txtFileName.Text = "Adapter_ItemList.xml"; - // - // btnSave - // - this.btnSave.Location = new System.Drawing.Point(479, 467); - this.btnSave.Name = "btnSave"; - this.btnSave.Size = new System.Drawing.Size(201, 38); - this.btnSave.TabIndex = 4; - this.btnSave.Text = "SAVE CONFIGURATION"; - this.btnSave.UseVisualStyleBackColor = true; - this.btnSave.Click += new System.EventHandler(this.btnCreateFile_Click); - // - // btnLoad - // - this.btnLoad.Location = new System.Drawing.Point(16, 467); - this.btnLoad.Name = "btnLoad"; - this.btnLoad.Size = new System.Drawing.Size(201, 38); - this.btnLoad.TabIndex = 5; - this.btnLoad.Text = "LOAD CONFIGURATION"; - this.btnLoad.UseVisualStyleBackColor = true; - this.btnLoad.Click += new System.EventHandler(this.btnLoad_Click); - // - // label3 - // - this.label3.AutoSize = true; - this.label3.Location = new System.Drawing.Point(10, 39); - this.label3.Name = "label3"; - this.label3.Size = new System.Drawing.Size(75, 13); - this.label3.TabIndex = 7; - this.label3.Text = "n° VAC PUMP"; - // - // nVacPump - // - this.nVacPump.Location = new System.Drawing.Point(91, 36); - this.nVacPump.Name = "nVacPump"; - this.nVacPump.Size = new System.Drawing.Size(33, 20); - this.nVacPump.TabIndex = 6; - this.nVacPump.Text = "1"; - // - // label4 - // - this.label4.AutoSize = true; - this.label4.Location = new System.Drawing.Point(176, 39); - this.label4.Name = "label4"; - this.label4.Size = new System.Drawing.Size(60, 13); - this.label4.TabIndex = 9; - this.label4.Text = "n° VAC Act"; - // - // nVacAct - // - this.nVacAct.Location = new System.Drawing.Point(242, 36); - this.nVacAct.Name = "nVacAct"; - this.nVacAct.Size = new System.Drawing.Size(33, 20); - this.nVacAct.TabIndex = 8; - this.nVacAct.Text = "2"; - // - // label5 - // - this.label5.AutoSize = true; - this.label5.Location = new System.Drawing.Point(517, 13); - this.label5.Name = "label5"; - this.label5.Size = new System.Drawing.Size(32, 13); - this.label5.TabIndex = 10; - this.label5.Text = "TIPO"; - // - // cbTipoAdapt - // - this.cbTipoAdapt.FormattingEnabled = true; - this.cbTipoAdapt.Items.AddRange(new object[] { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SetupAdapter)); + this.txtAdapter = new System.Windows.Forms.TextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.txtFileName = new System.Windows.Forms.TextBox(); + this.btnSave = new System.Windows.Forms.Button(); + this.btnLoad = new System.Windows.Forms.Button(); + this.label3 = new System.Windows.Forms.Label(); + this.nVacPump = new System.Windows.Forms.TextBox(); + this.label4 = new System.Windows.Forms.Label(); + this.nVacAct = new System.Windows.Forms.TextBox(); + this.label5 = new System.Windows.Forms.Label(); + this.cbTipoAdapt = new System.Windows.Forms.ComboBox(); + this.label6 = new System.Windows.Forms.Label(); + this.nLubro = new System.Windows.Forms.TextBox(); + this.label7 = new System.Windows.Forms.Label(); + this.nCooler = new System.Windows.Forms.TextBox(); + this.label8 = new System.Windows.Forms.Label(); + this.nPress = new System.Windows.Forms.TextBox(); + this.label9 = new System.Windows.Forms.Label(); + this.nTempe = new System.Windows.Forms.TextBox(); + this.label10 = new System.Windows.Forms.Label(); + this.nPath = new System.Windows.Forms.TextBox(); + this.label11 = new System.Windows.Forms.Label(); + this.nUnOp = new System.Windows.Forms.TextBox(); + this.label12 = new System.Windows.Forms.Label(); + this.nAssi = new System.Windows.Forms.TextBox(); + this.label13 = new System.Windows.Forms.Label(); + this.nMemArea = new System.Windows.Forms.TextBox(); + this.label14 = new System.Windows.Forms.Label(); + this.nProtMag = new System.Windows.Forms.TextBox(); + this.label15 = new System.Windows.Forms.Label(); + this.nSlittaMag = new System.Windows.Forms.TextBox(); + this.label16 = new System.Windows.Forms.Label(); + this.nContatori = new System.Windows.Forms.TextBox(); + this.SuspendLayout(); + // + // txtAdapter + // + this.txtAdapter.Location = new System.Drawing.Point(121, 12); + this.txtAdapter.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.txtAdapter.Name = "txtAdapter"; + this.txtAdapter.Size = new System.Drawing.Size(284, 22); + this.txtAdapter.TabIndex = 0; + this.txtAdapter.Text = "CMS_ADAPTER_00"; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(29, 16); + this.label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(73, 17); + this.label1.TabIndex = 1; + this.label1.Text = "ADAPTER"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(415, 16); + this.label2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(79, 17); + this.label2.TabIndex = 3; + this.label2.Text = "FILE NAME"; + // + // txtFileName + // + this.txtFileName.Location = new System.Drawing.Point(507, 12); + this.txtFileName.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.txtFileName.Name = "txtFileName"; + this.txtFileName.Size = new System.Drawing.Size(161, 22); + this.txtFileName.TabIndex = 2; + this.txtFileName.Text = "Adapter_ItemList.xml"; + // + // btnSave + // + this.btnSave.Location = new System.Drawing.Point(639, 575); + this.btnSave.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.btnSave.Name = "btnSave"; + this.btnSave.Size = new System.Drawing.Size(268, 47); + this.btnSave.TabIndex = 4; + this.btnSave.Text = "SAVE CONFIGURATION"; + this.btnSave.UseVisualStyleBackColor = true; + this.btnSave.Click += new System.EventHandler(this.btnCreateFile_Click); + // + // btnLoad + // + this.btnLoad.Location = new System.Drawing.Point(21, 575); + this.btnLoad.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.btnLoad.Name = "btnLoad"; + this.btnLoad.Size = new System.Drawing.Size(268, 47); + this.btnLoad.TabIndex = 5; + this.btnLoad.Text = "LOAD CONFIGURATION"; + this.btnLoad.UseVisualStyleBackColor = true; + this.btnLoad.Click += new System.EventHandler(this.btnLoad_Click); + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(13, 48); + this.label3.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(96, 17); + this.label3.TabIndex = 7; + this.label3.Text = "n° VAC PUMP"; + // + // nVacPump + // + this.nVacPump.Location = new System.Drawing.Point(121, 44); + this.nVacPump.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.nVacPump.Name = "nVacPump"; + this.nVacPump.Size = new System.Drawing.Size(43, 22); + this.nVacPump.TabIndex = 6; + this.nVacPump.Text = "1"; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(235, 48); + this.label4.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(77, 17); + this.label4.TabIndex = 9; + this.label4.Text = "n° VAC Act"; + // + // nVacAct + // + this.nVacAct.Location = new System.Drawing.Point(323, 44); + this.nVacAct.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.nVacAct.Name = "nVacAct"; + this.nVacAct.Size = new System.Drawing.Size(43, 22); + this.nVacAct.TabIndex = 8; + this.nVacAct.Text = "2"; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(689, 16); + this.label5.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(40, 17); + this.label5.TabIndex = 10; + this.label5.Text = "TIPO"; + // + // cbTipoAdapt + // + this.cbTipoAdapt.FormattingEnabled = true; + this.cbTipoAdapt.Items.AddRange(new object[] { "DEMO", "ESAGV", "FANUC", "OSAI", "SIEMENS"}); - this.cbTipoAdapt.Location = new System.Drawing.Point(555, 10); - this.cbTipoAdapt.Name = "cbTipoAdapt"; - this.cbTipoAdapt.Size = new System.Drawing.Size(121, 21); - this.cbTipoAdapt.TabIndex = 11; - // - // label6 - // - this.label6.AutoSize = true; - this.label6.Location = new System.Drawing.Point(314, 39); - this.label6.Name = "label6"; - this.label6.Size = new System.Drawing.Size(57, 13); - this.label6.TabIndex = 13; - this.label6.Text = "n° LUBRO"; - // - // nLubro - // - this.nLubro.Location = new System.Drawing.Point(380, 36); - this.nLubro.Name = "nLubro"; - this.nLubro.Size = new System.Drawing.Size(33, 20); - this.nLubro.TabIndex = 12; - this.nLubro.Text = "1"; - // - // label7 - // - this.label7.AutoSize = true; - this.label7.Location = new System.Drawing.Point(473, 39); - this.label7.Name = "label7"; - this.label7.Size = new System.Drawing.Size(64, 13); - this.label7.TabIndex = 15; - this.label7.Text = "n° COOLER"; - // - // nCooler - // - this.nCooler.Location = new System.Drawing.Point(539, 36); - this.nCooler.Name = "nCooler"; - this.nCooler.Size = new System.Drawing.Size(33, 20); - this.nCooler.TabIndex = 14; - this.nCooler.Text = "2"; - // - // label8 - // - this.label8.AutoSize = true; - this.label8.Location = new System.Drawing.Point(25, 65); - this.label8.Name = "label8"; - this.label8.Size = new System.Drawing.Size(56, 13); - this.label8.TabIndex = 17; - this.label8.Text = "n° PRESS"; - // - // nPress - // - this.nPress.Location = new System.Drawing.Point(91, 62); - this.nPress.Name = "nPress"; - this.nPress.Size = new System.Drawing.Size(33, 20); - this.nPress.TabIndex = 16; - this.nPress.Text = "1"; - // - // label9 - // - this.label9.AutoSize = true; - this.label9.Location = new System.Drawing.Point(176, 65); - this.label9.Name = "label9"; - this.label9.Size = new System.Drawing.Size(50, 13); - this.label9.TabIndex = 19; - this.label9.Text = "n° TEMP"; - // - // nTempe - // - this.nTempe.Location = new System.Drawing.Point(242, 62); - this.nTempe.Name = "nTempe"; - this.nTempe.Size = new System.Drawing.Size(33, 20); - this.nTempe.TabIndex = 18; - this.nTempe.Text = "1"; - // - // label10 - // - this.label10.AutoSize = true; - this.label10.Location = new System.Drawing.Point(314, 65); - this.label10.Name = "label10"; - this.label10.Size = new System.Drawing.Size(49, 13); - this.label10.TabIndex = 21; - this.label10.Text = "n° PATH"; - // - // nPath - // - this.nPath.Location = new System.Drawing.Point(380, 62); - this.nPath.Name = "nPath"; - this.nPath.Size = new System.Drawing.Size(33, 20); - this.nPath.TabIndex = 20; - this.nPath.Text = "1"; - // - // label11 - // - this.label11.AutoSize = true; - this.label11.Location = new System.Drawing.Point(473, 65); - this.label11.Name = "label11"; - this.label11.Size = new System.Drawing.Size(52, 13); - this.label11.TabIndex = 23; - this.label11.Text = "n° Un OP"; - // - // nUnOp - // - this.nUnOp.Location = new System.Drawing.Point(539, 62); - this.nUnOp.Name = "nUnOp"; - this.nUnOp.Size = new System.Drawing.Size(33, 20); - this.nUnOp.TabIndex = 22; - this.nUnOp.Text = "1"; - // - // label12 - // - this.label12.AutoSize = true; - this.label12.Location = new System.Drawing.Point(25, 91); - this.label12.Name = "label12"; - this.label12.Size = new System.Drawing.Size(39, 13); - this.label12.TabIndex = 25; - this.label12.Text = "n° Assi"; - // - // nAssi - // - this.nAssi.Location = new System.Drawing.Point(91, 88); - this.nAssi.Name = "nAssi"; - this.nAssi.Size = new System.Drawing.Size(33, 20); - this.nAssi.TabIndex = 24; - this.nAssi.Text = "1"; - // - // label13 - // - this.label13.AutoSize = true; - this.label13.Location = new System.Drawing.Point(176, 94); - this.label13.Name = "label13"; - this.label13.Size = new System.Drawing.Size(65, 13); - this.label13.TabIndex = 27; - this.label13.Text = "n° MemArea"; - // - // nMemArea - // - this.nMemArea.Location = new System.Drawing.Point(242, 91); - this.nMemArea.Name = "nMemArea"; - this.nMemArea.Size = new System.Drawing.Size(33, 20); - this.nMemArea.TabIndex = 26; - this.nMemArea.Text = "1"; - // - // label14 - // - this.label14.AutoSize = true; - this.label14.Location = new System.Drawing.Point(473, 94); - this.label14.Name = "label14"; - this.label14.Size = new System.Drawing.Size(63, 13); - this.label14.TabIndex = 31; - this.label14.Text = "n° Prot Mag"; - // - // nProtMag - // - this.nProtMag.Location = new System.Drawing.Point(539, 91); - this.nProtMag.Name = "nProtMag"; - this.nProtMag.Size = new System.Drawing.Size(33, 20); - this.nProtMag.TabIndex = 30; - this.nProtMag.Text = "0"; - // - // label15 - // - this.label15.AutoSize = true; - this.label15.Location = new System.Drawing.Point(314, 94); - this.label15.Name = "label15"; - this.label15.Size = new System.Drawing.Size(55, 13); - this.label15.TabIndex = 29; - this.label15.Text = "n° Sli Mag"; - // - // nSlittaMag - // - this.nSlittaMag.Location = new System.Drawing.Point(380, 91); - this.nSlittaMag.Name = "nSlittaMag"; - this.nSlittaMag.Size = new System.Drawing.Size(33, 20); - this.nSlittaMag.TabIndex = 28; - this.nSlittaMag.Text = "0"; - // - // SetupAdapter - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(692, 517); - this.Controls.Add(this.label14); - this.Controls.Add(this.nProtMag); - this.Controls.Add(this.label15); - this.Controls.Add(this.nSlittaMag); - this.Controls.Add(this.label13); - this.Controls.Add(this.nMemArea); - this.Controls.Add(this.label12); - this.Controls.Add(this.nAssi); - this.Controls.Add(this.label11); - this.Controls.Add(this.nUnOp); - this.Controls.Add(this.label10); - this.Controls.Add(this.nPath); - this.Controls.Add(this.label9); - this.Controls.Add(this.nTempe); - this.Controls.Add(this.label8); - this.Controls.Add(this.nPress); - this.Controls.Add(this.label7); - this.Controls.Add(this.nCooler); - this.Controls.Add(this.label6); - this.Controls.Add(this.nLubro); - this.Controls.Add(this.cbTipoAdapt); - this.Controls.Add(this.label5); - this.Controls.Add(this.label4); - this.Controls.Add(this.nVacAct); - this.Controls.Add(this.label3); - this.Controls.Add(this.nVacPump); - this.Controls.Add(this.btnLoad); - this.Controls.Add(this.btnSave); - this.Controls.Add(this.label2); - this.Controls.Add(this.txtFileName); - this.Controls.Add(this.label1); - this.Controls.Add(this.txtAdapter); - this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.Name = "SetupAdapter"; - this.Text = "Adapter Setup Manager"; - this.ResumeLayout(false); - this.PerformLayout(); + this.cbTipoAdapt.Location = new System.Drawing.Point(740, 12); + this.cbTipoAdapt.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.cbTipoAdapt.Name = "cbTipoAdapt"; + this.cbTipoAdapt.Size = new System.Drawing.Size(160, 24); + this.cbTipoAdapt.TabIndex = 11; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(419, 48); + this.label6.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(74, 17); + this.label6.TabIndex = 13; + this.label6.Text = "n° LUBRO"; + // + // nLubro + // + this.nLubro.Location = new System.Drawing.Point(507, 44); + this.nLubro.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.nLubro.Name = "nLubro"; + this.nLubro.Size = new System.Drawing.Size(43, 22); + this.nLubro.TabIndex = 12; + this.nLubro.Text = "1"; + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Location = new System.Drawing.Point(631, 48); + this.label7.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(84, 17); + this.label7.TabIndex = 15; + this.label7.Text = "n° COOLER"; + // + // nCooler + // + this.nCooler.Location = new System.Drawing.Point(719, 44); + this.nCooler.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.nCooler.Name = "nCooler"; + this.nCooler.Size = new System.Drawing.Size(43, 22); + this.nCooler.TabIndex = 14; + this.nCooler.Text = "2"; + // + // label8 + // + this.label8.AutoSize = true; + this.label8.Location = new System.Drawing.Point(33, 80); + this.label8.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(72, 17); + this.label8.TabIndex = 17; + this.label8.Text = "n° PRESS"; + // + // nPress + // + this.nPress.Location = new System.Drawing.Point(121, 76); + this.nPress.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.nPress.Name = "nPress"; + this.nPress.Size = new System.Drawing.Size(43, 22); + this.nPress.TabIndex = 16; + this.nPress.Text = "1"; + // + // label9 + // + this.label9.AutoSize = true; + this.label9.Location = new System.Drawing.Point(235, 80); + this.label9.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(64, 17); + this.label9.TabIndex = 19; + this.label9.Text = "n° TEMP"; + // + // nTempe + // + this.nTempe.Location = new System.Drawing.Point(323, 76); + this.nTempe.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.nTempe.Name = "nTempe"; + this.nTempe.Size = new System.Drawing.Size(43, 22); + this.nTempe.TabIndex = 18; + this.nTempe.Text = "1"; + // + // label10 + // + this.label10.AutoSize = true; + this.label10.Location = new System.Drawing.Point(419, 80); + this.label10.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(63, 17); + this.label10.TabIndex = 21; + this.label10.Text = "n° PATH"; + // + // nPath + // + this.nPath.Location = new System.Drawing.Point(507, 76); + this.nPath.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.nPath.Name = "nPath"; + this.nPath.Size = new System.Drawing.Size(43, 22); + this.nPath.TabIndex = 20; + this.nPath.Text = "1"; + // + // label11 + // + this.label11.AutoSize = true; + this.label11.Location = new System.Drawing.Point(631, 80); + this.label11.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(68, 17); + this.label11.TabIndex = 23; + this.label11.Text = "n° Un OP"; + // + // nUnOp + // + this.nUnOp.Location = new System.Drawing.Point(719, 76); + this.nUnOp.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.nUnOp.Name = "nUnOp"; + this.nUnOp.Size = new System.Drawing.Size(43, 22); + this.nUnOp.TabIndex = 22; + this.nUnOp.Text = "1"; + // + // label12 + // + this.label12.AutoSize = true; + this.label12.Location = new System.Drawing.Point(33, 112); + this.label12.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(52, 17); + this.label12.TabIndex = 25; + this.label12.Text = "n° Assi"; + // + // nAssi + // + this.nAssi.Location = new System.Drawing.Point(121, 108); + this.nAssi.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.nAssi.Name = "nAssi"; + this.nAssi.Size = new System.Drawing.Size(43, 22); + this.nAssi.TabIndex = 24; + this.nAssi.Text = "1"; + // + // label13 + // + this.label13.AutoSize = true; + this.label13.Location = new System.Drawing.Point(235, 116); + this.label13.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label13.Name = "label13"; + this.label13.Size = new System.Drawing.Size(86, 17); + this.label13.TabIndex = 27; + this.label13.Text = "n° MemArea"; + // + // nMemArea + // + this.nMemArea.Location = new System.Drawing.Point(323, 112); + this.nMemArea.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.nMemArea.Name = "nMemArea"; + this.nMemArea.Size = new System.Drawing.Size(43, 22); + this.nMemArea.TabIndex = 26; + this.nMemArea.Text = "1"; + // + // label14 + // + this.label14.AutoSize = true; + this.label14.Location = new System.Drawing.Point(631, 116); + this.label14.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label14.Name = "label14"; + this.label14.Size = new System.Drawing.Size(83, 17); + this.label14.TabIndex = 31; + this.label14.Text = "n° Prot Mag"; + // + // nProtMag + // + this.nProtMag.Location = new System.Drawing.Point(719, 112); + this.nProtMag.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.nProtMag.Name = "nProtMag"; + this.nProtMag.Size = new System.Drawing.Size(43, 22); + this.nProtMag.TabIndex = 30; + this.nProtMag.Text = "0"; + // + // label15 + // + this.label15.AutoSize = true; + this.label15.Location = new System.Drawing.Point(419, 116); + this.label15.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label15.Name = "label15"; + this.label15.Size = new System.Drawing.Size(72, 17); + this.label15.TabIndex = 29; + this.label15.Text = "n° Sli Mag"; + // + // nSlittaMag + // + this.nSlittaMag.Location = new System.Drawing.Point(507, 112); + this.nSlittaMag.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.nSlittaMag.Name = "nSlittaMag"; + this.nSlittaMag.Size = new System.Drawing.Size(43, 22); + this.nSlittaMag.TabIndex = 28; + this.nSlittaMag.Text = "0"; + // + // label16 + // + this.label16.AutoSize = true; + this.label16.Location = new System.Drawing.Point(33, 142); + this.label16.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label16.Name = "label16"; + this.label16.Size = new System.Drawing.Size(83, 17); + this.label16.TabIndex = 33; + this.label16.Text = "n° Contatori"; + // + // nContatori + // + this.nContatori.Location = new System.Drawing.Point(121, 138); + this.nContatori.Margin = new System.Windows.Forms.Padding(4); + this.nContatori.Name = "nContatori"; + this.nContatori.Size = new System.Drawing.Size(43, 22); + this.nContatori.TabIndex = 32; + this.nContatori.Text = "1"; + // + // SetupAdapter + // + this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(923, 636); + this.Controls.Add(this.label16); + this.Controls.Add(this.nContatori); + this.Controls.Add(this.label14); + this.Controls.Add(this.nProtMag); + this.Controls.Add(this.label15); + this.Controls.Add(this.nSlittaMag); + this.Controls.Add(this.label13); + this.Controls.Add(this.nMemArea); + this.Controls.Add(this.label12); + this.Controls.Add(this.nAssi); + this.Controls.Add(this.label11); + this.Controls.Add(this.nUnOp); + this.Controls.Add(this.label10); + this.Controls.Add(this.nPath); + this.Controls.Add(this.label9); + this.Controls.Add(this.nTempe); + this.Controls.Add(this.label8); + this.Controls.Add(this.nPress); + this.Controls.Add(this.label7); + this.Controls.Add(this.nCooler); + this.Controls.Add(this.label6); + this.Controls.Add(this.nLubro); + this.Controls.Add(this.cbTipoAdapt); + this.Controls.Add(this.label5); + this.Controls.Add(this.label4); + this.Controls.Add(this.nVacAct); + this.Controls.Add(this.label3); + this.Controls.Add(this.nVacPump); + this.Controls.Add(this.btnLoad); + this.Controls.Add(this.btnSave); + this.Controls.Add(this.label2); + this.Controls.Add(this.txtFileName); + this.Controls.Add(this.label1); + this.Controls.Add(this.txtAdapter); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.Name = "SetupAdapter"; + this.Text = "Adapter Setup Manager"; + this.ResumeLayout(false); + this.PerformLayout(); } @@ -423,5 +479,7 @@ private System.Windows.Forms.TextBox nProtMag; private System.Windows.Forms.Label label15; private System.Windows.Forms.TextBox nSlittaMag; - } + private System.Windows.Forms.Label label16; + private System.Windows.Forms.TextBox nContatori; + } } \ No newline at end of file diff --git a/MTC_Adapter/MTC_Adapter/SetupAdapter.cs b/MTC_Adapter/MTC_Adapter/SetupAdapter.cs index c6b647c..f047861 100644 --- a/MTC_Adapter/MTC_Adapter/SetupAdapter.cs +++ b/MTC_Adapter/MTC_Adapter/SetupAdapter.cs @@ -6,543 +6,578 @@ using System.Windows.Forms; namespace MTC_Adapter { - public partial class SetupAdapter : Form + public partial class SetupAdapter : Form + { + public SetupAdapter() { - public SetupAdapter() - { - InitializeComponent(); + InitializeComponent(); - // fix icon! - this.Icon = Icon.ExtractAssociatedIcon(defIconFilePath); - } - protected string defIconFilePath - { - get - { - return string.Format(@"{0}\MTCA.ico", utils.resxDir); - } - } - /// - /// Percorso file completo - /// - protected string filePath - { - get - { - return string.Format("{0}/{1}", utils.CRS("dataConfPath"), txtFileName.Text); - } - } - - protected int numVacPump - { - get - { - int answ = 0; - try - { - answ = Convert.ToInt32(nVacPump.Text); - } - catch - { } - return answ; - } - set - { - nVacPump.Text = value.ToString(); - } - } - protected int numVacAct - { - get - { - int answ = 0; - try - { - answ = Convert.ToInt32(nVacAct.Text); - } - catch - { } - return answ; - } - set - { - nVacAct.Text = value.ToString(); - } - } - protected int numLubro - { - get - { - int answ = 0; - try - { - answ = Convert.ToInt32(nLubro.Text); - } - catch - { } - return answ; - } - set - { - nLubro.Text = value.ToString(); - } - } - protected int numCooler - { - get - { - int answ = 0; - try - { - answ = Convert.ToInt32(nCooler.Text); - } - catch - { } - return answ; - } - set - { - nCooler.Text = value.ToString(); - } - } - protected int numPress - { - get - { - int answ = 0; - try - { - answ = Convert.ToInt32(nPress.Text); - } - catch - { } - return answ; - } - set - { - nPress.Text = value.ToString(); - } - } - protected int numTemp - { - get - { - int answ = 0; - try - { - answ = Convert.ToInt32(nTempe.Text); - } - catch - { } - return answ; - } - set - { - nTempe.Text = value.ToString(); - } - } - protected int numPath - { - get - { - int answ = 0; - try - { - answ = Convert.ToInt32(nPath.Text); - } - catch - { } - return answ; - } - set - { - nPath.Text = value.ToString(); - } - } - protected int numUnOp - { - get - { - int answ = 0; - try - { - answ = Convert.ToInt32(nUnOp.Text); - } - catch - { } - return answ; - } - set - { - nUnOp.Text = value.ToString(); - } - } - protected int numAxis - { - get - { - int answ = 0; - try - { - answ = Convert.ToInt32(nAssi.Text); - } - catch - { } - return answ; - } - set - { - nAssi.Text = value.ToString(); - } - } - protected int numMemArea - { - get - { - int answ = 0; - try - { - answ = Convert.ToInt32(nMemArea.Text); - } - catch - { } - return answ; - } - set - { - nMemArea.Text = value.ToString(); - } - } - protected int numSlittaMag - { - get - { - int answ = 0; - try - { - answ = Convert.ToInt32(nSlittaMag.Text); - } - catch - { } - return answ; - } - set - { - nSlittaMag.Text = value.ToString(); - } - } - protected int numProtMag - { - get - { - int answ = 0; - try - { - answ = Convert.ToInt32(nProtMag.Text); - } - catch - { } - return answ; - } - set - { - nProtMag.Text = value.ToString(); - } - } - - protected element[] oAxisLoad { get; set; } - - private void btnCreateFile_Click(object sender, EventArgs e) - { - // creo un nuovo file adapter... - AdapterConf c = new AdapterConf(); - // nome da txtbox, vers 1 - c.NomeAdapt = txtAdapter.Text; - c.Version = 1; - // tipo da selettore - string valTipo = ""; - try - { - valTipo = cbTipoAdapt.SelectedItem.ToString().ToUpper(); - } - catch - { - valTipo = cbTipoAdapt.SelectedText; - } - switch (valTipo) - { - case "FANUC": - c.TipoAdapt = tipoAdapter.FANUC; - break; - case "OSAI": - c.TipoAdapt = tipoAdapter.OSAI; - break; - case "SIEMENS": - c.TipoAdapt = tipoAdapter.SIEMENS; - break; - case "HMI-ESA": - case "HMI_ESA": - case "ESAGV": - c.TipoAdapt = tipoAdapter.ESAGV; - break; - case "DEMO": - default: - c.TipoAdapt = tipoAdapter.DEMO; - break; - } - - // init lista parametri - List> listaDR; - - // MemArea - if (numMemArea > 0) - { - // creo elementi richiesti - element[] MemArea = new element[numMemArea]; - // ciclo x istanziare! - for (int i = 0; i < numMemArea; i++) - { - // inizializzo list x parametri - listaDR = new List>(); - MemArea[i] = new element(string.Format("MemArea_{0:00}", i + 1), listaDR); - } - // salvo oggetto - c.MemArea = MemArea; - } - - // VAC PUMP - if (numVacPump > 0) - { - // creo elementi richiesti - element[] VacuumPump = new element[numVacPump]; - // ciclo x istanziare! - for (int i = 0; i < numVacPump; i++) - { - // inizializzo list x parametri - listaDR = new List>(); - VacuumPump[i] = new element(string.Format("VacPump_{0:00}", i + 1), listaDR); - } - // salvo oggetto - c.VacuumPump = VacuumPump; - } - - // VACUUM ACT - if (numVacAct > 0) - { - // creo elementi richiesti - element[] VacuumAct = new element[numVacAct]; - // ciclo x istanziare! - for (int i = 0; i < numVacAct; i++) - { - // inizializzo list x parametri - listaDR = new List>(); - VacuumAct[i] = new element(string.Format("VacAct_{0:00}", i + 1), listaDR); - } - // salvo oggetto - c.VacuumAct = VacuumAct; - } - - // LUBRO - if (numLubro > 0) - { - // creo elementi richiesti - element[] Lubro = new element[numLubro]; - // ciclo x istanziare! - for (int i = 0; i < numLubro; i++) - { - // inizializzo list x parametri - listaDR = new List>(); - Lubro[i] = new element(string.Format("Lubro_{0:00}", i + 1), listaDR); - } - // salvo oggetto - c.Lubro = Lubro; - } - - // SlittaMag - if (numSlittaMag > 0) - { - // creo elementi richiesti - element[] SlittaMag = new element[numSlittaMag]; - // ciclo x istanziare! - for (int i = 0; i < numSlittaMag; i++) - { - // inizializzo list x parametri - listaDR = new List>(); - SlittaMag[i] = new element(string.Format("SlittaMagazzino_{0:00}", i + 1), listaDR); - } - // salvo oggetto - c.SlittaMag = SlittaMag; - } - - // ProtMag - if (numProtMag > 0) - { - // creo elementi richiesti - element[] ProtMag = new element[numProtMag]; - // ciclo x istanziare! - for (int i = 0; i < numProtMag; i++) - { - // inizializzo list x parametri - listaDR = new List>(); - ProtMag[i] = new element(string.Format("ProtMagazzino_{0:00}", i + 1), listaDR); - } - // salvo oggetto - c.ProtMag = ProtMag; - } - - // COOLER - if (numCooler > 0) - { - // creo elementi richiesti - element[] Cooler = new element[numCooler]; - // ciclo x istanziare! - for (int i = 0; i < numCooler; i++) - { - // inizializzo list x parametri - listaDR = new List>(); - Cooler[i] = new element(string.Format("Cooler_{0:00}", i + 1), listaDR); - } - // salvo oggetto - c.Cooler = Cooler; - } - - // PRESS - if (numPress > 0) - { - // creo elementi richiesti - element[] Press = new element[numPress]; - // ciclo x istanziare! - for (int i = 0; i < numPress; i++) - { - // inizializzo list x parametri - listaDR = new List>(); - Press[i] = new element(string.Format("Press_{0:00}", i + 1), listaDR); - } - // salvo oggetto - c.Press = Press; - } - - // TEMPERATURE - if (numTemp > 0) - { - // creo elementi richiesti - element[] Temp = new element[numTemp]; - // ciclo x istanziare! - for (int i = 0; i < numTemp; i++) - { - // inizializzo list x parametri - listaDR = new List>(); - Temp[i] = new element(string.Format("Temp_{0:00}", i + 1), listaDR); - } - // salvo oggetto - c.Temp = Temp; - } - - // PATH - if (numPath > 0) - { - // creo elementi richiesti - element[] Path = new element[numPath]; - // ciclo x istanziare! - for (int i = 0; i < numPath; i++) - { - // inizializzo list x parametri - listaDR = new List>(); - Path[i] = new element(string.Format("Path_{0:00}", i + 1), listaDR); - } - // salvo oggetto - c.Path = Path; - } - - // UNITA OPERATRICI - if (numUnOp > 0) - { - // creo elementi richiesti - element[] UnOp = new element[numUnOp]; - // ciclo x istanziare! - for (int i = 0; i < numUnOp; i++) - { - // inizializzo list x parametri - listaDR = new List>(); - UnOp[i] = new element(string.Format("UnOp_{0:00}", i + 1), listaDR); - } - // salvo oggetto - c.UnOp = UnOp; - } - - // ASSI - if (numAxis > 0) - { - // creo elementi richiesti - element[] newAxis = new element[numAxis]; - // ciclo x istanziare! - for (int i = 0; i < numAxis; i++) - { - // inizializzo list x parametri - listaDR = new List>(); - // se ho un vettore di assi uso i valori giĂ  letti.. - if (oAxisLoad != null && oAxisLoad.Length > 0 && i < oAxisLoad.Length) - { - newAxis[i] = oAxisLoad[i]; - // se non ho tutto aggiungo... - if (newAxis[i].dataRefList.Count < 2) - { - // copio lista attuale - listaDR = newAxis[i].dataRefList; - // in base a cosa manca aggiunto... - if (listaDR.Count == 0) - { - // aggiungo tutto con valori default - listaDR.Add(new DataRefItem(string.Format("Axis_{0:00}_Type", i + 1), "LINEAR")); - listaDR.Add(new DataRefItem(string.Format("Axis_{0:00}_Grp", i + 1), "00")); - newAxis[i] = new element(string.Format("Axis_{0:00}", i + 1), listaDR); - } - else if (listaDR.Count == 1) - { - // aggiungo solo GRP con valori default, IPOTIZZO di avere solo type... - listaDR.Add(new DataRefItem(string.Format("Axis_{0:00}_Grp", i + 1), "00")); - newAxis[i] = new element(string.Format("Axis_{0:00}", i + 1), listaDR); - } - } - } - else - { - // altrimenti popolo con valori default - listaDR.Add(new DataRefItem(string.Format("Axis_{0:00}_Type", i + 1), "LINEAR")); - listaDR.Add(new DataRefItem(string.Format("Axis_{0:00}_Grp", i + 1), "00")); - newAxis[i] = new element(string.Format("Axis_{0:00}", i + 1), listaDR); - } - } - // salvo oggetto - c.Axis = newAxis; - } - - // Serializzo oggetto conf su file - AdapterConf.Serialize(filePath, c); - } - - private void btnLoad_Click(object sender, EventArgs e) - { - // Read the configuration object from a file - AdapterConf objLoad = AdapterConf.Deserialize(filePath); - - txtAdapter.Text = objLoad.NomeAdapt; - cbTipoAdapt.SelectedText = objLoad.TipoAdapt.ToString(); - // carico valori da file.... - numVacPump = objLoad.nVacuumPump; - numVacAct = objLoad.nVacuumAct; - numLubro = objLoad.nLubro; - numCooler = objLoad.nCooler; - numPress = objLoad.nPress; - numTemp = objLoad.nTemp; - numPath = objLoad.nPath; - numUnOp = objLoad.nUnOp; - numAxis = objLoad.nAxis; - numMemArea = objLoad.nMemArea; - numSlittaMag = objLoad.nSlittaMag; - numProtMag = objLoad.nProtMag; - // salvo assi correnti... - oAxisLoad = objLoad.Axis; - } + // fix icon! + this.Icon = Icon.ExtractAssociatedIcon(defIconFilePath); } + protected string defIconFilePath + { + get + { + return string.Format(@"{0}\MTCA.ico", utils.resxDir); + } + } + /// + /// Percorso file completo + /// + protected string filePath + { + get + { + return string.Format("{0}/{1}", utils.CRS("dataConfPath"), txtFileName.Text); + } + } + + protected int numVacPump + { + get + { + int answ = 0; + try + { + answ = Convert.ToInt32(nVacPump.Text); + } + catch + { } + return answ; + } + set + { + nVacPump.Text = value.ToString(); + } + } + protected int numVacAct + { + get + { + int answ = 0; + try + { + answ = Convert.ToInt32(nVacAct.Text); + } + catch + { } + return answ; + } + set + { + nVacAct.Text = value.ToString(); + } + } + protected int numLubro + { + get + { + int answ = 0; + try + { + answ = Convert.ToInt32(nLubro.Text); + } + catch + { } + return answ; + } + set + { + nLubro.Text = value.ToString(); + } + } + protected int numCooler + { + get + { + int answ = 0; + try + { + answ = Convert.ToInt32(nCooler.Text); + } + catch + { } + return answ; + } + set + { + nCooler.Text = value.ToString(); + } + } + protected int numPress + { + get + { + int answ = 0; + try + { + answ = Convert.ToInt32(nPress.Text); + } + catch + { } + return answ; + } + set + { + nPress.Text = value.ToString(); + } + } + protected int numTemp + { + get + { + int answ = 0; + try + { + answ = Convert.ToInt32(nTempe.Text); + } + catch + { } + return answ; + } + set + { + nTempe.Text = value.ToString(); + } + } + protected int numPath + { + get + { + int answ = 0; + try + { + answ = Convert.ToInt32(nPath.Text); + } + catch + { } + return answ; + } + set + { + nPath.Text = value.ToString(); + } + } + protected int numUnOp + { + get + { + int answ = 0; + try + { + answ = Convert.ToInt32(nUnOp.Text); + } + catch + { } + return answ; + } + set + { + nUnOp.Text = value.ToString(); + } + } + protected int numAxis + { + get + { + int answ = 0; + try + { + answ = Convert.ToInt32(nAssi.Text); + } + catch + { } + return answ; + } + set + { + nAssi.Text = value.ToString(); + } + } + protected int numCounters + { + get + { + int answ = 0; + try + { + answ = Convert.ToInt32(nContatori.Text); + } + catch + { } + return answ; + } + set + { + nContatori.Text = value.ToString(); + } + } + protected int numMemArea + { + get + { + int answ = 0; + try + { + answ = Convert.ToInt32(nMemArea.Text); + } + catch + { } + return answ; + } + set + { + nMemArea.Text = value.ToString(); + } + } + protected int numSlittaMag + { + get + { + int answ = 0; + try + { + answ = Convert.ToInt32(nSlittaMag.Text); + } + catch + { } + return answ; + } + set + { + nSlittaMag.Text = value.ToString(); + } + } + protected int numProtMag + { + get + { + int answ = 0; + try + { + answ = Convert.ToInt32(nProtMag.Text); + } + catch + { } + return answ; + } + set + { + nProtMag.Text = value.ToString(); + } + } + + protected element[] oAxisLoad { get; set; } + + private void btnCreateFile_Click(object sender, EventArgs e) + { + // creo un nuovo file adapter... + AdapterConf c = new AdapterConf(); + // nome da txtbox, vers 1 + c.NomeAdapt = txtAdapter.Text; + c.Version = 1; + // tipo da selettore + string valTipo = ""; + try + { + valTipo = cbTipoAdapt.SelectedItem.ToString().ToUpper(); + } + catch + { + valTipo = cbTipoAdapt.SelectedText; + } + switch (valTipo) + { + case "FANUC": + c.TipoAdapt = tipoAdapter.FANUC; + break; + case "OSAI": + c.TipoAdapt = tipoAdapter.OSAI; + break; + case "SIEMENS": + c.TipoAdapt = tipoAdapter.SIEMENS; + break; + case "HMI-ESA": + case "HMI_ESA": + case "ESAGV": + c.TipoAdapt = tipoAdapter.ESAGV; + break; + case "DEMO": + default: + c.TipoAdapt = tipoAdapter.DEMO; + break; + } + + // init lista parametri + List> listaDR; + + // MemArea + if (numMemArea > 0) + { + // creo elementi richiesti + element[] MemArea = new element[numMemArea]; + // ciclo x istanziare! + for (int i = 0; i < numMemArea; i++) + { + // inizializzo list x parametri + listaDR = new List>(); + MemArea[i] = new element(string.Format("MemArea_{0:00}", i + 1), listaDR); + } + // salvo oggetto + c.MemArea = MemArea; + } + + // VAC PUMP + if (numVacPump > 0) + { + // creo elementi richiesti + element[] VacuumPump = new element[numVacPump]; + // ciclo x istanziare! + for (int i = 0; i < numVacPump; i++) + { + // inizializzo list x parametri + listaDR = new List>(); + VacuumPump[i] = new element(string.Format("VacPump_{0:00}", i + 1), listaDR); + } + // salvo oggetto + c.VacuumPump = VacuumPump; + } + + // VACUUM ACT + if (numVacAct > 0) + { + // creo elementi richiesti + element[] VacuumAct = new element[numVacAct]; + // ciclo x istanziare! + for (int i = 0; i < numVacAct; i++) + { + // inizializzo list x parametri + listaDR = new List>(); + VacuumAct[i] = new element(string.Format("VacAct_{0:00}", i + 1), listaDR); + } + // salvo oggetto + c.VacuumAct = VacuumAct; + } + + // LUBRO + if (numLubro > 0) + { + // creo elementi richiesti + element[] Lubro = new element[numLubro]; + // ciclo x istanziare! + for (int i = 0; i < numLubro; i++) + { + // inizializzo list x parametri + listaDR = new List>(); + Lubro[i] = new element(string.Format("Lubro_{0:00}", i + 1), listaDR); + } + // salvo oggetto + c.Lubro = Lubro; + } + + // Contatori + if (numCounters > 0) + { + // creo elementi richiesti + element[] Counters = new element[numCounters]; + // ciclo x istanziare! + for (int i = 0; i < numCounters; i++) + { + // inizializzo list x parametri + listaDR = new List>(); + Counters[i] = new element(string.Format("Counter_{0:000}", i + 1), listaDR); + } + // salvo oggetto + c.Counters = Counters; + } + + // SlittaMag + if (numSlittaMag > 0) + { + // creo elementi richiesti + element[] SlittaMag = new element[numSlittaMag]; + // ciclo x istanziare! + for (int i = 0; i < numSlittaMag; i++) + { + // inizializzo list x parametri + listaDR = new List>(); + SlittaMag[i] = new element(string.Format("SlittaMagazzino_{0:00}", i + 1), listaDR); + } + // salvo oggetto + c.SlittaMag = SlittaMag; + } + + // ProtMag + if (numProtMag > 0) + { + // creo elementi richiesti + element[] ProtMag = new element[numProtMag]; + // ciclo x istanziare! + for (int i = 0; i < numProtMag; i++) + { + // inizializzo list x parametri + listaDR = new List>(); + ProtMag[i] = new element(string.Format("ProtMagazzino_{0:00}", i + 1), listaDR); + } + // salvo oggetto + c.ProtMag = ProtMag; + } + + // COOLER + if (numCooler > 0) + { + // creo elementi richiesti + element[] Cooler = new element[numCooler]; + // ciclo x istanziare! + for (int i = 0; i < numCooler; i++) + { + // inizializzo list x parametri + listaDR = new List>(); + Cooler[i] = new element(string.Format("Cooler_{0:00}", i + 1), listaDR); + } + // salvo oggetto + c.Cooler = Cooler; + } + + // PRESS + if (numPress > 0) + { + // creo elementi richiesti + element[] Press = new element[numPress]; + // ciclo x istanziare! + for (int i = 0; i < numPress; i++) + { + // inizializzo list x parametri + listaDR = new List>(); + Press[i] = new element(string.Format("Press_{0:00}", i + 1), listaDR); + } + // salvo oggetto + c.Press = Press; + } + + // TEMPERATURE + if (numTemp > 0) + { + // creo elementi richiesti + element[] Temp = new element[numTemp]; + // ciclo x istanziare! + for (int i = 0; i < numTemp; i++) + { + // inizializzo list x parametri + listaDR = new List>(); + Temp[i] = new element(string.Format("Temp_{0:00}", i + 1), listaDR); + } + // salvo oggetto + c.Temp = Temp; + } + + // PATH + if (numPath > 0) + { + // creo elementi richiesti + element[] Path = new element[numPath]; + // ciclo x istanziare! + for (int i = 0; i < numPath; i++) + { + // inizializzo list x parametri + listaDR = new List>(); + Path[i] = new element(string.Format("Path_{0:00}", i + 1), listaDR); + } + // salvo oggetto + c.Path = Path; + } + + // UNITA OPERATRICI + if (numUnOp > 0) + { + // creo elementi richiesti + element[] UnOp = new element[numUnOp]; + // ciclo x istanziare! + for (int i = 0; i < numUnOp; i++) + { + // inizializzo list x parametri + listaDR = new List>(); + UnOp[i] = new element(string.Format("UnOp_{0:00}", i + 1), listaDR); + } + // salvo oggetto + c.UnOp = UnOp; + } + + // ASSI + if (numAxis > 0) + { + // creo elementi richiesti + element[] newAxis = new element[numAxis]; + // ciclo x istanziare! + for (int i = 0; i < numAxis; i++) + { + // inizializzo list x parametri + listaDR = new List>(); + // se ho un vettore di assi uso i valori giĂ  letti.. + if (oAxisLoad != null && oAxisLoad.Length > 0 && i < oAxisLoad.Length) + { + newAxis[i] = oAxisLoad[i]; + // se non ho tutto aggiungo... + if (newAxis[i].dataRefList.Count < 2) + { + // copio lista attuale + listaDR = newAxis[i].dataRefList; + // in base a cosa manca aggiunto... + if (listaDR.Count == 0) + { + // aggiungo tutto con valori default + listaDR.Add(new DataRefItem(string.Format("Axis_{0:00}_Type", i + 1), "LINEAR")); + listaDR.Add(new DataRefItem(string.Format("Axis_{0:00}_Grp", i + 1), "00")); + newAxis[i] = new element(string.Format("Axis_{0:00}", i + 1), listaDR); + } + else if (listaDR.Count == 1) + { + // aggiungo solo GRP con valori default, IPOTIZZO di avere solo type... + listaDR.Add(new DataRefItem(string.Format("Axis_{0:00}_Grp", i + 1), "00")); + newAxis[i] = new element(string.Format("Axis_{0:00}", i + 1), listaDR); + } + } + } + else + { + // altrimenti popolo con valori default + listaDR.Add(new DataRefItem(string.Format("Axis_{0:00}_Type", i + 1), "LINEAR")); + listaDR.Add(new DataRefItem(string.Format("Axis_{0:00}_Grp", i + 1), "00")); + newAxis[i] = new element(string.Format("Axis_{0:00}", i + 1), listaDR); + } + } + // salvo oggetto + c.Axis = newAxis; + } + + // Serializzo oggetto conf su file + AdapterConf.Serialize(filePath, c); + } + + private void btnLoad_Click(object sender, EventArgs e) + { + // Read the configuration object from a file + AdapterConf objLoad = AdapterConf.Deserialize(filePath); + + txtAdapter.Text = objLoad.NomeAdapt; + cbTipoAdapt.SelectedText = objLoad.TipoAdapt.ToString(); + // carico valori da file.... + numVacPump = objLoad.nVacuumPump; + numVacAct = objLoad.nVacuumAct; + numLubro = objLoad.nLubro; + numCooler = objLoad.nCooler; + numPress = objLoad.nPress; + numTemp = objLoad.nTemp; + numPath = objLoad.nPath; + numUnOp = objLoad.nUnOp; + numAxis = objLoad.nAxis; + numMemArea = objLoad.nMemArea; + numSlittaMag = objLoad.nSlittaMag; + numCounters = objLoad.nCounters; + numProtMag = objLoad.nProtMag; + // salvo assi correnti... + oAxisLoad = objLoad.Axis; + } + } } From f1611a13fc79bc1504c521a3ea144056fd794a51 Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Tue, 4 Jul 2017 17:44:21 +0200 Subject: [PATCH 21/21] completato test SIEMENS con variabili contatori persistenti gestite SENZA conf... test SIEMENS OK... --- MTC_Adapter/MTC_Adapter/AdapterConf.cs | 23 ------ MTC_Adapter/MTC_Adapter/AdapterGeneric.cs | 79 ++++++++++--------- .../MTC_Adapter/Resources/CMS/FANUC.xml | 14 ---- .../MTC_Adapter/Resources/CMS/OSAI.xml | 14 ---- .../MTC_Adapter/Resources/CMS/SIEMENS.xml | 14 ---- .../MTC_Adapter/SetupAdapter.Designer.cs | 25 ------ MTC_Adapter/MTC_Adapter/SetupAdapter.cs | 37 +-------- .../OSAI/Appunti_Variabili_2017.07.txt | 19 +++++ 8 files changed, 60 insertions(+), 165 deletions(-) create mode 100644 MaterialeSetup/OSAI/Appunti_Variabili_2017.07.txt diff --git a/MTC_Adapter/MTC_Adapter/AdapterConf.cs b/MTC_Adapter/MTC_Adapter/AdapterConf.cs index f995a8e..3b432b1 100644 --- a/MTC_Adapter/MTC_Adapter/AdapterConf.cs +++ b/MTC_Adapter/MTC_Adapter/AdapterConf.cs @@ -31,7 +31,6 @@ namespace MTC_Adapter element[] _VacuumPump; element[] _VacuumAct; element[] _Lubro; - element[] _Counters; element[] _SlittaMag; element[] _ProtMag; element[] _Cooler; @@ -118,23 +117,6 @@ namespace MTC_Adapter return answ; } } - public int nCounters - { - get - { - int answ = 0; - if (Counters != null) - { - try - { - answ = Convert.ToInt32(Counters.Length); - } - catch - { } - } - return answ; - } - } public int nProtMag { get @@ -379,11 +361,6 @@ namespace MTC_Adapter get { return _Lubro; } set { _Lubro = value; } } - public element[] Counters - { - get { return _Counters; } - set { _Counters = value; } - } public element[] SlittaMag { get { return _SlittaMag; } diff --git a/MTC_Adapter/MTC_Adapter/AdapterGeneric.cs b/MTC_Adapter/MTC_Adapter/AdapterGeneric.cs index 52d3a37..6afcffe 100644 --- a/MTC_Adapter/MTC_Adapter/AdapterGeneric.cs +++ b/MTC_Adapter/MTC_Adapter/AdapterGeneric.cs @@ -89,27 +89,6 @@ namespace MTC_Adapter } } /// - /// Singolo oggetto CON contatore - /// - public class ObjCount : element - { - /// - /// valore numero attivazioni/disattivazioni slitta magazzino - /// - public Event mCounter; - /// - /// Classe Slitta Magazzino - /// - /// element base contenente parametri (da XML) - public ObjCount(element baseElem) - { - ident = baseElem.ident; - dataRefList = baseElem.dataRefList; - - mCounter = new Event(string.Format("{0}", ident)); - } - } - /// /// Singola Slitta Mag, 0..n /// public class SlittaMag : element @@ -1066,6 +1045,10 @@ namespace MTC_Adapter ///
public Event mOperator = new Event("OperatorId"); /// + /// Vettore CONTATORI generici + /// + public Event[] mCounters; + /// /// Vettore EVENTS letti da area status /// public Event[] mStatusEvents; @@ -1119,7 +1102,6 @@ namespace MTC_Adapter public VacuumPump[] vettVacPump; public VacuumAct[] vettVacAct; public Lubro[] vettLubro; - public ObjCount[] vettCounters; public SlittaMag[] vettSlittaMag; public ProtMag[] vettProtMag; public Cooler[] vettCooler; @@ -1191,13 +1173,15 @@ namespace MTC_Adapter mAdapter.AddDataItem(mUnkStatus); mAdapter.AddDataItem(mUnkStrobe); +#if false // contatori generici vettCounters = new ObjCount[adpConf.nCounters]; for (int i = 0; i < adpConf.nCounters; i++) { vettCounters[i] = new ObjCount(adpConf.Counters[i]); mAdapter.AddDataItem(vettCounters[i].mCounter); - } + } +#endif // Aree memoria vettMemArea = new MemArea[adpConf.nMemArea]; @@ -1427,6 +1411,7 @@ namespace MTC_Adapter // carico dati x Maintenance if (utils.CRB("verbose")) lg.Info("Inizio caricamento vettore variabili manutenzione gestite"); int totRighe = 0; + int numCounters = 0; string fileName = string.Format(@"{0}\{1}", utils.confDir, utils.CRS("CounterListFilePath")); string linea; totRighe = File.ReadLines(fileName).Count(); @@ -1442,6 +1427,11 @@ namespace MTC_Adapter if (linea.Substring(0, 1) != "#") { maintData[numRiga] = decodeOtherData(linea, utils.CRC("testCharSep"), memPre, baseAddr, memSize); + // se è un counter lo processo come tale.. + if (maintData[numRiga].varName.StartsWith("Counter_")) + { + numCounters++; + } numRiga++; } } @@ -1451,6 +1441,22 @@ namespace MTC_Adapter Array.Resize(ref maintData, numRiga); if (utils.CRB("verbose")) lg.Info(string.Format("Fine caricamento vettore di {0} variabili manutenzione gestite", numRiga)); + + // ora inizializzo l'insieme degli events dei COUNTERS generici... + mCounters = new Event[numCounters]; + currCounters = new uint[numCounters]; + istCounters = new uint[numCounters]; + int idx = 0; + foreach (otherData item in maintData) + { + if (item.varName.StartsWith("Counter_")) + { + mCounters[idx] = new Event(item.varName); + mAdapter.AddDataItem(mCounters[idx]); + idx++; + } + } + if (utils.CRB("verbose")) lg.Info(string.Format("inizializzato vettore di {0} MTC.EVENTS delle variabili CONTATORI generiche", numRiga)); } /// /// Lettura file gestione dati analogici da PLC @@ -1735,10 +1741,16 @@ namespace MTC_Adapter currSlittaMag[i] = getStoredValUInt(string.Format("SlittaMagazzino_{0:00}_Count", i + 1)); } + for (int i = 0; i < mCounters.Length; i++) + { + currCounters[i] = getStoredValUInt(string.Format("Counter_{0:000}", i + 1)); + } + for (int i = 0; i < currAdpConf.nProtMag; i++) { currProtMag[i] = getStoredValUInt(string.Format("ProtMagazzino_{0:00}_Count", i + 1)); } + } catch (Exception exc) { @@ -1875,17 +1887,6 @@ namespace MTC_Adapter // recupero valori... currLubroCount[i] = Convert.ToUInt32(riLubro.Value); } - currCounters = new uint[currAdpConf.nCounters]; - istCounters= new uint[currAdpConf.nCounters]; - for (int i = 0; i < currAdpConf.nCounters; i++) - { - // leggo tutti i dati... - List> listaDR = currAdpConf.Counters[i].dataRefList; - // punto all'item - DataRefItem riCounters = listaDR.Find(x => x.Key == string.Format("Counter_{0:000}", i + 1)); - // recupero valori... - currCounters[i] = Convert.ToUInt32(riCounters.Value); - } currSlittaMag = new uint[currAdpConf.nSlittaMag]; istSlittaMag = new uint[currAdpConf.nSlittaMag]; for (int i = 0; i < currAdpConf.nSlittaMag; i++) @@ -3605,7 +3606,7 @@ namespace MTC_Adapter needSave = procPzProd(needSave); needSave = procGiriTotUnOp(needSave); needSave = procNumCU(needSave); - needSave = procCounters(needSave); + needSave = procCounters(needSave); needSave = procMovTotAssi(needSave); needSave = procAccTimeAssi(needSave); needSave = procNumInvAssi(needSave); @@ -4550,16 +4551,16 @@ namespace MTC_Adapter { uint delta = 0; StringBuilder sb = new StringBuilder(); - for (int i = 0; i < currAdpConf.nCounters; i++) + for (int i = 0; i < mCounters.Length; i++) { delta = istCounters[i] - currCounters[i]; // controllo delta < 50% max... if (delta < uint.MaxValue / 2) { //processo comunque sempre... - uint contTot = updateValUIntByIncr(i, delta, "Counters_{0:000}"); + uint contTot = updateValUIntByIncr(i, delta, "Counter_{0:000}"); // passo valore totale all'adapter - vettCounters[i].mCounter.Value = contTot; + mCounters[i].Value = contTot; // controllo valore riferimento... if (delta > 0) { @@ -4569,7 +4570,7 @@ namespace MTC_Adapter // ...aggiorno valore riferimento... currCounters[i] = istCounters[i]; } - sb.AppendLine(vettCounters[i].mCounter.ToString().Replace("|", " | ")); + sb.AppendLine(mCounters[i].ToString().Replace("|", " | ")); } // salvo su maschera... parentForm.dataMonitor_2 += sb.ToString(); diff --git a/MTC_Adapter/MTC_Adapter/Resources/CMS/FANUC.xml b/MTC_Adapter/MTC_Adapter/Resources/CMS/FANUC.xml index 7b65996..20bfa24 100644 --- a/MTC_Adapter/MTC_Adapter/Resources/CMS/FANUC.xml +++ b/MTC_Adapter/MTC_Adapter/Resources/CMS/FANUC.xml @@ -36,20 +36,6 @@ - - - Counter_001 - - - - Counter_002 - - - - Counter_003 - - - SlittaMagazzino_01 diff --git a/MTC_Adapter/MTC_Adapter/Resources/CMS/OSAI.xml b/MTC_Adapter/MTC_Adapter/Resources/CMS/OSAI.xml index 6bdb167..a97ba3d 100644 --- a/MTC_Adapter/MTC_Adapter/Resources/CMS/OSAI.xml +++ b/MTC_Adapter/MTC_Adapter/Resources/CMS/OSAI.xml @@ -36,20 +36,6 @@ - - - Counter_001 - - - - Counter_002 - - - - Counter_003 - - - SlittaMagazzino_01 diff --git a/MTC_Adapter/MTC_Adapter/Resources/CMS/SIEMENS.xml b/MTC_Adapter/MTC_Adapter/Resources/CMS/SIEMENS.xml index 15360b3..056e4e8 100644 --- a/MTC_Adapter/MTC_Adapter/Resources/CMS/SIEMENS.xml +++ b/MTC_Adapter/MTC_Adapter/Resources/CMS/SIEMENS.xml @@ -36,20 +36,6 @@ - - - Counter_001 - - - - Counter_002 - - - - Counter_003 - - - SlittaMagazzino_01 diff --git a/MTC_Adapter/MTC_Adapter/SetupAdapter.Designer.cs b/MTC_Adapter/MTC_Adapter/SetupAdapter.Designer.cs index 8ad46e4..31e0f00 100644 --- a/MTC_Adapter/MTC_Adapter/SetupAdapter.Designer.cs +++ b/MTC_Adapter/MTC_Adapter/SetupAdapter.Designer.cs @@ -61,8 +61,6 @@ this.nProtMag = new System.Windows.Forms.TextBox(); this.label15 = new System.Windows.Forms.Label(); this.nSlittaMag = new System.Windows.Forms.TextBox(); - this.label16 = new System.Windows.Forms.Label(); - this.nContatori = new System.Windows.Forms.TextBox(); this.SuspendLayout(); // // txtAdapter @@ -378,32 +376,11 @@ this.nSlittaMag.TabIndex = 28; this.nSlittaMag.Text = "0"; // - // label16 - // - this.label16.AutoSize = true; - this.label16.Location = new System.Drawing.Point(33, 142); - this.label16.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label16.Name = "label16"; - this.label16.Size = new System.Drawing.Size(83, 17); - this.label16.TabIndex = 33; - this.label16.Text = "n° Contatori"; - // - // nContatori - // - this.nContatori.Location = new System.Drawing.Point(121, 138); - this.nContatori.Margin = new System.Windows.Forms.Padding(4); - this.nContatori.Name = "nContatori"; - this.nContatori.Size = new System.Drawing.Size(43, 22); - this.nContatori.TabIndex = 32; - this.nContatori.Text = "1"; - // // SetupAdapter // this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(923, 636); - this.Controls.Add(this.label16); - this.Controls.Add(this.nContatori); this.Controls.Add(this.label14); this.Controls.Add(this.nProtMag); this.Controls.Add(this.label15); @@ -479,7 +456,5 @@ private System.Windows.Forms.TextBox nProtMag; private System.Windows.Forms.Label label15; private System.Windows.Forms.TextBox nSlittaMag; - private System.Windows.Forms.Label label16; - private System.Windows.Forms.TextBox nContatori; } } \ No newline at end of file diff --git a/MTC_Adapter/MTC_Adapter/SetupAdapter.cs b/MTC_Adapter/MTC_Adapter/SetupAdapter.cs index f047861..f361855 100644 --- a/MTC_Adapter/MTC_Adapter/SetupAdapter.cs +++ b/MTC_Adapter/MTC_Adapter/SetupAdapter.cs @@ -195,24 +195,6 @@ namespace MTC_Adapter nAssi.Text = value.ToString(); } } - protected int numCounters - { - get - { - int answ = 0; - try - { - answ = Convert.ToInt32(nContatori.Text); - } - catch - { } - return answ; - } - set - { - nContatori.Text = value.ToString(); - } - } protected int numMemArea { get @@ -375,23 +357,7 @@ namespace MTC_Adapter // salvo oggetto c.Lubro = Lubro; } - - // Contatori - if (numCounters > 0) - { - // creo elementi richiesti - element[] Counters = new element[numCounters]; - // ciclo x istanziare! - for (int i = 0; i < numCounters; i++) - { - // inizializzo list x parametri - listaDR = new List>(); - Counters[i] = new element(string.Format("Counter_{0:000}", i + 1), listaDR); - } - // salvo oggetto - c.Counters = Counters; - } - + // SlittaMag if (numSlittaMag > 0) { @@ -574,7 +540,6 @@ namespace MTC_Adapter numAxis = objLoad.nAxis; numMemArea = objLoad.nMemArea; numSlittaMag = objLoad.nSlittaMag; - numCounters = objLoad.nCounters; numProtMag = objLoad.nProtMag; // salvo assi correnti... oAxisLoad = objLoad.Axis; diff --git a/MaterialeSetup/OSAI/Appunti_Variabili_2017.07.txt b/MaterialeSetup/OSAI/Appunti_Variabili_2017.07.txt new file mode 100644 index 0000000..00d9a6f --- /dev/null +++ b/MaterialeSetup/OSAI/Appunti_Variabili_2017.07.txt @@ -0,0 +1,19 @@ +------------------------------------------------------------------------ +Variabile | STATUS | CONTATORE | Altro (Var Analog) | Qta +------------------------------------------------------------------------ +Rulliere X X Velocità 6 +Mot. Phase X - Velocità + Posiz 10 +Cuffia X X Velocità + Posiz 1 +Magazz UT X X Posizione 2 +Spalliere X X - 6 +Pinza Misur X X - 1 +Pinza Mandr X X - 2 +Slitta tenuta vetro X X - 1 +Mag forat post X X - 3 +Ravvivatore Presett X X - 1 +Slitta Ravvivatore X X - 2 +Fermo Riferimento X X - 2 +Piolo X X - 1 +Ventose (slitta) X X - 10 +Misuratori Pneum X X Posizione 4 +Mis.inverter (alt) - - Posizione 4