921 Commits

Author SHA1 Message Date
Samuele Locatelli 7e7c7e7c96 test update proj file 2022-08-06 12:47:53 +02:00
Samuele Locatelli 745039875f update yaml 2022-08-06 12:40:49 +02:00
Samuele Locatelli 832164918f refresh packages 2022-08-06 12:36:20 +02:00
Samuele Locatelli e053e6a646 aggiunti spazi 2022-08-06 12:21:57 +02:00
Samuele Locatelli 31ab6d44dd cambio sintassi parametri compilazione 2022-08-06 11:37:16 +02:00
Samuele Locatelli d54916172e altra sintassi ancora 2022-08-04 19:22:09 +02:00
Samuele Locatelli 1fdc37c7f5 ancora test sintassi 2022-08-04 19:17:29 +02:00
Samuele Locatelli 127573ace2 ancora sintassi differente 2022-08-04 19:16:30 +02:00
Samuele Locatelli 05d4378920 altra sintassi 2022-08-04 19:15:38 +02:00
Samuele Locatelli bffc0474f0 cpu x86.. 2022-08-04 19:14:11 +02:00
Samuele Locatelli a4b1b2e521 sintassi '' 2022-08-04 19:12:19 +02:00
Samuele Locatelli 9121ff2a24 altra sintassi "" 2022-08-04 19:11:02 +02:00
Samuele Locatelli f60a58a64f altro test typo costanti 2022-08-04 19:09:32 +02:00
Samuele Locatelli 83ddfde3e7 prova cambio sintassi def costanti 2022-08-04 19:07:05 +02:00
Samuele Locatelli a47c0e644f modifica yaml 2022-08-03 17:22:03 +02:00
Samuele Locatelli 68df530010 Typo fix 2022-08-03 17:14:52 +02:00
Samuele Locatelli 79c0691eb3 cleanup cartella packages 2022-08-03 17:11:49 +02:00
Samuele Locatelli 73750ddb1d ignora ripristino pacchetti 2022-08-03 17:10:45 +02:00
Samuele Locatelli 5941fd492a Fix riferimenti librerie 2022-08-03 17:07:16 +02:00
Samuele Locatelli f9a6298603 cleanup ref slowcheetach 2022-08-03 16:57:25 +02:00
Samuele Locatelli dcf8735baa rimozione progetto MySqlDB (old) 2022-08-03 16:54:19 +02:00
Samuele Locatelli 052d93d731 fix typo anyCPU --> x86 2022-08-03 16:51:46 +02:00
Samuele Locatelli bf3caa2aee fix path versGen 2022-08-03 16:49:00 +02:00
Samuele Locatelli a0cba98d34 Merge branch 'develop' of https://gitlab.steamware.net/steamware/CMS-MTConn into develop 2022-08-03 16:41:36 +02:00
Samuele Locatelli 7f97f7c83b fix area nuget non impiegata x nuget pack 2022-08-03 16:41:34 +02:00
Samuele Locatelli 133041d030 bozza yaml iniziale 2022-08-03 16:38:57 +02:00
marco.salvi 6ee6e66492 fix librerie 2022-04-13 17:20:45 +02:00
Samuele Locatelli 5731041fd3 Merge tag 'CountersUInt2Int' into develop
Fix UInt --> Int come per richiesta CMS N.Carminati
2021-12-09 09:47:37 +01:00
Samuele Locatelli eda93dae9c Merge branch 'release/CountersUInt2Int' 2021-12-09 09:47:25 +01:00
Nicola 1e4e789af6 Merge branch 'develop' of https://gitlab.steamware.net/steamware/CMS-MTConn into develop 2021-12-09 08:55:54 +01:00
Nicola 857426d0c1 Counters: UNIT to INT 2021-12-09 08:54:43 +01:00
Samuele E. Locatelli 372a8547d6 fix generazione file SOUR map ordinati 2021-07-23 12:22:43 +02:00
Samuele E. Locatelli 9c10a0c2a5 Riduzione verbosity in compilazione 2021-07-22 18:43:47 +02:00
Samuele E. Locatelli 3213b0049a update gitSpread + refresh 2021-07-22 18:18:23 +02:00
Samuele E. Locatelli 9e5df29acb Merge branch 'develop' 2021-07-22 18:11:03 +02:00
Samuele E. Locatelli 2c2648d225 git spread aggiunto 2021-07-22 18:11:00 +02:00
Samuele E. Locatelli 4599307148 refresh 2021-07-22 17:49:37 +02:00
Samuele E. Locatelli 0f70ae834c fix setup memoria nuove aree stringa 2021-07-22 17:49:31 +02:00
Samuele E. Locatelli e85360810e update NLog 2021-07-22 17:49:03 +02:00
Samuele E. Locatelli b7f3fa236e Aggiunta gestione dati stringa x ESA 2021-07-22 14:31:03 +02:00
Samuele E. Locatelli c315266041 Inizio modifica x lettura stringhe (come char array) 2021-07-17 13:04:58 +02:00
Nicola 2231e1e1c4 FIx analog values (float) 2021-06-17 08:56:19 +02:00
Nicola 520d6c6e0a Merge remote-tracking branch 'origin/develop' into develop 2021-06-09 16:26:09 +02:00
Nicola 5f38bf37ef Added repetitions of UOP 2021-06-09 16:21:51 +02:00
Samuele E. Locatelli ff86e73840 Merge remote-tracking branch 'gitlab.steamware/develop' 2021-02-16 17:01:44 +01:00
Samuele E. Locatelli 1fe80bab00 UPDATE VERS NUMBER 2021-02-16 16:57:44 +01:00
Nicola f9d78bed4b Fix Osai Virtual Axes 2021-02-16 16:53:48 +01:00
Nicola d06e7b16f8 Merge branch 'master' into develop 2021-02-15 16:25:48 +01:00
Nicola 5b256231d8 Fix Osai Axes Reading 2021-02-15 16:23:36 +01:00
Samuele E. Locatelli e6c8cfb386 UPdate globale pacchetti NuGet 2020-07-17 19:31:13 +02:00
Samuele Locatelli 625191ad20 Merge branch 'develop' into KVARA 2020-06-22 18:15:31 +02:00
Samuele Locatelli e25ed31485 ESA: fix status calculus contention 2020-06-22 18:15:15 +02:00
Samuele Locatelli 1f765202ae Merge branch 'FANUC' into KVARA 2020-06-05 09:52:50 +02:00
Samuele Locatelli 11d4b8849f Final datamodel + statuslist x ESA 2020-06-05 09:52:33 +02:00
Samuele Locatelli 544a34703e Fix datamodel typo 2020-06-04 16:41:42 +02:00
Samuele Locatelli b033de593c Merge branch 'develop' into KVARA 2020-05-29 18:35:40 +02:00
Samuele Locatelli b4f3af65ca vers 482 x allarmi esa multilang 2020-05-29 18:35:28 +02:00
Samuele Locatelli 5279aa74ba Fix ESA multilang alarms file 2020-05-29 18:34:41 +02:00
Samuele Locatelli 4290d02de4 Merge branch 'master' into KVARA 2020-05-29 17:11:38 +02:00
Samuele Locatelli cfc5644164 fix G1 x override 2020-05-29 17:11:27 +02:00
Samuele Locatelli d244bb28d5 vers 480 fix modalità JOG 2020-05-29 17:00:20 +02:00
Samuele Locatelli 7385e71378 Merge branch 'develop' into KVARA 2020-05-29 16:33:54 +02:00
Samuele Locatelli 3d058de5ee Fix allarmi + fix feed in JOG 2020-05-29 16:33:37 +02:00
Samuele Locatelli f9dd5ba328 Merge branch 'KVARA' into develop 2020-05-29 14:24:51 +02:00
Samuele Locatelli bba49cb503 Vers 478: fix speed/rate assi singoli ESA 2020-05-29 14:24:26 +02:00
Samuele Locatelli 85cc440597 Merge branch 'develop' into KVARA 2020-05-29 12:30:45 +02:00
Samuele Locatelli 492df82954 New version: fix update alarm present + typo 2020-05-29 12:29:50 +02:00
Samuele Locatelli 804393842a Merge branch 'develop' into KVARA 2020-05-25 18:36:10 +02:00
Samuele Locatelli 9f6e71689e Fix gerstione ESA x Overrides 2020-05-25 18:35:58 +02:00
Samuele Locatelli 3c43df4342 Merge branch 'KVARA' into develop 2020-05-25 16:59:18 +02:00
Samuele Locatelli 426e2f5e00 new version 2020-05-25 16:59:11 +02:00
Samuele Locatelli f9f8c785fc Fix errore sovrascrittura speed con feed x ESA 2020-05-25 16:51:32 +02:00
Samuele E. Locatelli 5047b13617 Merge branch 'KVARA' into develop 2020-05-14 15:19:01 +02:00
Samuele E. Locatelli 8c76a31361 refresh path cancellazione pacchetti 2020-05-14 15:17:15 +02:00
Samuele Locatelli 5ab52da602 Fix pulizia packages 2020-05-14 15:10:20 +02:00
Samuele Locatelli 20a8913775 svuotamento preliminare nuget 2020-05-14 12:12:36 +02:00
Samuele Locatelli 23b50500d8 Merge branch 'KVARA' into develop 2020-05-14 09:51:54 +02:00
Samuele Locatelli 11d82317e2 update definizione costanti compilazione 2020-05-14 09:50:48 +02:00
Samuele Locatelli c13bbef8c7 Ancora pulizia + consolidamento nuget 2020-05-14 08:42:55 +02:00
Samuele Locatelli ebf3cb9fe8 Update nuget + fix riferimento SloCheetah x ADB 2020-05-14 08:36:48 +02:00
Samuele Locatelli 35d94b32a2 update path pkg SlowCheetah + dll 2020-05-14 08:21:39 +02:00
Samuele Locatelli 7548180d27 Merge branch 'KVARA' into develop 2020-05-13 19:08:21 +02:00
Samuele Locatelli d70aaec4b3 update vari nuget packages + refresh 2020-05-13 19:04:19 +02:00
Samuele Locatelli ec14499469 update versione MSBuild a 16... 2020-05-13 18:52:20 +02:00
Samuele Locatelli 8269d837d2 Update last version slowcheetah 2020-05-13 18:49:57 +02:00
Samuele Locatelli ec01e38048 provo fix pacchetto slow cheetah 2020-05-13 18:43:37 +02:00
Samuele E. Locatelli b86a71a4e6 Merge branch 'KVARA' of http://gitlab.steamware.net/steamware/CMS-MTConn into KVARA 2020-05-13 18:38:52 +02:00
Samuele E. Locatelli a3ea6b348b semplificato restore nuget 2020-05-13 18:38:03 +02:00
Samuele Locatelli bb656b575f tolto riferimento MTC SDK 2020-05-13 18:37:08 +02:00
Samuele E. Locatelli 7943f99044 fix nuget update x repo steamware 2020-05-13 18:31:10 +02:00
Samuele E. Locatelli a3a0ef906f fix compilazione KVARA... 2020-05-13 18:27:17 +02:00
Samuele Locatelli dbac3014c0 Merge branch 'KVARA' into develop 2020-05-13 18:23:40 +02:00
Samuele Locatelli 9e4a70b556 Fix gestione repetitions! pronto x CD/CI CMS-ESA 2020-05-13 18:23:05 +02:00
Samuele Locatelli ec4e651188 Vix vesrione e seriale da property 2020-05-13 18:22:29 +02:00
Samuele Locatelli 889cdf6218 inizio update 2020-05-13 16:40:13 +02:00
Samuele Locatelli 92b8829451 fix datamodels 2020-05-13 16:39:51 +02:00
Samuele Locatelli ee0d69d831 fix direzione e override 2020-05-13 16:39:38 +02:00
Samuele Locatelli 249e2845dd Merge branch 'KVARA' into develop 2020-04-30 19:14:07 +02:00
Samuele Locatelli 968752288d vers x rilascio con XML corretto 2020-04-30 19:13:58 +02:00
Samuele Locatelli e127e0ab67 Fix lettura analog e status!!! 2020-04-30 19:13:45 +02:00
Samuele Locatelli 93b4c0f039 modifica letture KVARA x dati media frequenza 2020-04-30 17:37:41 +02:00
Samuele Locatelli 726f7275a3 Integrazione gestione fattore di scala 2020-04-30 17:37:29 +02:00
Samuele Locatelli 768f8fd48c Fix conf allarmi KVARA 2020-04-30 17:37:15 +02:00
Samuele Locatelli 6c749a8d03 Modifica counter con fattore scala 2020-04-30 17:37:04 +02:00
Samuele Locatelli b0390d481f Merge branch 'KVARA' into develop 2020-04-29 12:30:24 +02:00
Samuele Locatelli 4e1ec9bed5 update finale x watchdog: ok in beta testing! 2020-04-29 12:29:19 +02:00
Samuele Locatelli 619b72ed5b Primo test XML OPC-UA 2020-04-29 11:52:27 +02:00
Samuele Locatelli 15346e6c62 pulizia files inutilizzati 2020-04-29 11:13:09 +02:00
Samuele Locatelli 5236b03e4a Compilato files, inizio test OPC-UA 2020-04-29 11:12:59 +02:00
Samuele Locatelli 6e808a5d6c Inizio modifiche x OPC-UA 2020-04-29 10:35:32 +02:00
Samuele Locatelli 8b4b0c6b1b Merge branch 'KVARA' into develop 2020-04-28 18:36:06 +02:00
Samuele Locatelli 14adc402a1 iniziata sistemazione file conf allarmi (sistemare) 2020-04-28 18:31:38 +02:00
Samuele Locatelli c18bebb22b conf file ESA x conters, status, analog 2020-04-28 18:14:34 +02:00
Samuele Locatelli 4610077f9b Fix gestioen duplicati codici G... 2020-04-28 18:04:09 +02:00
Samuele Locatelli a59d560ca9 Fix gestioen codici G di ESA 2020-04-28 17:49:22 +02:00
Samuele Locatelli 019320df3d Fix gestioen code MST 2020-04-28 17:22:03 +02:00
Samuele Locatelli d356015120 Merge branch 'KVARA' into develop 2020-04-27 19:04:06 +02:00
Samuele Locatelli 688d6a49bf Fix errori ed eccezioni (manca un fix su ack DW0 x allarmi...) 2020-04-27 19:03:51 +02:00
Samuele Locatelli 13f3057a7e Aggiunto dati UnOp, ora generzione EXE 2020-04-27 18:28:25 +02:00
Samuele Locatelli d0232020ae correzioen con veto gestione assi inutilizzati 2020-04-27 18:25:56 +02:00
Samuele Locatelli 6dc9f31d53 Fix recupero assi quando sono "saltati" 2020-04-27 18:03:08 +02:00
Samuele Locatelli 94e65aeef6 lettura assi e feed&speed da nuova dll ESA 2020-04-27 17:55:41 +02:00
Samuele Locatelli e658c4cac6 Ok watchdog... 2020-04-21 19:22:26 +02:00
Samuele Locatelli fc627e0bba Ok con scrittura ACK x MST 2020-04-21 19:03:15 +02:00
Samuele Locatelli d5cb083fb8 Gestione corretta lettura area MST da testare 2020-04-21 18:27:04 +02:00
Samuele Locatelli ad98729a52 Merge branch 'develop' into KVARA 2020-04-21 16:13:14 +02:00
Samuele Locatelli 0128b08a76 Update componenti MySql 2020-04-21 16:12:26 +02:00
Samuele Locatelli 1da9582a10 Update package Redis 2020-04-21 16:06:53 +02:00
Samuele Locatelli 0916af645d Update dotNetFramework x tutto alla 4.6.2 2020-04-21 16:04:36 +02:00
Samuele Locatelli 4f38c61787 Update framework a 4.6.1 e nuget vari (Redis...) 2020-04-21 12:38:13 +02:00
Samuele Locatelli 0a3cea456d Update nuget packages vari 2020-04-21 12:31:23 +02:00
Samuele Locatelli 836292ba67 Rimesso byte e word in lettura 2020-04-20 19:36:32 +02:00
Samuele Locatelli 97082a036f Merge branch 'develop' into KVARA 2020-04-20 18:34:04 +02:00
Samuele Locatelli 8a72f692d5 Correzione lettura aree memoria!!! OK test 1h!!! 2020-04-20 18:24:55 +02:00
Samuele Locatelli 5e7f54ec5e Commentata parte non utilizzata di lettura e testato SOLO con DWord (ma sembra ko) 2020-04-17 19:53:36 +02:00
Samuele Locatelli 01c3a14a0c Alcuni test e appunti ma NON LEGGE (err4101) 2020-04-17 19:50:07 +02:00
Samuele Locatelli e0060a4051 Eliminato tutti gli errori (ma NON sembra leggere) 2020-04-17 19:08:04 +02:00
Samuele Locatelli 5ebbd1280a fix preliminare gestione copia vettore allarmi 2020-04-17 18:45:26 +02:00
Samuele Locatelli 56fe715c08 Fixed file config + slowcheetah 2020-04-17 18:44:36 +02:00
Samuele Locatelli 3bd4f2ba6f Fix e correzioni: COMPILA!!! 2020-04-17 18:08:40 +02:00
Samuele Locatelli bb82c96579 Eliminate aree SM / MS non usate (ack e strobe) 2020-04-17 16:08:31 +02:00
Samuele Locatelli a35cb78763 Merge branch 'develop' into KVARA 2020-04-15 19:07:46 +02:00
Samuele Locatelli e9b08f84d1 Fix conf e start oggetti 2020-04-15 19:06:06 +02:00
Samuele Locatelli 1003d3087c Configurata gestione lettura DWord ESA 2020-04-15 18:52:22 +02:00
Samuele Locatelli 016b8b0c54 ok compilazione ESA... 2020-04-15 12:44:51 +02:00
Samuele Locatelli be0125732f Merge branch 'develop' into KVARA 2020-04-14 18:54:47 +02:00
Samuele Locatelli 6fa0a0a271 appuntate aree wird/dword e email... 2020-04-14 18:53:27 +02:00
Samuele Locatelli fcea93e6cf Fix gestione byte da memoria ESA 2020-04-14 18:12:02 +02:00
Samuele E. Locatelli 47c6591d04 aggiunto video x update PLC 2020-04-07 17:39:35 +02:00
Samuele Locatelli ea795b377a Update adapter... 2020-04-06 19:46:01 +02:00
Samuele Locatelli e3039c13be Merge branch 'develop' into KVARA 2020-04-06 19:22:11 +02:00
Samuele Locatelli 1e592b4294 Finito revisione ESA x CMS (aree memoria) 2020-04-06 19:21:46 +02:00
Samuele Locatelli 572822ac87 Continuo conf memoria ESA 2020-04-06 13:24:45 +02:00
Samuele Locatelli 7ff8974a45 typo preliminari 2020-04-06 10:34:31 +02:00
Samuele Locatelli 1933481e8b fix target setup CMS 2020-04-06 10:33:52 +02:00
Samuele Locatelli e7e61aa05d fix prototipi files ESA CMS 2020-04-06 10:33:30 +02:00
Samuele Locatelli ef377acc51 Merge branch 'develop' into KVARA 2020-04-04 09:18:38 +02:00
Samuele Locatelli 1011af9988 refresh generale 2020-04-04 09:18:19 +02:00
Samuele Locatelli 83cd1e3cdc ancora update: inizio fix setupTgt.bat 2020-04-04 09:18:06 +02:00
Samuele Locatelli be56c057f9 differenziato classi esa x KVARA di SCM e di CMS 2020-04-04 09:17:37 +02:00
Samuele Locatelli adc8e4cc82 Aggiunta iniziale resources x ESA CMS 2020-04-04 09:16:51 +02:00
Samuele Locatelli dd36907c66 Aggiunta progetto ESA x CMS 2020-04-04 09:15:46 +02:00
Samuele Locatelli 3e25af49ab Fix project conf 2020-04-03 18:28:01 +02:00
Samuele Locatelli 601611981c Renaming x Esa SCM / CMS 2020-04-03 18:14:25 +02:00
Samuele Locatelli 3fc577fe20 Merge branch 'develop' into KVARA 2020-04-03 17:51:03 +02:00
Samuele Locatelli 47094d9947 nuova vers: creazione nuovo adapter ESA CMS 2020-04-03 17:50:43 +02:00
Samuele Locatelli 029642fcac Completato refactor Adapters 2020-04-03 17:46:20 +02:00
Samuele Locatelli 9afcbf5690 Cambio namespaces x adapters CMS 2020-04-03 17:40:39 +02:00
Samuele Locatelli 7ca832f4c1 Merge branch 'develop' into KVARA 2020-04-03 17:29:49 +02:00
Samuele Locatelli 01fbf2d7d8 Cambio naming x adapter ESA di SCM (da replicare) 2020-04-03 17:29:00 +02:00
Samuele Locatelli bb7111439d Nuova versione: inizio refactor codice 2020-04-03 17:28:26 +02:00
Samuele Locatelli 5c2dea5044 Merge branch 'develop' 2020-03-27 12:26:30 +01:00
Samuele Locatelli 71c03d54d6 Aggiunto video x impiego ESA x CMS 2020-03-27 12:24:54 +01:00
Samuele E. Locatelli 7701642a94 Fix simulazione DEMO x alimentare AGENT MTC 2019-11-23 20:32:38 +01:00
Samuele E. Locatelli 276d9f625b Update vers 1910.459 2019-10-01 15:56:38 +02:00
Samuele E. Locatelli 1619aee2c6 Recuperato stash con modifice x AnalogValues INT e non UINT x OSAI 2019-10-01 15:56:12 +02:00
Samuele E. Locatelli bc93fce65c Nuova vers x OSAI 2019-09-30 14:45:22 +02:00
Samuele E. Locatelli 3d6be1df92 FIX DW01 x sapere lo stato LAV/ASS del processo 2019-09-30 14:43:33 +02:00
Samuele E. Locatelli 77fe32b24c Fix reset parentProc assi OSAI 2019-09-30 14:43:16 +02:00
Samuele E. Locatelli b2c70b3c43 Fix OSAI x assi con "buchi" 2019-09-30 12:01:03 +02:00
Samuele E. Locatelli d6c19c1608 sostituzione tab --> spazi 2019-09-25 17:47:27 +02:00
Samuele E. Locatelli e29b670498 Update x override FANUC... 2019-09-20 17:08:41 +02:00
Samuele E. Locatelli 628635c62a Refresh x OSAI (try/catch) 2019-09-20 16:17:12 +02:00
Samuele E. Locatelli 1b3ae79867 aggiunta override feed e rapid x path (SOLO 1...) 2019-09-20 16:02:44 +02:00
Samuele E. Locatelli ea2982714e Ancora NULL --> unavailable 2019-09-20 16:02:01 +02:00
Samuele E. Locatelli 804c015f8b Cambio NULL --> UNAVAILABLE 2019-09-20 16:01:33 +02:00
Samuele E. Locatelli 7219986055 Nuova versione! 2019-09-13 17:23:21 +02:00
Samuele E. Locatelli c0a22df80c ancora pulizia 2019-09-13 17:23:07 +02:00
Samuele E. Locatelli 82bdb17474 pulizia aree commentate 2019-09-13 17:22:50 +02:00
Samuele E. Locatelli 6f2199c3c2 fix typo da nascondere... 2019-09-13 17:12:57 +02:00
Samuele E. Locatelli 893fbc130c Merge remote-tracking branch 'gogs.steamware.net/develop' into develop 2019-09-13 17:02:49 +02:00
Samuele E. Locatelli 7b0daf4459 typo 2019-09-13 17:02:47 +02:00
Samuele E. Locatelli b650a0e7ff fix assi lineari/ritazionali SOUR 2019-09-13 17:02:23 +02:00
Samuele E. Locatelli eb2c04097a FIX FINALE! 2019-09-13 15:20:28 +02:00
Samuele E. Locatelli 45012d7e76 Fix gestione RTV 2019-09-13 15:06:53 +02:00
Samuele E. Locatelli db04ce25c7 altro modod di gestire... 2019-09-13 15:01:46 +02:00
Samuele E. Locatelli 974c16ff54 Fix gestione dictionary RTVCounter 2019-09-13 14:06:53 +02:00
Samuele E. Locatelli c7055098ed fix x testing 2019-09-13 14:02:47 +02:00
Samuele E. Locatelli e40e500c70 Generalizzato variabili contatori RTV 2019-09-13 12:43:31 +02:00
Samuele E. Locatelli a70780e627 Aggiunte variabili RTV 2019-09-13 12:40:16 +02:00
Samuele E. Locatelli ae57be0fad Aggiunte un pò di decodifiche 2019-09-13 10:50:15 +02:00
Samuele E. Locatelli 55f892aa1c update versione 2019-09-13 09:49:33 +02:00
Samuele E. Locatelli f78b01059d Merge remote-tracking branch 'gogs.steamware.net/develop' into develop 2019-09-13 09:48:50 +02:00
Samuele E. Locatelli 2196a29b9a Ulteriori fix Osai post test con Marco negri 2019-09-13 09:48:44 +02:00
Samuele E. Locatelli ca0d4c8160 fix x tracciare meglio errori (uno dovuto ancora a PLC mappato sbagliato) 2019-08-30 15:09:16 +02:00
Samuele E. Locatelli 9237ab8e0d Fix FANUC x punti aperti MST e feedrate doppio processo 2019-08-30 14:25:35 +02:00
Samuele E. Locatelli 9fbd875e51 Update FANUC: ripristinato ack codice MST 2019-08-30 13:43:20 +02:00
Samuele E. Locatelli 7774a64b17 Fix fattore decimale feed 2019-08-30 12:13:14 +02:00
Samuele E. Locatelli 45260c3b40 Fix numero inversioni 2019-08-30 11:21:27 +02:00
Samuele E. Locatelli 0dcbdd3623 Update x gestioen valori mancanti in SCMA in OPC-UA (PROC_SEL e currProg 2019-08-28 09:44:11 +02:00
Samuele E. Locatelli 895ffef59e Fix invio slack e non email 2019-08-26 10:45:07 +02:00
Samuele E. Locatelli 3df259f346 Aggiunta log esteso x SCMA FANUC e eccezioen segnalata da Nicola 2019-08-26 10:37:17 +02:00
Samuele E. Locatelli 7423272a21 Sistemati commenti e nuova versioen x gestione assi e path FANUC x COMBI 2019-08-09 14:26:43 +02:00
Samuele E. Locatelli e94e7a6cb5 funziona e testato in prod, TRANNE lettura parametri conf che cablo 2019-08-09 12:23:39 +02:00
Samuele E. Locatelli 285191d4b5 bozza gestione FANUC 2019-08-09 07:45:34 +02:00
Samuele E. Locatelli 56b6333428 update x lettura aprametri... 2019-08-07 17:00:11 +02:00
Samuele E. Locatelli cd153038fd refresh funzioni varie... 2019-08-07 16:14:32 +02:00
Samuele E. Locatelli a0afcf154e Update note fanuc x gestione parametri / bit... 2019-08-07 16:14:22 +02:00
Samuele E. Locatelli 0c36f4e66f modifiche in prod con ADIMAR 2019-08-07 11:59:02 +02:00
Samuele E. Locatelli e47f53bc2e update vers number (2.2.1908.435) 2019-08-05 14:23:29 +02:00
Samuele E. Locatelli aff414312b Aggiunta nome asse + processo master (da testare!!!) 2019-08-05 14:22:29 +02:00
Samuele E. Locatelli 2a836744e8 fix naming/typo (i --> iPath) 2019-08-05 12:52:06 +02:00
Samuele E. Locatelli ce5f94c069 Inizio a sistemare recupero dati assi da PATH... 2019-08-05 12:51:21 +02:00
Samuele E. Locatelli ee9e0702a2 Update recupero dati x path: codici G e posizione punta utensile 2019-08-05 12:45:10 +02:00
Samuele E. Locatelli 5c594ad79f note x classe FANUC vb 2019-08-05 11:55:52 +02:00
Samuele E. Locatelli beb16f130a typo su commenti 2019-08-05 11:55:27 +02:00
Samuele E. Locatelli bcf71ecf73 FANUC: Ulteriore pulizia usanto ProcessStatus 2019-08-03 12:30:52 +02:00
Samuele E. Locatelli 9bf05c538c Lettura override... 2019-08-03 11:28:49 +02:00
Samuele E. Locatelli 562b5d50cd Completo fix process strobe x FANUC 2019-08-03 10:57:22 +02:00
Samuele E. Locatelli d5bf08a90d Inizio processing dati strobe x path... 2019-08-03 09:45:59 +02:00
Samuele E. Locatelli 3e0a4d2e62 Update note x contapezzi + fix datamodel test 2019-08-01 06:07:41 +02:00
Samuele E. Locatelli d130ae5ed4 aggiunta validatore datamodel + esempio x controllo contapezzi 2019-08-01 05:41:52 +02:00
Samuele E. Locatelli f635671718 revisione progetto con target pre coilazione x nuove icone... 2019-08-01 05:37:51 +02:00
Samuele E. Locatelli 440645d870 inserite nuove icone SCMA in progetto 2019-08-01 05:37:34 +02:00
Samuele E. Locatelli 25f0f69718 nuova versione 429 2019-07-22 18:45:31 +02:00
Samuele E. Locatelli 9e5168d677 FIX assi rotazionali CW / CCW 2019-07-22 18:44:52 +02:00
Samuele E. Locatelli d00f8f4678 FIX errore init varaibili PROC quando non presenti 2019-07-22 18:28:00 +02:00
Samuele E. Locatelli b4d0ca1943 FIX proc sel che mostro solo se >1 processo oppure MTC.. 2019-07-22 18:20:29 +02:00
Samuele E. Locatelli fa047f0c8a Fix lubro, fix Slitta tastatore 2019-07-22 18:09:04 +02:00
Samuele E. Locatelli 14abfa2a99 aggiunta conv LUBRO status 2019-07-22 17:46:00 +02:00
Samuele E. Locatelli 6862520e94 fix finale UnOp x Distanza (KRev) + Active Time 2019-07-20 13:03:51 +02:00
Samuele E. Locatelli 8e61255cde rimesso sia AccTime che KRev x mandrino... 2019-07-20 12:33:30 +02:00
Samuele E. Locatelli 5a4e7cb592 fix idx x analogiche 2019-07-20 12:18:09 +02:00
Samuele E. Locatelli a344948a42 refactoring getOrigName... test x analogiche 2019-07-20 12:10:14 +02:00
Samuele E. Locatelli b13b5a3ddf fix UnOp-KRev, manca qulahce refactor e finito... 2019-07-20 11:56:31 +02:00
Samuele E. Locatelli 365b6e1a5c fix variabili ST, ricalcoli nomi, tab conversione... 2019-07-20 11:24:13 +02:00
Samuele E. Locatelli bc4aaf9e78 fix ricerca indice CODIFICATO x StatusData (da testare) 2019-07-20 10:00:05 +02:00
Samuele E. Locatelli 0faa466ee8 typo 2019-07-20 09:54:32 +02:00
Samuele E. Locatelli ece150ab56 Sistemato FIXME x TIPO ASSI!!! 2019-07-19 20:52:55 +02:00
Samuele E. Locatelli 3f6baafd36 prima sistemazione FIXME... maxOverride 2019-07-19 19:19:01 +02:00
Samuele E. Locatelli b647d93243 fix lubro, altri FIXME da controllare... 2019-07-19 16:21:49 +02:00
Samuele E. Locatelli 5d36b1966d da controllare recupero TIPO ASSE LINEAR/ROTATIONAL che NON VA... hard coded linear!! FIXME 2019-07-19 15:20:30 +02:00
Samuele E. Locatelli 9f07afe796 Fix assi x inversion e distsance 2019-07-19 14:55:23 +02:00
Samuele E. Locatelli dd22ad7615 Fix lettura dati assi SIEMENS 2019-07-19 12:48:36 +02:00
Samuele E. Locatelli b924967ad9 fix vari x CNC processe e axes 2019-07-19 12:21:28 +02:00
Samuele E. Locatelli 55333ce11e inizio nuova vers 411 2019-07-19 11:07:04 +02:00
Samuele E. Locatelli 4ae259ffa3 UPdate packages + fix vari x variabili SIEMENS 2019-07-19 11:03:56 +02:00
Samuele E. Locatelli 8bdfce05f3 fix naming true/false x emergency e power... 2019-07-19 09:32:31 +02:00
Samuele E. Locatelli e57526ae08 Fix di tutte le conversioni! 2019-07-18 18:52:39 +02:00
Samuele E. Locatelli e6f922c3f7 fix vettore traduzioni a ritroso... 2019-07-18 18:49:24 +02:00
Samuele E. Locatelli 51de025553 Vettore conversione inversa traduzioni e altra modalità check... 2019-07-18 18:43:35 +02:00
Samuele E. Locatelli b6f062def6 Fix controllo variabili maint x campi ESPLICITI (da validare / girare) 2019-07-18 18:29:26 +02:00
Samuele E. Locatelli 115dedfc9a Fix conf DataModel x AccTime 2019-07-18 18:04:21 +02:00
Samuele E. Locatelli e3b41df917 Fix emergenze 2019-07-18 17:57:49 +02:00
Samuele E. Locatelli 81cd1e9fe7 Fix datamodel x MasterId 2019-07-18 17:24:02 +02:00
Samuele E. Locatelli 3284308eaa typo fix x test 2019-07-18 16:44:50 +02:00
Samuele E. Locatelli d39c359b2e Integrazioen DataModel di Nicola + fix Machine... 2019-07-18 16:44:07 +02:00
Samuele E. Locatelli 55eb53e8df Nuova versione... 2019-07-17 19:43:54 +02:00
Samuele E. Locatelli 3c4aa781a7 Refresh post test OSAI... OK!!! 2019-07-17 19:43:44 +02:00
Samuele E. Locatelli 64a1452c36 Refresh vari... 2019-07-17 18:25:30 +02:00
Samuele E. Locatelli e277568dfc Abbozzato gestione StatusList.map 2019-07-16 22:31:58 +02:00
Samuele E. Locatelli fc778074ce Completato replace campi "cablati"... 2019-07-16 19:47:42 +02:00
Samuele E. Locatelli 0666da83c8 COmpletato fix x Lubro e Cooler... 2019-07-16 17:40:11 +02:00
Samuele E. Locatelli f2ed2274ff Fix decodifica UnOp (Operating Groups) 2019-07-16 17:00:58 +02:00
Samuele E. Locatelli 86bd956895 Fix PATH... 2019-07-16 16:22:34 +02:00
Samuele E. Locatelli ed8bb92fcc COmpletata aggiunta ASSI... 2019-07-16 15:50:03 +02:00
Samuele E. Locatelli 256af0e98f Aggiunta decodifica slitte... 2019-07-16 12:28:40 +02:00
Samuele E. Locatelli a510071775 >Fix decodifica e file RepRoles GENERATO per VacPump e VacAct 2019-07-16 12:18:05 +02:00
Samuele E. Locatelli 33f8c9a9a6 Recupero array dei vacuumPump (ma manca ancora il LINK mappatura...) 2019-07-15 19:26:37 +02:00
Samuele E. Locatelli fdcbc505c1 Fix recupero TIPO ADAPTER da DataModel!!! 2019-07-14 21:35:38 +02:00
Samuele E. Locatelli 3f17538e71 update vers 2019-07-13 18:24:32 +02:00
Samuele E. Locatelli fd637270c8 Altro lavoro x riconfigurare gestione lettura iniziale XML 2019-07-13 18:24:04 +02:00
Samuele E. Locatelli d19f13e8ad OK! deserializzazione... 2019-07-04 12:57:05 +02:00
Samuele E. Locatelli ab9bf30a84 Errore x commenti ma va bene così... 2019-07-04 12:06:55 +02:00
Samuele E. Locatelli ef1e3013d3 ...appunti... 2019-06-28 15:32:35 +02:00
Samuele E. Locatelli 981340484d inclusa decodifica iniziale di component... 2019-06-28 15:16:09 +02:00
Samuele E. Locatelli dde43c21ab DEcodifica correttamente testata file DataModel.xml 2019-06-28 14:55:36 +02:00
Samuele E. Locatelli e62dfe0b03 new version 2019-06-27 15:37:03 +02:00
Samuele E. Locatelli 6d554b44ac Appunti.. 2019-06-27 15:36:49 +02:00
Samuele E. Locatelli cf78b16ee4 Decodifica property e Values... da rivedere group e continuare... 2019-06-27 15:36:24 +02:00
Samuele E. Locatelli 55d7333936 Ancora qualche update ma NON gestisce correttamente proprietà SENZA group 2019-06-27 15:17:40 +02:00
Samuele E. Locatelli 733a37da98 Inserita calsse di esempio che va.. DA ESTENDERE COMPORTAMENTO!!!!!! 2019-06-26 15:57:03 +02:00
Samuele E. Locatelli 4d55cbbccc update x scrittura nuova classe (de)serializzazione ma ancora KO 2019-06-26 15:42:19 +02:00
Samuele E. Locatelli 11117bbb20 inserita bozza deserializzazione (NON VA!!!) 2019-06-24 21:57:31 +02:00
Samuele E. Locatelli 5bfa2ca5bc Altri appunti... 2019-06-24 15:07:32 +02:00
Samuele E. Locatelli 4df8a76561 refresh 2019-06-24 15:02:37 +02:00
Samuele E. Locatelli 3d20ff9af2 Merge remote-tracking branch 'gogs.steamware.net/develop' into develop 2019-06-24 15:02:09 +02:00
Samuele E. Locatelli c7a8c2525a Continuo modifiche classe deserializzazione... 2019-06-24 15:01:18 +02:00
Samuele E. Locatelli 3ab79d6c08 inizio setup x deserializzare DataModel 2019-06-24 14:54:53 +02:00
Samuele E. Locatelli 95d2a7b368 Merge remote-tracking branch 'gogs.steamware.net/develop' into develop 2019-02-27 12:57:19 +01:00
Samuele E. Locatelli ceaf788174 Auto stash before merge of "develop" and "gogs.steamware.net/develop" 2019-02-27 12:57:15 +01:00
Samuele E. Locatelli bc3048e15c update init del veto alarm (0 + 0 |000) 2019-02-26 16:14:16 +01:00
Samuele E. Locatelli 42928c701c Update vers x NON sovrascrivere TIPO asse... 2019-02-18 17:56:16 +01:00
Samuele E. Locatelli e4171867be Tolto lettura file memoria (bonificare?) 2019-02-14 14:31:43 +01:00
Samuele E. Locatelli 9dcb23bb77 Fix naming 2019-02-14 14:01:19 +01:00
Samuele E. Locatelli b0976c5ee7 Fix nome file 2019-02-14 12:56:08 +01:00
Samuele E. Locatelli 92ed3948e6 Fix lettura variabili memoria da copiare... 2019-02-14 12:48:03 +01:00
Samuele E. Locatelli 9538d3a6b2 Aggiunta dati x conf copia memoria REDIS 2019-02-14 12:41:09 +01:00
Samuele E. Locatelli 27e84b42df fix renaming 2019-02-14 12:14:46 +01:00
Samuele E. Locatelli 15eaa3d5eb Fix anche x path 02 dei nuovi naming MTC/OPC-UA 2019-02-14 12:07:39 +01:00
Samuele E. Locatelli a5c6c2447d Modifica meccanismo di decodifica MODE/STATUS x path CNC in AdapterGeneric 2019-02-14 12:03:34 +01:00
Samuele E. Locatelli 0b8d187378 FIx fanuc da processing stato BASE 2019-02-14 11:10:45 +01:00
Samuele E. Locatelli ed0174cf8a Fix area lettura nuova variabile 2019-02-13 14:49:37 +01:00
Samuele E. Locatelli f990ed8f36 Update vers number 2019-02-13 12:59:00 +01:00
Samuele E. Locatelli 6a605cf871 Update decodifica significato status da ACK.DW3.B0 (su adatpter Generic) 2019-02-13 12:57:37 +01:00
Samuele E. Locatelli 3ba9b94e4d Update x errore reset allarmi attivi SIEMENS 2019-02-06 14:40:53 +01:00
Samuele E. Locatelli 5e6b5078f0 Fix parametro errato su valori Codici M/S/T (non ha senso DBand) 2019-01-30 18:13:12 +01:00
Samuele E. Locatelli d93a29aaff Refresh test datamodel 2019-01-30 12:11:09 +01:00
Samuele E. Locatelli cdc4380324 Aggiunta nuovi parametri nel datamodel 2019-01-30 08:43:22 +01:00
Samuele E. Locatelli fe03653613 testing SIM OSAI x nuovi parametri SOUR 2019-01-29 14:51:40 +01:00
Samuele E. Locatelli 5de6da889a UPdate x evitare reset in avvio/chiusura 2018-12-05 13:58:51 +01:00
Samuele E. Locatelli ec10da262d Update versione: init a null SOLO se in debug... 2018-12-05 13:33:27 +01:00
Samuele E. Locatelli a11d4b57e9 vers 1812.371 2018-12-05 13:16:52 +01:00
Samuele E. Locatelli fdd1bfe80a refresh generale 2018-12-05 13:16:29 +01:00
Samuele E. Locatelli 3ada597f2e Impostato FANUC x testing 2018-12-05 13:16:18 +01:00
Samuele E. Locatelli 61a32ea476 Fix gestione status di FANUC 2018-12-05 13:16:10 +01:00
Samuele E. Locatelli 3e150e81b1 Cambio da UNAVAILABLE a NULL in startup 2018-12-05 13:00:57 +01:00
Samuele E. Locatelli 05ec28473a update vers numb v1812.370 2018-12-05 10:15:34 +01:00
Samuele E. Locatelli 77f2d04507 Refresh progetto x calcolo STATUS in FANUC 2018-12-05 10:14:08 +01:00
Samuele E. Locatelli d077137e12 update nuget generale 2018-12-05 10:13:49 +01:00
Samuele E. Locatelli aaa310e32b UPdate NuGet NLog 2018-12-05 10:13:24 +01:00
Samuele E. Locatelli 72b44977fc Update nuget json 2018-12-05 10:13:09 +01:00
Samuele E. Locatelli 5a2d6bcf94 Update vers number 2018-11-20 18:10:04 +01:00
Samuele E. Locatelli 7183cb8e61 Aggiunta variabile status in DATAMODEL 2018-11-20 18:09:15 +01:00
Samuele E. Locatelli 121edb2e77 Aggiunti status x SOUR Machine 2018-11-20 18:02:02 +01:00
Samuele E. Locatelli 787da41304 Aggiunta 2 variabili CMS 2018-11-20 17:25:24 +01:00
Samuele E. Locatelli e7c69f4c4a fix reset allarmi CMS, da rivedere nuove variabili 2018-11-20 17:08:44 +01:00
Samuele E. Locatelli 6ab87ac751 pulizia datamodel.xml 2018-11-20 10:12:23 +01:00
Samuele E. Locatelli a8abbaa21c Typo 2018-11-19 19:55:03 +01:00
Samuele E. Locatelli e090822f4f Fix trasmissione condition (era canale errato) 2018-11-17 17:38:32 +01:00
Samuele E. Locatelli 527dd2b8c2 Fix composizione allarmi x REDIS (con livello) 2018-11-17 11:46:33 +01:00
Samuele E. Locatelli 5bb7ceb3cb Correzione scrittura allarme 2018-11-17 11:36:53 +01:00
Samuele E. Locatelli 177b3e657d Update DataModel (attributo type --> Type) 2018-11-17 10:18:19 +01:00
Samuele E. Locatelli 28a3e702f5 Sanitize di default evitato in DEBUG 2018-11-17 09:45:34 +01:00
Samuele E. Locatelli 899f243bf2 Parametrizzato sanitize 2018-11-17 09:39:15 +01:00
Samuele E. Locatelli 0fc4b8619b update num vers 2018-11-17 09:36:25 +01:00
Samuele E. Locatelli d7ef61f35c Update XML datamodel 2018-11-17 09:36:05 +01:00
Samuele E. Locatelli 8d4193c4f9 Pulizia commenti 2018-11-16 17:08:44 +01:00
Samuele E. Locatelli eb5559b5a8 Metodo sanitize XML esposto... 2018-11-16 16:58:54 +01:00
Samuele E. Locatelli 4cdaedad7f Fix vers 360 x formattazione XML 2018-11-16 16:25:28 +01:00
Samuele E. Locatelli 2bf21e285d fix formattazione XML 2018-11-16 16:24:13 +01:00
Samuele E. Locatelli 55fd9a934d reindentazione XML 2018-11-16 16:12:19 +01:00
Samuele E. Locatelli 329480db74 Fix per XML salvato in REDIS (eliminati commenti...) 2018-11-16 16:07:41 +01:00
Samuele E. Locatelli 9a6ca4bff6 Update x evitare reload slow changing data 2018-11-16 08:12:58 +01:00
Samuele E. Locatelli 9a14dd6366 Commentato counters 2018-11-15 17:59:51 +01:00
Samuele E. Locatelli 109e3acde0 Fix rename protezioni 2018-11-15 17:56:54 +01:00
Samuele E. Locatelli 740b6727a6 Fix slitta 2018-11-15 17:52:54 +01:00
Samuele E. Locatelli 2f9d5062ed update gestione protezioni 2018-11-15 17:49:56 +01:00
Samuele E. Locatelli 7a3c41ecbf rimessa vacAct4... 2018-11-15 17:38:58 +01:00
Samuele E. Locatelli 5d202c6b70 Integrato slitte 2018-11-15 17:36:35 +01:00
Samuele E. Locatelli 44efcd2435 Rimesso sostituzione VacAct 2018-11-15 17:32:29 +01:00
Samuele E. Locatelli 556811ec96 Ancora fix gruppi ausiliari 2018-11-15 17:25:37 +01:00
Samuele E. Locatelli 010c00ed92 Fix VacPump 2018-11-15 17:19:09 +01:00
Samuele E. Locatelli 47459c8aa1 fix stato cooler 2018-11-15 17:15:08 +01:00
Samuele E. Locatelli e27d44a6c4 spsotati cooler e vacuum pump 2018-11-15 17:09:25 +01:00
Samuele E. Locatelli 1fe167069a FIX Lubro --> aux groups 2018-11-15 17:00:13 +01:00
Samuele E. Locatelli 78e1a3ba6c FIX UnOp x elementi che avanzano (VitaRes...) e spostsamenti 2018-11-15 16:53:22 +01:00
Samuele E. Locatelli 30439747b9 Update renaming 2018-11-15 16:13:31 +01:00
Samuele E. Locatelli dfde337921 Ancora fix renaming x UnOp 2018-11-15 16:07:38 +01:00
Samuele E. Locatelli 8204b9a3d0 Review area UnOp 2018-11-15 15:59:47 +01:00
Samuele E. Locatelli a6b401fdc8 FIX NameRepRole 2018-11-15 15:47:07 +01:00
Samuele E. Locatelli 82edb8d59d update subst 2018-11-15 14:44:28 +01:00
Samuele E. Locatelli b3632f923b Fix svuotamento area REDIS + fix ricodifica assi in nuovo formato 2018-11-15 14:26:30 +01:00
Samuele E. Locatelli 4bf6bb39dc aggiunta svuotamento preliminare memorie redis 2018-11-15 14:10:25 +01:00
Samuele E. Locatelli 5de1241504 review datamodel x assi 2018-11-15 14:00:39 +01:00
Samuele E. Locatelli 4bd034aa95 Fix datamodel aree plc e hmi 2018-11-15 12:20:31 +01:00
Samuele E. Locatelli f7623f3187 fix codG 2018-11-15 12:13:06 +01:00
Samuele E. Locatelli 6fe5b6700d Fix CodG_Act 2018-11-15 12:09:41 +01:00
Samuele E. Locatelli 6776fd627e fix cod_[M/S/T] 2018-11-15 12:06:02 +01:00
Samuele E. Locatelli acf27d31be fix datamodel 2018-11-15 12:00:34 +01:00
Samuele E. Locatelli 16d91bfdac Inizio test porting path sotto CNC 2018-11-15 11:55:52 +01:00
Samuele E. Locatelli a41bf73358 Confermato fix x canalia llarmi CNC/PLC/HMI e rimosso clock e dati file... 2018-11-15 11:51:40 +01:00
Samuele E. Locatelli 08c5e52102 FIX naming x aree condition CNC/PLC/HMI 2018-11-15 11:46:56 +01:00
Samuele E. Locatelli 5c1c557bac update posizione CNC conditions 2018-11-15 10:49:31 +01:00
Samuele E. Locatelli 6f28f6a71f Ancora pulizia variabili NON SOUR 2018-11-15 10:17:25 +01:00
Samuele E. Locatelli 0eda49b61a Eliminazione Executionstate ed HoldState da area Machine 2018-11-15 10:13:22 +01:00
Samuele E. Locatelli 928c5f0fb1 Manca Machine:Status (da calcolare o ricevere da PLC) poi blocco Machine completo 2018-11-14 22:56:18 +01:00
Samuele E. Locatelli a045910057 fix unavailable/null, fix variabili globali MACHINE (sobst) 2018-11-14 19:31:45 +01:00
Samuele E. Locatelli e17bc7f1b7 Aggiunta conf x area Veto da ADAPTER 2018-11-14 19:08:34 +01:00
Samuele E. Locatelli 1c9b69709e inserito chaivi EMPTY x allarmi... 2018-11-14 19:01:37 +01:00
Samuele E. Locatelli ed8dbdbe87 aggiunta flush chiavi red prima di caricare allarmi... 2018-11-14 18:58:27 +01:00
Samuele E. Locatelli d6cf851f2b Aggiunta gestione allarmi con 3 lingue (se file conf con 3 lingue) 2018-11-14 18:54:04 +01:00
Samuele E. Locatelli 083002258c Fix UTC time x heartbeat Adp --> redis 2018-11-14 17:18:19 +01:00
Samuele E. Locatelli 7ed55aaff3 Fix area SOUR:Adp: (da testare x UtcTime) 2018-11-14 16:50:35 +01:00
Samuele E. Locatelli 70072b648e Fxi naming in tray + nuova vers... 2018-10-15 17:14:19 +02:00
Samuele E. Locatelli 72dd39bab3 NUova vers x fix 2018-10-15 17:09:05 +02:00
Samuele E. Locatelli eab578e058 Fix path x rename versione 2018-10-15 17:08:41 +02:00
Samuele E. Locatelli 1e3d3b8874 fix duplicazione variabili MTC (doppi x itemsNode, tripli x Alarms di sottonodi) 2018-10-15 16:50:37 +02:00
Samuele E. Locatelli b08687933f refresh gatewayMTC 2018-10-15 16:20:55 +02:00
Samuele E. Locatelli a69e3e5611 vers 1810.341 iniziata... 2018-10-15 15:35:42 +02:00
Samuele E. Locatelli 5b8a0601d1 Aggiunto 3° tipo di controllo (sul CURRENT) 2018-10-15 15:35:23 +02:00
Samuele E. Locatelli 53bbb18291 Fix vers 340 x linee vuote in ReplacementRoles 2018-10-02 15:14:42 +02:00
Samuele E. Locatelli 4421e9526a fix errore x linee vuote in NameRepRolesList.map 2018-10-02 15:13:29 +02:00
Samuele E. Locatelli 77308497f0 check naming sostituzioni 2018-10-02 15:07:33 +02:00
Samuele E. Locatelli 4ac64a9b53 Fix afterBuild x spostare in dir lib... 2018-10-02 14:30:05 +02:00
Samuele E. Locatelli 0f53b0aa32 update target x compilazione MyTask esplicita 2018-10-02 13:03:09 +02:00
Samuele E. Locatelli e0e0cfc52b Ridenominazione target come da link seguente
https://github.com/Microsoft/msbuild/issues/1680
2018-10-02 12:54:19 +02:00
Samuele E. Locatelli e2f4c7e50a fix commento in POST BUILD (andrà after build?) 2018-10-02 12:47:04 +02:00
Samuele E. Locatelli 2444d49095 Refresh num vers x test build OSAI... 2018-10-02 12:38:00 +02:00
Samuele E. Locatelli eec1e57c55 Ancora altre modifiche codice... 2018-10-02 12:28:25 +02:00
Samuele E. Locatelli ae5b03e0a4 Altri fix codice 2018-10-02 12:23:28 +02:00
Samuele E. Locatelli 3f67249222 Ancora fix naming 2018-10-02 12:20:34 +02:00
Samuele E. Locatelli ef24ddd9fe update naming (CamelCase) - parziale 2018-10-02 12:00:03 +02:00
Samuele E. Locatelli 0a62bf7530 Update naming emergency/execution/hold 2018-10-02 11:44:32 +02:00
Samuele E. Locatelli da0c51d59a Update gestione FORCE SENZA su invio periodico in caso di forzatura 2018-10-02 10:03:55 +02:00
Samuele E. Locatelli 7fd54f3ad1 update commento 2018-10-02 10:01:12 +02:00
Samuele E. Locatelli d1a8dab89a Update procedure controllo invio 2018-10-02 09:49:25 +02:00
Samuele E. Locatelli a929c5db94 update log 2018-10-02 09:44:35 +02:00
Samuele E. Locatelli e25464fe1b Fix log cambio stato server 2018-10-02 09:41:55 +02:00
Samuele E. Locatelli a81188fbd5 spostamento componenti controllo redis a tempo 2018-10-02 09:35:26 +02:00
Samuele E. Locatelli 03a65f97d1 refresh eccezione 2018-10-02 09:28:51 +02:00
Samuele E. Locatelli 39cc92c1e6 cambiato oggetto accesso statico a redUtils 2018-10-02 09:10:55 +02:00
Samuele E. Locatelli f73c9cfd10 nuova vers (da testare) 2018-10-02 09:00:46 +02:00
Samuele E. Locatelli 9f9f472109 update x controlli invio a redis... 2018-10-02 09:00:30 +02:00
Samuele E. Locatelli 6f03fb77a6 Ancora commenti su area redis x evitare crash ed avere report su PLC 2018-10-01 19:23:04 +02:00
Samuele E. Locatelli 7f0fb40dbb fix su controllo prima di sendChanged 2018-10-01 19:03:12 +02:00
Samuele E. Locatelli 875ba2d10c Aggiunta metodi x evitare crash con redis DOWN... 2018-10-01 18:56:49 +02:00
Samuele E. Locatelli b7af9a42a2 Prima bozza testing status redis 2018-10-01 18:44:22 +02:00
Samuele E. Locatelli b8e4b67c86 update template counter 2018-10-01 18:34:54 +02:00
Samuele E. Locatelli 80de7b7b7d update con gestione degli RTCounters (contatori liberi) DA PROVARE!!! 2018-10-01 18:33:36 +02:00
Samuele E. Locatelli 99b137a8ad controllo stato opzionale da config + update docs 2018-10-01 17:33:33 +02:00
Samuele E. Locatelli beef5ada08 typo fix 2018-10-01 17:20:51 +02:00
Samuele E. Locatelli 24a8979621 refresh versione... 2018-10-01 17:10:33 +02:00
Samuele E. Locatelli 3057972fa7 fix gestione status bit x OSAI e MTC-AGENT 2018-10-01 17:10:05 +02:00
Samuele E. Locatelli 756055c017 Aggiunta bozza controllo stato AGENT x MTC
...da testare su OSAI...
2018-10-01 15:22:57 +02:00
Samuele E. Locatelli 77e0490586 fix file corrotto... 2018-10-01 10:33:05 +02:00
Samuele E. Locatelli a8b8d03721 aggiunta altri componenti... 2018-10-01 10:30:07 +02:00
Samuele E. Locatelli 4e28e14920 Aggiunta agent bin a progetto... 2018-10-01 10:27:13 +02:00
Samuele E. Locatelli 1d5941d63d typo correction 2018-10-01 10:01:51 +02:00
Samuele E. Locatelli 3c31449c7f Aggiunta script bat x reboot AGENT 2018-09-26 14:19:02 +02:00
Samuele E. Locatelli af79feaac4 FIX gestione allarmi REDIS 2018-09-20 00:46:20 +02:00
Samuele E. Locatelli 57d8e1a528 completata aggiunta variabili boolean x exe/hold/emergency 2018-09-19 22:49:17 +02:00
Samuele E. Locatelli 9b175f24e3 stpostato regole sost intere all_inizio + gestione var alarmState 2018-09-19 22:41:21 +02:00
Samuele E. Locatelli 02a16f7219 fix decodifica nomi assi OSAI x assi "vuoti in mezzo" 2018-09-19 22:03:12 +02:00
Samuele E. Locatelli 4a08fc82ab Merge remote-tracking branch 'gogs.steamware.net/develop' into develop 2018-09-19 17:43:21 +02:00
Samuele E. Locatelli 7908cdc483 Fix cast delle condition REDIS... 2018-09-19 17:43:14 +02:00
Samuele E. Locatelli b6c0ab0d2c Fix cast delel condition... 2018-09-19 17:42:59 +02:00
Samuele E. Locatelli 8967a876e8 completata primo riversamento allarmi 2018-09-19 17:38:04 +02:00
Samuele E. Locatelli 4e0d3c9e24 Inizio a gestire completamente allarmi 2018-09-19 17:36:21 +02:00
Samuele E. Locatelli fa53d8e374 fix task prettyBin 2018-09-19 17:36:05 +02:00
Samuele E. Locatelli ec4413cc64 Riallinemanto file di conf con macchina produzione 2018-09-19 17:35:55 +02:00
Samuele E. Locatelli 2e109fc818 Aggiunto DataItemRed... 2018-09-19 17:35:37 +02:00
Samuele E. Locatelli aa8267c3ca Refresh NuGET 2018-09-18 19:21:05 +02:00
Samuele E. Locatelli 79e440a8f5 Ancora fix NLOG e nuova vers 2018-09-18 19:19:28 +02:00
Samuele E. Locatelli aa94c62208 Ancora pulizia NLOG 2018-09-18 19:17:58 +02:00
Samuele E. Locatelli 6212431200 pulizia conf x packages NLog 2018-09-18 19:17:47 +02:00
Samuele E. Locatelli bc5a17c985 agggiunta filtro area TESTING 2018-09-18 19:09:27 +02:00
Samuele E. Locatelli a4cbe30c9d fix json + fix procedure controllo valori vetoed 2018-09-18 18:44:36 +02:00
Samuele E. Locatelli dc9ee2cc35 fix modalità ciclo ricerca... 2018-09-18 18:11:49 +02:00
Samuele E. Locatelli 428b7c8c68 update proj file 2018-09-18 18:01:30 +02:00
Samuele E. Locatelli e9306dcfed Update x gestione datamodel + filtraggio... 2018-09-18 17:52:28 +02:00
Samuele E. Locatelli 0d80d78e70 aggiunta conf exclude 2018-09-18 17:28:47 +02:00
Samuele E. Locatelli bcbceff9e0 fix modo ricerca con ESCLUSIONE VARIABILI (INIZIATO) 2018-09-18 15:47:33 +02:00
Samuele E. Locatelli b463322158 fix gestione roles rewrite 2018-09-18 15:32:25 +02:00
Samuele E. Locatelli 4fb6803617 fix trim traduzioni 2018-09-18 15:09:32 +02:00
Samuele E. Locatelli cbdce4d191 Cambiata modalità gestione file sostituzioni 2018-09-18 14:58:39 +02:00
Samuele E. Locatelli 1316491b34 fix conf x NLog... 2018-09-18 14:23:07 +02:00
Samuele E. Locatelli be87099923 Update pacchetto NLog + fix avvio DUMP (inutile) 2018-09-18 14:20:40 +02:00
Samuele E. Locatelli ab6321ddec ancora update popolando valori RED 2018-09-18 14:05:14 +02:00
Samuele E. Locatelli efb7ddf0ee impostato metodo sendChanged 2018-09-18 13:05:28 +02:00
Samuele E. Locatelli 276961d88b fix gestione chiavi tradotte x REDIS 2018-09-18 12:45:28 +02:00
Samuele E. Locatelli 1a176567bb Nuova gestioen salvataggio assegnazione nomi vecchi/nuovi x variabili... 2018-09-18 12:11:26 +02:00
Samuele E. Locatelli 8ee26a625d refine sostituzioni + tolto altro file inutile e commenti 2018-09-17 12:13:38 +02:00
Samuele E. Locatelli 00acb767e2 correzione replace... 2018-09-17 12:06:43 +02:00
Samuele E. Locatelli f244abc339 nuova vers 2018-09-17 11:44:05 +02:00
Samuele E. Locatelli c31bfabd03 tolti riferimenti a nameRemap 2018-09-17 11:43:51 +02:00
Samuele E. Locatelli eb7a598e18 nuova gestione NameReplace 2018-09-17 11:38:14 +02:00
Samuele E. Locatelli a2cf9fc0e8 Pulizia codice x aree spostate... 2018-09-15 12:17:48 +02:00
Samuele E. Locatelli 9058b7bdc7 refresh post compilazione in OSAI: ok funziona! 2018-09-15 12:15:03 +02:00
Samuele E. Locatelli dfb224e088 Modifica massiva x portare adapterRed a gestire start/stop 2018-09-15 12:06:51 +02:00
Samuele E. Locatelli a4a4e9dde2 fix lista replace 2018-09-15 11:15:36 +02:00
Samuele E. Locatelli 7e776c3e73 Aggiunta gestione classi interazione REDIS in apposito progetto esterno
da spostare chiamate REDIS li dentro...)
2018-09-15 11:14:39 +02:00
Samuele E. Locatelli 47a37061ee fix gestione replace + remap x chiavi 2018-09-15 10:10:37 +02:00
Samuele E. Locatelli 268dc0bb17 Aggiunta lettura ricodifica naming variabili 2018-09-15 09:11:05 +02:00
Samuele E. Locatelli 6aefe871e2 fix time in start/stop adapter su redis 2018-09-15 08:55:09 +02:00
Samuele E. Locatelli 16deba684f popolato tabelle elenco codici allarme 2018-09-15 08:44:46 +02:00
Samuele E. Locatelli 231d45ad07 iniziata review x salvare allarmi come hashList 2018-09-15 08:20:34 +02:00
Samuele E. Locatelli 0653fe76df Cambio INIT x conf e machine... 2018-09-14 18:00:12 +02:00
Samuele E. Locatelli e8bfc5c130 fix primo caricamento dati (ma sovrascrive sempre tutto... salta!) 2018-09-14 17:46:41 +02:00
Samuele E. Locatelli 522065f63b rimesso package redis + mutato parti REDIS da implementare 2018-09-14 15:37:40 +02:00
Samuele E. Locatelli fda72dc0d5 Ora ricompila con metodi redis in Gateway... 2018-09-14 15:26:02 +02:00
Samuele E. Locatelli cee9094c17 fix componente MTC 2018-09-14 15:23:43 +02:00
Samuele E. Locatelli cc27f623a2 update gitignore + packages da installare... 2018-09-14 15:16:23 +02:00
Samuele E. Locatelli 56ab9469ff versione OPC-UA da testare 2018-09-14 13:02:29 +02:00
Samuele E. Locatelli 3c570bb99e Prima versione BRUTALE di scrittura REDIS 2018-09-14 12:58:13 +02:00
Samuele E. Locatelli a774d95522 typo 2018-09-14 12:14:20 +02:00
Samuele E. Locatelli 13c0c19c82 refresh 2018-09-14 12:14:15 +02:00
Samuele E. Locatelli 5394039ee6 update packages 2018-09-14 12:13:58 +02:00
Samuele E. Locatelli 830fca5826 update gitignore
\
2018-09-14 12:13:15 +02:00
Samuele E. Locatelli ac69050d99 provo a riconfigurare task spostamento libs... 2018-08-29 12:09:39 +02:00
Samuele E. Locatelli 90a46df214 Test x reinserire task "prettyBIN" 2018-08-29 12:04:14 +02:00
Samuele E. Locatelli 6f1eaffda8 test senza specifica CPU target... 2018-08-29 11:57:48 +02:00
Samuele E. Locatelli 1e6cb3bca5 provo di nuovo con config=release 2018-08-29 11:03:15 +02:00
Samuele E. Locatelli 37321f1808 cambio da branch il valore del parametro config corrente... 2018-08-29 08:48:30 +02:00
Samuele E. Locatelli 7f80b3248d cambio modalità inserimento parametri 2018-08-28 22:35:52 +02:00
Samuele E. Locatelli 702f9e70f1 test build come conf = release... 2018-08-28 22:28:14 +02:00
Samuele E. Locatelli 1fd453dd1d testo altra catena parametri compilazion x OSAI 2018-08-28 22:17:47 +02:00
Samuele E. Locatelli c9a1af40a9 provo compilazone di build x ricerca errori... 2018-08-28 22:13:35 +02:00
Samuele E. Locatelli b443b52dbe cambio modalità passaggio parametri 2018-08-28 22:08:58 +02:00
Samuele E. Locatelli fbf8b1fa9b altro test parametri jenkins 2018-08-28 22:04:37 +02:00
Samuele E. Locatelli f764e490af aggiunti parametri compilazione progetto CMS CNC (Siemens e FANUC) 2018-08-28 21:59:08 +02:00
Samuele E. Locatelli 2873b6b35c fix SCMA naming 2018-08-28 21:55:28 +02:00
Samuele E. Locatelli 38a86f27fc commit jenkinsfile x testare compilazione OSAI oltre al resto... 2018-08-28 21:51:27 +02:00
Samuele E. Locatelli b0cc8416fa Ancora test RD... 2018-08-28 17:59:05 +02:00
Samuele E. Locatelli 94e8648e69 altro tentativo fix RD 2018-08-28 17:54:47 +02:00
Samuele E. Locatelli f1971a6c18 test nuova versione 2018-08-28 17:39:52 +02:00
Samuele E. Locatelli 1dfdf7912f ancora test x fase cancellazione BIN pre compilazione 2018-08-28 17:39:37 +02:00
Samuele E. Locatelli 1b66839725 aGGIUNTO STEP PULIZIA BIN DA RITESTARE 2018-08-28 17:35:33 +02:00
Samuele E. Locatelli fe7354a376 typo correction... 2018-08-28 17:29:11 +02:00
Samuele E. Locatelli d21dbbf34f ancora modifiche nel naming... typo error x zip 2018-08-28 17:28:03 +02:00
Samuele E. Locatelli 063d6ece08 update comandi x compressione dei 2 diversi progetti 2018-08-28 17:23:21 +02:00
Samuele E. Locatelli f41a6037f6 correzione e ulteriore test installer MySQL (path fart) 2018-08-28 16:57:47 +02:00
Samuele E. Locatelli 10345e6c84 Aggiunti files x deploy + update jenkins x testare pubblicazione MySQL 2018-08-28 16:55:32 +02:00
Samuele E. Locatelli b87b167853 aggiunto uno step di test x creazione installer di test 2018-08-28 16:28:37 +02:00
Samuele E. Locatelli 402255643f Pulizia codice da commenti, tutto ok... 2018-08-28 15:44:06 +02:00
Samuele E. Locatelli f8f7178e06 aggiunto in MSBuild tag def costanti 2018-08-28 15:36:51 +02:00
Samuele E. Locatelli e782d7b8b0 provo fix siemens in altro modo... 2018-08-28 15:22:36 +02:00
Samuele E. Locatelli ecde4ca013 aggiunta esplicita SIEMENS x classe adapter 2018-08-28 15:19:11 +02:00
Samuele E. Locatelli d879448a5a refresh 2018-08-27 19:37:16 +02:00
Samuele E. Locatelli a8b10ec3da pulizia proj 2018-08-27 19:31:48 +02:00
Samuele E. Locatelli 165624d9ab ancora test 2018-08-27 19:20:04 +02:00
Samuele E. Locatelli 8b5484483e cambiato par opzionale siemens 2018-08-27 19:18:43 +02:00
Samuele E. Locatelli 19eae53d2d prova x fix (boh...) 2018-08-27 19:10:45 +02:00
Samuele E. Locatelli c28e6a307a test sbagliato (osai x siemens) x vedere se è quello errore 2018-08-27 19:04:49 +02:00
Samuele E. Locatelli 6550f63b5e altro test 2018-08-27 19:02:51 +02:00
Samuele E. Locatelli 76b4de916c provo a modificare costruttore SIEMENS 2018-08-27 18:55:10 +02:00
Samuele E. Locatelli 0692751128 altro test fix compilazione 2018-08-27 18:52:33 +02:00
Samuele E. Locatelli b751e440fc typo 2018-08-27 18:50:48 +02:00
Samuele E. Locatelli 8ec5b72f9c altra prova correzione 2018-08-27 18:48:39 +02:00
Samuele E. Locatelli b346299a22 fix avvio siemens senza try/catch 2018-08-27 18:47:04 +02:00
Samuele E. Locatelli 4eeb9e87da cambio tipo exc 2018-08-27 18:45:16 +02:00
Samuele E. Locatelli 362eab2e27 riprovo test 2018-08-27 18:43:57 +02:00
Samuele E. Locatelli 85320227d5 nuova versione 2018-08-27 18:39:22 +02:00
Samuele E. Locatelli 52de588270 forse fix... 2018-08-27 18:38:08 +02:00
Samuele E. Locatelli 3a42205366 altro tentativo fix 2018-08-27 18:36:28 +02:00
Samuele E. Locatelli 2c52d115cd test con MSBuild vers 14 2018-08-27 17:58:15 +02:00
Samuele E. Locatelli b5f321a180 Aggiunto step build della DEVELOP... 2018-08-27 17:44:46 +02:00
Samuele E. Locatelli 8fa067c932 Riconf x jenkinsfile 2018-08-27 17:41:25 +02:00
Samuele E. Locatelli 6685fc42df test effettuati positivamente! 2018-08-27 16:56:52 +02:00
Samuele E. Locatelli 02dd6a04b2 fix init grp e tipo... 2018-08-27 16:47:06 +02:00
Samuele E. Locatelli 5e19bc2db2 Aggiunti TEST da fare x AXIS 2018-08-27 16:24:48 +02:00
Samuele E. Locatelli 2c2b3847da iniziato modifica AdapterGeneric 2018-08-27 15:59:35 +02:00
Samuele E. Locatelli 50e74ca4aa finito fanuc e siemens, manca solo obj generico... 2018-08-27 15:48:34 +02:00
Samuele E. Locatelli 3d50f23bc7 continuo modifiche (NON ANCORA OK) 2018-08-27 15:12:53 +02:00
Samuele E. Locatelli 14f343b6ee Inizio modifiche x AXIS 2018-08-27 14:37:45 +02:00
Samuele E. Locatelli c4920b3609 test OK, fatta pulizia codice... 2018-08-25 12:06:36 +02:00
Samuele E. Locatelli 7c65fb0b1a pulizia + review x leggere dati + variazione UnOp (da testare) 2018-08-25 12:00:59 +02:00
Samuele E. Locatelli 0d06a132f3 completata pulizia 2018-08-25 10:49:10 +02:00
Samuele E. Locatelli 8dd4a71161 test allarmi specifici OK (andava cambiato MODO chiamata allarmi), continuo 2018-08-25 10:44:40 +02:00
Samuele E. Locatelli 8919c8d344 aggiunto nuovo test gestione allarmi 2018-08-25 10:39:08 +02:00
Samuele E. Locatelli 5de4de7e9b pulizia codice... 2018-08-24 20:09:13 +02:00
Samuele E. Locatelli 5719c846ef esteso test 2018-08-24 19:33:11 +02:00
Samuele E. Locatelli 58df475727 ultima aprte test (messaggi allarme) 2018-08-24 19:32:35 +02:00
Samuele E. Locatelli 78184965fe secondo test... 2018-08-24 19:06:23 +02:00
Samuele E. Locatelli 3203d0b00a cast esplicito x le conditions 2018-08-24 19:01:57 +02:00
Samuele E. Locatelli 1229fbb5b2 aggiunta obj su gateway x gestione allarmi... 2018-08-24 18:52:14 +02:00
Samuele E. Locatelli 24e4814fa1 fix init conditions di singolo asse (si spesa...) 2018-08-24 18:17:43 +02:00
Samuele E. Locatelli 1ae1e28724 preparata batteria di test... 2018-08-24 18:04:36 +02:00
Samuele E. Locatelli 02b5b9d390 finito remapping PATH, ora inserimento TEST... 2018-08-24 17:57:40 +02:00
Samuele E. Locatelli f0a59a812f NON ancora ok ma finito fanuc... 2018-08-24 17:54:47 +02:00
Samuele E. Locatelli 80ba7cf1a3 completata prima aprte revisione path (x adaptergeneric...) 2018-08-24 17:39:00 +02:00
Samuele E. Locatelli 66a274529b Test OSAI OK + fix commenti 2018-08-24 16:20:55 +02:00
Samuele E. Locatelli 5ea7e65fe5 riscritto temp/press/areemem (e test da fare...) 2018-08-24 15:46:38 +02:00
Samuele E. Locatelli 949a80fb62 Testing OK, fatta pulizia commenti 2018-08-24 12:54:14 +02:00
Samuele E. Locatelli c3c4a5d9dc modifica (+ test da validare) x slitta, protezioni, cooler 2018-08-24 12:50:46 +02:00
Samuele E. Locatelli 72e6371430 ancora pulizia codice... 2018-08-24 12:43:36 +02:00
Samuele E. Locatelli 794bb63dcf Test ok, pulizia codice! 2018-08-24 12:42:14 +02:00
Samuele E. Locatelli 8607788e89 porting elementi VacAct e Lubro (da testare) 2018-08-24 12:39:59 +02:00
Samuele E. Locatelli aed58d5e1e typo x pulizia commenti 2018-08-24 12:28:09 +02:00
Samuele E. Locatelli e8882c852f Conversione oggetto VacuumPump 2018-08-24 12:24:55 +02:00
Samuele E. Locatelli b5f60bf136 ancora pulizia codice... 2018-08-24 12:05:08 +02:00
Samuele E. Locatelli b822732ef2 pulizia codice da commenti dopo testing 2018-08-24 12:00:47 +02:00
Samuele E. Locatelli dac1b03b87 Update molte variabili + testing 2018-08-24 11:54:24 +02:00
Samuele E. Locatelli 6a314e34e9 Conversione analogdata e status (da testare) 2018-08-24 11:21:10 +02:00
Samuele E. Locatelli 7337f9d48a pulizia codice da commenti 2018-08-24 11:05:32 +02:00
Samuele E. Locatelli f99bd04f49 fix gestione counters... 2018-08-24 11:03:28 +02:00
Samuele E. Locatelli fc97a0cebc da testare counters generici... 2018-08-24 10:04:22 +02:00
Samuele E. Locatelli 9592e403fc pulizia commenti post modifica codice 2018-08-24 09:33:55 +02:00
Samuele E. Locatelli caca8e380b modifica power, procSel, operatorID con test... 2018-08-24 09:06:41 +02:00
Samuele E. Locatelli 132ce583ff Pulizia commenti 2018-08-24 08:44:48 +02:00
Samuele E. Locatelli 3c1abedd50 spostato primi 2 samples da testare... 2018-08-24 07:42:23 +02:00
Samuele E. Locatelli e69bf62137 typo & code cleanup 2018-08-24 07:34:43 +02:00
Samuele E. Locatelli b1f6446d23 aggiunti test reset x ACC_TIME e ACC_TIME_WORK 2018-08-23 22:42:02 +02:00
Samuele E. Locatelli 0335436dce fix ACC_TIME e ACC_TIME_WORK 2018-08-23 22:30:49 +02:00
Samuele E. Locatelli aa4ba0020e pulizia aree commentate... 2018-08-23 22:13:23 +02:00
Samuele E. Locatelli 4ed799f300 finito testing status/e_stop... 2018-08-23 22:09:10 +02:00
Samuele E. Locatelli 65f7faf638 finito fix passaggio status/e_stop su nuovi obj... 2018-08-23 22:01:37 +02:00
Samuele E. Locatelli 25237edc61 finito di configurare passaggio status/e_stop su nuovi obj... 2018-08-23 21:51:37 +02:00
Samuele E. Locatelli 2c2936d670 iniziata (MA NON FINITA!!!) modifica x e_stop & co... 2018-08-23 13:43:14 +02:00
Samuele E. Locatelli 4197353771 inizio riscrittura x testing di altre variabilid a convertire... 2018-08-23 12:42:02 +02:00
Samuele E. Locatelli 8c89beecdc sistemato test e commentate parti inutili oggetti 2018-08-23 12:34:41 +02:00
Samuele E. Locatelli ed493313b9 Aggiuno altro costruttore itemNode x generalizzare... 2018-08-23 12:13:39 +02:00
Samuele E. Locatelli 4c8670e58a ulteriore passo avanti x incapsulamento elementi 2018-08-23 11:54:04 +02:00
Samuele E. Locatelli cb966c5d1c fix gestione aggiunta nodi x update e testing OK 2018-08-23 11:45:01 +02:00
Samuele E. Locatelli d8886dd5f6 typo 2018-08-23 11:28:52 +02:00
Samuele E. Locatelli b99e5d7c96 altra modalità udpate da testare... 2018-08-23 11:27:34 +02:00
Samuele E. Locatelli 096ce0d2d0 nuovo tipo di test... 2018-08-23 11:13:01 +02:00
Samuele E. Locatelli 662877ffde update NLog + fix naming test... 2018-08-23 11:06:47 +02:00
Samuele E. Locatelli 4e50a46cc8 update conf x test OSAI 2018-08-23 10:34:44 +02:00
Samuele E. Locatelli 0f0d4a6458 aggiunto secondo test... 2018-08-23 10:27:52 +02:00
Samuele E. Locatelli b7a0d5edea per testare modalità gestione rewrite allarmi 2018-08-23 08:40:39 +02:00
Samuele E. Locatelli 0cce55c176 procedo x riscrittura gestione vacPump e conditions... 2018-08-22 17:40:16 +02:00
Samuele E. Locatelli 66380773ed fix compilazione (MA SONO ANCORA MTC in AdapterGeneric... 2018-08-22 16:22:24 +02:00
Samuele E. Locatelli 24a2b7c751 modifica parziale reincapsulazione oggetti MTC: non compila ma parte allarmi imbastita... 2018-08-22 14:40:17 +02:00
Samuele E. Locatelli f535c7b8df Aggiunto file DUMP 2018-08-22 10:00:55 +02:00
Samuele E. Locatelli 553b8bae68 aggiunto dll che erano rimaste fuori da GIT 2018-08-22 09:56:24 +02:00
Samuele E. Locatelli b456610021 tolto file inutile 2018-08-22 09:39:20 +02:00
Samuele E. Locatelli 1edff621b8 primo porting su classe gateway dei metodi MTC 2018-08-22 09:24:07 +02:00
Samuele E. Locatelli ab1d9380c9 last prima di togliere MTC da AdapterGeneric 2018-08-22 08:56:11 +02:00
Samuele E. Locatelli 809ea9f7eb continuo conversione... 2018-08-21 17:29:43 +02:00
Samuele E. Locatelli 4469241cef Typo FIX 2018-08-21 16:50:59 +02:00
Samuele E. Locatelli d294056976 Riconfigurazione profonda namespace x nuovo naming SCMA (SCM Adapters) 2018-08-21 16:48:04 +02:00
Samuele E. Locatelli ab58fa05bd continuo modifiche x implementare differenziazione MTC/OPC-UA 2018-08-21 12:31:56 +02:00
Samuele E. Locatelli 2b581ae70c prima BRUTALE implementazione decoratore e differenziatore tra MTC / SOURS 2018-08-21 07:32:24 +02:00
Samuele E. Locatelli 2420814f38 inizio scrittura con DECORATOR... 2018-08-20 18:08:45 +02:00
Samuele E. Locatelli d7c2dcd2c4 pulizia #if false vari 2018-08-20 18:08:36 +02:00
Samuele E. Locatelli 8f65dae94d Aggiunta blocco progetto x OPC-UA-REDIS SOUR-IO... 2018-08-20 12:53:30 +02:00
Samuele E. Locatelli 313efe4594 aggiunta redis x MTC-adapter 2018-08-20 12:53:07 +02:00
Samuele E. Locatelli 716d8763b2 Ok compilazione PRE insert REDIS... 2018-08-20 12:46:42 +02:00
Samuele E. Locatelli 8c3eb77822 update globale NLog 2018-08-20 12:44:21 +02:00
Samuele E. Locatelli a704954d64 Update NLog... 2018-08-20 12:25:12 +02:00
Samuele E. Locatelli 1d42d28306 update readme x note converisone INCH - MM 2018-05-29 17:58:16 +02:00
Samuele E. Locatelli dba4f2f8b9 Correzione output come Lubro_xx_Num 2018-03-09 16:07:31 +01:00
Samuele E. Locatelli 43831ddb17 Correzione nome variabili con doppio valore accettato x Lubro e UniOp_NumCU 2018-03-09 15:35:01 +01:00
Samuele E. Locatelli 7530f25a3e update stato on--> active 2018-02-22 16:02:16 +01:00
Samuele E. Locatelli f21d4b71ac ULteriori fix x SIEMENS 2018-02-22 12:36:46 +01:00
Samuele E. Locatelli e1c8553825 Aggiunta lettura feedOverride x asse 2018-02-22 11:00:10 +01:00
Samuele E. Locatelli cb2ace29d7 SIEMENS: recuperato feed x tutti gli assi...
singolarmente
2018-02-22 10:38:51 +01:00
Samuele E. Locatelli a3abc5cc5f update readme PDF 2018-01-30 17:14:21 +01:00
Samuele E. Locatelli e4df17cf01 aggiunta nota su readme x come compilare su OSAI con assi NON contigui (da compilare pdf e mandare) 2018-01-30 12:04:30 +01:00
Samuele E. Locatelli 9d7984378a pulizia condizioen inutile 2018-01-30 11:59:08 +01:00
Samuele E. Locatelli 245bfe07c2 setup x OSAI 8646 testata 2018-01-30 11:58:57 +01:00
Samuele E. Locatelli a9b5ad8f89 cambio tipo eventi --> message x dati come path, nome asse... 2018-01-22 11:19:23 +01:00
Samuele E. Locatelli 244a2539dc fix XML con errore chiusura tag (non parte agent) 2018-01-18 11:10:13 +01:00
Samuele E. Locatelli c3f51afb2d fix indice assi x nome/path + possibilità saltare lettura da app.config 2018-01-18 09:52:20 +01:00
Samuele E. Locatelli aa4dc1d88b typo 2018-01-18 09:40:28 +01:00
Samuele E. Locatelli cadefcedb6 fix controllo carattere... 2018-01-18 09:38:49 +01:00
Samuele E. Locatelli afe293e6b1 try catch vari (sopratutto x ocndizione out of range array in lettura assi e path/nome) 2018-01-18 09:11:27 +01:00
Samuele E. Locatelli 402b709518 aggiunto file OSAI XML x formato nuovo x solo riferimento 2018-01-17 11:39:42 +01:00
Samuele E. Locatelli 3f049d9dd5 fix tipo evento x OSAI 2018-01-17 11:27:34 +01:00
Samuele E. Locatelli 34dc5585aa update note readme + rimesso codice NON semplificato x errori build successiva 2018-01-17 11:26:15 +01:00
Samuele E. Locatelli e247b297ee completate pulizie e semplificazioni varie 2018-01-17 11:17:41 +01:00
Samuele E. Locatelli 596b75ce8d inizio fix warnings vari 2018-01-17 11:11:34 +01:00
Samuele E. Locatelli 12f06119e7 fix warnings e correzione tipi x event 2018-01-17 11:11:27 +01:00
Samuele E. Locatelli 949410bab6 aggiunto salvataggio ID PROCESSO + DESCR ASSE x OSAI 2018-01-17 11:06:26 +01:00
Samuele E. Locatelli bbfe0b3af9 fix x asse message/event + aggiunta descrizione e init relativa 2018-01-17 11:01:06 +01:00
Samuele E. Locatelli f448b3ca07 pulizia codice 2018-01-17 11:00:41 +01:00
Samuele E. Locatelli e3ab60044a pulizia aree commentate 2018-01-17 11:00:30 +01:00
Samuele E. Locatelli e2f4e76055 correzione x inizializzare matrici prima di lettura tipo REF (restavano valide da path 1 a 2) 2018-01-16 15:27:16 +01:00
Samuele E. Locatelli 56462c35f5 riscrittura gestione dati da OSAI x posizioni 2018-01-16 14:55:57 +01:00
Samuele E. Locatelli aa4bc8c486 Inserita chiamata a getInfo3 deglia ssi x avere ID oltre a nome x processo OSAI 2018-01-16 12:31:48 +01:00
Samuele E. Locatelli 6ab6e6bf0a refresh conf OSAI 8651 2018-01-16 12:31:31 +01:00
Samuele E. Locatelli 2d1466a1fc Update README 2017-12-27 12:53:46 +01:00
Samuele E. Locatelli 73ee59371a DI default NON FACCIO il limit x funzioni 3D FANUC (da gestire manualmente) 2017-12-27 10:49:18 +01:00
Samuele E. Locatelli c564ced4bc Aggiunta gestioen eccezione in FANUC x non gestire chiamate 3D disabilitate se soli 3 assi 2017-12-27 10:34:34 +01:00
Samuele E. Locatelli e6948d0b9d Merge remote-tracking branch 'origin/develop' into develop 2017-12-27 08:29:51 +01:00
Samuele E. Locatelli ee2f2b5907 Update con note x feed/speed che NON vanno 2017-11-20 16:19:25 +01:00
Samuele E. Locatelli 172268a36c Fix gestione endianness x carico e num giri (leggeva sbagliato con littleEndian...) 2017-11-20 14:35:07 +01:00
Samuele E. Locatelli e3e835aee4 Fix gestione allarmi CNC SIEMENS: il formato del codice veniva travisato in send MTC (|) 2017-11-20 12:39:02 +01:00
Samuele E. Locatelli 507316cdcd update readme x problema OSAI con ordinamento assi 2017-10-05 11:08:34 +02:00
Samuele E. Locatelli 8ea85b5862 refresh gitignore 2017-09-13 12:10:31 +02:00
Samuele E. Locatelli a7f55e20e5 Update gitignore e Readme 2017-09-13 11:33:43 +02:00
Samuele E. Locatelli 2f71d54d1b Merge remote-tracking branch 'origin/develop' into develop 2017-09-13 11:27:13 +02:00
Samuele E. Locatelli b683e1e675 refresh 2017-09-13 11:27:10 +02:00
Samuele E. Locatelli ef4c63cf16 update gitignore 2017-09-13 11:22:28 +02:00
Samuele E. Locatelli 9276d764b3 Fix osai x assi GANTRY con errore nome restituito 2017-09-13 11:12:21 +02:00
Samuele E. Locatelli 2cc97d6285 fix su FANUC controllavo stato unk x DW2 dove uso NUOVO watchdog... 2017-09-06 10:50:03 +02:00
Samuele E. Locatelli 39d64b7aa9 Fix x FANUC con PLC connesso, assi scollegati, MTC Adapter fa HaraKiri 2017-09-06 10:17:00 +02:00
Samuele E. Locatelli e2b465e8df refresh 2017-09-05 16:24:29 +02:00
Samuele E. Locatelli 57cd46744b messo try-catch in parte vb 2017-09-05 16:08:55 +02:00
Samuele E. Locatelli eb48e13f80 aggiunto try-catch lettura allarmi CNC x FANUC (machcina no-axis con Fabio) 2017-09-05 15:55:30 +02:00
Samuele E. Locatelli 1b9f5c6896 completata revisione counters 2017-07-26 10:37:46 +02:00
Samuele E. Locatelli 0a0cbfe793 ancora altre variabili sistemate... 2017-07-25 17:13:51 +02:00
Samuele E. Locatelli e646cd19e8 fix altre variabili (slitta mag e prot mag...) 2017-07-25 17:02:05 +02:00
Samuele E. Locatelli 8a220d397d modifiche x calcolo esatto mediana e fix reinit contatori 2017-07-25 16:54:15 +02:00
Samuele E. Locatelli aced3f08a4 Aggiunta gestioen doppio watchdog... 2017-07-24 19:34:29 +02:00
Samuele E. Locatelli 42abe4da42 Aggiunta gestione doppio watchdog... 2017-07-24 19:05:43 +02:00
Samuele E. Locatelli b7049fe25f fix init oggetti sampleVect.. 2017-07-24 18:22:58 +02:00
Samuele E. Locatelli 105e37504a correzione init mancante... 2017-07-24 18:02:37 +02:00
Samuele E. Locatelli 13cda06bec fix init oggetti sampleVect 2017-07-24 17:58:25 +02:00
Samuele E. Locatelli 90be94ba25 Merge remote-tracking branch 'origin/develop' into develop 2017-07-24 17:31:27 +02:00
Samuele E. Locatelli 6f910cf5f8 Completata revisione gestione contatori con VC... 2017-07-24 17:31:19 +02:00
Samuele E. Locatelli ffc9e23e82 completata gest campionamento dati x filtro su finestra 2017-07-24 16:48:39 +02:00
Samuele E. Locatelli 8c2d201425 aggiunto controllo vettore counters x evitare crash in copia array... 2017-07-24 15:58:00 +02:00
Samuele E. Locatelli 40a3735bfe update x OSAI da continuare (numIst obj interni errato... 2017-07-24 15:51:34 +02:00
Samuele E. Locatelli 8bb0eb2031 modifica oggetto gestione contatori istantanei con mediana (POI da testare se va bene va esteso a altri counters...) 2017-07-24 15:12:53 +02:00
Samuele E. Locatelli 36ea850027 inseriti pacchetti gestione statistica x mediana... 2017-07-24 15:12:30 +02:00
Samuele E. Locatelli d05197c32f aggiunta chiave x gestione finestra campionamento dati counters 2017-07-24 12:54:03 +02:00
Samuele E. Locatelli 43e8c094ba riformattazione grafica 2017-07-24 12:53:32 +02:00
Samuele E. Locatelli f747a6f274 update readme (anche in pdf...) da VSCode 2017-07-13 16:28:12 +02:00
Samuele E. Locatelli 9fdb31872e aggiunto area IOT_String 2017-07-13 15:45:14 +02:00
Samuele E. Locatelli ce0b5701b6 Completato note MTC Adapter 2017-07-13 15:43:04 +02:00
Samuele E. Locatelli 76afa66b8c update file readme... 2017-07-13 13:12:44 +02:00
Samuele E. Locatelli cefb9bf28c Merge remote-tracking branch 'origin/develop' into develop 2017-07-13 12:03:54 +02:00
Samuele E. Locatelli 934844fac9 Aggiunta Readme iniziale 2017-07-13 12:03:35 +02:00
Samuele E. Locatelli 95bc8c21d1 Merge remote-tracking branch 'origin/develop' into develop 2017-07-13 12:01:25 +02:00
Samuele E. Locatelli ae5232abd2 aggiunta prima release readme... 2017-07-13 12:01:02 +02:00
Samuele E. Locatelli f1611a13fc completato test SIEMENS con variabili contatori persistenti gestite SENZA conf... test SIEMENS OK... 2017-07-04 17:44:21 +02:00
Samuele E. Locatelli 15a4eb9475 Ok gestione contatori "liberi" ma con configurazione XML (da levare...) 2017-07-04 16:40:28 +02:00
Samuele E. Locatelli 060fe30a95 test 3 variabili analogiche x SIEMENS (OK, dividere x 1000), togliere 2° path SE non ci fosse... 2017-07-04 15:09:50 +02:00
Samuele E. Locatelli c22caba1cd Aggiunta lettura file variabili analogiche... 2017-07-04 14:33:47 +02:00
Samuele E. Locatelli 3dcae93ba9 fix siemens multipath x singolo path (x codici G) come OSAI 2017-07-04 14:08:17 +02:00
Samuele E. Locatelli 0e85a8c5b5 fix monopath x OSAI 2017-07-04 13:54:05 +02:00
Samuele E. Locatelli 922f5d9fb1 update visualizzazione distance ToGo x SIEMENS 2017-06-30 18:35:28 +02:00
Samuele E. Locatelli 2feb3ad03d Completata gestione distance to go x SIEMENS! 2017-06-30 18:35:14 +02:00
Samuele E. Locatelli aa2e5f4d58 porto a 5 sec (5x1000) le letture COMPLETE del buffer allarmi FANUC x evitare problemi di "segnali doppi sovrapposti" 2017-06-30 17:51:15 +02:00
Samuele E. Locatelli bac8f0a948 fix visualizzazione ripetuta allarmi SIEMENS 2017-06-30 16:16:24 +02:00
Samuele E. Locatelli a6548d228e aumentato log x fanuc... 2017-06-30 14:26:28 +02:00
Samuele E. Locatelli 517526d454 fix fastcopy x FANUC... 2017-06-30 12:31:11 +02:00
Samuele E. Locatelli ea324b6f81 refresh bigEndianness=false x FANUC... 2017-06-30 11:36:50 +02:00
Samuele E. Locatelli b2c10649aa Aggiunta info source x allarmi
da ottimizzare duplicazione...
2017-06-29 18:23:13 +02:00
Samuele E. Locatelli e4a2821d97 prima bozza gestione allarmi SIEMENS 2017-06-29 18:17:34 +02:00
Samuele E. Locatelli 6fe74a631d completata gestione GCodes modalità multipath 2017-06-29 15:09:11 +02:00
Samuele E. Locatelli d7b55ef336 ok completata lettura dei codifi G del PRIMO path (ora da implementare multi path...) 2017-06-29 14:46:25 +02:00
Samuele E. Locatelli c7377f38f2 OK LEGGO singoli gruppi G... 2017-06-29 14:25:01 +02:00
Samuele E. Locatelli 05fe01f6a5 fix tipo dati x gestione UT Siemens 2017-06-29 12:17:16 +02:00
Samuele E. Locatelli b62f838383 Refresh x install 2017-06-29 10:45:36 +02:00
Samuele E. Locatelli e616552dcd test su FANUC, fix visualizzaizone debug 2017-06-29 10:36:45 +02:00
Samuele E. Locatelli b578a27c0b completata gestione variabili analogiche "libere" 2017-06-28 20:18:40 +02:00
Samuele E. Locatelli bdc049eb57 completata gestione eventi "unbound", però rimessa gestione legacy valori già gestiti CMS/SCM, fix tempi x trasformazione app.config OSAI 2017-06-28 18:53:18 +02:00
Samuele E. Locatelli dfd69c86c9 eliminato EVENT globale procetion status (è IMPLICITO nella gestione vettore memorie stati) 2017-06-28 18:20:15 +02:00
Samuele E. Locatelli daf3ec3da1 bozza aggiunta vettore status "unmanaged" 2017-06-28 14:00:53 +02:00
Samuele E. Locatelli 5b216a0382 pulizia commenti 2017-06-28 12:08:24 +02:00
Samuele E. Locatelli cc3c7b9bbf fix GCode path 2 + fix visualizzazione debug x OSAI 2017-06-28 11:50:02 +02:00
Samuele E. Locatelli 524c6816ed gestione lettura GCodes meno frequente... 2017-06-28 10:50:00 +02:00
Samuele E. Locatelli bf4ff0ccf8 Fix lettura multi G-code x OSAI 2017-06-28 10:30:27 +02:00
Samuele E. Locatelli c184162359 Merge branch 'develop' 2017-06-27 14:25:05 +02:00
Samuele E. Locatelli 0a27f89d4f Merge remote-tracking branch 'origin/develop' into develop 2017-06-27 14:22:22 +02:00
Samuele E. Locatelli 0ddf0fb289 fix gestione speed override x OSAI 2017-06-27 14:21:09 +02:00
Samuele E. Locatelli eadf16b1e6 Merge remote-tracking branch 'gogs.steamware.net/develop' into develop 2017-06-27 14:20:27 +02:00
Samuele E. Locatelli c84f1f56ce fix operazione avvio FANUC che si pianta al load (metodi NON in override x Counter/analog/status) 2017-06-26 17:45:45 +02:00
Samuele E. Locatelli c702bbde27 riallineamento 2017-06-26 15:27:11 +02:00
Samuele E. Locatelli 7bcb2d752e update x gestione speed e override speed mandrino OSAI 2017-06-26 15:25:06 +02:00
Samuele E. Locatelli 1098b70a2c rimesso versione SIEMENS come sviluppo... 2017-06-16 09:15:40 +02:00
Samuele E. Locatelli bf5af22285 fix step post install x ESA (si bloccava tutto...) 2017-06-16 09:12:17 +02:00
Samuele E. Locatelli 246335c074 rimesso conf sviluppo SIEMENS 2017-06-15 15:38:14 +02:00
Samuele E. Locatelli ad3cfecdf0 Update x versione ESA da portare UP TO DATE... 2017-06-15 15:30:12 +02:00
Samuele E. Locatelli 320397c888 confermato contatori manutenzione OK! (da configurare) 2017-06-09 17:03:45 +02:00
Samuele E. Locatelli 8b513e7bb3 fatto test area override jog/rapid/feed/spindle (area 256+) 2017-06-09 16:31:35 +02:00
Samuele E. Locatelli 17d94e68b5 fix gestione lettura dati UT (PLC NON ancora configurato) 2017-06-09 16:14:33 +02:00
Samuele E. Locatelli fd13fce38b fix copia vettore byte alarmi... 2017-06-09 15:25:31 +02:00
Samuele E. Locatelli 1ea4dee39d fix gestione allarmi... 2017-06-09 15:21:38 +02:00
Samuele E. Locatelli e908e3b09a completata revisione metodi gestione UT e decodifica (da testare!!!) 2017-06-07 22:38:23 +02:00
Samuele E. Locatelli 0aa5a5802b imbastita lettura DatiUT (totalmente da verificare...) 2017-06-07 22:03:54 +02:00
Samuele E. Locatelli fde4959cc9 imbastita lettura pos Target (NON corrette aree memoria, verificare!!!) 2017-06-07 21:57:11 +02:00
Samuele E. Locatelli ac8d5d37b9 AdapterConf 16 assi x SIEMENS 2017-06-07 21:56:48 +02:00
Samuele E. Locatelli f6a338735f fix timing... e sistemazione watchdog... 2017-06-07 18:47:43 +02:00
Samuele E. Locatelli 12ea31bf76 ok lettura pos assi (solo primi 6 come da conf ADAPTER) 2017-06-07 18:15:58 +02:00
Samuele E. Locatelli 92b4fd50d4 continuo scrittura procedura x lettura in blocco dati UT SIEMENS 2017-06-07 17:07:18 +02:00
Samuele E. Locatelli 9a85d32099 modifica decodifica UT x gestione bigendianness 2017-06-07 14:18:14 +02:00
Samuele E. Locatelli 913242b2c1 fix timing vari adapter (da loro valori correnti) + fix x SIEMENS 2017-06-07 14:18:01 +02:00
Samuele E. Locatelli 2ca4008c93 aggiunta gestione invio M/S/T veloce + inizio riconf web.config OSAI/FANUC x tempi differenti da SIEMENS 2017-06-07 12:34:20 +02:00
Samuele E. Locatelli c5c2b88bef fix dim vettore assi + aggiunti appunti + speedup base clock... 2017-06-05 18:26:01 +02:00
Samuele E. Locatelli e04a4f5b3a modifiche x test lettura posizione assi siemens 2017-06-05 12:31:51 +02:00
Samuele E. Locatelli 81a849a92c corretta la lettura posizione assi con oggetto "itemRead" a blocco... 2017-05-31 18:28:26 +02:00
Samuele E. Locatelli 20b7fad076 fix endianness x override di Jog/Feed/Raid/Spindle1..4 2017-05-31 17:33:34 +02:00
Samuele E. Locatelli 64e36cc08a completata review x lettura FLOAT (posizione assi) 2017-05-31 16:58:19 +02:00
Samuele E. Locatelli ebef5fdad3 gestione "salto MST" OSAI gestita globalmente, BigEndianness gestita x siemens (che la richiede...) 2017-05-31 15:45:19 +02:00
Samuele E. Locatelli 51a1ef98ec aggiunta gestione posizione assi 2017-05-29 18:01:54 +02:00
Samuele E. Locatelli 7f1fffb6d0 rivista modalità update show dati in finestra debug 2017-05-29 17:34:52 +02:00
Samuele E. Locatelli 63a73c8457 riorganizzate letture memoria e rallentata letture mtz/var analogiche 2017-05-29 17:06:58 +02:00
Samuele E. Locatelli 5fc97537a6 fix gestioen codici M diversi tra OSAI e SIEMENS (salto memoria vuota) 2017-05-29 15:31:05 +02:00
Samuele E. Locatelli 968744d5c9 typo... 2017-05-29 15:30:46 +02:00
Samuele E. Locatelli fc09fcf117 rallentamento chiamate ADP SIEMENS + inserimento exe da WinXP x lettura help 2017-05-29 13:43:56 +02:00
Samuele E. Locatelli 13a2173483 fix gestione tabelle utensili (TROPPE letture stages 3a / 4) 2017-05-29 12:11:44 +02:00
Samuele E. Locatelli 6b9151e67e appunti su pdf 2017-05-26 18:07:03 +02:00
Samuele E. Locatelli 0950bb47e1 inizio inserimento metodi SIEMENS x lettura assi (forse...) 2017-05-26 17:59:51 +02:00
Samuele E. Locatelli f419d44119 Impostata lettura dati UT da aree memoria dedicate... 2017-05-26 12:20:22 +02:00
Samuele E. Locatelli c2797f8782 Aggiunto controllo varaizione valore (minore del 50% del massimo) in proc variabili 2017-05-26 11:43:47 +02:00
Samuele E. Locatelli cf4c548c87 aggiunto blink comunicazione x OSAI/SIEMENS ove mancante... 2017-05-22 15:27:27 +02:00
Samuele E. Locatelli 0f84f44b58 portato in AdapterGeneric metodi x gestione globalData (e implementato in OSAI/SIEMENS 2017-05-22 15:20:49 +02:00
Samuele E. Locatelli bcee91e8a0 tolto da fanuc esecuzione metodo base x getGlobalData (è custom...) 2017-05-22 15:18:32 +02:00
Samuele E. Locatelli 720a7cbbaa fix evento x invDDone... 2017-05-22 12:43:20 +02:00
Samuele E. Locatelli ee80621fb7 refresh tipo messaggio x mastId asse... 2017-05-22 09:43:14 +02:00
Samuele E. Locatelli 54cdd4e181 Merge remote-tracking branch 'origin/develop' into develop 2017-05-22 09:22:52 +02:00
Samuele E. Locatelli e4af6f0d39 inizio correzioni agent item list... 2017-05-22 09:22:30 +02:00
Samuele E. Locatelli aeaaa0f4fa fix grafico x visualizzazione statistiche comunicazione 2017-05-19 17:49:45 +02:00
Samuele E. Locatelli f3f1e38703 fix controllo strobe secondo processo (OSAI e SIEMENS) + allineamento fanuc... 2017-05-19 17:09:13 +02:00
Samuele E. Locatelli 79b90af793 completata revisione indice canali 1/2 (corrispondono nei segnali...) 2017-05-19 16:33:12 +02:00
Samuele E. Locatelli 6420b99ebd fix: aggiunto path 2 in conf x SIEMENS, continuo fix indirizzi memoria PLC 2017-05-19 16:18:07 +02:00
Samuele E. Locatelli 77120da63b tolti commenti x scrittura... 2017-05-19 12:18:52 +02:00
Samuele E. Locatelli 592efc2243 agiunto blink comunicazione x ESA / FANUC 2017-05-19 11:57:10 +02:00
Samuele E. Locatelli d240599d39 aggiunto lampeggio x comunicazione OSAI... 2017-05-19 11:50:09 +02:00
Samuele E. Locatelli ac86f98cbc refresh app.config siemens 2017-05-19 11:44:02 +02:00
Samuele E. Locatelli aaa62d3229 aggiunta visualizzazione fasi comunicazione siemens (cambia colore nome app MTC), commentate fasi scrittura (da rimappare), wait time portato a 20ms, verifica lettura variabili status Ok! 2017-05-19 11:42:37 +02:00
Samuele E. Locatelli 542f69ba3f commentata parte (inutile) n web.config, da testare, x siemens 2017-05-18 17:55:42 +02:00
Samuele E. Locatelli b9a649c15a rallentato timer base x siemens ed introdotto (solo x SIEMENS) un wait cycle alla fine... possibile azzerarlo! 2017-05-18 17:28:31 +02:00
Samuele E. Locatelli 88dcb99b9d commentata chiaata utensili (da rimappare) + fix try/catch letture memorie 2017-05-18 17:27:14 +02:00
Samuele E. Locatelli 2b0112013b condizionata lettura aree accessorie contatori/bit/memorie alla conf che li prevede... 2017-05-18 16:28:53 +02:00
Samuele E. Locatelli 6c1c39aabf fix conf adapterItemList Siemens (e conseguenti) 2017-05-18 16:13:27 +02:00
Samuele E. Locatelli fd2c4b0b2d aggiunta policy startup x SIEMENS (da cambiare con web.config transformations?!?) 2017-05-18 16:12:58 +02:00
Samuele E. Locatelli 2cd4b63392 fix sovrascrittura speedRate 2017-05-17 12:34:12 +02:00
Samuele E. Locatelli 08727e0647 risistemato lettura strobe/ack x MST... 2017-05-17 12:18:42 +02:00
Samuele E. Locatelli 6d558a7f86 Ancora avanzamento x porting da OSAI a SIEMENS x Analog e MtzData 2017-05-17 11:44:49 +02:00
Samuele E. Locatelli 45d735c89b portato in adapterGeneric la parte di slogChangingData... 2017-05-16 17:35:05 +02:00
Samuele E. Locatelli 0bd432debc portato in adapterGeneric gestione pathData... x OSAI e SIEMENS... 2017-05-16 17:31:25 +02:00
Samuele E. Locatelli 13312b63c5 spostato metodi gestione testing in metodo generic... 2017-05-16 17:24:26 +02:00
Samuele E. Locatelli 975e267769 portato in generic procPathStrobe 2017-05-16 17:09:47 +02:00
Samuele E. Locatelli cd686bfa6f spostata chiamata watchdog in adapterGeneric + gestione memoria specifica su ogni adapter tipizzato... 2017-05-12 18:00:38 +02:00
Samuele E. Locatelli 27ec7cdb54 modificato anche siemens x gestione lettura strobe / ack degli allarmi... VALUTARE se leggere sempre tutto (misurare siemens prima di decidere...) 2017-05-12 17:40:11 +02:00
Samuele E. Locatelli 7c5127a0f7 Merge remote-tracking branch 'origin/develop' into develop 2017-05-12 17:29:11 +02:00
Samuele E. Locatelli 8bf86f94d7 ok test OSAI x nuova gestione allarmi (x ora legge blocchi, potrebbe leggere sempre tutti però dati i tempi rilevati...) 2017-05-12 17:29:05 +02:00
Samuele E. Locatelli 85b78786d1 ok test OSAI x nuova gestione allarmi (x opra legge blocchi, potrebbe leggere sempre tutti però dati i tempi rilevati...) 2017-05-12 17:26:12 +02:00
Samuele E. Locatelli 6594bf07b4 ulteriore pulizia, ora testo OSAI... 2017-05-12 16:59:28 +02:00
Samuele E. Locatelli bf4262e2dd spostato check allarmi osai FUORI dalla classe OSAI in generic, ora procedo x SIEMENS poi testo... 2017-05-12 16:57:53 +02:00
Samuele E. Locatelli dc80939eda spostamento oggetti SIEMENS ed OSAI su AdapterGeneric x poter procedere a "unificare" altri metodi 2017-05-12 15:46:14 +02:00
Samuele E. Locatelli 0d9d7ccd74 ancora pulizia e spostamento metodi in area AdapterGeneric (reloadDataFromFile) 2017-05-12 11:58:15 +02:00
Samuele E. Locatelli 8869ea720e porting in adapterGeneric di getStrobeUserAction 2017-05-12 11:54:01 +02:00
Samuele E. Locatelli 22088ffa0b continuo fixing SIEMENS e porting tra osai/siemens a generic metodi comuni... 2017-05-12 11:48:35 +02:00
Samuele E. Locatelli 5d9526113c aggiunto doc mappatura memorie SIEMENS 2017-05-12 09:40:25 +02:00
Samuele E. Locatelli 3078b2d41e spostamento dll x MTC e CMSCncLib... 2017-05-12 09:34:43 +02:00
Samuele E. Locatelli 2cbd457da7 fix impiego valRead x evitare exceptions 2017-05-12 09:15:59 +02:00
Samuele E. Locatelli 3f94a9fe30 aggiunto documentazione e files progetto test siemens x problema .net framework 3.5 / 4.5.2 2017-05-12 09:04:43 +02:00
Samuele E. Locatelli d1a82f2598 refresh progetti x test versioni 4.5.2 / 3.5 (che non può andare con altre dipendenze) x connessione a siemens (pare andare SOLO 3.5...) 2017-05-12 08:58:53 +02:00
Samuele E. Locatelli ce304a6fda spostamento librerie siemens e DotNetAdapterSDK 2017-05-12 08:58:05 +02:00
Samuele E. Locatelli 5f5e1d0be1 messo wrapper x lettura SINGOLO byte... 2017-05-11 16:51:44 +02:00
Samuele E. Locatelli 314f9cc8f1 update x compilazione SIEMENS 2017-05-11 16:16:26 +02:00
Samuele E. Locatelli b1350c013f cambio conf compilazione delle CMSCncLibs:oltre ad opzione FANUC anche opzione SIEMENS ATTIVATA... 2017-05-11 16:15:53 +02:00
Samuele E. Locatelli 11ac4225e5 fix adapterItemList SIEMENS 2017-05-11 16:12:38 +02:00
Samuele E. Locatelli fc0d53f3c5 compila senza errori (e con quasi tutto commentato) la versione SIEMENS!!! iniziata rimattaptura aree DB1499 (dati MTC), DB253 (utensili) e DB254 (dati mandrini) 2017-05-11 15:41:20 +02:00
Samuele E. Locatelli 35c27c1938 primo riallinemento SIEMENS a FANUC... 2017-05-11 12:39:15 +02:00
Samuele E. Locatelli d9a192ec9c pulizia altre librerie da metodi inutilizzati... 2017-05-11 12:33:10 +02:00
Samuele E. Locatelli 74a92b62e5 completata pulizia codice siemens (compila!!!) 2017-05-11 12:32:54 +02:00
Samuele E. Locatelli 9b3d1e1e7f primo inserimento librerie SIEMENS (dll + classe vb) 2017-05-11 12:17:22 +02:00
Samuele E. Locatelli 12a1a01f0b fix errore cancellazione pdb in debug (devono rimanere...) 2017-05-10 15:23:05 +02:00
Samuele E. Locatelli 9e327c46c9 pulizia da using inutuili e sorting intestazioni 2017-05-10 14:26:21 +02:00
Samuele E. Locatelli c575439f05 completate operazioni build con inserimento operazioni POST... 2017-05-10 12:58:42 +02:00
Samuele E. Locatelli 53bba98f53 Merge remote-tracking branch 'origin/develop' into develop 2017-05-10 12:19:47 +02:00
Samuele E. Locatelli 1a319ddedb aggiunta file memo x decodifica info utensili e mandrini 2017-05-10 12:19:26 +02:00
Samuele E. Locatelli 8ffe44957d completata gestione variabili analogiche x OSAI (Load assi...) 2017-05-10 11:50:19 +02:00
Samuele E. Locatelli 2fdd7b15b8 fix IP x OSAI, fix indirizzi OSAI... 2017-05-10 11:17:51 +02:00
Samuele E. Locatelli cc857bbd26 aggiunta lettura file conf analogData (da testare!!!) 2017-05-10 11:01:47 +02:00
Samuele E. Locatelli c936cf13b2 "generalizzata" gestione lettura statusData (loadStatusData) 2017-05-10 10:54:29 +02:00
Samuele E. Locatelli a394faab7a aggiunti file template x AnalogData (OSAI/FANUC/SIEMENS) 2017-05-10 10:51:21 +02:00
Samuele E. Locatelli cdb5788226 generalizzato metodo loadMaintData x FANUC/OSAI 2017-05-10 10:51:01 +02:00
Samuele E. Locatelli e900db69a2 fix setupTgt x nuovo file AnalgData da gestire x OSAI e load assi... 2017-05-10 10:24:40 +02:00
Samuele E. Locatelli 7eb21e9f26 Merge remote-tracking branch 'gogs/develop' into FANUC 2017-05-10 09:11:26 +02:00
Samuele E. Locatelli 76ddc6f698 aggiunto try/catch x persLayer 2017-05-09 16:55:21 +02:00
Samuele E. Locatelli 0561c3af75 fix errore persist data (si spera...) 2017-05-09 16:32:25 +02:00
Samuele E. Locatelli 78a6690a78 aggiunta versione in testo tray dell'Adapter 2017-05-09 15:38:36 +02:00
Samuele E. Locatelli d4c74d514f CORREZIONE BUG: sbagliava a copiare vettore allarmi!!!! 2017-05-09 15:37:52 +02:00
Samuele E. Locatelli 147964ab99 inizio test allarmi OSAI 2017-05-09 14:45:44 +02:00
Samuele E. Locatelli 5a0249ec06 appunti gestione errore allarmi 2017-05-09 14:11:59 +02:00
Samuele E. Locatelli e43f0fa1e5 update iniziato ad inserire gestione valori analogici x load assi OSAI 2017-05-09 14:11:46 +02:00
Samuele E. Locatelli 55ec34401b Correzione PersistData.dat x valori giganteschi 2017-05-09 14:11:20 +02:00
Samuele E. Locatelli 8b2348477e inizio modifica gestione codice errore CNC 2017-05-09 12:56:39 +02:00
Samuele E. Locatelli 752fa4b63e unificata gestione FANUC/OSAI x lettura load/speed/speedOverride delel UnOp 2017-05-09 12:02:24 +02:00
Samuele E. Locatelli 58e29ac786 risolta lettura speed e load dei vari mandrini /UnOp in modo analogo a FANUC 2017-05-09 11:54:47 +02:00
Samuele E. Locatelli 2fd3a283dc aggiunta conf base agent x OSAI 2017-05-03 15:22:48 +02:00
Samuele E. Locatelli fc699f356f fix visualizzazione prima colonna (con MST sovrascriveva area gialla...) 2017-05-02 15:49:48 +02:00
Samuele E. Locatelli c646a04343 aggiunto un check x non riportare log vuoti x allarmi... 2017-05-02 12:05:30 +02:00
Samuele E. Locatelli 42707b9430 inserita gestione multipath x OSAI... 2017-05-02 11:48:41 +02:00
Samuele E. Locatelli 79c8c37f1b gestione fastCopy opzionale x FANUC 2017-04-28 11:42:04 +02:00
Samuele E. Locatelli 5d21fe18ca aggiunto NLog x gestione eccezioni metodi interni KVara 2017-04-28 11:41:45 +02:00
Samuele E. Locatelli 41dde78f13 correzione variabile sb/sb_3 x fanuc... 2017-04-28 11:30:04 +02:00
Samuele E. Locatelli 6d7da08f6e modifica principale in tryConnect x verifica SE sia running adp prima di procedere con check allarmi... + modifiche minori x visualizzazione 2017-04-28 11:22:05 +02:00
Samuele E. Locatelli 977f963f75 correzioni typo 2017-04-28 11:21:11 +02:00
Samuele E. Locatelli 1d9735bcf0 ridotto chiamate x watchdog ANCHE x FANUC 2017-04-26 12:55:26 +02:00
Samuele E. Locatelli 5c3665f5ec riportate modifice x FANUC (gestione UT "unificata") 2017-04-26 12:33:40 +02:00
Samuele E. Locatelli f7ddda9fc8 Implementazione gestione VitaUT x OSAI (da testare con veri prog) 2017-04-26 12:16:54 +02:00
Samuele E. Locatelli 0da21d287a schema gestioen memorie UT 2017-04-26 11:02:26 +02:00
Samuele E. Locatelli 08c50e80a8 update gestioen watchdog: meno chiamate + miglior calcolo impiego canale 2017-04-26 09:56:32 +02:00
Samuele E. Locatelli 0f36052579 corretto calcolo e visualizzazione impiego % del canale x totale chaimate e x singolo set... 2017-04-24 19:09:33 +02:00
Samuele E. Locatelli df04b0149d Aggiunta gestione codici G (modali) - esistono non modali? refresh codice collegato... 2017-04-24 18:35:44 +02:00
Samuele E. Locatelli 974965c507 cambio aree visualizzazione (3) 2017-04-24 18:35:13 +02:00
Samuele E. Locatelli 0a1ea6ab8f rifacimento area monitor variabili (sono aumentate x poter fare debug OSAI...) 2017-04-24 17:10:56 +02:00
Samuele E. Locatelli bb4f5e006f tranne load (che non abbiamo) x asse caricato posizione programmata e attuale... FATTO! 2017-04-24 16:20:12 +02:00
Samuele E. Locatelli d6412efa8a primi metodi OSAI x lettura posizione assi... 2017-04-24 16:05:21 +02:00
Samuele E. Locatelli 0ac8bf1c7f fix lettura e decodifica status data x ESA/FANUC/OSAI e gestioen OSAI dei bit di status da memoria... 2017-04-24 12:21:53 +02:00
Samuele E. Locatelli 2a825c7385 Aggiunti file x target osai/siemens/fanuc... 2017-04-24 10:48:06 +02:00
Samuele E. Locatelli 9dbd336aa1 aggiunta videoguida x flash firmware PLC 2017-04-24 10:47:23 +02:00
Samuele E. Locatelli fb64019bf2 aggiunte azioni target x gestione statusList differenziata tra OSAI/SIEMENS/FANUC 2017-04-24 10:46:55 +02:00
Samuele E. Locatelli 9f649438b5 provato ad inserire metodi x controlalre errori (x ora senza risultato...) 2017-04-21 17:57:29 +02:00
Samuele E. Locatelli faeffeed56 cambio memoria x variabili manutenzione: DA ML9583 (MW19166) a GL500 (GW1000) 2017-04-21 17:19:40 +02:00
Samuele E. Locatelli 42327fec0e provato a decodificare allarmi CNC MA NON FORNA (il cod 161 iniziale è corretto a video, gli altri recuperati SEMBRANO NON corrispondere...) 2017-04-21 16:51:32 +02:00
Samuele E. Locatelli 7c49b1293a correzioni init + CounterListMap aggiornata... 2017-04-21 15:47:00 +02:00
Samuele E. Locatelli cc02ce152e Update conf AdapterItemList x FANUC/OSAI, modifica SetupAdapter x gestione nuovi campi... 2017-04-21 15:27:35 +02:00
Samuele E. Locatelli 8482f30a88 Aggiunta gestione slitta tastatore (MA MANCA IN XML e si incazza...) 2017-04-21 12:59:31 +02:00
Samuele E. Locatelli ac81ff41ff Aggiunta gestione SlittaMag e ProtMag 2017-04-21 12:43:15 +02:00
Samuele E. Locatelli c1ea415273 Portato metodi decodifica aree memoria manutenzione in AdapterGeneric 2017-04-21 11:07:10 +02:00
Samuele E. Locatelli a248e40fee gestione CounterList diversificata x FANUC&OSAI&SIEMENS + setupTgt.bat) 2017-04-21 10:50:11 +02:00
Samuele E. Locatelli c9e78fca04 aggiunto check presenza persistenceDataLayer x FANUC pre needSave 2017-04-21 10:49:17 +02:00
Samuele E. Locatelli f5ed7aae03 aggiunto display lubro 2017-04-21 00:09:53 +02:00
Samuele E. Locatelli 1f44b4324a aggiunto display wrkTime VacPump + VacCount 2017-04-21 00:06:22 +02:00
Samuele E. Locatelli cab65c2a5d aggiunto NumInvAssi 2017-04-21 00:02:12 +02:00
Samuele E. Locatelli 617e9ca003 fix display numCU + AccTimeAssi 2017-04-20 23:57:13 +02:00
Samuele E. Locatelli 953a352bf0 display numCU 2017-04-20 23:54:37 +02:00
Samuele E. Locatelli d4ae291272 aggiunto display pz tot e numgiri KRev.. 2017-04-20 23:46:14 +02:00
Samuele E. Locatelli 4047ed5686 aggiunta visualizzazione distanza percorsa... 2017-04-20 23:20:45 +02:00
Samuele E. Locatelli 9f02e61172 parte senza errori x gestioen contatori (anche SE mi sembrano cannate le unità di misura...) 2017-04-20 22:49:39 +02:00
Samuele E. Locatelli e2c6e1acac NON INIZIALIZZA correttamente persistence layer... da verificare!!!! però abbozzata gestione contatori manutenzione... 2017-04-20 19:18:01 +02:00
Samuele E. Locatelli 4480fcd815 rimessa (decommentata) gestioen allarmi (MA NONTESTATA...) 2017-04-20 18:28:14 +02:00
Samuele E. Locatelli 10b9dd3134 aggiunta lettura allarmi 8da testare) e correzione tipo strobe (8--> 32) 2017-04-20 18:21:17 +02:00
Samuele E. Locatelli beeac57868 prima chiamata a librerie (ok feed...) 2017-04-20 17:18:24 +02:00
Samuele E. Locatelli 796947b089 Aggiunta documentazione OSAI 2017-04-20 14:52:44 +02:00
Samuele E. Locatelli 152f505c5e Gestione preliminare overrides x multipath 2017-04-20 13:03:53 +02:00
Samuele E. Locatelli 297bfb2233 rename aree memoria path (lettura) che mascheravano type 2017-04-20 13:03:38 +02:00
Samuele E. Locatelli 201d912129 Aggiunta variabili in path x jog/spindle1..4 2017-04-20 13:03:12 +02:00
Samuele E. Locatelli faad05199c pulizia USING inutilizzate 2017-04-20 09:31:48 +02:00
Samuele E. Locatelli 42cc97b12f refresh VS2017 2017-04-20 09:27:47 +02:00
Samuele E. Locatelli bec6a605db Modifica x decodifica memorie MST (2° word vuota + cambio posizione base) 2017-04-19 17:21:10 +02:00
Samuele E. Locatelli fb20dcb9fc refresh compilazione x OSAI 2017-04-19 16:41:49 +02:00
Samuele E. Locatelli 4f5dd4dd0f aggiunta in OSAI regione (commentata) x nuovi metodi IOT 2017-04-19 16:41:36 +02:00
Samuele E. Locatelli f7cafdda8e spostato in coda tutti i metodi IOT x FANUC... 2017-04-19 16:38:14 +02:00
Samuele E. Locatelli 04aad81483 Merge remote-tracking branch 'gogs.steamware.net/develop' into OSAI 2017-04-19 15:29:39 +02:00
Samuele E. Locatelli 5f7b3d3b2f fix problema allarme CNC sovrascritto (su canale main) + fix problema POWER/P1 2017-04-19 15:21:21 +02:00
Samuele E. Locatelli 8c18abc952 inizio test FANUC x vettore alalrmi CNC con Adimar 2017-04-19 12:55:37 +02:00
Samuele E. Locatelli 5a55fbc83d fix app.config transform x loglevel e mode... 2017-04-19 12:48:25 +02:00
Samuele E. Locatelli d99188ebc1 verificata e corretta gestione lettura allarmi (web.config / mode)
se mode == "debug --> leggo forzato tutto, altrimenti NO
2017-04-19 12:31:21 +02:00
Samuele E. Locatelli 91d2bfacd0 correzione errore blockcopy (quando elgge solo una DWORD da strobe..) 2017-04-19 12:01:17 +02:00
Samuele E. Locatelli 2e873a74a7 Refresh conf x OSAI (ok in testing varie funzioni) 2017-04-19 11:43:39 +02:00
388 changed files with 58908 additions and 357522 deletions
+32 -1
View File
@@ -9,12 +9,43 @@ TestResults
*.obj
Tests.VisualState.xml
TestResult.xml
*\.vs
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
build/
bld/
[Bb]in/
[Oo]bj/
# Visual Studio 2015 cache/options directory
.vs/
# # NuGet Packages
# *.nupkg
# # The packages folder can be ignored because of Package Restore
# **/packages/*
# # except build/, which is used as an MSBuild target.
# !**/packages/build/
# # Uncomment if necessary however generally it will be regenerated when needed
# #!**/packages/repositories.config
**/packages/*
#MTC_Adapter/\.vs/MTC_Adapter/v15/sqlite3/storage\.ide
# -----------------------------------------------
# MTC_AdapterTest
# -----------------------------------------------
MTC_Adapter/MTC_AdapterTest/bin/Debug*/
MTC_Adapter/MTC_AdapterTest/obj/Debug*/
MTC_Adapter/\.vs/*
MTC_Adapter/\.vs/MTC_Adapter/v15/sqlite3/storage\.ide
# -----------------------------------------------
@@ -29,4 +60,4 @@ MTC_Adapter/MTC_Adapter/obj/Debug*/
!MTC_Adapter/MTC_Adapter/dump/dump.obj
# file temp office
MTC_Adapter/MTC_Adapter/Resources/SCM/.~lock*
MTC_Adapter/MTC_Adapter/Resources/SCM/.~lock*
+221
View File
@@ -0,0 +1,221 @@
variables:
NUGET_PATH: 'C:\Tools\nuget.exe'
MSBUILD_PATH: 'C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Current\Bin\MSBuild.exe'
SOL_NAME: 'SCMA'
APP_NAME: 'SCMA'
NUM_REL: '0.1.2.3'
NUM_DEB: '0.1.2-beta.3'
CONFIG: ''
VERS_MAIN: '2.2'
NEW_REL: ''
OUTPUT_DIR: ''
NEXUS_PATH: 'SCM/SCMA'
# helper x fix pacchetti nuget da repo locale nexus.steamware.net
.nuget-fix: &nuget-fix
- |
$hasSource = C:\Tools\nuget.exe sources list | find "`"Steamware Nexus`"" /C
if ($hasSource -eq 0) {
C:\Tools\nuget.exe sources Add -Name "`"Steamware Nexus`"" -Source https://nexus.steamware.net/repository/nuget-group -username "`"nugetUser`"" -password "`"$NEXUS_PASSWD`""
} else {
C:\Tools\nuget.exe sources Update -Name "`"Steamware Nexus`"" -Source https://nexus.steamware.net/repository/nuget-group -username "`"nugetUser`"" -password "`"$NEXUS_PASSWD`""
}
echo $hasSource
# helper x fix version number
.version-fix: &version-fix
- |
$env:NEW_REL = $env:VERS_MAIN+"."+(get-date format yyMM)+"."+(get-date format ddHH)
$env:NUM_REL = $env:VERS_MAIN+"."+(get-date format yyMM)+"."+(get-date format dHH)
$env:NUM_DEB = $env:VERS_MAIN+"."+(get-date format yyMM)+"-beta."+(get-date format dHH)
$env:NEW_COPYRIGHT = "EgalWare @ 2006-" + (get-date -format yyyy)
$contenuto = Get-Content -path 'MTC_Adapter\VersGen\VersGen.cs' -Raw
$newContenuto = $contenuto -replace '1.0.0.0', $env:NEW_REL
$newContenuto = $newContenuto -replace 'EgalWare © 2006', $env:NEW_COPYRIGHT
$newContenuto | Set-Content -Path 'MTC_Adapter\VersGen\VersGen.cs'
# display versioni generate
$resoconto = "Effettuato fix file VersGen | release v: " + $env:NUM_REL + " | debug v: " + $env:NUM_DEB;
Write-Output $resoconto;
echo "replace completati"
# helper x fix nuspec file
.nuspec-fix: &nuspec-fix
- |
echo "Modifica dati file nuspec Release"
$currRelease = $env:NUM_REL
$currDebug = $env:NUM_DEB
$find = "<version>(.|\n)*?</version>";
$fileNameRel = "$env:APP_NAME.Release.nuspec";
$replRel = "<version>" + $currRelease + "</version>";
$nuspDataRel = Get-Content $fileNameRel;
$nuspDataRelUpd = $nuspDataRel -replace $find, $replRel;
$nuspDataRelUpd = $nuspDataRelUpd -replace "#copyright#", $replCopy;
$nuspDataRelUpd = $nuspDataRelUpd -replace "#releaseNotes#", "Build $adesso";
Set-Content -Path $fileNameRel -Value $nuspDataRelUpd;
echo "Modifica dati file nuspec Debug"
$fileNameDeb = "$env:APP_NAME.Debug.nuspec";
$replDeb = "<version>" + $currDebug + "</version>";
$nuspDataDeb = Get-Content $fileNameDeb;
$nuspDataDebUpd = $nuspDataDeb -replace $find, $replDeb;
$nuspDataDebUpd = $nuspDataDebUpd -replace "#copyright#", $replCopy;
$nuspDataDebUpd = $nuspDataDebUpd -replace "#releaseNotes#", "Build $adesso";
Set-Content -Path $fileNameDeb -Value $nuspDataDebUpd;
echo "replace completati"
# helper pulizia files zip
.cleanup-zip: &cleanup-zip
- |
$env:OUTPUT_DIR = "Releases\" + $CI_COMMIT_BRANCH + "\*"
if ((Test-Path $env:OUTPUT_DIR))
{
Remove-Item $env:OUTPUT_DIR -Force -Recurse -ErrorAction Ignore
}
echo "Clening ZIP dir: $env:OUTPUT_DIR"
# helper creazione files zip
.zipper: &zipper
- |
$7zipPath = $env:ProgramFiles+"\7-Zip\7z.exe"
if (-not (Test-Path -Path $7zipPath -PathType Leaf)) {
throw "7 zip file '$7zipPath' not found"
}
Set-Alias 7zip $7zipPath
$Target = "Releases\" + $CI_COMMIT_BRANCH + "\" + $env:APP_NAME + ".zip"
cd "$env:APP_NAME\bin\"
$Source = "*"
7zip a -tzip $Target $Source -xr!DATA
echo "called ZIP $Source --> $Target"
# helper creazione hash files
.hashBuild: &hashBuild
- |
$Target = "Releases\" + $CI_COMMIT_BRANCH + "\" + $env:APP_NAME + ".zip"
$MD5 = Get-FileHash $Target -Algorithm MD5
$SHA1 = Get-FileHash $Target -Algorithm SHA1
New-Item $Target".md5"
New-Item $Target".sha1"
$MD5.Hash | Set-Content -Path $Target".md5"
$SHA1.Hash | Set-Content -Path $Target".sha1"
echo "Created HASH files for $Target"
.nexusUpload: &nexusUpload
- |
Set-Alias mCurl C:\Windows\system32\curl.exe
$VersNumb = $env:NEW_REL
echo "Curr Version: $VersNumb"
if($CI_COMMIT_BRANCH -eq "master")
{
$version = "stable"
}
else
{
$version = "unstable"
}
$File2Send = Get-ChildItem("Releases\" + $CI_COMMIT_BRANCH + "\" + $env:APP_NAME + ".*")
ForEach ($File in $File2Send) {
$FileName = Split-Path $File -leaf
mCurl -v -u GitLab:$NEXUS_PASSWD --upload-file $File https://nexus.steamware.net/repository/SWS/$env:NEXUS_PATH/$version/LAST/$FileName
mCurl -v -u GitLab:$NEXUS_PASSWD --upload-file $File https://nexus.steamware.net/repository/SWS/$env:NEXUS_PATH/$version/ARCHIVE/$VersNumb/$FileName
}
echo "Upload area utility for Releases\$CI_COMMIT_BRANCH\$env:APP_NAME.*"
$FileUtility = Get-ChildItem("Releases\$CI_COMMIT_BRANCH\$env:APP_NAME.*")
ForEach ($File in $FileUtility) {
$FileName = Split-Path $File -leaf
mCurl -v -u GitLab:$NEXUS_PASSWD --upload-file $File https://nexus.steamware.net/repository/utility/MAPO/$env:APP_NAME/$version/$FileName
}
stages:
- build
- release
# --------------------------------
# BUILD
# --------------------------------
SCMA:build:
stage: build
tags:
- win
variables:
APP_NAME: SCMA
SOL_NAME: SCMA
only:
refs:
- develop
- main
- master
before_script:
- *nuget-fix
- '& "$env:NUGET_PATH" restore "MTC_Adapter\$env:SOL_NAME.sln" -verbosity quiet'
- *version-fix
script:
- 'echo "$env:MSBUILD_PATH" "MTC_Adapter\$env:APP_NAME\$env:APP_NAME.csproj" -target:Build /p:Configuration=Release /p:Platform="x86" /p:DefineConstants="FS30D=1;SIEMENS=1" /p:OutputPath=bin/ /verbosity:minimal /m'
- '& "$env:MSBUILD_PATH" "MTC_Adapter\$env:APP_NAME\$env:APP_NAME.csproj" -target:Build /p:Configuration=Release /p:Platform="x86" /p:DefineConstants="FS30D=1;SIEMENS=1" /p:OutputPath=bin/ /verbosity:minimal /m'
# MTC-ADB:build:
# stage: build
# tags:
# - win
# variables:
# APP_NAME: MTC-ADB
# only:
# refs:
# - develop
# - main
# - master
# before_script:
# - *nuget-fix
# - '& "$env:NUGET_PATH" restore "MTC_Adapter\$env:SOL_NAME.sln" -verbosity quiet'
# - *version-fix
# script:
# - '& "$env:MSBUILD_PATH" "MTC_Adapter\$env:APP_NAME\$env:APP_NAME.csproj" -target:Build /p:Configuration=Release /p:Platform="x86" /p:OutputPath=bin/ /verbosity:minimal /m'
# --------------------------------
# RELEASE
# --------------------------------
SCMA:release:
stage: release
needs: ["SCMA:build"]
tags:
- win
variables:
APP_NAME: SCMA
NEXUS_PATH: MAPO/SCMA
only:
refs:
- main
- master
before_script:
- *nuget-fix
- '& "$env:NUGET_PATH" restore "MTC_Adapter\$env:SOL_NAME.sln" -verbosity quiet'
- *version-fix
- *cleanup-zip
script:
- '& "$env:MSBUILD_PATH" "MTC_Adapter\$env:APP_NAME\$env:APP_NAME.csproj" -target:Build /p:DefineConstants="FS30D=1;SIEMENS=1" /p:Configuration=Release /p:Platform="x86" /p:OutputPath=bin/ /verbosity:minimal /m'
# - *zipper
# - *hashBuild
# - *nexusUpload
# MTC-ADB:release:
# stage: release
# needs: ["MTC-ADB:build"]
# tags:
# - win
# variables:
# APP_NAME: MTC-ADB
# NEXUS_PATH: MAPO/MTC-ADB
# only:
# refs:
# - main
# - master
# before_script:
# - *nuget-fix
# - '& "$env:NUGET_PATH" restore "MTC_Adapter\$env:SOL_NAME.sln" -verbosity quiet'
# - *version-fix
# - *cleanup-zip
# script:
# - '& "$env:MSBUILD_PATH" "MTC_Adapter\$env:APP_NAME\$env:APP_NAME.csproj" -target:Build /p:Configuration=Release /p:DebugSymbols=false /p:DebugType=None /p:Platform="x86" /p:OutputPath=bin/ /verbosity:minimal /m'
# - *zipper
# - *hashBuild
# - *nexusUpload
+3
View File
@@ -0,0 +1,3 @@
{
"workbench.colorCustomizations": {}
}
+210
View File
@@ -0,0 +1,210 @@
pipeline {
// Declarative Pipeline MODE con Scripted Pipeline Syntax entro le chiamate script { }
agent none
environment {
EMAIL_RECIPIENTS = 'samuele@steamware.net'
}
stages {
stage('Checkout') {
agent any
steps {
/* calcolo numero versione... diverso x branch MASTER/DEVELOP */
script {
env.versionNumber = VersionNumber(versionNumberString : '2.2.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILD_DATE_FORMATTED, "ddHH"}', projectStartDate : '2006-01-01', skipFailedBuilds: true, overrideBuildsAllTime: '${NEXT_BUILD_NUMBER}')
env.APP_NAME = 'SCMA'
}
script {
currentBuild.displayName = "${env.versionNumber}"
if (env.BRANCH_NAME == "develop" || env.BRANCH_NAME.contains("DEMO")) {
currentBuild.description = "TEST ${env.versionNumber}"
}
else {
currentBuild.description = "BUILD ${env.versionNumber}"
}
}
// CAMBIO numero versione + checkout NuGet in file sorgente!!!
bat "e:\\fart.exe ${WORKSPACE}\\MTC_Adapter\\VersGen\\VersGen.cs 1.0.0.0 ${env.versionNumber} || EXIT /B 0"
//fixNuget("${WORKSPACE}\\MTC_Adapter\\SCMA.sln")
}
}
stage('Build') {
agent any
steps {
script {
properties([buildDiscarder(logRotator(artifactDaysToKeepStr: '180', artifactNumToKeepStr: '30', daysToKeepStr: '360', numToKeepStr: '30')), pipelineTriggers([])])
// CAMBIO numero versione + checkout NuGet in file sorgente!!!
bat "e:\\fart.exe ${WORKSPACE}\\MTC_Adapter\\VersGen\\VersGen.cs 1.0.0.0 ${env.versionNumber} || EXIT /B 0"
fixNuget("${WORKSPACE}\\MTC_Adapter\\SCMA.sln")
}
script {
/* compilo installers in base al BRANCH del cliente... */
if (env.BRANCH_NAME == "develop" || env.BRANCH_NAME == "master") {
parallel (
DB: {
sleep 1
bat "\"${tool 'MSBuild-16.0'}\" MTC_Adapter/MTC-ADB/MTC-ADB.csproj -target:Build /p:Configuration=Release /p:Platform=\"Any CPU\" /p:OutputPath=bin/ /m"
},
MAIN: {
sleep 0
bat "\"${tool 'MSBuild-16.0'}\" MTC_Adapter/SCMA/SCMA.csproj -target:Build /p:DefineConstants=\"FS30D=1,SIEMENS=1\" /p:Configuration=Release /p:Platform=\"Any CPU\" /p:OutputPath=bin/ /p:verbosity=minimal /m"
},
failFast: false)
}
else {
echo 'Niente x Build (limitata a develop/master)...'
}
}
}
}
stage('Deploy') {
agent any
steps {
// in primis fix versione e recupero pacchetti...
script {
// CAMBIO numero versione + checkout NuGet in file sorgente!!!
bat "e:\\fart.exe ${WORKSPACE}\\MTC_Adapter\\VersGen\\VersGen.cs 1.0.0.0 ${env.versionNumber} || EXIT /B 0"
fixNuget("${WORKSPACE}\\MTC_Adapter\\SCMA.sln")
}
// poi compilo
script {
// procedo solo se NON si tratta di commit in ramo DOCUMentazione...
if (env.BRANCH_NAME == "master" || env.BRANCH_NAME.contains("develop") || env.BRANCH_NAME.contains("MTC_Only")) {
echo 'Questo BRANCH non necessita di installer...'
}
else
{
if (env.BRANCH_NAME == "MySql") {
// pulizia directory BIN
bat "RD /S /Q \"${WORKSPACE}\\MTC_Adapter\\MTC-ADB\\bin\" || EXIT /B 0"
// BUILD adapter MySql!
bat "\"${tool 'MSBuild-16.0'}\" MTC_Adapter/MTC-ADB/MTC-ADB.csproj -target:Build /p:Configuration=${env.BRANCH_NAME} /p:VisualStudioVersion=15.0 /p:RunCodeAnalysis=false /p:Platform=\"Any CPU\" /p:DebugSymbols=false /p:DebugType=None /p:OutputPath=bin/${env.versionNumber} /p:verbosity=minimal /m"
}
else {
// pulizia directory BIN
//bat "RD /S /Q \"${WORKSPACE}\\MTC_Adapter\\SCMA\\bin\" || EXIT /B 0"
if (env.BRANCH_NAME == "FANUC") {
env.currConfig='CMS-FANUC'
}
else if (env.BRANCH_NAME == "KVARA") {
env.currConfig='CMS-ESA'
}
else if (env.BRANCH_NAME == "OSAI") {
env.currConfig='CMS-OSAI'
}
else if (env.BRANCH_NAME == "SIEMENS") {
env.currConfig='CMS-SIEMENS'
}
else {
env.currConfig='Release'
}
// Build adapters MTC/OPC-UA-RED
bat "\"${tool 'MSBuild-16.0'}\" MTC_Adapter/SCMA/SCMA.csproj -target:Build /p:DefineConstants=\"FS30D=1,SIEMENS=1\" /p:Configuration=${env.currConfig} /p:DebugSymbols=false /p:DebugType=None /p:OutputPath=bin/${env.versionNumber} /p:verbosity=minimal /m"
}
}
}
// ora mi occupo delle operazioni di compressione e copia...
script {
// procedo ove necessario...
if (env.BRANCH_NAME == "master" || env.BRANCH_NAME.contains("develop") || env.BRANCH_NAME.contains("MTC_Only")) {
echo 'Nessuna compressione + copia post deploy x documentazione'
}
else {
// manifest.xml: aggiorno versNumber ed URL del branch di update...
bat "e:\\fart.exe MTC_Adapter\\SCMA\\Resources\\manifest.xml 1.0.0.0 ${env.versionNumber} || EXIT /B 0"
bat "e:\\fart.exe MTC_Adapter\\SCMA\\Resources\\manifest.xml {{BRANCHNAME}} ${env.BRANCH_NAME} || EXIT /B 0"
bat "e:\\fart.exe MTC_Adapter\\SCMA\\Resources\\ChangeLog.html {{CURRENT-REL}} ${env.versionNumber} || EXIT /B 0"
writeFile file: 'changeLog.log', text: "${getChangeString()}"
// copio ed esporto in IIS02 i vari files .xml, .html, .zip
powershell '(Get-Content MTC_Adapter\\SCMA\\Resources\\ChangeLog.html) | ForEach-Object { $_ -replace \"{{LAST-CHANGES}}\", \"${getChangeString()}\" } | Set-Content MTC_Adapter\\SCMA\\Resources\\ChangeLog.html'
bat "xcopy /y MTC_Adapter\\SCMA\\Resources\\manifest.xml c:\\inetpub\\wwwroot\\SWS\\SCMA\\${env.BRANCH_NAME}\\ "
bat "xcopy /y MTC_Adapter\\SCMA\\Resources\\ChangeLog.html c:\\inetpub\\wwwroot\\SWS\\SCMA\\${env.BRANCH_NAME}\\ "
bat "xcopy /y MTC_Adapter\\SCMA\\Resources\\logoSteamware.png c:\\inetpub\\wwwroot\\SWS\\SCMA\\${env.BRANCH_NAME}\\ "
// // elimino files inutili di resources e pubblico
// bat "RD /S /Q MTC_Adapter\\SCMA\\Resources"
// elimino vecchio zip...
bat "RD /S /Q Releases\\${env.BRANCH_NAME}\\ || EXIT /B 0"
if (env.BRANCH_NAME == "MySql") {
// Compressione in .zip dell'installer x MySql...
bat "e:\\7za.exe a -tzip ${WORKSPACE}\\Releases\\${env.BRANCH_NAME}\\SCMA.zip ${WORKSPACE}\\MTC_Adapter\\MTC-ADB\\bin\\${env.versionNumber}\\*"
}
else {
// Compressione in .zip dell'installer x adapter MTC/OPC-UA-RED...
bat "e:\\7za.exe a -tzip ${WORKSPACE}\\Releases\\${env.BRANCH_NAME}\\SCMA.zip ${WORKSPACE}\\MTC_Adapter\\SCMA\\bin\\${env.versionNumber}\\*"
}
// salvo copia della versione in staging...
bat "xcopy /y Releases\\${env.BRANCH_NAME}\\SCMA.zip E:\\Staging\\byProd\\SCMA\\${env.BRANCH_NAME}\\${env.versionNumber}\\ "
// copio in area WebDeploy
bat "xcopy /y Releases\\${env.BRANCH_NAME}\\SCMA.zip c:\\inetpub\\wwwroot\\SWS\\SCMA\\${env.BRANCH_NAME}\\ "
}
}
}
}
}
post {
success {
sendSlack("Successful", "good")
}
failure {
sendSlack("Failed", "danger")
}
unstable {
sendSlack("Unstable", "warning")
}
}
}
@NonCPS
// Funzione x recupero changeLog
def getChangeString() {
MAX_MSG_LEN = 100
def changeString = ""
echo "Gathering SCM changes"
def changeLogSets = currentBuild.changeSets
for (int i = 0; i < changeLogSets.size(); i++) {
def entries = changeLogSets[i].items
for (int j = 0; j < entries.length; j++) {
def entry = entries[j]
truncated_msg = entry.msg.take(MAX_MSG_LEN)
changeString += " - ${truncated_msg} [${entry.author}]\n"
}
}
if (!changeString) {
changeString = " - Nessuna Modifica"
}
return changeString
}
// Funzione x invio slack
def sendSlack(status, colorCode) {
slackSend (
color: colorCode,
channel: "#scma-dev",
failOnError: false,
message: "${env.JOB_NAME} ${env.versionNumber} | " + status + ": Build ${env.BUILD_NUMBER}\n\n" +
"Modifiche:\n " + getChangeString() + "\n\n Verifica build: <${env.BUILD_URL}|Apri>" + "\n"
)
}
// funzione x fix pacchetti nuget da NOSTRO repo Nexus con proxy
def fixNuget(solutionFile) {
// bat "e:\\nuget setapikey fe387daa-d07c-3207-877e-96c8be1be91b -source http://nexus.steamware.net/repository/nuget-group"
// solo la prima volta va aggiunta...
hasSource = bat "e:\\nuget sources list | find \"Steamware\" /C"
if (hasSource == "0")
{
bat "e:\\nuget sources Add -Name \"Steamware Nexus\" -Source http://nexus.steamware.net/repository/nuget-group -username \"nugetUser\" -password \"viaDante16\""
}
else
{
bat "e:\\nuget sources Update -Name \"Steamware Nexus\" -Source http://nexus.steamware.net/repository/nuget-group -username \"nugetUser\" -password \"viaDante16\""
}
// preliminarmente svuoto...
bat "rmdir /Q /S ${WORKSPACE}\\MTC_Adapter\\packages"
// restore pacchetti
bat "e:\\nuget.exe restore ${solutionFile}"
}
@@ -0,0 +1,669 @@
<?xml version="1.0" encoding="UTF-8"?>
<MTConnectDevices xsi:schemaLocation="urn:mtconnect.org:MTConnectDevices:1.3 /schemas/MTConnectDevices_1.3.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:mtconnect.org:MTConnectDevices:1.3" xmlns:m="urn:mtconnect.org:MTConnectDevices:1.3">
<Header creationTime="2016-04-28T08:44:40+00:00" sender="localhost" instanceId="100" bufferSize="131072" version="1.3"/>
<Devices>
<Device id="MTC" iso841Class="6" name="ATHENA TR DB" sampleInterval="10" uuid="8651">
<Description manufacturer="CMS">8651</Description>
<DataItems>
<!--<DataItem category="xxxx" id="xxxx" type="xxxx" subType="xxxx" nativeUnits="xxxx" units="xxxx" name="xxxx" />-->
<DataItem category="EVENT" id="AVAIL" type="AVAILABILITY"/>
<DataItem category="EVENT" id="STATUS" type="ACTUATOR_STATE"/>
<DataItem category="SAMPLE" id="ACC_TIME" type="ACCUMULATED_TIME" name="[s] Tempo macchina in potenza "/>
<DataItem category="SAMPLE" id="ACC_TIME_WORK" type="ACCUMULATED_TIME" name="[s] Tempo macchina in lavorazione"/>
<DataItem category="SAMPLE" id="CLOCK" type="CLOCK_TIME"/>
<DataItem category="EVENT" id="POWER" type="POWER_STATE"/>
<!-- <DataItem category="EVENT" id="OperatorId" type="MESSAGE" name="ID Operatore"/> -->
<DataItem category="EVENT" id="FUNCT_MODE" type="MESSAGE"/>
<DataItem category="EVENT" id="USER_ACTION" type="MESSAGE"/>
<DataItem category="EVENT" id="TESTING_DATA" type="MESSAGE"/>
<DataItem category="EVENT" id="ST_PROTECTION_STATUS" type="ACTUATOR_STATE" name="Stato protezioni"/>
<DataItem category="EVENT" id="ST_Press_OK" type="ACTUATOR_STATE" name="Stato pressione aria"/>
<!-- <DataItem category="EVENT" id="UNK_STATUS" type="MESSAGE" name="Stati sconosciuti"/> -->
<!-- <DataItem category="EVENT" id="UNK_STROBE" type="MESSAGE" name="Strobes sconosciuti"/> -->
<DataItem category="MESSAGE" id="MESSAGE" type="MESSAGE" name="Segnalazioni"/>
<DataItem category="CONDITION" id="CNC" type="SYSTEM"/>
<DataItem category="CONDITION" id="PLC" type="LOGIC_PROGRAM"/>
</DataItems>
<Components>
<Axes id="ax" name="Assi">
<Components>
<Linear id="Axis_01" name="ASSE 1">
<DataItems>
<!--<DataItem category="xxxx" id="xxxx" type="xxxx" subType="xxxx" nativeUnits="xxxx" units="xxxx" name="xxxx" />-->
<!--<DataItem category="SAMPLE" id="Axis_01_AccelAct" type="ACCELERATION" nativeUnits="MILLIMETER/SECOND^2" units="MILLIMETER/SECOND^2" name="[mm/s^2] Accelerazione"/>-->
<!--<DataItem category="SAMPLE" id="Axis_01_Battery" type="VOLTAGE" nativeUnits="VOLT" units="VOLT" name="[V] Stato batteria"/>-->
<!--<DataItem category="SAMPLE" id="Temp_01_Value" type="TEMPERATURE" nativeUnits="CELSIUS" units="CELSIUS" name="[°] Sonda temperatura"/>-->
<DataItem category="SAMPLE" id="Axis_01_PosAct" type="POSITION" subType="ACTUAL" nativeUnits="MILLIMETER" units="MILLIMETER" name="[mm] Quota attuale"/>
<DataItem category="SAMPLE" id="Axis_01_PosTgt" type="POSITION" subType="TARGET" nativeUnits="MILLIMETER" units="MILLIMETER" name="[mm] Quota target"/>
<!-- <DataItem category="SAMPLE" id="Axis_01_Load" type="LOAD" nativeUnits="PERCENT" units="PERCENT" name="[%] Carico"/> -->
<DataItem category="SAMPLE" id="Axis_01_FeedAct" type="AXIS_FEEDRATE" subType="ACTUAL" units="MILLIMETER/SECOND" name="[mm/min] Feedrate"/>
<DataItem category="SAMPLE" id="Axis_01_FeedOver" type="AXIS_FEEDRATE" subType="OVERRIDE" nativeUnits="PERCENT" units="PERCENT" name="[%] Feed Override"/>
<DataItem category="SAMPLE" id="Axis_01_AccTime" type="ACCUMULATED_TIME" nativeUnits="HOUR" units="SECOND" name="[s] Tempo utilizzo"/>
<DataItem category="SAMPLE" id="Axis_01_DistDone" type="LENGTH" nativeUnits="COUNT" units="COUNT" name="[m] Distanza totale percorsa"/>
<DataItem category="SAMPLE" id="Axis_01_InvDDone" type="MESSAGE" nativeUnits="COUNT" units="COUNT" name="[#] Numero inversioni"/>
<DataItem category="EVENT" id="Axis_01_Descr" type="MESSAGE" name="Denominazione asse (dinamica)"/>
<DataItem category="EVENT" id="Axis_01_MainProc" type="MESSAGE" name="[#] Processo di appartenenza"/>
<DataItem category="EVENT" id="Axis_01_IsMast" type="MESSAGE" name="[1/0] Master/Slave">
<Constraints>
<Value>1</Value>
</Constraints>
</DataItem>
<DataItem category="EVENT" id="Axis_01_MastId" type="MESSAGE" name="[#] ID Asse master">
<Constraints>
<Value>1</Value>
</Constraints>
</DataItem>
<DataItem category="EVENT" id="Axis_01_Dir" type="DIRECTION" subType="LINEAR" name="[-/+] Direzione"/>
<DataItem category="CONDITION" id="Axis_01_AlarmCNC" type="SYSTEM" name="Allarmi CN" />
<DataItem category="CONDITION" id="Axis_01_AlarmPLC" type="LOGIC_PROGRAM" name="Allarmi PLC"/>
</DataItems>
</Linear>
<Linear id="Axis_02" name="ASSE 2">
<DataItems>
<!--<DataItem category="xxxx" id="xxxx" type="xxxx" subType="xxxx" nativeUnits="xxxx" units="xxxx" name="xxxx" />-->
<!--<DataItem category="SAMPLE" id="Axis_02_AccelAct" type="ACCELERATION" nativeUnits="MILLIMETER/SECOND^2" units="MILLIMETER/SECOND^2" name="[mm/s^2] Accelerazione"/>-->
<!--<DataItem category="SAMPLE" id="Axis_02_Battery" type="VOLTAGE" nativeUnits="VOLT" units="VOLT" name="[V] Stato batteria"/>-->
<!--<DataItem category="SAMPLE" id="Temp_02_Value" type="TEMPERATURE" nativeUnits="CELSIUS" units="CELSIUS" name="[°] Sonda temperatura"/>-->
<DataItem category="SAMPLE" id="Axis_02_PosAct" type="POSITION" subType="ACTUAL" nativeUnits="MILLIMETER" units="MILLIMETER" name="[mm] Quota attuale"/>
<DataItem category="SAMPLE" id="Axis_02_PosTgt" type="POSITION" subType="TARGET" nativeUnits="MILLIMETER" units="MILLIMETER" name="[mm] Quota target"/>
<!-- <DataItem category="SAMPLE" id="Axis_02_Load" type="LOAD" nativeUnits="PERCENT" units="PERCENT" name="[%] Carico"/> -->
<DataItem category="SAMPLE" id="Axis_02_FeedAct" type="AXIS_FEEDRATE" subType="ACTUAL" units="MILLIMETER/SECOND" name="[mm/min] Feedrate"/>
<DataItem category="SAMPLE" id="Axis_02_FeedOver" type="AXIS_FEEDRATE" subType="OVERRIDE" nativeUnits="PERCENT" units="PERCENT" name="[%] Feed Override"/>
<DataItem category="SAMPLE" id="Axis_02_AccTime" type="ACCUMULATED_TIME" nativeUnits="HOUR" units="SECOND" name="[s] Tempo utilizzo"/>
<DataItem category="SAMPLE" id="Axis_02_DistDone" type="LENGTH" nativeUnits="COUNT" units="COUNT" name="[m] Distanza totale percorsa"/>
<DataItem category="SAMPLE" id="Axis_02_InvDDone" type="MESSAGE" nativeUnits="COUNT" units="COUNT" name="[#] Numero inversioni"/>
<DataItem category="EVENT" id="Axis_02_Descr" type="MESSAGE" name="Denominazione asse (dinamica)"/>
<DataItem category="EVENT" id="Axis_02_MainProc" type="MESSAGE" name="[#] Processo di appartenenza"/>
<DataItem category="EVENT" id="Axis_02_IsMast" type="MESSAGE" name="[1/0] Master/Slave">
<Constraints>
<Value>1</Value>
</Constraints>
</DataItem>
<DataItem category="EVENT" id="Axis_02_MastId" type="MESSAGE" name="[#] ID Asse master">
<Constraints>
<Value>2</Value>
</Constraints>
</DataItem>
<DataItem category="EVENT" id="Axis_02_Dir" type="DIRECTION" subType="LINEAR" name="[-/+] Direzione"/>
<DataItem category="CONDITION" id="Axis_02_AlarmCNC" type="SYSTEM" name="Allarmi CN" />
<DataItem category="CONDITION" id="Axis_02_AlarmPLC" type="LOGIC_PROGRAM" name="Allarmi PLC"/>
</DataItems>
</Linear>
<Linear id="Axis_03" name="ASSE 3">
<DataItems>
<!--<DataItem category="xxxx" id="xxxx" type="xxxx" subType="xxxx" nativeUnits="xxxx" units="xxxx" name="xxxx" />-->
<!--<DataItem category="SAMPLE" id="Axis_03_AccelAct" type="ACCELERATION" nativeUnits="MILLIMETER/SECOND^2" units="MILLIMETER/SECOND^2" name="[mm/s^2] Accelerazione"/>-->
<!--<DataItem category="SAMPLE" id="Axis_03_Battery" type="VOLTAGE" nativeUnits="VOLT" units="VOLT" name="[V] Stato batteria"/>-->
<!--<DataItem category="SAMPLE" id="Temp_03_Value" type="TEMPERATURE" nativeUnits="CELSIUS" units="CELSIUS" name="[°] Sonda temperatura"/>-->
<DataItem category="SAMPLE" id="Axis_03_PosAct" type="POSITION" subType="ACTUAL" nativeUnits="MILLIMETER" units="MILLIMETER" name="[mm] Quota attuale"/>
<DataItem category="SAMPLE" id="Axis_03_PosTgt" type="POSITION" subType="TARGET" nativeUnits="MILLIMETER" units="MILLIMETER" name="[mm] Quota target"/>
<!-- <DataItem category="SAMPLE" id="Axis_03_Load" type="LOAD" nativeUnits="PERCENT" units="PERCENT" name="[%] Carico"/> -->
<DataItem category="SAMPLE" id="Axis_03_FeedAct" type="AXIS_FEEDRATE" subType="ACTUAL" units="MILLIMETER/SECOND" name="[mm/min] Feedrate"/>
<DataItem category="SAMPLE" id="Axis_03_FeedOver" type="AXIS_FEEDRATE" subType="OVERRIDE" nativeUnits="PERCENT" units="PERCENT" name="[%] Feed Override"/>
<DataItem category="SAMPLE" id="Axis_03_AccTime" type="ACCUMULATED_TIME" nativeUnits="HOUR" units="SECOND" name="[s] Tempo utilizzo"/>
<DataItem category="SAMPLE" id="Axis_03_DistDone" type="LENGTH" nativeUnits="COUNT" units="COUNT" name="[m] Distanza totale percorsa"/>
<DataItem category="SAMPLE" id="Axis_03_InvDDone" type="MESSAGE" nativeUnits="COUNT" units="COUNT" name="[#] Numero inversioni"/>
<DataItem category="EVENT" id="Axis_03_Descr" type="MESSAGE" name="Denominazione asse (dinamica)"/>
<DataItem category="EVENT" id="Axis_03_MainProc" type="MESSAGE" name="[#] Processo di appartenenza"/>
<DataItem category="EVENT" id="Axis_03_IsMast" type="MESSAGE" name="[1/0] Master/Slave">
<Constraints>
<Value>1</Value>
</Constraints>
</DataItem>
<DataItem category="EVENT" id="Axis_03_MastId" type="MESSAGE" name="[#] ID Asse master">
<Constraints>
<Value>3</Value>
</Constraints>
</DataItem>
<DataItem category="EVENT" id="Axis_03_Dir" type="DIRECTION" subType="LINEAR" name="[-/+] Direzione"/>
<DataItem category="CONDITION" id="Axis_03_AlarmCNC" type="SYSTEM" name="Allarmi CN" />
<DataItem category="CONDITION" id="Axis_03_AlarmPLC" type="LOGIC_PROGRAM" name="Allarmi PLC"/>
</DataItems>
</Linear>
<Rotary id="Axis_04" name="ASSE 4">
<DataItems>
<!--<DataItem category="xxxx" id="xxxx" type="xxxx" subType="xxxx" nativeUnits="xxxx" units="xxxx" name="xxxx" />-->
<!--<DataItem category="SAMPLE" id="Axis_04_AccelAct" type="ACCELERATION" nativeUnits="MILLIMETER/SECOND^2" units="MILLIMETER/SECOND^2" name="[mm/s^2] Accelerazione"/>-->
<!--<DataItem category="SAMPLE" id="Axis_04_Battery" type="VOLTAGE" nativeUnits="VOLT" units="VOLT" name="[V] Stato batteria"/>-->
<!--<DataItem category="SAMPLE" id="Temp_04_Value" type="TEMPERATURE" nativeUnits="CELSIUS" units="CELSIUS" name="[°] Sonda temperatura"/>-->
<DataItem category="SAMPLE" id="Axis_04_PosAct" type="ANGLE" subType="ACTUAL" nativeUnits="DEGREE" units="DEGREE" name="[°] Quota attuale"/>
<DataItem category="SAMPLE" id="Axis_04_PosTgt" type="ANGLE" subType="TARGET" nativeUnits="DEGREE" units="DEGREE" name="[°] Quota target"/>
<!-- <DataItem category="SAMPLE" id="Axis_04_Load" type="LOAD" nativeUnits="PERCENT" units="PERCENT" name="[%] Carico"/> -->
<DataItem category="SAMPLE" id="Axis_04_FeedAct" type="ROTARY_VELOCITY" subType="ACTUAL" nativeUnits="REVOLUTION/MINUTE" units="REVOLUTION/MINUTE" name="[°/min] Feedrate"/>
<DataItem category="SAMPLE" id="Axis_04_FeedOver" type="ROTARY_VELOCITY" subType="OVERRIDE" nativeUnits="PERCENT" units="PERCENT" name="[%] Feed Override"/>
<DataItem category="SAMPLE" id="Axis_04_AccTime" type="ACCUMULATED_TIME" nativeUnits="HOUR" units="SECOND" name="[s] Tempo utilizzo"/>
<DataItem category="SAMPLE" id="Axis_04_DistDone" type="LENGTH" nativeUnits="COUNT" units="COUNT" name="[m] Distanza totale percorsa"/>
<DataItem category="SAMPLE" id="Axis_04_InvDDone" type="MESSAGE" nativeUnits="COUNT" units="COUNT" name="[#] Numero inversioni"/>
<DataItem category="EVENT" id="Axis_04_Descr" type="MESSAGE" name="Denominazione asse (dinamica)"/>
<DataItem category="EVENT" id="Axis_04_MainProc" type="MESSAGE" name="[#] Processo di appartenenza"/>
<DataItem category="EVENT" id="Axis_04_IsMast" type="MESSAGE" name="[0/1] Slave/Master">
<Constraints>
<Value>1</Value>
</Constraints>
</DataItem>
<DataItem category="EVENT" id="Axis_04_MastId" type="MESSAGE" name="[#] ID Asse master">
<Constraints>
<Value>4</Value>
</Constraints>
</DataItem>
<DataItem category="EVENT" id="Axis_04_Dir" type="DIRECTION" subType="LINEAR" name="[-/+] Direzione"/>
<DataItem category="CONDITION" id="Axis_04_AlarmCNC" type="SYSTEM" name="Allarmi CN" />
<DataItem category="CONDITION" id="Axis_04_AlarmPLC" type="LOGIC_PROGRAM" name="Allarmi PLC"/>
</DataItems>
</Rotary>
<Rotary id="Axis_05" name="ASSE 5">
<DataItems>
<!--<DataItem category="SAMPLE" id="Axis_05_AccelAct" type="ANGULAR_ACCELERATION" nativeUnits="DEGREE/SECOND^2" units="DEGREE/SECOND^2" name="[°/s^2] Accelerazione"/>-->
<!--<DataItem category="SAMPLE" id="Axis_05_Battery" type="VOLTAGE" nativeUnits="VOLT" units="VOLT" name="[V] Stato batteria"/>-->
<!--<DataItem category="SAMPLE" id="Temp_05_Value" type="TEMPERATURE" nativeUnits="CELSIUS" units="CELSIUS" name="[°] Sonda temperatura"/>-->
<DataItem category="SAMPLE" id="Axis_05_PosAct" type="ANGLE" subType="ACTUAL" nativeUnits="DEGREE" units="DEGREE" name="[°] Quota attuale"/>
<DataItem category="SAMPLE" id="Axis_05_PosTgt" type="ANGLE" subType="TARGET" nativeUnits="DEGREE" units="DEGREE" name="[°] Quota target"/>
<!-- <DataItem category="SAMPLE" id="Axis_05_Load" type="LOAD" nativeUnits="PERCENT" units="PERCENT" name="[%] Carico"/> -->
<DataItem category="SAMPLE" id="Axis_05_FeedAct" type="ROTARY_VELOCITY" subType="ACTUAL" nativeUnits="REVOLUTION/MINUTE" units="REVOLUTION/MINUTE" name="[°/min] Feedrate"/>
<DataItem category="SAMPLE" id="Axis_05_FeedOver" type="ROTARY_VELOCITY" subType="OVERRIDE" nativeUnits="PERCENT" units="PERCENT" name="[%] Feed Override"/>
<DataItem category="SAMPLE" id="Axis_05_AccTime" type="ACCUMULATED_TIME" nativeUnits="HOUR" units="SECOND" name="[s] Tempo utilizzo"/>
<DataItem category="SAMPLE" id="Axis_05_DistDone" type="LENGTH" nativeUnits="COUNT" units="COUNT" name="[rev] Rivoluzioni"/>
<DataItem category="SAMPLE" id="Axis_05_InvDDone" type="MESSAGE" nativeUnits="COUNT" units="COUNT" name="[#] Numero inversioni"/>
<DataItem category="EVENT" id="Axis_05_Descr" type="MESSAGE" name="Denominazione asse (dinamica)"/>
<DataItem category="EVENT" id="Axis_05_MainProc" type="MESSAGE" name="[#] Processo di appartenenza"/>
<DataItem category="EVENT" id="Axis_05_IsMast" type="MESSAGE" name="[1/0] Master/Slave">
<Constraints>
<Value>1</Value>
</Constraints>
</DataItem>
<DataItem category="EVENT" id="Axis_05_MastId" type="MESSAGE" name="[#] ID Asse master">
<Constraints>
<Value>5</Value>
</Constraints>
</DataItem>
<DataItem category="EVENT" id="Axis_05_Dir" type="DIRECTION" subType="ROTARY" name="[-/+] Direzione"/>
<DataItem category="CONDITION" id="Axis_05_AlarmCNC" type="SYSTEM" name="Allarmi CN" />
<DataItem category="CONDITION" id="Axis_05_AlarmPLC" type="LOGIC_PROGRAM" name="Allarmi PLC"/>
</DataItems>
</Rotary>
<Linear id="Axis_06" name="ASSE 6">
<DataItems>
<!--<DataItem category="xxxx" id="xxxx" type="xxxx" subType="xxxx" nativeUnits="xxxx" units="xxxx" name="xxxx" />-->
<!--<DataItem category="SAMPLE" id="Axis_06_AccelAct" type="ACCELERATION" nativeUnits="MILLIMETER/SECOND^2" units="MILLIMETER/SECOND^2" name="[mm/s^2] Accelerazione"/>-->
<!--<DataItem category="SAMPLE" id="Axis_06_Battery" type="VOLTAGE" nativeUnits="VOLT" units="VOLT" name="[V] Stato batteria"/>-->
<!--<DataItem category="SAMPLE" id="Temp_06_Value" type="TEMPERATURE" nativeUnits="CELSIUS" units="CELSIUS" name="[°] Sonda temperatura"/>-->
<DataItem category="SAMPLE" id="Axis_06_PosAct" type="POSITION" subType="ACTUAL" nativeUnits="MILLIMETER" units="MILLIMETER" name="[mm] Quota attuale"/>
<DataItem category="SAMPLE" id="Axis_06_PosTgt" type="POSITION" subType="TARGET" nativeUnits="MILLIMETER" units="MILLIMETER" name="[mm] Quota target"/>
<!-- <DataItem category="SAMPLE" id="Axis_06_Load" type="LOAD" nativeUnits="PERCENT" units="PERCENT" name="[%] Carico"/> -->
<DataItem category="SAMPLE" id="Axis_06_FeedAct" type="AXIS_FEEDRATE" subType="ACTUAL" units="MILLIMETER/SECOND" name="[mm/min] Feedrate"/>
<DataItem category="SAMPLE" id="Axis_06_FeedOver" type="AXIS_FEEDRATE" subType="OVERRIDE" nativeUnits="PERCENT" units="PERCENT" name="[%] Feed Override"/>
<DataItem category="SAMPLE" id="Axis_06_AccTime" type="ACCUMULATED_TIME" nativeUnits="HOUR" units="SECOND" name="[s] Tempo utilizzo"/>
<DataItem category="SAMPLE" id="Axis_06_DistDone" type="LENGTH" nativeUnits="COUNT" units="COUNT" name="[m] Distanza totale percorsa"/>
<DataItem category="SAMPLE" id="Axis_06_InvDDone" type="MESSAGE" nativeUnits="COUNT" units="COUNT" name="[#] Numero inversioni"/>
<DataItem category="EVENT" id="Axis_06_Descr" type="MESSAGE" name="Denominazione asse (dinamica)"/>
<DataItem category="EVENT" id="Axis_06_MainProc" type="MESSAGE" name="[#] Processo di appartenenza"/>
<DataItem category="EVENT" id="Axis_06_IsMast" type="MESSAGE" name="[1/0] Master/Slave">
<Constraints>
<Value>1</Value>
</Constraints>
</DataItem>
<DataItem category="EVENT" id="Axis_06_MastId" type="MESSAGE" name="[#] ID Asse master">
<Constraints>
<Value>6</Value>
</Constraints>
</DataItem>
<DataItem category="EVENT" id="Axis_06_Dir" type="DIRECTION" subType="LINEAR" name="[-/+] Direzione"/>
<DataItem category="CONDITION" id="Axis_06_AlarmCNC" type="SYSTEM" name="Allarmi CN" />
<DataItem category="CONDITION" id="Axis_06_AlarmPLC" type="LOGIC_PROGRAM" name="Allarmi PLC"/>
</DataItems>
</Linear>
<Linear id="Axis_07" name="ASSE 7">
<DataItems>
<!--<DataItem category="xxxx" id="xxxx" type="xxxx" subType="xxxx" nativeUnits="xxxx" units="xxxx" name="xxxx" />-->
<!--<DataItem category="SAMPLE" id="Axis_07_AccelAct" type="ACCELERATION" nativeUnits="MILLIMETER/SECOND^2" units="MILLIMETER/SECOND^2" name="[mm/s^2] Accelerazione"/>-->
<!--<DataItem category="SAMPLE" id="Axis_07_Battery" type="VOLTAGE" nativeUnits="VOLT" units="VOLT" name="[V] Stato batteria"/>-->
<!--<DataItem category="SAMPLE" id="Temp_07_Value" type="TEMPERATURE" nativeUnits="CELSIUS" units="CELSIUS" name="[°] Sonda temperatura"/>-->
<DataItem category="SAMPLE" id="Axis_07_PosAct" type="POSITION" subType="ACTUAL" nativeUnits="MILLIMETER" units="MILLIMETER" name="[mm] Quota attuale"/>
<DataItem category="SAMPLE" id="Axis_07_PosTgt" type="POSITION" subType="TARGET" nativeUnits="MILLIMETER" units="MILLIMETER" name="[mm] Quota target"/>
<!-- <DataItem category="SAMPLE" id="Axis_07_Load" type="LOAD" nativeUnits="PERCENT" units="PERCENT" name="[%] Carico"/> -->
<DataItem category="SAMPLE" id="Axis_07_FeedAct" type="AXIS_FEEDRATE" subType="ACTUAL" units="MILLIMETER/SECOND" name="[mm/min] Feedrate"/>
<DataItem category="SAMPLE" id="Axis_07_FeedOver" type="AXIS_FEEDRATE" subType="OVERRIDE" nativeUnits="PERCENT" units="PERCENT" name="[%] Feed Override"/>
<DataItem category="SAMPLE" id="Axis_07_AccTime" type="ACCUMULATED_TIME" nativeUnits="HOUR" units="SECOND" name="[s] Tempo utilizzo"/>
<DataItem category="SAMPLE" id="Axis_07_DistDone" type="LENGTH" nativeUnits="COUNT" units="COUNT" name="[m] Distanza totale percorsa"/>
<DataItem category="SAMPLE" id="Axis_07_InvDDone" type="MESSAGE" nativeUnits="COUNT" units="COUNT" name="[#] Numero inversioni"/>
<DataItem category="EVENT" id="Axis_07_Descr" type="MESSAGE" name="Denominazione asse (dinamica)"/>
<DataItem category="EVENT" id="Axis_07_MainProc" type="MESSAGE" name="[#] Processo di appartenenza"/>
<DataItem category="EVENT" id="Axis_07_IsMast" type="MESSAGE" name="[1/0] Master/Slave">
<Constraints>
<Value>1</Value>
</Constraints>
</DataItem>
<DataItem category="EVENT" id="Axis_07_MastId" type="MESSAGE" name="[#] ID Asse master">
<Constraints>
<Value>7</Value>
</Constraints>
</DataItem>
<DataItem category="EVENT" id="Axis_07_Dir" type="DIRECTION" subType="LINEAR" name="[-/+] Direzione"/>
<DataItem category="CONDITION" id="Axis_07_AlarmCNC" type="SYSTEM" name="Allarmi CN" />
<DataItem category="CONDITION" id="Axis_07_AlarmPLC" type="LOGIC_PROGRAM" name="Allarmi PLC"/>
</DataItems>
</Linear>
<Linear id="Axis_08" name="ASSE 8">
<DataItems>
<!--<DataItem category="xxxx" id="xxxx" type="xxxx" subType="xxxx" nativeUnits="xxxx" units="xxxx" name="xxxx" />-->
<!--<DataItem category="SAMPLE" id="Axis_08_AccelAct" type="ACCELERATION" nativeUnits="MILLIMETER/SECOND^2" units="MILLIMETER/SECOND^2" name="[mm/s^2] Accelerazione"/>-->
<!--<DataItem category="SAMPLE" id="Axis_08_Battery" type="VOLTAGE" nativeUnits="VOLT" units="VOLT" name="[V] Stato batteria"/>-->
<!--<DataItem category="SAMPLE" id="Temp_08_Value" type="TEMPERATURE" nativeUnits="CELSIUS" units="CELSIUS" name="[°] Sonda temperatura"/>-->
<DataItem category="SAMPLE" id="Axis_08_PosAct" type="POSITION" subType="ACTUAL" nativeUnits="MILLIMETER" units="MILLIMETER" name="[mm] Quota attuale"/>
<DataItem category="SAMPLE" id="Axis_08_PosTgt" type="POSITION" subType="TARGET" nativeUnits="MILLIMETER" units="MILLIMETER" name="[mm] Quota target"/>
<!-- <DataItem category="SAMPLE" id="Axis_08_Load" type="LOAD" nativeUnits="PERCENT" units="PERCENT" name="[%] Carico"/> -->
<DataItem category="SAMPLE" id="Axis_08_FeedAct" type="AXIS_FEEDRATE" subType="ACTUAL" units="MILLIMETER/SECOND" name="[mm/min] Feedrate"/>
<DataItem category="SAMPLE" id="Axis_08_FeedOver" type="AXIS_FEEDRATE" subType="OVERRIDE" nativeUnits="PERCENT" units="PERCENT" name="[%] Feed Override"/>
<DataItem category="SAMPLE" id="Axis_08_AccTime" type="ACCUMULATED_TIME" nativeUnits="HOUR" units="SECOND" name="[s] Tempo utilizzo"/>
<DataItem category="SAMPLE" id="Axis_08_DistDone" type="LENGTH" nativeUnits="COUNT" units="COUNT" name="[m] Distanza totale percorsa"/>
<DataItem category="SAMPLE" id="Axis_08_InvDDone" type="MESSAGE" nativeUnits="COUNT" units="COUNT" name="[#] Numero inversioni"/>
<DataItem category="EVENT" id="Axis_08_Descr" type="MESSAGE" name="Denominazione asse (dinamica)"/>
<DataItem category="EVENT" id="Axis_08_MainProc" type="MESSAGE" name="[#] Processo di appartenenza"/>
<DataItem category="EVENT" id="Axis_08_IsMast" type="MESSAGE" name="[1/0] Master/Slave">
<Constraints>
<Value>1</Value>
</Constraints>
</DataItem>
<DataItem category="EVENT" id="Axis_08_MastId" type="MESSAGE" name="[#] ID Asse master">
<Constraints>
<Value>8</Value>
</Constraints>
</DataItem>
<DataItem category="EVENT" id="Axis_08_Dir" type="DIRECTION" subType="LINEAR" name="[-/+] Direzione"/>
<DataItem category="CONDITION" id="Axis_08_AlarmCNC" type="SYSTEM" name="Allarmi CN" />
<DataItem category="CONDITION" id="Axis_08_AlarmPLC" type="LOGIC_PROGRAM" name="Allarmi PLC"/>
</DataItems>
</Linear>
<Rotary id="Axis_09" name="ASSE 9">
<DataItems>
<!--<DataItem category="xxxx" id="xxxx" type="xxxx" subType="xxxx" nativeUnits="xxxx" units="xxxx" name="xxxx" />-->
<!--<DataItem category="SAMPLE" id="Axis_09_AccelAct" type="ACCELERATION" nativeUnits="MILLIMETER/SECOND^2" units="MILLIMETER/SECOND^2" name="[mm/s^2] Accelerazione"/>-->
<!--<DataItem category="SAMPLE" id="Axis_09_Battery" type="VOLTAGE" nativeUnits="VOLT" units="VOLT" name="[V] Stato batteria"/>-->
<!--<DataItem category="SAMPLE" id="Temp_09_Value" type="TEMPERATURE" nativeUnits="CELSIUS" units="CELSIUS" name="[°] Sonda temperatura"/>-->
<DataItem category="SAMPLE" id="Axis_09_PosAct" type="ANGLE" subType="ACTUAL" nativeUnits="DEGREE" units="DEGREE" name="[°] Quota attuale"/>
<DataItem category="SAMPLE" id="Axis_09_PosTgt" type="ANGLE" subType="TARGET" nativeUnits="DEGREE" units="DEGREE" name="[°] Quota target"/>
<!-- <DataItem category="SAMPLE" id="Axis_09_Load" type="LOAD" nativeUnits="PERCENT" units="PERCENT" name="[%] Carico"/> -->
<DataItem category="SAMPLE" id="Axis_09_FeedAct" type="ROTARY_VELOCITY" subType="ACTUAL" nativeUnits="REVOLUTION/MINUTE" units="REVOLUTION/MINUTE" name="[°/min] Feedrate"/>
<DataItem category="SAMPLE" id="Axis_09_FeedOver" type="ROTARY_VELOCITY" subType="OVERRIDE" nativeUnits="PERCENT" units="PERCENT" name="[%] Feed Override"/>
<DataItem category="SAMPLE" id="Axis_09_AccTime" type="ACCUMULATED_TIME" nativeUnits="HOUR" units="SECOND" name="[s] Tempo utilizzo"/>
<DataItem category="SAMPLE" id="Axis_09_DistDone" type="LENGTH" nativeUnits="COUNT" units="COUNT" name="[m] Distanza totale percorsa"/>
<DataItem category="SAMPLE" id="Axis_09_InvDDone" type="MESSAGE" nativeUnits="COUNT" units="COUNT" name="[#] Numero inversioni"/>
<DataItem category="EVENT" id="Axis_09_Descr" type="MESSAGE" name="Denominazione asse (dinamica)"/>
<DataItem category="EVENT" id="Axis_09_MainProc" type="MESSAGE" name="[#] Processo di appartenenza"/>
<DataItem category="EVENT" id="Axis_09_IsMast" type="MESSAGE" name="[0/1] Slave/Master">
<Constraints>
<Value>1</Value>
</Constraints>
</DataItem>
<DataItem category="EVENT" id="Axis_09_MastId" type="MESSAGE" name="[#] ID Asse master">
<Constraints>
<Value>9</Value>
</Constraints>
</DataItem>
<DataItem category="EVENT" id="Axis_09_Dir" type="DIRECTION" subType="LINEAR" name="[-/+] Direzione"/>
<DataItem category="CONDITION" id="Axis_09_AlarmCNC" type="SYSTEM" name="Allarmi CN" />
<DataItem category="CONDITION" id="Axis_09_AlarmPLC" type="LOGIC_PROGRAM" name="Allarmi PLC"/>
</DataItems>
</Rotary>
<Rotary id="Axis_10" name="ASSE 10">
<DataItems>
<!--<DataItem category="SAMPLE" id="Axis_10_AccelAct" type="ANGULAR_ACCELERATION" nativeUnits="DEGREE/SECOND^2" units="DEGREE/SECOND^2" name="[°/s^2] Accelerazione"/>-->
<!--<DataItem category="SAMPLE" id="Axis_10_Battery" type="VOLTAGE" nativeUnits="VOLT" units="VOLT" name="[V] Stato batteria"/>-->
<!--<DataItem category="SAMPLE" id="Temp_10_Value" type="TEMPERATURE" nativeUnits="CELSIUS" units="CELSIUS" name="[°] Sonda temperatura"/>-->
<DataItem category="SAMPLE" id="Axis_10_PosAct" type="ANGLE" subType="ACTUAL" nativeUnits="DEGREE" units="DEGREE" name="[°] Quota attuale"/>
<DataItem category="SAMPLE" id="Axis_10_PosTgt" type="ANGLE" subType="TARGET" nativeUnits="DEGREE" units="DEGREE" name="[°] Quota target"/>
<!-- <DataItem category="SAMPLE" id="Axis_10_Load" type="LOAD" nativeUnits="PERCENT" units="PERCENT" name="[%] Carico"/> -->
<DataItem category="SAMPLE" id="Axis_10_FeedAct" type="ROTARY_VELOCITY" subType="ACTUAL" nativeUnits="REVOLUTION/MINUTE" units="REVOLUTION/MINUTE" name="[°/min] Feedrate"/>
<DataItem category="SAMPLE" id="Axis_10_FeedOver" type="ROTARY_VELOCITY" subType="OVERRIDE" nativeUnits="PERCENT" units="PERCENT" name="[%] Feed Override"/>
<DataItem category="SAMPLE" id="Axis_10_AccTime" type="ACCUMULATED_TIME" nativeUnits="HOUR" units="SECOND" name="[s] Tempo utilizzo"/>
<DataItem category="SAMPLE" id="Axis_10_DistDone" type="LENGTH" nativeUnits="COUNT" units="COUNT" name="[rev] Rivoluzioni"/>
<DataItem category="SAMPLE" id="Axis_10_InvDDone" type="MESSAGE" nativeUnits="COUNT" units="COUNT" name="[#] Numero inversioni"/>
<DataItem category="EVENT" id="Axis_10_Descr" type="MESSAGE" name="Denominazione asse (dinamica)"/>
<DataItem category="EVENT" id="Axis_10_MainProc" type="MESSAGE" name="[#] Processo di appartenenza"/>
<DataItem category="EVENT" id="Axis_10_IsMast" type="MESSAGE" name="[1/0] Master/Slave">
<Constraints>
<Value>1</Value>
</Constraints>
</DataItem>
<DataItem category="EVENT" id="Axis_10_MastId" type="MESSAGE" name="[#] ID Asse master">
<Constraints>
<Value>10</Value>
</Constraints>
</DataItem>
<DataItem category="EVENT" id="Axis_10_Dir" type="DIRECTION" subType="ROTARY" name="[-/+] Direzione"/>
<DataItem category="CONDITION" id="Axis_10_AlarmCNC" type="SYSTEM" name="Allarmi CN" />
<DataItem category="CONDITION" id="Axis_10_AlarmPLC" type="LOGIC_PROGRAM" name="Allarmi PLC"/>
</DataItems>
</Rotary>
<Rotary id="Axis_11" name="ASSE 11">
<DataItems>
<!--<DataItem category="SAMPLE" id="Axis_11_AccelAct" type="ANGULAR_ACCELERATION" nativeUnits="DEGREE/SECOND^2" units="DEGREE/SECOND^2" name="[°/s^2] Accelerazione"/>-->
<!--<DataItem category="SAMPLE" id="Axis_11_Battery" type="VOLTAGE" nativeUnits="VOLT" units="VOLT" name="[V] Stato batteria"/>-->
<!--<DataItem category="SAMPLE" id="Temp_11_Value" type="TEMPERATURE" nativeUnits="CELSIUS" units="CELSIUS" name="[°] Sonda temperatura"/>-->
<DataItem category="SAMPLE" id="Axis_11_PosAct" type="ANGLE" subType="ACTUAL" nativeUnits="DEGREE" units="DEGREE" name="[°] Quota attuale"/>
<DataItem category="SAMPLE" id="Axis_11_PosTgt" type="ANGLE" subType="TARGET" nativeUnits="DEGREE" units="DEGREE" name="[°] Quota target"/>
<!-- <DataItem category="SAMPLE" id="Axis_11_Load" type="LOAD" nativeUnits="PERCENT" units="PERCENT" name="[%] Carico"/> -->
<DataItem category="SAMPLE" id="Axis_11_FeedAct" type="ROTARY_VELOCITY" subType="ACTUAL" nativeUnits="REVOLUTION/MINUTE" units="REVOLUTION/MINUTE" name="[°/min] Feedrate"/>
<DataItem category="SAMPLE" id="Axis_11_FeedOver" type="ROTARY_VELOCITY" subType="OVERRIDE" nativeUnits="PERCENT" units="PERCENT" name="[%] Feed Override"/>
<DataItem category="SAMPLE" id="Axis_11_AccTime" type="ACCUMULATED_TIME" nativeUnits="HOUR" units="SECOND" name="[s] Tempo utilizzo"/>
<DataItem category="SAMPLE" id="Axis_11_DistDone" type="LENGTH" nativeUnits="COUNT" units="COUNT" name="[rev] Rivoluzioni"/>
<DataItem category="SAMPLE" id="Axis_11_InvDDone" type="MESSAGE" nativeUnits="COUNT" units="COUNT" name="[#] Numero inversioni"/>
<DataItem category="EVENT" id="Axis_11_Descr" type="MESSAGE" nname="Denominazione asse (dinamica)"/>
<DataItem category="EVENT" id="Axis_11_MainProc" type="MESSAGE" name="[#] Processo di appartenenza"/>
<DataItem category="EVENT" id="Axis_11_IsMast" type="MESSAGE" name="[1/0] Master/Slave">
<Constraints>
<Value>1</Value>
</Constraints>
</DataItem>
<DataItem category="EVENT" id="Axis_11_MastId" type="MESSAGE" name="[#] ID Asse master">
<Constraints>
<Value>20</Value>
</Constraints>
</DataItem>
<DataItem category="EVENT" id="Axis_11_Dir" type="DIRECTION" subType="ROTARY" name="[-/+] Direzione"/>
<DataItem category="CONDITION" id="Axis_11_AlarmCNC" type="SYSTEM" name="Allarmi CN" />
<DataItem category="CONDITION" id="Axis_11_AlarmPLC" type="LOGIC_PROGRAM" name="Allarmi PLC"/>
</DataItems>
</Rotary>
</Components>
</Axes>
<Controller id="cn1" name="Controller">
<DataItems>
<!--<DataItem category="xxxx" id="xxxx" type="xxxx" subType="xxxx" nativeUnits="xxxx" units="xxxx" name="xxxx" />-->
<DataItem category="EVENT" id="MESSAGE" type="MESSAGE" name="Segnalazioni"/>
<DataItem category="EVENT" id="E_STOP" type="EMERGENCY_STOP" name="Stato emergenze"/>
</DataItems>
<Components>
<Path id="Path_01" name="Processo 01">
<DataItems>
<!--<DataItem category="xxxx" id="xxxx" type="xxxx" subType="xxxx" nativeUnits="xxxx" units="xxxx" name="xxxx" />-->
<DataItem category="EVENT" id="Path_01_Type" type="MESSAGE" name="Lavoro/Asservimento"/>
<DataItem category="EVENT" id="Path_01_ActiveAxes" type="ACTIVE_AXES" name="Assi attivi"/>
<DataItem category="EVENT" id="Path_01_CodG_Act" type="MESSAGE" name="Codici G"/>
<DataItem category="EVENT" id="Path_01_SubMode" type="MESSAGE" name="Modo secondario"/>
<DataItem category="EVENT" id="Path_01_PartId" type="PART_ID" name="Pezzo corrente"/>
<DataItem category="EVENT" id="Path_01_PZ_TOT" type="PART_COUNT" name="Pezzi prodotti"/>
<DataItem category="EVENT" id="Path_01_Cod_M" type="MESSAGE" name="Codici M"/>
<DataItem category="EVENT" id="Path_01_Cod_S" type="MESSAGE" name="Codici S"/>
<DataItem category="EVENT" id="Path_01_Cod_T" type="MESSAGE" name="Codici T"/>
<DataItem category="EVENT" id="Path_01_RUN_MODE" type="CONTROLLER_MODE" name="Modo operativo"/>
<DataItem category="EVENT" id="Path_01_EXE_MODE" type="EXECUTION" name="Stato esecuzione"/>
<DataItem category="EVENT" id="Path_01_CurrProg" type="PROGRAM" name="Programma corrente"/>
<DataItem category="EVENT" id="Path_01_CurrProg_RowNum" type="LINE" name="Riga attuale"/>
<DataItem category="SAMPLE" id="Path_01_FeedRate" type="PATH_FEEDRATE" subType="ACTUAL" nativeUnits="MILLIMETER/SECOND" units="MILLIMETER/SECOND" name="[mm/min] Feedrate"/>
<DataItem category="SAMPLE" id="Path_01_FeedOverr" type="PATH_FEEDRATE" subType="OVERRIDE" nativeUnits="PERCENT" units="PERCENT" name="[%] WORK Override"/>
<DataItem category="SAMPLE" id="Path_01_RapidOverr" type="PATH_FEEDRATE" subType="OVERRIDE" nativeUnits="PERCENT" units="PERCENT" name="[%] RAPID Override"/>
<!-- <DataItem category="SAMPLE" id="Path_01_PosActX" type="PATH_POSITION" subType="ACTUAL" nativeUnits="MILLIMETER" units="MILLIMETER" name="[mm] UNITA' OPERATRICE: Posizione X"/> -->
<!-- <DataItem category="SAMPLE" id="Path_01_PosActY" type="PATH_POSITION" subType="ACTUAL" nativeUnits="MILLIMETER" units="MILLIMETER" name="[mm] UNITA' OPERATRICE: Posizione Y"/> -->
<!-- <DataItem category="SAMPLE" id="Path_01_PosActZ" type="PATH_POSITION" subType="ACTUAL" nativeUnits="MILLIMETER" units="MILLIMETER" name="[mm] UNITA' OPERATRICE: Posizione Z"/> -->
<!-- <DataItem category="SAMPLE" id="Path_01_PosActI" type="ANGLE" subType="ACTUAL" nativeUnits="DEGREE" units="DEGREE" name="[°] UNITA' OPERATRICE: Angolo I"/> -->
<!-- <DataItem category="SAMPLE" id="Path_01_PosActJ" type="ANGLE" subType="ACTUAL" nativeUnits="DEGREE" units="DEGREE" name="[°] UNITA' OPERATRICE: Angolo J"/> -->
<!-- <DataItem category="SAMPLE" id="Path_01_PosActK" type="ANGLE" subType="ACTUAL" nativeUnits="DEGREE" units="DEGREE" name="[°] UNITA' OPERATRICE: Angolo K"/> -->
<DataItem category="CONDITION" id="Path_01_AlarmCNC" type="SYSTEM" Name="Allarmi CN"/>
<DataItem category="CONDITION" id="Path_01_AlarmPLC" type="LOGIC_PROGRAM" Name="Allarmi PLC"/>
</DataItems>
</Path>
<Path id="Path_02" name="Processo 02">
<DataItems>
<!--<DataItem category="xxxx" id="xxxx" type="xxxx" subType="xxxx" nativeUnits="xxxx" units="xxxx" name="xxxx" />-->
<DataItem category="EVENT" id="Path_02_Type" type="MESSAGE" name="Lavoro/Asservimento"/>
<DataItem category="EVENT" id="Path_02_ActiveAxes" type="ACTIVE_AXES" name="Assi attivi"/>
<DataItem category="EVENT" id="Path_02_CodG_Act" type="MESSAGE" name="Codici G"/>
<DataItem category="EVENT" id="Path_02_SubMode" type="MESSAGE" name="Modo secondario"/>
<DataItem category="EVENT" id="Path_02_PartId" type="PART_ID" name="Pezzo corrente"/>
<DataItem category="EVENT" id="Path_02_PZ_TOT" type="PART_COUNT" name="Pezzi prodotti"/>
<DataItem category="EVENT" id="Path_02_Cod_M" type="MESSAGE" name="Codici M"/>
<DataItem category="EVENT" id="Path_02_Cod_S" type="MESSAGE" name="Codici S"/>
<DataItem category="EVENT" id="Path_02_Cod_T" type="MESSAGE" name="Codici T"/>
<DataItem category="EVENT" id="Path_02_RUN_MODE" type="CONTROLLER_MODE" name="Modo operativo"/>
<DataItem category="EVENT" id="Path_02_EXE_MODE" type="EXECUTION" name="Stato esecuzione"/>
<DataItem category="EVENT" id="Path_02_CurrProg" type="PROGRAM" name="Programma corrente"/>
<DataItem category="EVENT" id="Path_02_CurrProg_RowNum" type="LINE" name="Riga attuale"/>
<DataItem category="SAMPLE" id="Path_02_FeedRate" type="PATH_FEEDRATE" subType="ACTUAL" nativeUnits="MILLIMETER/SECOND" units="MILLIMETER/SECOND" name="[mm/min] Feedrate"/>
<DataItem category="SAMPLE" id="Path_02_FeedOverr" type="PATH_FEEDRATE" subType="OVERRIDE" nativeUnits="PERCENT" units="PERCENT" name="[%] WORK Override"/>
<DataItem category="SAMPLE" id="Path_02_RapidOverr" type="PATH_FEEDRATE" subType="OVERRIDE" nativeUnits="PERCENT" units="PERCENT" name="[%] RAPID Override"/>
<!-- <DataItem category="SAMPLE" id="Path_02_PosActX" type="PATH_POSITION" subType="ACTUAL" nativeUnits="MILLIMETER" units="MILLIMETER" name="[mm] UNITA' OPERATRICE: Posizione X"/> -->
<!-- <DataItem category="SAMPLE" id="Path_02_PosActY" type="PATH_POSITION" subType="ACTUAL" nativeUnits="MILLIMETER" units="MILLIMETER" name="[mm] UNITA' OPERATRICE: Posizione Y"/> -->
<!-- <DataItem category="SAMPLE" id="Path_02_PosActZ" type="PATH_POSITION" subType="ACTUAL" nativeUnits="MILLIMETER" units="MILLIMETER" name="[mm] UNITA' OPERATRICE: Posizione Z"/> -->
<!-- <DataItem category="SAMPLE" id="Path_02_PosActI" type="ANGLE" subType="ACTUAL" nativeUnits="DEGREE" units="DEGREE" name="[°] UNITA' OPERATRICE: Angolo I"/> -->
<!-- <DataItem category="SAMPLE" id="Path_02_PosActJ" type="ANGLE" subType="ACTUAL" nativeUnits="DEGREE" units="DEGREE" name="[°] UNITA' OPERATRICE: Angolo J"/> -->
<!-- <DataItem category="SAMPLE" id="Path_02_PosActK" type="ANGLE" subType="ACTUAL" nativeUnits="DEGREE" units="DEGREE" name="[°] UNITA' OPERATRICE: Angolo K"/> -->
<DataItem category="CONDITION" id="Path_02_AlarmCNC" type="SYSTEM" Name="Allarmi CN"/>
<DataItem category="CONDITION" id="Path_02_AlarmPLC" type="LOGIC_PROGRAM" Name="Allarmi PLC"/>
</DataItems>
</Path>
<!-- probabilmente da ri-spostare sotto PATH... -->
<Actuator id="UniOp_01" name ="Mandrino 1 Testa 1">
<DataItems>
<!--<DataItem category="xxxx" id="xxxx" type="xxxx" subType="xxxx" nativeUnits="xxxx" units="xxxx" name="xxxx" />-->
<DataItem category="EVENT" id="UnOp_01_Type" type="MESSAGE" name="Tipologia testa">
<Constraints>
<Value>RX4</Value>
</Constraints>
</DataItem>
<DataItem category="SAMPLE" id="UnOp_01_Speed" type="PATH_FEEDRATE" subType="ACTUAL" nativeUnits="MILLIMETER/SECOND" units="MILLIMETER/SECOND" name="[RPM] SPEED Attuale"/>
<DataItem category="SAMPLE" id="UnOp_01_SpeedOverr" type="PATH_FEEDRATE" subType="OVERRIDE" nativeUnits="PERCENT" units="PERCENT" name="[%] SPEED Override"/>
<DataItem category="EVENT" id="UnOp_01_ToolId" type="TOOL_ASSET_ID" name="ID Utensile in mandrino"/>
<DataItem category="EVENT" id="UnOp_01_NumCU" type="COUNT" units="COUNT" name="[#] Cambi Utensile effettuati"/>
<DataItem category="EVENT" id="UnOp_01_Status" type="ACTUATOR_STATE" name="Stato Mandrino 1"/>
<DataItem category="EVENT" id="UnOp_01_VitaRes" type="COUNT" units="COUNT" name="Vita residua utensile in mandrino"/>
<DataItem category ="EVENT" id="UnOp_01_VitaResType" type="MESSAGE" name="Tipo vita residua utensile in mandrino"/>
<DataItem category="SAMPLE" id="UnOp_01_Load" type="LOAD" nativeUnits="PERCENT" units="PERCENT" name="[%] Carico"/>
<DataItem category="SAMPLE" id="UnOp_01_AccTime" type="COUNT" name="[krev] Rivoluzioni"/>
</DataItems>
</Actuator>
<Actuator id="UniOp_02" name ="Mandrino 2 Testa 1">
<DataItems>
<!--<DataItem category="xxxx" id="xxxx" type="xxxx" subType="xxxx" nativeUnits="xxxx" units="xxxx" name="xxxx" />-->
<DataItem category="EVENT" id="UnOp_02_Type" type="MESSAGE" name="Tipologia testa">
<Constraints>
<Value>RX4</Value>
</Constraints>
</DataItem>
<DataItem category="SAMPLE" id="UnOp_02_Speed" type="PATH_FEEDRATE" subType="ACTUAL" nativeUnits="MILLIMETER/SECOND" units="MILLIMETER/SECOND" name="[RPM] SPEED Attuale"/>
<DataItem category="SAMPLE" id="UnOp_02_SpeedOverr" type="PATH_FEEDRATE" subType="OVERRIDE" nativeUnits="PERCENT" units="PERCENT" name="[%] SPEED Override"/>
<DataItem category="EVENT" id="UnOp_02_ToolId" type="TOOL_ASSET_ID" name="ID Utensile in mandrino"/>
<DataItem category="EVENT" id="UnOp_02_NumCU" type="COUNT" units="COUNT" name="[#] Cambi Utensile effettuati"/>
<DataItem category="EVENT" id="UnOp_02_Status" type="ACTUATOR_STATE" name="Stato Mandrino 1"/>
<DataItem category="EVENT" id="UnOp_02_VitaRes" type="COUNT" units="COUNT" name="Vita residua utensile in mandrino"/>
<DataItem category ="EVENT" id="UnOp_02_VitaResType" type="MESSAGE" name="Tipo vita residua utensile in mandrino"/>
<DataItem category="SAMPLE" id="UnOp_02_Load" type="LOAD" nativeUnits="PERCENT" units="PERCENT" name="[%] Carico"/>
<DataItem category="SAMPLE" id="UnOp_02_AccTime" type="COUNT" name="[krev] Rivoluzioni"/>
</DataItems>
</Actuator>
<Actuator id="UniOp_03" name ="Mandrino 3 Testa 1">
<DataItems>
<!--<DataItem category="xxxx" id="xxxx" type="xxxx" subType="xxxx" nativeUnits="xxxx" units="xxxx" name="xxxx" />-->
<DataItem category="EVENT" id="UnOp_03_Type" type="MESSAGE" name="Tipologia testa">
<Constraints>
<Value>RX4</Value>
</Constraints>
</DataItem>
<DataItem category="SAMPLE" id="UnOp_03_Speed" type="PATH_FEEDRATE" subType="ACTUAL" nativeUnits="MILLIMETER/SECOND" units="MILLIMETER/SECOND" name="[RPM] SPEED Attuale"/>
<DataItem category="SAMPLE" id="UnOp_03_SpeedOverr" type="PATH_FEEDRATE" subType="OVERRIDE" nativeUnits="PERCENT" units="PERCENT" name="[%] SPEED Override"/>
<DataItem category="EVENT" id="UnOp_03_ToolId" type="TOOL_ASSET_ID" name="ID Utensile in mandrino"/>
<DataItem category="EVENT" id="UnOp_03_NumCU" type="COUNT" units="COUNT" name="[#] Cambi Utensile effettuati"/>
<DataItem category="EVENT" id="UnOp_03_Status" type="ACTUATOR_STATE" name="Stato Mandrino 1"/>
<DataItem category="EVENT" id="UnOp_03_VitaRes" type="COUNT" units="COUNT" name="Vita residua utensile in mandrino"/>
<DataItem category ="EVENT" id="UnOp_03_VitaResType" type="MESSAGE" name="Tipo vita residua utensile in mandrino"/>
<DataItem category="SAMPLE" id="UnOp_03_Load" type="LOAD" nativeUnits="PERCENT" units="PERCENT" name="[%] Carico"/>
<DataItem category="SAMPLE" id="UnOp_03_AccTime" type="COUNT" name="[krev] Rivoluzioni"/>
</DataItems>
</Actuator>
<Actuator id="UniOp_04" name ="Mandrino 4 Testa 1">
<DataItems>
<!--<DataItem category="xxxx" id="xxxx" type="xxxx" subType="xxxx" nativeUnits="xxxx" units="xxxx" name="xxxx" />-->
<DataItem category="EVENT" id="UnOp_04_Type" type="MESSAGE" name="Tipologia testa">
<Constraints>
<Value>RX4</Value>
</Constraints>
</DataItem>
<DataItem category="SAMPLE" id="UnOp_04_Speed" type="PATH_FEEDRATE" subType="ACTUAL" nativeUnits="MILLIMETER/SECOND" units="MILLIMETER/SECOND" name="[RPM] SPEED Attuale"/>
<DataItem category="SAMPLE" id="UnOp_04_SpeedOverr" type="PATH_FEEDRATE" subType="OVERRIDE" nativeUnits="PERCENT" units="PERCENT" name="[%] SPEED Override"/>
<DataItem category="EVENT" id="UnOp_04_ToolId" type="TOOL_ASSET_ID" name="ID Utensile in mandrino"/>
<DataItem category="EVENT" id="UnOp_04_NumCU" type="COUNT" units="COUNT" name="[#] Cambi Utensile effettuati"/>
<DataItem category="EVENT" id="UnOp_04_Status" type="ACTUATOR_STATE" name="Stato Mandrino 1"/>
<DataItem category="EVENT" id="UnOp_04_VitaRes" type="COUNT" units="COUNT" name="Vita residua utensile in mandrino"/>
<DataItem category ="EVENT" id="UnOp_04_VitaResType" type="MESSAGE" name="Tipo vita residua utensile in mandrino"/>
<DataItem category="SAMPLE" id="UnOp_04_Load" type="LOAD" nativeUnits="PERCENT" units="PERCENT" name="[%] Carico"/>
<DataItem category="SAMPLE" id="UnOp_04_AccTime" type="COUNT" name="[krev] Rivoluzioni"/>
</DataItems>
</Actuator>
<Actuator id="UniOp_05" name ="Mandrino 1 Testa 2">
<DataItems>
<!--<DataItem category="xxxx" id="xxxx" type="xxxx" subType="xxxx" nativeUnits="xxxx" units="xxxx" name="xxxx" />-->
<DataItem category="EVENT" id="UnOp_05_Type" type="MESSAGE" name="Tipologia testa">
<Constraints>
<Value>RX4</Value>
</Constraints>
</DataItem>
<DataItem category="SAMPLE" id="UnOp_05_Speed" type="PATH_FEEDRATE" subType="ACTUAL" nativeUnits="MILLIMETER/SECOND" units="MILLIMETER/SECOND" name="[RPM] SPEED Attuale"/>
<DataItem category="SAMPLE" id="UnOp_05_SpeedOverr" type="PATH_FEEDRATE" subType="OVERRIDE" nativeUnits="PERCENT" units="PERCENT" name="[%] SPEED Override"/>
<DataItem category="EVENT" id="UnOp_05_ToolId" type="TOOL_ASSET_ID" name="ID Utensile in mandrino"/>
<DataItem category="EVENT" id="UnOp_05_NumCU" type="COUNT" units="COUNT" name="[#] Cambi Utensile effettuati"/>
<DataItem category="EVENT" id="UnOp_05_Status" type="ACTUATOR_STATE" name="Stato Mandrino 1"/>
<DataItem category="EVENT" id="UnOp_05_VitaRes" type="COUNT" units="COUNT" name="Vita residua utensile in mandrino"/>
<DataItem category ="EVENT" id="UnOp_05_VitaResType" type="MESSAGE" name="Tipo vita residua utensile in mandrino"/>
<DataItem category="SAMPLE" id="UnOp_05_Load" type="LOAD" nativeUnits="PERCENT" units="PERCENT" name="[%] Carico"/>
<DataItem category="SAMPLE" id="UnOp_05_AccTime" type="COUNT" name="[krev] Rivoluzioni"/>
</DataItems>
</Actuator>
<Actuator id="UniOp_06" name ="Mandrino 2 Testa 2">
<DataItems>
<!--<DataItem category="xxxx" id="xxxx" type="xxxx" subType="xxxx" nativeUnits="xxxx" units="xxxx" name="xxxx" />-->
<DataItem category="EVENT" id="UnOp_06_Type" type="MESSAGE" name="Tipologia testa">
<Constraints>
<Value>RX4</Value>
</Constraints>
</DataItem>
<DataItem category="SAMPLE" id="UnOp_06_Speed" type="PATH_FEEDRATE" subType="ACTUAL" nativeUnits="MILLIMETER/SECOND" units="MILLIMETER/SECOND" name="[RPM] SPEED Attuale"/>
<DataItem category="SAMPLE" id="UnOp_06_SpeedOverr" type="PATH_FEEDRATE" subType="OVERRIDE" nativeUnits="PERCENT" units="PERCENT" name="[%] SPEED Override"/>
<DataItem category="EVENT" id="UnOp_06_ToolId" type="TOOL_ASSET_ID" name="ID Utensile in mandrino"/>
<DataItem category="EVENT" id="UnOp_06_NumCU" type="COUNT" units="COUNT" name="[#] Cambi Utensile effettuati"/>
<DataItem category="EVENT" id="UnOp_06_Status" type="ACTUATOR_STATE" name="Stato Mandrino 1"/>
<DataItem category="EVENT" id="UnOp_06_VitaRes" type="COUNT" units="COUNT" name="Vita residua utensile in mandrino"/>
<DataItem category ="EVENT" id="UnOp_06_VitaResType" type="MESSAGE" name="Tipo vita residua utensile in mandrino"/>
<DataItem category="SAMPLE" id="UnOp_06_Load" type="LOAD" nativeUnits="PERCENT" units="PERCENT" name="[%] Carico"/>
<DataItem category="SAMPLE" id="UnOp_06_AccTime" type="COUNT" name="[krev] Rivoluzioni"/>
</DataItems>
</Actuator>
<Actuator id="UniOp_07" name ="Mandrino 3 Testa 2">
<DataItems>
<!--<DataItem category="xxxx" id="xxxx" type="xxxx" subType="xxxx" nativeUnits="xxxx" units="xxxx" name="xxxx" />-->
<DataItem category="EVENT" id="UnOp_07_Type" type="MESSAGE" name="Tipologia testa">
<Constraints>
<Value>RX4</Value>
</Constraints>
</DataItem>
<DataItem category="SAMPLE" id="UnOp_07_Speed" type="PATH_FEEDRATE" subType="ACTUAL" nativeUnits="MILLIMETER/SECOND" units="MILLIMETER/SECOND" name="[RPM] SPEED Attuale"/>
<DataItem category="SAMPLE" id="UnOp_07_SpeedOverr" type="PATH_FEEDRATE" subType="OVERRIDE" nativeUnits="PERCENT" units="PERCENT" name="[%] SPEED Override"/>
<DataItem category="EVENT" id="UnOp_07_ToolId" type="TOOL_ASSET_ID" name="ID Utensile in mandrino"/>
<DataItem category="EVENT" id="UnOp_07_NumCU" type="COUNT" units="COUNT" name="[#] Cambi Utensile effettuati"/>
<DataItem category="EVENT" id="UnOp_07_Status" type="ACTUATOR_STATE" name="Stato Mandrino 1"/>
<DataItem category="EVENT" id="UnOp_07_VitaRes" type="COUNT" units="COUNT" name="Vita residua utensile in mandrino"/>
<DataItem category ="EVENT" id="UnOp_07_VitaResType" type="MESSAGE" name="Tipo vita residua utensile in mandrino"/>
<DataItem category="SAMPLE" id="UnOp_07_Load" type="LOAD" nativeUnits="PERCENT" units="PERCENT" name="[%] Carico"/>
<DataItem category="SAMPLE" id="UnOp_07_AccTime" type="COUNT" name="[krev] Rivoluzioni"/>
</DataItems>
</Actuator>
<Actuator id="UniOp_08" name ="Mandrino 4 Testa 2">
<DataItems>
<!--<DataItem category="xxxx" id="xxxx" type="xxxx" subType="xxxx" nativeUnits="xxxx" units="xxxx" name="xxxx" />-->
<DataItem category="EVENT" id="UnOp_08_Type" type="MESSAGE" name="Tipologia testa">
<Constraints>
<Value>RX4</Value>
</Constraints>
</DataItem>
<DataItem category="SAMPLE" id="UnOp_08_Speed" type="PATH_FEEDRATE" subType="ACTUAL" nativeUnits="MILLIMETER/SECOND" units="MILLIMETER/SECOND" name="[RPM] SPEED Attuale"/>
<DataItem category="SAMPLE" id="UnOp_08_SpeedOverr" type="PATH_FEEDRATE" subType="OVERRIDE" nativeUnits="PERCENT" units="PERCENT" name="[%] SPEED Override"/>
<DataItem category="EVENT" id="UnOp_08_ToolId" type="TOOL_ASSET_ID" name="ID Utensile in mandrino"/>
<DataItem category="EVENT" id="UnOp_08_NumCU" type="COUNT" units="COUNT" name="[#] Cambi Utensile effettuati"/>
<DataItem category="EVENT" id="UnOp_08_Status" type="ACTUATOR_STATE" name="Stato Mandrino 1"/>
<DataItem category="EVENT" id="UnOp_08_VitaRes" type="COUNT" units="COUNT" name="Vita residua utensile in mandrino"/>
<DataItem category ="EVENT" id="UnOp_08_VitaResType" type="MESSAGE" name="Tipo vita residua utensile in mandrino"/>
<DataItem category="SAMPLE" id="UnOp_08_Load" type="LOAD" nativeUnits="PERCENT" units="PERCENT" name="[%] Carico"/>
<DataItem category="SAMPLE" id="UnOp_08_AccTime" type="COUNT" name="[krev] Rivoluzioni"/>
</DataItems>
</Actuator>
</Components>
</Controller>
<Systems id="systems" name="Impianti ed attuatori">
<!-- <DataItems>
<DataItem category="EVENT" id="ST_Paratia_Presente" type="ACTUATOR_STATE" name="Paratia Presente"/>
</DataItems> -->
<Components>
<Electric id="el" name="Elettrico">
<DataItems>
</DataItems>
</Electric>
<Hydraulic id="hsys" name="Idraulico">
<DataItems>
<!--<DataItem category="xxxx" id="xxxx" type="xxxx" subType="xxxx" nativeUnits="xxxx" units="xxxx" name="xxxx" />-->
<!--<DataItem category="CONDITION" id="hlow" type="LEVEL"/>-->
<!--<DataItem category="CONDITION" id="hpres" type="PRESSURE"/>-->
<!--<DataItem category="CONDITION" id="htemp" type="TEMPERATURE"/>-->
</DataItems>
</Hydraulic>
<Pneumatic id="PneumSys" name="Pneumatica Tavole">
<Actuator id="VacPump_01" name ="Pompa vuoto 1">
<DataItems>
<DataItem category="EVENT" id="VacPump_01_Status" type="ACTUATOR_STATE" name="Stato" />
<DataItem category="SAMPLE" id="VacPump_01_WrkTime" type="ACCUMULATED_TIME" name="[s] Tempo utilizzo"/>
</DataItems>
</Actuator>
<Actuator id="VacAct_01" name ="Valvola disattivazione vuoto 1">
<DataItems>
<DataItem category="EVENT" id="VacAct_01_Count" type="COUNT" nativeUnits="COUNT" units="COUNT" name="[#] Commutazioni"/>
</DataItems>
</Actuator>
<Actuator id="VacPump_02" name ="Pompa vuoto 2">
<DataItems>
<DataItem category="EVENT" id="VacPump_02_Status" type="ACTUATOR_STATE" name="Stato" />
<DataItem category="SAMPLE" id="VacPump_02_WrkTime" type="ACCUMULATED_TIME" name="[s] Tempo utilizzo"/>
</DataItems>
</Actuator>
<Actuator id="VacAct_02" name ="Valvola disattivazione vuoto 2">
<DataItems>
<DataItem category="EVENT" id="VacAct_02_Count" type="COUNT" nativeUnits="COUNT" units="COUNT" name="[#] Commutazioni"/>
</DataItems>
</Actuator>
<Actuator id="BlocMorseTav1" name="Valvola Bloccaggio Morse Tavola 1">
<DataItems>
<DataItem category="EVENT" id="Counter_001" type="COUNT" nativeUnits="COUNT" units="COUNT" name="[#] Bloccaggio Morse Tavola 1 "/>
</DataItems>
</Actuator>
<Actuator id="BlocMorseTav2" name="Valvola Bloccaggio Morse Tavola 2">
<DataItems>
<DataItem category="EVENT" id="Counter_002" type="COUNT" nativeUnits="COUNT" units="COUNT" name="[#] Bloccaggio Morse Tavola 2 "/>
</DataItems>
</Actuator>
</Pneumatic>
<Lubrication id="LubroSys" name="Lubrificazione">
<Actuator id="Lubro_01" name ="Lubrificazione Assi PONTE 1">
<DataItems>
<!--<DataItem category="xxxx" id="xxxx" type="xxxx" subType="xxxx" nativeUnits="xxxx" units="xxxx" name="xxxx" />-->
<!-- <DataItem category="EVENT" id="Lubro_01_Num" type="COUNT" nativeUnits="COUNT" units="COUNT" name="[#] Attivazioni"/> -->
<DataItem category="EVENT" id="Lubro_01_Num" type="COUNT" units="COUNT" name="N Attivazioni"/>
</DataItems>
</Actuator>
<Actuator id="Lubro_02" name ="Lubrificazione Assi PONTE 2">
<DataItems>
<!--<DataItem category="xxxx" id="xxxx" type="xxxx" subType="xxxx" nativeUnits="xxxx" units="xxxx" name="xxxx" />-->
<!-- <DataItem category="EVENT" id="Lubro_01_Num" type="COUNT" nativeUnits="COUNT" units="COUNT" name="[#] Attivazioni"/> -->
<DataItem category="EVENT" id="Lubro_02_Num" type="COUNT" units="COUNT" name="N Attivazioni"/>
</DataItems>
</Actuator>
</Lubrication>
</Components>
</Systems>
<Sensor id="sens1" name="Sensoristica">
<DataItems>
<!--<DataItem category="xxxx" id="xxxx" type="xxxx" subType="xxxx" nativeUnits="xxxx" units="xxxx" name="xxxx" />-->
<!--<DataItem category="SAMPLE" id="Temp_99_Value" type="TEMPERATURE" nativeUnits="CELSIUS" units="CELSIUS" name="[°] Sonda temperatura"/>-->
<!-- <DataItem category="SAMPLE" id="C" type="PRESSURE" nativeUnits="PASCAL" units="PASCAL" name="[Pa] Pressione 1"/> -->
</DataItems>
</Sensor>
</Components>
</Device>
</Devices>
</MTConnectDevices>
+38
View File
@@ -0,0 +1,38 @@
Devices = ../DATA/CONF/Agent_ItemList.xml
AllowPut = true
ReconnectInterval = 1000
BufferSize = 17
SchemaVersion = 1.3
Adapters {
MTC-ADAPTER {
Host = localhost
Port = 7878
}
}
Files {
schemas {
Path = ../schemas
Location = /schemas/
}
styles {
Path = ../styles
Location = /styles/
}
Favicon {
Path = ../styles/favicon.ico
Location = /favicon.ico
}
}
StreamsStyle {
Location = /styles/Streams.xsl
}
# Logger Configuration
logger_config
{
logging_level = debug
output = cout
}
Binary file not shown.
File diff suppressed because it is too large Load Diff
+31
View File
@@ -0,0 +1,31 @@
@echo off
REM variabili accessorie
set baseDir="C:\CMS\MTC\AGENT\bin\"
REM calcolo timestamp x creare folders
for /f "delims=" %%a in ('wmic OS Get localdatetime ^| find "."') do set dt=%%a
set YYYY=%dt:~0,4%
set MM=%dt:~4,2%
set DD=%dt:~6,2%
set HH=%dt:~8,2%
set Min=%dt:~10,2%
set Sec=%dt:~12,2%
set stamp=%YYYY%%MM%%DD%_%HH%%Min%%Sec%
REM Fermo servizio
net stop "MTConnect Agent"
REM Attesa 3 secondi post stop
timeout /t 3
REM spostamento di tutti i files di log
mkdir "%baseDir%\logs\%stamp%"
move "%baseDir%\agent*.log" "%baseDir%\logs\%stamp%"
REM riavvio servizio
net start "MTConnect Agent"
REM log riavvio
echo %date% %time% - Service Restarted Successfully >> "%baseDir%\restart.log"
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

BIN
View File
Binary file not shown.
Binary file not shown.
+29 -38
View File
@@ -10,7 +10,7 @@
<AssemblyName>CMSCncLib</AssemblyName>
<FileAlignment>512</FileAlignment>
<MyType>Windows</MyType>
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
@@ -21,10 +21,11 @@
<OutputPath>bin\Debug\</OutputPath>
<DocumentationFile>CMSCncLib.xml</DocumentationFile>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
<DefineConstants>FS30D=1</DefineConstants>
<DefineConstants>FS30D=1,SIEMENS=1</DefineConstants>
<UseVSHostingProcess>true</UseVSHostingProcess>
<PlatformTarget>AnyCPU</PlatformTarget>
<Prefer32Bit>false</Prefer32Bit>
<WarningLevel>0</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
@@ -34,8 +35,10 @@
<OutputPath>bin\Release\</OutputPath>
<DocumentationFile>CMSCncLib.xml</DocumentationFile>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
<DefineConstants>FS30D=1</DefineConstants>
<DefineConstants>FS30D=1,SIEMENS=1</DefineConstants>
<Prefer32Bit>false</Prefer32Bit>
<WarningLevel>0</WarningLevel>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup>
<OptionExplicit>On</OptionExplicit>
@@ -49,53 +52,35 @@
<PropertyGroup>
<OptionInfer>On</OptionInfer>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'CMS-FANUC|AnyCPU' ">
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
<DebugSymbols>true</DebugSymbols>
<DefineDebug>true</DefineDebug>
<DefineTrace>true</DefineTrace>
<OutputPath>bin\CMS\</OutputPath>
<OutputPath>bin\x86\Debug\</OutputPath>
<DefineConstants>FS30D=1,SIEMENS=1</DefineConstants>
<DocumentationFile>CMSCncLib.xml</DocumentationFile>
<Optimize>true</Optimize>
<WarningLevel>0</WarningLevel>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
<DebugType>pdbonly</DebugType>
<PlatformTarget>AnyCPU</PlatformTarget>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<DefineConstants>FS30D=1</DefineConstants>
<Prefer32Bit>false</Prefer32Bit>
<DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'SCM-ESA|AnyCPU' ">
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
<DefineTrace>true</DefineTrace>
<OutputPath>bin\SCM\</OutputPath>
<OutputPath>bin\x86\Release\</OutputPath>
<DefineConstants>FS30D=1,SIEMENS=1</DefineConstants>
<DocumentationFile>CMSCncLib.xml</DocumentationFile>
<Optimize>true</Optimize>
<WarningLevel>0</WarningLevel>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
<DebugType>pdbonly</DebugType>
<PlatformTarget>AnyCPU</PlatformTarget>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<DefineConstants>FS30D=1</DefineConstants>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'CMS-SIEMENS|AnyCPU'">
<DefineTrace>true</DefineTrace>
<OutputPath>bin\CMS-SIEMENS\</OutputPath>
<DefineConstants>FS30D=1</DefineConstants>
<DocumentationFile>CMSCncLib.xml</DocumentationFile>
<Optimize>true</Optimize>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
<DebugType>pdbonly</DebugType>
<PlatformTarget>AnyCPU</PlatformTarget>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'CMS-OSAI|AnyCPU'">
<DefineTrace>true</DefineTrace>
<OutputPath>bin\CMS-OSAI\</OutputPath>
<DefineConstants>FS30D=1</DefineConstants>
<DocumentationFile>CMSCncLib.xml</DocumentationFile>
<Optimize>true</Optimize>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
<DebugType>pdbonly</DebugType>
<PlatformTarget>AnyCPU</PlatformTarget>
<PlatformTarget>x86</PlatformTarget>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<ItemGroup>
<Reference Include="Siemens.Sinumerik.Operate.Services, Version=4.7.3.2, Culture=neutral, PublicKeyToken=bdd90fa02fd1c4ee, processorArchitecture=x86">
<SpecificVersion>False</SpecificVersion>
<HintPath>ExtLib\Siemens.Sinumerik.Operate.Services.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Drawing" />
@@ -126,6 +111,7 @@
<Compile Include="CNC\CNC.OSAI\CNC.OSAI.vb" />
<Compile Include="CNC\CNC.OSAI\CNC.OSAI_SOAP.vb" />
<Compile Include="CNC\CNC.Runtime.vb" />
<Compile Include="CNC\CNC.SIEMENS\CNC.SIEMENS.vb" />
<Compile Include="CNC\CNC\CNC.CNC.vb" />
<Compile Include="Config\Config.Options.vb" />
<Compile Include="Config\Config.Settings.vb" />
@@ -135,6 +121,7 @@
<Compile Include="My Project\Application.Designer.vb">
<AutoGen>True</AutoGen>
<DependentUpon>Application.myapp</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<Compile Include="My Project\Resources.Designer.vb">
<AutoGen>True</AutoGen>
@@ -624,6 +611,10 @@
</None>
</ItemGroup>
<ItemGroup />
<ItemGroup>
<Content Include="ExtLib\Siemens.Sinumerik.Operate.Services.dll" />
<Content Include="ExtLib\Siemens.Sinumerik.Operate.Services.Wrapper.dll" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+42 -71
View File
@@ -1,72 +1,43 @@
Imports CMSCncLib.App.Runtime
Imports CMSCncLib.CNC
Imports CMSCncLib.Tools
Namespace CNC
Public Class Runtime
Public Shared NC As CMSCncLib.CNC.CNC
Public Shared Sub CreateNC(tipoNC As CNC.NcType, ipTarget As String)
'************ Istanzio l'oggetto NC *****************
Try
Select Case tipoNC
Case NC_FANUC
'CMSCncLib.App.Runtime.Log.WI("TRY creating NC CNC.NC", "TypeNC=" & Config.Settings.Settings.TypeNC.ToString, CLog.Lev.Principal)
Dim ipFanuc As String
Dim portIpFanuc As String
Dim CncScreenHssb As String
' SIMULATORE
' IP LOOPBACK: 192.168.211.5/255.255.255.0
'ipFanuc = "192.168.211.5"
' PRODUZIONE
' IP ETH: 192.168.139.201/255.255.255.0
'ipFanuc = "192.168.139.1"
' imposto IP da chiamata
ipFanuc = ipTarget
portIpFanuc = "8193"
CncScreenHssb = "0"
NC = New FANUC(0, ipFanuc, portIpFanuc, CncScreenHssb)
Case NC_OSAI
'If Config.Settings.Settings.OsaiCommType = 1 Then 'SOAP
NC = New OSAI_OPEN(ipTarget)
'Else 'DCOM
' Dim DotNet As Boolean
' If OSAI.GetWinnbi(DotNet) Then
' NC = New OSAI(Config.Settings.Settings.NcName)
' Else
' Log.WE("Error on GetWinnbi or WINNBI are not installed", "Install Osai WINNBI before run this software", True)
' End If
'End If
Case NC_SIEMENS
' Try
' NC = New SIEMENS
' Catch ex As CmsNcException
' 'NC.frmMain_ref.ExitApp()
' 'frmMain.ExitApp()
' End
' End Try
End Select
'CMSCncLib.App.Runtime.Log.WI("OK crating NC CNC.NC", , CLog.Lev.Principal)
Catch ex As Exception
'CMSCncLib.App.Runtime.Log.WE("ERR crating NC CNC.NC", ex.Message, True)
End Try
End Sub
End Class
Namespace CNC
Public Class Runtime
Public Shared NC As CMSCncLib.CNC.CNC
Public Shared Sub CreateNC(tipoNC As CNC.NcType, ipTarget As String)
'************ Istanzio l'oggetto NC *****************
Dim exStr As String
Try
Select Case tipoNC
Case NC_FANUC
Dim ipFanuc As String
Dim portIpFanuc As String
Dim CncScreenHssb As String
' imposto IP da chiamata
ipFanuc = ipTarget
portIpFanuc = "8193"
CncScreenHssb = "0"
NC = New FANUC(0, ipFanuc, portIpFanuc, CncScreenHssb)
Case NC_OSAI
NC = New OSAI_OPEN(ipTarget)
#If SIEMENS Then
Case NC_SIEMENS
NC = New SIEMENS
#End If
End Select
Catch ex As Exception
exStr = ex.Message
End Try
End Sub
End Class
End Namespace
File diff suppressed because it is too large Load Diff
-24
View File
@@ -207,30 +207,6 @@ Namespace CNC
Public Overridable Sub CloseCnc()
End Sub
''' <summary>
''' Riduce a icona la finestra CNC
''' </summary>
Public Overridable Sub MinimizeCnc()
End Sub
''' <summary>
''' Mostra a dimensioni normali la finestra CNC
''' </summary>
Public Overridable Sub NormalizeCnc()
End Sub
''' <summary>
''' Setta il focus sulla finestra CNC
''' </summary>
Public Overridable Sub SetCncFocus()
End Sub
''' <summary>
''' Setta il focus sulla finestra CNC
''' </summary>
Public Overridable Sub MoveCnc()
End Sub
End Class
+294 -300
View File
@@ -1,300 +1,294 @@
Imports System.ComponentModel
Imports System.IO
Imports CMSCncLib.App.Runtime
Imports System.Security
Namespace Config
Class Options
Public Shared CurrentOptions As Options
Public Shared sPathFile As String
Private _Machine_Enabled As Boolean
''' <summary>Maintenance Machine</summary>
Public ReadOnly Property Machine_Enabled() As Boolean
Get
Return Me._Machine_Enabled
End Get
End Property
Private _Maintenance_Enabled As Boolean
''' <summary>Opzione Maintenance</summary>
Public ReadOnly Property Maintenance_Enabled() As Boolean
Get
Return Me._Maintenance_Enabled
End Get
End Property
Private _OpPanel_Enabled As Boolean
''' <summary>Opzione OpPanel</summary>
Public ReadOnly Property OpPanel_Enabled() As Boolean
Get
Return Me._OpPanel_Enabled
End Get
End Property
Private _Launch_Enabled As Boolean
''' <summary>Opzione Launch</summary>
Public ReadOnly Property Launch_Enabled() As Boolean
Get
Return Me._Launch_Enabled
End Get
End Property
Private _TcpSocket_Enabled As Boolean
''' <summary>Opzione TcpSocket</summary>
Public ReadOnly Property TcpSocket_Enabled() As Boolean
Get
Return Me._TcpSocket_Enabled
End Get
End Property
Private _ToolTable_Enabled As Boolean
''' <summary>Opzione ToolTable</summary>
Public ReadOnly Property ToolTable_Enabled() As Boolean
Get
Return Me._ToolTable_Enabled
End Get
End Property
Private _ToolTable_Famiglie As Boolean
''' <summary>Opzione Famiglie</summary>
Public ReadOnly Property ToolTable_Famiglie() As Boolean
Get
Return Me._ToolTable_Famiglie
End Get
End Property
Private _ToolTable_Vita As Boolean
''' <summary>Opzione Vita</summary>
Public ReadOnly Property ToolTable_Vita() As Boolean
Get
Return (Me._ToolTable_Vita_S Or Me._ToolTable_Vita_N Or Me._ToolTable_Vita_m)
End Get
End Property
Private _ToolTable_Vita_S As Boolean
''' <summary>Opzione Vita a Tempo</summary>
Public ReadOnly Property ToolTable_Vita_S() As Boolean
Get
Return Me._ToolTable_Vita_S
End Get
End Property
Private _ToolTable_Vita_N As Boolean
''' <summary>Opzione Vita a Cicli o Colpi</summary>
Public ReadOnly Property ToolTable_Vita_N() As Boolean
Get
Return Me._ToolTable_Vita_N
End Get
End Property
Private _ToolTable_Vita_M As Boolean
''' <summary>Opzione Vita a Profilo</summary>
Public ReadOnly Property ToolTable_Vita_M() As Boolean
Get
Return Me._ToolTable_Vita_M
End Get
End Property
Private _ToolTable_AttrezzaggioAutomatico As Boolean
''' <summary>Opzione Attrezzaggio Automatico</summary>
Public ReadOnly Property ToolTable_AttrezzaggioAutomatico() As Boolean
Get
Return Me._ToolTable_AttrezzaggioAutomatico
End Get
End Property
Private _ToolTable_PercorsoAutoadattativo As Boolean
''' <summary>Opzione Percorso Autoadattativo</summary>
Public ReadOnly Property ToolTable_PercorsoAutoadattativo() As Boolean
Get
Return Me._ToolTable_PercorsoAutoadattativo
End Get
End Property
Private _ToolTable_Multiprofilo As Boolean
''' <summary>Opzione Multiprofilo</summary>
Public ReadOnly Property ToolTable_Multiprofilo() As Boolean
Get
Return Me._ToolTable_Multiprofilo
End Get
End Property
Private _ToolTable_CompensazioneDinamica As Boolean
''' <summary>Opzione Compensazione Dinamica</summary>
Public ReadOnly Property ToolTable_CompensazioneDinamica() As Boolean
Get
Return Me._ToolTable_CompensazioneDinamica
End Get
End Property
Private _ToolTable_Offset As Boolean
''' <summary>Opzione Offset</summary>
Public ReadOnly Property ToolTable_Offset() As Boolean
Get
Return Me._ToolTable_Offset
End Get
End Property
Private _ToolTable_FeedMax As Boolean
''' <summary>Opzione FeedMax</summary>
Public ReadOnly Property ToolTable_FeedMax() As Boolean
Get
Return Me._ToolTable_FeedMax
End Get
End Property
Private _ToolTable_Gamme As Boolean
''' <summary>Opzione Gamme</summary>
Public ReadOnly Property ToolTable_Gamme() As Boolean
Get
Return Me._ToolTable_Gamme
End Get
End Property
Private _ToolTable_Manine As Boolean
''' <summary>Opzione Manine</summary>
Public ReadOnly Property ToolTable_Manine() As Boolean
Get
Return Me._ToolTable_Manine
End Get
End Property
Private _ToolTable_MaxToolsManaged As Integer
''' <summary>Massimo numero di utensili gestibili</summary>
Public ReadOnly Property ToolTable_MaxToolsManaged() As Integer
Get
Return Me._ToolTable_MaxToolsManaged
End Get
End Property
Private _ToolTable_Inch As Boolean
''' <summary>Opzione gestione in Pollici</summary>
Public ReadOnly Property ToolTable_Inch() As Boolean
Get
Return Me._ToolTable_Inch
End Get
End Property
Private _ToolTable_Diameter As Boolean
''' <summary>Opzione gestione Diametro</summary>
Public ReadOnly Property ToolTable_Diameter() As Boolean
Get
Return Me._ToolTable_Diameter
End Get
End Property
Private _ToolTable_AttrezzaggioInRun As Boolean
''' <summary>Opzione modifica con macchina in RUN</summary>
Public ReadOnly Property ToolTable_AttrezzaggioInRun() As Boolean
Get
Return Me._ToolTable_AttrezzaggioInRun
End Get
End Property
Private _ToolTable_AttrezzaggioAssistito As Boolean
''' <summary>Opzione Attrezzaggio magazzini inaccessibili tramite macchina</summary>
Public ReadOnly Property ToolTable_AttrezzaggioAssistito() As Boolean
Get
Return Me._ToolTable_AttrezzaggioAssistito
End Get
End Property
Private _ToolTable_SharedDB As Boolean
''' <summary>Opzione magazzino utensili condiviso tra più macchine</summary>
Public ReadOnly Property ToolTable_SharedDB() As Boolean
Get
Return Me._ToolTable_SharedDB
End Get
End Property
Private _ToolTable_AllowRemote As Boolean
''' <summary>Opzione AllowRemote Tool Table</summary>
Public ReadOnly Property ToolTable_AllowRemote() As Boolean
Get
Return Me._ToolTable_AllowRemote
End Get
End Property
Public Shared Sub CreateOptions(ByVal sPathF As String)
If CurrentOptions Is Nothing Then
CurrentOptions = New Options
End If
' Memorizzo il percorso del file INI
sPathFile = sPathF
CurrentOptions.LoadOptions()
End Sub
'carica le opzioni da file
Private Sub LoadOptions()
''leggo la matricola dal cn
''se non è possibile disabilito tutto e chiedo che venga attivata la connessione
''se leggo 0 avviso che la metricola deve essere popolata
''leggo il codice dal file
''valore = decodifica(valoreletto, matricola, passwordpubblica)
Dim szFileIni As String
Dim Ini As App.Native.Ini
' imposto il nome del file
szFileIni = sPathFile & "\" & My.Application.Info.AssemblyName & ".ini"
' verifico che esista il file
If My.Computer.FileSystem.FileExists(szFileIni) Then
'istanzio la classe di gestione del file
Ini = New App.Native.Ini(szFileIni)
'leggo i settaggi dal file
Me._Machine_Enabled = Ini.GetBoolean("OPTIONS", "MACHINE_ENABLED", 0)
Me._Maintenance_Enabled = Ini.GetBoolean("OPTIONS", "MAINTENANCE_ENABLED", 0)
Me._OpPanel_Enabled = Ini.GetBoolean("OPTIONS", "OPPANEL_ENABLED", 0)
Me._Launch_Enabled = Ini.GetBoolean("OPTIONS", "LAUNCH_ENABLED", 0)
Me._TcpSocket_Enabled = Ini.GetBoolean("OPTIONS", "TCPSOCKET_ENABLED", 0)
Me._ToolTable_Enabled = Ini.GetBoolean("OPTIONS", "TOOLTABLE_ENABLED", 0)
Me._ToolTable_Famiglie = Ini.GetBoolean("OPTIONS", "TOOLTABLE_FAMIGLIE", 0)
Me._ToolTable_Vita_S = Ini.GetBoolean("OPTIONS", "TOOLTABLE_VITA_S", 0)
Me._ToolTable_Vita_N = Ini.GetBoolean("OPTIONS", "TOOLTABLE_VITA_N", 0)
Me._ToolTable_Vita_M = Ini.GetBoolean("OPTIONS", "TOOLTABLE_VITA_M", 0)
Me._ToolTable_Multiprofilo = Ini.GetBoolean("OPTIONS", "TOOLTABLE_MULTIPROFILO", 0)
Me._ToolTable_AttrezzaggioAutomatico = Ini.GetBoolean("OPTIONS", "TOOLTABLE_ATTREZZAGGIOAUTOMATICO", 0)
Me._ToolTable_PercorsoAutoadattativo = Ini.GetBoolean("OPTIONS", "TOOLTABLE_PERCORSOAUTOADATTATIVO", 0)
Me._ToolTable_CompensazioneDinamica = Ini.GetBoolean("OPTIONS", "TOOLTABLE_COMPENSAZIONEDINAMICA", 0)
Me._ToolTable_Offset = Ini.GetBoolean("OPTIONS", "TOOLTABLE_OFFSET", 0)
Me._ToolTable_FeedMax = Ini.GetBoolean("OPTIONS", "TOOLTABLE_FEEDMAX", 0)
Me._ToolTable_Gamme = Ini.GetBoolean("OPTIONS", "TOOLTABLE_GAMME", 0)
Me._ToolTable_Manine = Ini.GetBoolean("OPTIONS", "TOOLTABLE_MANINE", 0)
'Me._ToolTable_GeometryManagement = Ini.GetInteger("OPTIONS", "TOOLTABLE_GEOMETRYMANAGEMENT", 0)
Me._ToolTable_MaxToolsManaged = Ini.GetInteger("OPTIONS", "TOOLTABLE_MAXTOOLSMANAGED", 0)
Me._ToolTable_Inch = Ini.GetBoolean("OPTIONS", "TOOLTABLE_INCH", 0)
Me._ToolTable_Diameter = IIf(CNC.Runtime.NC.Type = CNC.CNC.NcType.OSAI, True, False) 'Ini.GetBoolean("OPTIONS", "TOOLTABLE_DIAMETER", 0)
Me._ToolTable_AttrezzaggioInRun = Ini.GetBoolean("OPTIONS", "TOOLTABLE_ATTREZZAGGIO_IN_RUN", 0)
Me._ToolTable_AttrezzaggioAssistito = Ini.GetBoolean("OPTIONS", "TOOLTABLE_ATTREZZAGGIO_ASSISTITO", 0)
' Se è attiva l'opzione ToolTable_Remote, l'AllowRemote e SharedDB sono ignorati
If Config.Settings.Settings.ToolTable_Remote Then
Me._ToolTable_AllowRemote = False
Me._ToolTable_SharedDB = False
Else
Me._ToolTable_AllowRemote = Ini.GetBoolean("OPTIONS", "TOOLTABLE_ALLOWREMOTE", 0)
Me._ToolTable_SharedDB = Ini.GetBoolean("OPTIONS", "TOOLTABLE_SHAREDDB", 0)
End If
Else
'CMSCncLib.App.Runtime.Log.WW("ERR LoadOptions", String.Format("File {0} not found", szFileIni), True)
End If
End Sub
'verifica che le opzioni sul cn siano coerenti, se no le corregge
Private Sub CheckOptions()
''leggo le opzioni dal cn
''verifico che siano uguali a quelle del file, se no modifico il cn e avviso l'utente della modifica
End Sub
End Class
End Namespace
Namespace Config
Class Options
Public Shared CurrentOptions As Options
Public Shared sPathFile As String
Private _Machine_Enabled As Boolean
''' <summary>Maintenance Machine</summary>
Public ReadOnly Property Machine_Enabled() As Boolean
Get
Return Me._Machine_Enabled
End Get
End Property
Private _Maintenance_Enabled As Boolean
''' <summary>Opzione Maintenance</summary>
Public ReadOnly Property Maintenance_Enabled() As Boolean
Get
Return Me._Maintenance_Enabled
End Get
End Property
Private _OpPanel_Enabled As Boolean
''' <summary>Opzione OpPanel</summary>
Public ReadOnly Property OpPanel_Enabled() As Boolean
Get
Return Me._OpPanel_Enabled
End Get
End Property
Private _Launch_Enabled As Boolean
''' <summary>Opzione Launch</summary>
Public ReadOnly Property Launch_Enabled() As Boolean
Get
Return Me._Launch_Enabled
End Get
End Property
Private _TcpSocket_Enabled As Boolean
''' <summary>Opzione TcpSocket</summary>
Public ReadOnly Property TcpSocket_Enabled() As Boolean
Get
Return Me._TcpSocket_Enabled
End Get
End Property
Private _ToolTable_Enabled As Boolean
''' <summary>Opzione ToolTable</summary>
Public ReadOnly Property ToolTable_Enabled() As Boolean
Get
Return Me._ToolTable_Enabled
End Get
End Property
Private _ToolTable_Famiglie As Boolean
''' <summary>Opzione Famiglie</summary>
Public ReadOnly Property ToolTable_Famiglie() As Boolean
Get
Return Me._ToolTable_Famiglie
End Get
End Property
Private _ToolTable_Vita As Boolean
''' <summary>Opzione Vita</summary>
Public ReadOnly Property ToolTable_Vita() As Boolean
Get
Return (Me._ToolTable_Vita_S Or Me._ToolTable_Vita_N Or Me._ToolTable_Vita_M)
End Get
End Property
Private _ToolTable_Vita_S As Boolean
''' <summary>Opzione Vita a Tempo</summary>
Public ReadOnly Property ToolTable_Vita_S() As Boolean
Get
Return Me._ToolTable_Vita_S
End Get
End Property
Private _ToolTable_Vita_N As Boolean
''' <summary>Opzione Vita a Cicli o Colpi</summary>
Public ReadOnly Property ToolTable_Vita_N() As Boolean
Get
Return Me._ToolTable_Vita_N
End Get
End Property
Private _ToolTable_Vita_M As Boolean
''' <summary>Opzione Vita a Profilo</summary>
Public ReadOnly Property ToolTable_Vita_M() As Boolean
Get
Return Me._ToolTable_Vita_M
End Get
End Property
Private _ToolTable_AttrezzaggioAutomatico As Boolean
''' <summary>Opzione Attrezzaggio Automatico</summary>
Public ReadOnly Property ToolTable_AttrezzaggioAutomatico() As Boolean
Get
Return Me._ToolTable_AttrezzaggioAutomatico
End Get
End Property
Private _ToolTable_PercorsoAutoadattativo As Boolean
''' <summary>Opzione Percorso Autoadattativo</summary>
Public ReadOnly Property ToolTable_PercorsoAutoadattativo() As Boolean
Get
Return Me._ToolTable_PercorsoAutoadattativo
End Get
End Property
Private _ToolTable_Multiprofilo As Boolean
''' <summary>Opzione Multiprofilo</summary>
Public ReadOnly Property ToolTable_Multiprofilo() As Boolean
Get
Return Me._ToolTable_Multiprofilo
End Get
End Property
Private _ToolTable_CompensazioneDinamica As Boolean
''' <summary>Opzione Compensazione Dinamica</summary>
Public ReadOnly Property ToolTable_CompensazioneDinamica() As Boolean
Get
Return Me._ToolTable_CompensazioneDinamica
End Get
End Property
Private _ToolTable_Offset As Boolean
''' <summary>Opzione Offset</summary>
Public ReadOnly Property ToolTable_Offset() As Boolean
Get
Return Me._ToolTable_Offset
End Get
End Property
Private _ToolTable_FeedMax As Boolean
''' <summary>Opzione FeedMax</summary>
Public ReadOnly Property ToolTable_FeedMax() As Boolean
Get
Return Me._ToolTable_FeedMax
End Get
End Property
Private _ToolTable_Gamme As Boolean
''' <summary>Opzione Gamme</summary>
Public ReadOnly Property ToolTable_Gamme() As Boolean
Get
Return Me._ToolTable_Gamme
End Get
End Property
Private _ToolTable_Manine As Boolean
''' <summary>Opzione Manine</summary>
Public ReadOnly Property ToolTable_Manine() As Boolean
Get
Return Me._ToolTable_Manine
End Get
End Property
Private _ToolTable_MaxToolsManaged As Integer
''' <summary>Massimo numero di utensili gestibili</summary>
Public ReadOnly Property ToolTable_MaxToolsManaged() As Integer
Get
Return Me._ToolTable_MaxToolsManaged
End Get
End Property
Private _ToolTable_Inch As Boolean
''' <summary>Opzione gestione in Pollici</summary>
Public ReadOnly Property ToolTable_Inch() As Boolean
Get
Return Me._ToolTable_Inch
End Get
End Property
Private _ToolTable_Diameter As Boolean
''' <summary>Opzione gestione Diametro</summary>
Public ReadOnly Property ToolTable_Diameter() As Boolean
Get
Return Me._ToolTable_Diameter
End Get
End Property
Private _ToolTable_AttrezzaggioInRun As Boolean
''' <summary>Opzione modifica con macchina in RUN</summary>
Public ReadOnly Property ToolTable_AttrezzaggioInRun() As Boolean
Get
Return Me._ToolTable_AttrezzaggioInRun
End Get
End Property
Private _ToolTable_AttrezzaggioAssistito As Boolean
''' <summary>Opzione Attrezzaggio magazzini inaccessibili tramite macchina</summary>
Public ReadOnly Property ToolTable_AttrezzaggioAssistito() As Boolean
Get
Return Me._ToolTable_AttrezzaggioAssistito
End Get
End Property
Private _ToolTable_SharedDB As Boolean
''' <summary>Opzione magazzino utensili condiviso tra più macchine</summary>
Public ReadOnly Property ToolTable_SharedDB() As Boolean
Get
Return Me._ToolTable_SharedDB
End Get
End Property
Private _ToolTable_AllowRemote As Boolean
''' <summary>Opzione AllowRemote Tool Table</summary>
Public ReadOnly Property ToolTable_AllowRemote() As Boolean
Get
Return Me._ToolTable_AllowRemote
End Get
End Property
Public Shared Sub CreateOptions(ByVal sPathF As String)
If CurrentOptions Is Nothing Then
CurrentOptions = New Options
End If
' Memorizzo il percorso del file INI
sPathFile = sPathF
CurrentOptions.LoadOptions()
End Sub
'carica le opzioni da file
Private Sub LoadOptions()
''leggo la matricola dal cn
''se non è possibile disabilito tutto e chiedo che venga attivata la connessione
''se leggo 0 avviso che la metricola deve essere popolata
''leggo il codice dal file
''valore = decodifica(valoreletto, matricola, passwordpubblica)
Dim szFileIni As String
Dim Ini As App.Native.Ini
' imposto il nome del file
szFileIni = sPathFile & "\" & My.Application.Info.AssemblyName & ".ini"
' verifico che esista il file
If My.Computer.FileSystem.FileExists(szFileIni) Then
'istanzio la classe di gestione del file
Ini = New App.Native.Ini(szFileIni)
'leggo i settaggi dal file
Me._Machine_Enabled = Ini.GetBoolean("OPTIONS", "MACHINE_ENABLED", 0)
Me._Maintenance_Enabled = Ini.GetBoolean("OPTIONS", "MAINTENANCE_ENABLED", 0)
Me._OpPanel_Enabled = Ini.GetBoolean("OPTIONS", "OPPANEL_ENABLED", 0)
Me._Launch_Enabled = Ini.GetBoolean("OPTIONS", "LAUNCH_ENABLED", 0)
Me._TcpSocket_Enabled = Ini.GetBoolean("OPTIONS", "TCPSOCKET_ENABLED", 0)
Me._ToolTable_Enabled = Ini.GetBoolean("OPTIONS", "TOOLTABLE_ENABLED", 0)
Me._ToolTable_Famiglie = Ini.GetBoolean("OPTIONS", "TOOLTABLE_FAMIGLIE", 0)
Me._ToolTable_Vita_S = Ini.GetBoolean("OPTIONS", "TOOLTABLE_VITA_S", 0)
Me._ToolTable_Vita_N = Ini.GetBoolean("OPTIONS", "TOOLTABLE_VITA_N", 0)
Me._ToolTable_Vita_M = Ini.GetBoolean("OPTIONS", "TOOLTABLE_VITA_M", 0)
Me._ToolTable_Multiprofilo = Ini.GetBoolean("OPTIONS", "TOOLTABLE_MULTIPROFILO", 0)
Me._ToolTable_AttrezzaggioAutomatico = Ini.GetBoolean("OPTIONS", "TOOLTABLE_ATTREZZAGGIOAUTOMATICO", 0)
Me._ToolTable_PercorsoAutoadattativo = Ini.GetBoolean("OPTIONS", "TOOLTABLE_PERCORSOAUTOADATTATIVO", 0)
Me._ToolTable_CompensazioneDinamica = Ini.GetBoolean("OPTIONS", "TOOLTABLE_COMPENSAZIONEDINAMICA", 0)
Me._ToolTable_Offset = Ini.GetBoolean("OPTIONS", "TOOLTABLE_OFFSET", 0)
Me._ToolTable_FeedMax = Ini.GetBoolean("OPTIONS", "TOOLTABLE_FEEDMAX", 0)
Me._ToolTable_Gamme = Ini.GetBoolean("OPTIONS", "TOOLTABLE_GAMME", 0)
Me._ToolTable_Manine = Ini.GetBoolean("OPTIONS", "TOOLTABLE_MANINE", 0)
'Me._ToolTable_GeometryManagement = Ini.GetInteger("OPTIONS", "TOOLTABLE_GEOMETRYMANAGEMENT", 0)
Me._ToolTable_MaxToolsManaged = Ini.GetInteger("OPTIONS", "TOOLTABLE_MAXTOOLSMANAGED", 0)
Me._ToolTable_Inch = Ini.GetBoolean("OPTIONS", "TOOLTABLE_INCH", 0)
Me._ToolTable_Diameter = IIf(CNC.Runtime.NC.Type = CNC.CNC.NcType.OSAI, True, False) 'Ini.GetBoolean("OPTIONS", "TOOLTABLE_DIAMETER", 0)
Me._ToolTable_AttrezzaggioInRun = Ini.GetBoolean("OPTIONS", "TOOLTABLE_ATTREZZAGGIO_IN_RUN", 0)
Me._ToolTable_AttrezzaggioAssistito = Ini.GetBoolean("OPTIONS", "TOOLTABLE_ATTREZZAGGIO_ASSISTITO", 0)
' Se è attiva l'opzione ToolTable_Remote, l'AllowRemote e SharedDB sono ignorati
If Config.Settings.Settings.ToolTable_Remote Then
Me._ToolTable_AllowRemote = False
Me._ToolTable_SharedDB = False
Else
Me._ToolTable_AllowRemote = Ini.GetBoolean("OPTIONS", "TOOLTABLE_ALLOWREMOTE", 0)
Me._ToolTable_SharedDB = Ini.GetBoolean("OPTIONS", "TOOLTABLE_SHAREDDB", 0)
End If
Else
'CMSCncLib.App.Runtime.Log.WW("ERR LoadOptions", String.Format("File {0} not found", szFileIni), True)
End If
End Sub
'verifica che le opzioni sul cn siano coerenti, se no le corregge
Private Sub CheckOptions()
''leggo le opzioni dal cn
''verifico che siano uguali a quelle del file, se no modifico il cn e avviso l'utente della modifica
End Sub
End Class
End Namespace
File diff suppressed because it is too large Load Diff
+4 -4
View File
@@ -1,10 +1,10 @@
'------------------------------------------------------------------------------
' <auto-generated>
' Il codice è stato generato da uno strumento.
' Versione runtime:4.0.30319.42000
' This code was generated by a tool.
' Runtime Version:4.0.30319.42000
'
' Le modifiche apportate a questo file possono provocare un comportamento non corretto e andranno perse se
' il codice viene rigenerato.
' Changes to this file may cause incorrect behavior and will be lost if
' the code is regenerated.
' </auto-generated>
'------------------------------------------------------------------------------
+13 -13
View File
@@ -1,10 +1,10 @@
'------------------------------------------------------------------------------
' <auto-generated>
' Il codice è stato generato da uno strumento.
' Versione runtime:4.0.30319.42000
' This code was generated by a tool.
' Runtime Version:4.0.30319.42000
'
' Le modifiche apportate a questo file possono provocare un comportamento non corretto e andranno perse se
' il codice viene rigenerato.
' Changes to this file may cause incorrect behavior and will be lost if
' the code is regenerated.
' </auto-generated>
'------------------------------------------------------------------------------
@@ -15,14 +15,14 @@ Imports System
Namespace My.Resources
'Questa classe è stata generata automaticamente dalla classe StronglyTypedResourceBuilder.
'tramite uno strumento quale ResGen o Visual Studio.
'Per aggiungere o rimuovere un membro, modificare il file con estensione ResX ed eseguire nuovamente ResGen
'con l'opzione /str oppure ricompilare il progetto VS.
'This class was auto-generated by the StronglyTypedResourceBuilder
'class via a tool like ResGen or Visual Studio.
'To add or remove a member, edit your .ResX file then rerun ResGen
'with the /str option, or rebuild your VS project.
'''<summary>
''' Classe di risorse fortemente tipizzata per la ricerca di stringhe localizzate e così via.
''' A strongly-typed resource class, for looking up localized strings, etc.
'''</summary>
<Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0"), _
<Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0"), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.Microsoft.VisualBasic.HideModuleNameAttribute()> _
@@ -33,7 +33,7 @@ Namespace My.Resources
Private resourceCulture As Global.System.Globalization.CultureInfo
'''<summary>
''' Restituisce l'istanza di ResourceManager nella cache utilizzata da questa classe.
''' Returns the cached ResourceManager instance used by this class.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
@@ -47,8 +47,8 @@ Namespace My.Resources
End Property
'''<summary>
''' Esegue l'override della proprietà CurrentUICulture del thread corrente per tutte le
''' ricerche di risorse eseguite utilizzando questa classe di risorse fortemente tipizzata.
''' Overrides the current thread's CurrentUICulture property for all
''' resource lookups using this strongly typed resource class.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend Property Culture() As Global.System.Globalization.CultureInfo
+7 -7
View File
@@ -1,10 +1,10 @@
'------------------------------------------------------------------------------
' <auto-generated>
' Il codice è stato generato da uno strumento.
' Versione runtime:4.0.30319.42000
' This code was generated by a tool.
' Runtime Version:4.0.30319.42000
'
' Le modifiche apportate a questo file possono provocare un comportamento non corretto e andranno perse se
' il codice viene rigenerato.
' Changes to this file may cause incorrect behavior and will be lost if
' the code is regenerated.
' </auto-generated>
'------------------------------------------------------------------------------
@@ -15,21 +15,21 @@ Option Explicit On
Namespace My
<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0"), _
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.5.0.0"), _
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Partial Friend NotInheritable Class MySettings
Inherits Global.System.Configuration.ApplicationSettingsBase
Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings)
#Region "Funzionalità di salvataggio automatico My.Settings"
#Region "My.Settings Auto-Save Functionality"
#If _MyType = "WindowsForms" Then
Private Shared addedHandler As Boolean
Private Shared addedHandlerLockObject As New Object
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Private Shared Sub AutoSaveSettings(ByVal sender As Global.System.Object, ByVal e As Global.System.EventArgs)
Private Shared Sub AutoSaveSettings(sender As Global.System.Object, e As Global.System.EventArgs)
If My.Application.SaveMySettingsOnExit Then
My.Settings.Save()
End If
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -30,4 +30,4 @@
<endpoint address="http://192.168.20.2:8080" binding="basicHttpBinding" bindingConfiguration="OPENcontrol" contract="OPENcontrol.OPENcontrolPortType" name="OPENcontrol"/>
</client>
</system.serviceModel>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2"/></startup></configuration>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2"/></startup></configuration>
@@ -0,0 +1,172 @@
[SYS]
DEFCN=c:\kvara\Discoi
IOREDIR=c:\kvara\Discoi
CNINI=c:\kvara\DiscoC\Kvara.ini
;LINK=SERIALE
;LINK=NETWORK
LINK=SIMULATO
PERMISSION=APPLICATION
;CNSIGNAL=0
TMX=0
TMY=1
TMZ=4
[COM]
IPAddr=10.10.51.100
PORT=2
;BAUD=38400
;MODEM=1
;MODEMFILE=.\MODEM.INI
;DATATIMEOUT=2000
;ACKTIMEOUT=300
;SYNCTIMEOUT=1000
OPENCHTIMEOUT=20000
CLOSECHWAIT=1000
;INITSYNC=0
;DBG_INFO=8
WAITRESETINIT=5000
WAITRESETSYNC=5000
[PLC]
SIMDIR=c:\kvara\Logica\TAR
TARDIR=C:\PLC
[GLOBAL]
Language=ITA
Background=c:\kvara\res\Background.bmp
Mouse=ON
Dimensions=1200x800
Docked=R|D
FunKeyRedir=HV
;InitFile=Init
FunKeyStringDisplay=0
AlarmFile=c:\kvara\exe\AlrData.alm
StatusH = 50
HKeysHsH = 55
ExtFunKeyBtn=0
StartDrvKey500=0
[LoadApp]
Slave=.\Sim32.exe /0G /A144 /P32
NCrun=.\Ncrun.exe /L-
PLC=.\Lnk.exe
;ShDump=c:\kvara\exe\shdump /HIDE /F:A:shdump.gz
[CHA.PATH]
PGM=c:\kvara\DiscoC\ISO;c:\kvara\DiscoI\ISO;c:\kvara\DiscoD\MDI;c:\kvara\DiscoD\PGM;c:\kvara\DiscoD\TMP
CFU=c:\kvara\DiscoC\ISO;c:\kvara\DiscoI\ISO
MDI=c:\kvara\DiscoD\MDI
CFS=c:\kvara\DiscoC\ISO;c:\kvara\DiscoI\ISO
CFM=c:\kvara\DiscoC\ISO;c:\kvara\DiscoI\ISO
OVR=c:\kvara\DiscoC
PGMHOST=D:\TMP
PGMTMP=c:\kvara\DiscoD\TMP
CFCDLL=$
CVBDLL=$
APIODLL=$
PMIDLL=.
TMAPIDLL=$
SLAOSC=c:\kvara\DiscoI\SlaOsc.dll
SLADLL=c:\kvara\DiscoI\Sladll.dll
DGTDLL=c:\kvara\Discoi\mclink.dll
[CHA.EXT]
PGM=PGM
CFU=CFU
CFS=CFS
CFM=CFM
CST=CST
[ENV]
LOG=c:\kvara\DiscoF
FNZAUX=c:\kvara\DiscoC\ISO;c:\kvara\DiscoI\ISO
;FNZCST=c:\kvara\DiscoC\ISO
[UIM.PATH]
CFG=c:\kvara\Dati
HFG=c:\kvara\Dati
PIC=c:\kvara\Dati
DATA=c:\kvara\Dati\Par
HISTORY=c:\kvara\Dati
PLCERR=c:\kvara\Dati
PLCMSG=c:\kvara\Dati
RUNERR=c:\kvara\Dati
PHIERR=c:\kvara\Dati
MDI=c:\kvara\DiscoD\MDI
MONCLR=c:\kvara\exe\Monitor.ini
[APP]
GRAPH=0
PREVIEW=1
3D=1
[CHMONITOR]
FPAXE=c:\kvara\Dati\parax.str
FNAXE=c:\kvara\Dati\parax?.nam
KEYPADRE=KEY_SYSPARAX
KEYASSI=KEY_PARAX
[AUTOSETUP]
Inifile=c:\kvara\autosetup.ini
BootLoader=c:\kvara\Tar\BootLdr.bin
DiscoH=c:\kvara\DiscoH
DiscoI=c:\kvara\DiscoI
DiscoC=c:\kvara\DiscoC
DiscoD=c:\kvara\DiscoD
DiscoF=c:\kvara\DiscoF
PlcProj=c:\kvara\Logica\ACCORD_10.kva
[DESKFONT]
//"SysMenuFnt", "Arial", 32, 7, FW_MEDIUM,
//"CaptionFnt", "Arial", 28, 11, FW_MEDIUM,
//"AlarmsFnt", "Arial", 11, 7, FW_MEDIUM,
//"PicButtonFnt", "Arial", 16, 5, FW_MEDIUM,
//"PicButtonSFnt", -nHeight, nWidth, 0, 0, nBOLD, FALSE, FALSE, 0,
//"KeyTipFnt", "Arial", 11, 5, FW_MEDIUM,
//"TimeFnt", "Arial", 11, 7, 0,
//"LCDFnt", "Arial", 32, 0, FW_BOLD,
//"ILCDFnt", "Arial", 14, 0, FW_BOLD,
//FW_DONTCARE 0
//FW_THIN 100
//FW_EXTRALIGHT 200
//FW_LIGHT 300
//FW_NORMAL 400
//FW_MEDIUM 500
//FW_SEMIBOLD 600
//FW_BOLD 700
//FW_EXTRABOLD 800
//FW_HEAVY 900
PicButtonFnt=MS Sans Serif
PicButtonFntBOLD=800
PicButtonFntHEIGHT=20
PicButtonFntWIDTH=8
AlarmsFnt=Arial
AlarmsFntHEIGHT=14
AlarmsFntWIDTH=10
AlarmsFntBOLD=800
CaptionFnt= Ms Sans Serif
CaptionFntHEIGHT=34
CaptionFntBOLD=800
[Font]
Bold=0
Italic=0
Size=10
FaceName=Courier
[Edit]
Autosave=0
Time=10
Sound=0
TabSize=2
KeepTab=1
[Colors]
Fore=0 0 0 0 0 0 0
Back=15
Punte=0 0 0 0 0
+111
View File
@@ -0,0 +1,111 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{884C07F1-7E6E-4A3D-BF1E-FECF36348268}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>EsaCncLib</RootNamespace>
<AssemblyName>EsaCncLib</AssemblyName>
<TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<UseVSHostingProcess>true</UseVSHostingProcess>
<Prefer32Bit>false</Prefer32Bit>
<PlatformTarget>AnyCPU</PlatformTarget>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x86\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget>
<LangVersion>7.3</LangVersion>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
<OutputPath>bin\x86\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x86</PlatformTarget>
<LangVersion>7.3</LangVersion>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<ItemGroup>
<Reference Include="ESAutomotionLinkCNC, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>DLL Comunicazione ESA\ESAutomotionLinkCNC.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
<HintPath>..\packages\NLog.4.7.10\lib\net45\NLog.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Configuration" />
<Reference Include="System.Core" />
<Reference Include="System.IO.Compression, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<HintPath>..\packages\System.IO.Compression.4.3.0\lib\net46\System.IO.Compression.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.Serialization" />
<Reference Include="System.ServiceModel" />
<Reference Include="System.Transactions" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="clsTimePeriod.cs" />
<Compile Include="IniFile.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="thdNcBase.cs" />
<Compile Include="thdNcEsaGvKvara.cs" />
</ItemGroup>
<ItemGroup />
<ItemGroup>
<Content Include="DLL Comunicazione ESA\ESAutomotionLinkCNC.dll" />
<Content Include="NLog.config">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
<None Include="NLog.xsd">
<SubType>Designer</SubType>
</None>
<None Include="packages.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>
+246
View File
@@ -0,0 +1,246 @@
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Text;
using System.Windows;
using System.Globalization;
namespace EsaCncLib
{
/// <summary>
/// Create a new INI file to store or load data
/// </summary>
public class IniFile
{
public string FileName; // INI filename
// import windows dll functions
#region DLL_IMPORT_FUNCTIONS
[DllImport("kernel32", CharSet = CharSet.Auto, BestFitMapping = false)]
private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
[DllImport("kernel32")]
private static extern bool WritePrivateProfileSection(string section, string value, string filePath);
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);
[DllImport("kernel32")]
private static extern int GetPrivateProfileInt(string section, string key, int def, string filePath);
[DllImport("kernel32")]
private static extern int GetPrivateProfileSection(string section, IntPtr retVal, uint size, string filePath);
#endregion
/// <summary>
/// Constructor
/// </summary>
/// <PARAM name="INIPath"></PARAM>
public IniFile(string INIPath)
{
FileName = INIPath;
}
/// <summary>
/// Write data to the INI file
/// </summary>
/// <PARAM name="Section"></PARAM>
/// Section name
/// <PARAM name="Key"></PARAM>
/// Key Name
/// <PARAM name="Value"></PARAM>
/// Value Name
public void WriteString(string Section, string Key, string Value)
{
WritePrivateProfileString(Section, Key, Value, FileName);
}
/// <summary>
/// Write a boolean value
/// </summary>
/// <param name="Section"></param>
/// <param name="Key"></param>
/// <param name="Value"></param>
public void WriteBoolean(string Section, string Key, bool Value)
{
int flag = Value ? 1 : 0;
WriteString(Section, Key, Convert.ToString(flag));
}
/// <summary>
/// Write an integer value
/// </summary>
/// <param name="Section"></param>
/// <param name="Key"></param>
/// <param name="Value"></param>
public void WriteInteger(string Section, string Key, int Value)
{
WriteString(Section, Key, Convert.ToString(Value));
}
/// <summary>
/// Write a double value
/// </summary>
/// <param name="Section"></param>
/// <param name="Key"></param>
/// <param name="Value"></param>
public void WriteDouble(string Section, string Key, double Value)
{
WriteString(Section, Key, Convert.ToString(Value, NumberFormatInfo.InvariantInfo));
}
/// <summary>
/// Read data from the Ini file
/// </summary>
/// <PARAM name="Section"></PARAM>
/// <PARAM name="Key"></PARAM>
/// <PARAM name="Path"></PARAM>
/// <returns></returns>
public string ReadString(string Section, string Key)
{
StringBuilder temp = new StringBuilder(255);
int i = GetPrivateProfileString(Section, Key, "", temp, 255, FileName);
return temp.ToString();
}
/// <summary>
/// Read a string. If not found use default value
/// </summary>
/// <param name="Section"></param>
/// <param name="Key"></param>
/// <param name="DefaultVal"></param>
/// <returns></returns>
public string ReadString(string Section, string Key, string DefaultVal)
{
string temp = ReadString(Section, Key);
if (temp == "") temp = DefaultVal;
return temp;
}
/// <summary>
/// Read an integer
/// </summary>
/// <param name="Section"></param>
/// <param name="Key"></param>
/// <returns></returns>
public int ReadInteger(string Section, string Key)
{
return GetPrivateProfileInt(Section, Key, 0, FileName);
}
/// <summary>
/// Read an integer. If not found use default value
/// </summary>
/// <param name="Section"></param>
/// <param name="Key"></param>
/// <param name="DefaultVal"></param>
/// <returns></returns>
public int ReadInteger(string Section, string Key, int DefaultVal)
{
return GetPrivateProfileInt(Section, Key, DefaultVal, FileName);
}
/// <summary>
/// Read a boolean
/// </summary>
/// <param name="Section"></param>
/// <param name="Key"></param>
/// <returns></returns>
public bool ReadBoolean(string Section, string Key)
{
return (ReadInteger(Section, Key, 0) != 0);
}
/// <summary>
/// Read a boolean with default value
/// </summary>
/// <param name="Section"></param>
/// <param name="Key"></param>
/// <param name="DefaultVal"></param>
/// <returns></returns>
public bool ReadBoolean(string Section, string Key, bool DefaultVal)
{
int v = DefaultVal ? 1 : 0;
return (ReadInteger(Section, Key, v) != 0);
}
/// <summary>
/// Read a complete section (keys=values)
/// </summary>
/// <param name="Section"></param>
/// Section name
/// <returns></returns>
public string[] ReadSection(string Section)
{
const int bufferSize = 2048; // max is 32767
StringBuilder returnedString = new StringBuilder();
IntPtr pReturnedString = Marshal.AllocCoTaskMem(bufferSize);
try
{
int bytesReturned = GetPrivateProfileSection(Section, pReturnedString, bufferSize, FileName);
//bytesReturned -1 to remove trailing \0
for (int i = 0; i < bytesReturned - 1; i++)
returnedString.Append((char)Marshal.ReadByte(new IntPtr((uint)pReturnedString + (uint)i)));
}
finally
{
Marshal.FreeCoTaskMem(pReturnedString);
}
string sectionData = returnedString.ToString();
return sectionData.Split('\0');
}
/// <summary>
/// Return true if value exists
/// </summary>
/// <param name="Section"></param>
/// <param name="Key"></param>
/// <returns></returns>
public bool ValueExists(string Section, string Key)
{
StringBuilder temp = new StringBuilder(255);
int i = GetPrivateProfileString(Section, Key, "", temp, 255, FileName);
return (i > 0);
}
/// <summary>
/// Completely remove one section
/// </summary>
/// <param name="Section"></param>
public void IniDeleteSection(string Section)
{
WritePrivateProfileSection(Section, null, FileName);
}
/// <summary>
/// Return true if section exists
/// </summary>
/// <param name="Section"></param>
/// <returns></returns>
public bool IniSectionExists(string Section)
{
int bytesReturned = 0;
const int bufferSize = 2048; // max is 32767
IntPtr pReturnedString = Marshal.AllocCoTaskMem(bufferSize);
try
{
bytesReturned = GetPrivateProfileSection(Section, pReturnedString, bufferSize, FileName);
}
finally
{
Marshal.FreeCoTaskMem(pReturnedString);
}
return (bytesReturned > 0);
}
/// <summary>
/// Delete a key from section
/// </summary>
/// <param name="Section"></param>
/// <param name="Key"></param>
public void IniDeleteKey(string Section, string Key)
{
WritePrivateProfileString(Section, Key, null, FileName);
}
}
}
@@ -4,38 +4,53 @@
xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
autoReload="true"
throwExceptions="false"
internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log">
internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log" >
<!-- optional, add some variables
<!-- optional, add some variabeles
https://github.com/nlog/NLog/wiki/Configuration-file#variables
-->
<variable name="myvar" value="myvalue"/>
<!--
See https://github.com/nlog/nlog/wiki/Configuration-file
<!--
See https://github.com/nlog/nlog/wiki/Configuration-file
for information on customizing logging rules and outputs.
-->
<targets>
<!--
add your targets here
<targets async="true">
<!--
add your targets here
See https://github.com/nlog/NLog/wiki/Targets for possible targets.
See https://github.com/nlog/NLog/wiki/Layout-Renderers for the possible layout renderers.
-->
<!--
Write events to a file with the date in the filename.
Write events to a file with the date in the filename.
<target xsi:type="File" name="f" fileName="${basedir}/logs/${shortdate}.log"
layout="${longdate} ${uppercase:${level}} ${message}" />
-->
<target xsi:type="File"
name="f"
fileName="${basedir}/logs/${shortdate}.log"
layout="${longdate} ${uppercase:${level}} ${message}"
/>
<!--<target xsi:type="File"
name="default"
layout="${longdate} - ${level:uppercase=true}: ${message}${onexception:${newline}EXCEPTION\: ${exception:format=ToString}}"
fileName="${specialfolder:ApplicationData}\${appName}\Debug.log"
keepFileOpen="false"
archiveFileName="${specialfolder:ApplicationData}\${appName}\Debug_${shortdate}.{##}.log"
archiveNumbering="Sequence"
archiveEvery="Day"
maxArchiveFiles="30"
/>-->
</targets>
<rules>
<!-- add your logging rules here -->
<!--
Write all events with minimal level of Debug (So Debug, Info, Warn, Error and Fatal, but not Trace) to "f"
<logger name="*" minlevel="Debug" writeTo="f" />
-->
<logger name="*" minlevel="Debug" writeTo="f" />
</rules>
</nlog>
</nlog>
@@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("EsaCncLib")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("EsaCncLib")]
[assembly: AssemblyCopyright("Copyright © 2020")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("7a12fe26-9c58-4630-973d-d4872374dbaf")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
+11
View File
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.IO.Compression" publicKeyToken="b77a5c561934e089" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.2.0" newVersion="4.1.2.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
+108
View File
@@ -0,0 +1,108 @@
using System;
using System.Runtime.InteropServices;
using System.Threading;
using System.Collections.Generic;
internal sealed class TimePeriod : IDisposable
{
private const string WINMM = "winmm.dll";
private static TIMECAPS timeCapabilities;
private static int inTimePeriod;
private readonly int period;
private int disposed;
[DllImport(WINMM, ExactSpelling = true)]
private static extern int timeGetDevCaps(ref TIMECAPS ptc, int cbtc);
[DllImport(WINMM, ExactSpelling = true)]
private static extern int timeBeginPeriod(int uPeriod);
[DllImport(WINMM, ExactSpelling = true)]
private static extern int timeEndPeriod(int uPeriod);
static TimePeriod()
{
int result = timeGetDevCaps(ref timeCapabilities, Marshal.SizeOf(typeof(TIMECAPS)));
if (result != 0)
{
throw new InvalidOperationException("The request to get time capabilities was not completed because an unexpected error with code " + result + " occured.");
}
}
internal TimePeriod(int period)
{
if (Interlocked.Increment(ref inTimePeriod) != 1)
{
Interlocked.Decrement(ref inTimePeriod);
throw new NotSupportedException("The process is already within a time period. Nested time periods are not supported.");
}
if (period < timeCapabilities.wPeriodMin || period > timeCapabilities.wPeriodMax)
{
throw new ArgumentOutOfRangeException("period", "The request to begin a time period was not completed because the resolution specified is out of range.");
}
int result = timeBeginPeriod(period);
if (result != 0)
{
throw new InvalidOperationException("The request to begin a time period was not completed because an unexpected error with code " + result + " occured.");
}
this.period = period;
}
internal static int MinimumPeriod
{
get
{
return timeCapabilities.wPeriodMin;
}
}
internal static int MaximumPeriod
{
get
{
return timeCapabilities.wPeriodMax;
}
}
internal int Period
{
get
{
if (this.disposed > 0)
{
throw new ObjectDisposedException("The time period instance has been disposed.");
}
return this.period;
}
}
public void Dispose()
{
if (Interlocked.Increment(ref this.disposed) == 1)
{
timeEndPeriod(this.period);
Interlocked.Decrement(ref inTimePeriod);
}
else
{
Interlocked.Decrement(ref this.disposed);
}
}
[StructLayout(LayoutKind.Sequential)]
private struct TIMECAPS
{
internal int wPeriodMin;
internal int wPeriodMax;
}
}
+7
View File
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Newtonsoft.Json" version="12.0.3" targetFramework="net452" />
<package id="NLog" version="4.7.10" targetFramework="net462" />
<package id="NLog.Schema" version="4.7.10" targetFramework="net462" />
<package id="System.IO.Compression" version="4.3.0" targetFramework="net462" />
</packages>
+46
View File
@@ -0,0 +1,46 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace EsaCncLib
{
/// <summary>
/// Base class for devices
/// </summary>
public class thdNcBase
{
public bool Connected = false;
protected bool requestStop = false;
protected int PlcDelay;
public bool Finished = false; // this flag will be true when execution is stopped (after a RequestStop)
public string DeviceName = ""; // name of the device (just for display purpose)
/// <summary>
/// Initialization: common operations for all devices.
/// </summary>
/// <param name="fIni">The f ini.</param>
public thdNcBase(IniFile fIni)
{
// set delay for execution cycle
PlcDelay = fIni.ReadInteger("NC", "PlcDelay", 10);
}
/// <summary>
/// Request to stop the thread
/// </summary>
public void RequestStop()
{
requestStop = true;
}
/// <summary>
/// Virtual method for thread main execution
/// </summary>
public virtual void Execute() { }
}
}
+778
View File
@@ -0,0 +1,778 @@
using NLog;
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;
namespace EsaCncLib
{
#region ESA_DATA_STRUCTURES
// public unsafe struct TS_REG
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct TS_REG
{
public byte board;
public byte iBaseReg;
public UInt16 wType;
public UInt32 iSharedId;
public UInt32 iNum;
public UInt32 iMax;
public UInt32 iSiz;
public UInt32 iOff;
public UInt32 ChkSum;
}
#endregion
/// <summary>
/// Classe per gestione memoria ESA (nome, indirizzo, aree temporanee, dati reali...)
/// </summary>
public class EsaBaseMem
{
/// <summary>
/// Dimensione dell'area di memoria (numero oggetti)
/// </summary>
public UInt16 MemorySize { get; set; } = 0;
/// <summary>
/// Nome dell'area di memoria
/// </summary>
public string AddressName { get; set; } = "";
/// <summary>
/// Registro della memoria
/// </summary>
public TS_REG AddresReg { get; set; } = new TS_REG();
}
/// <summary>
/// Strtuttura memoria a Byte
/// </summary>
public class EsaByteMem : EsaBaseMem
{
/// <summary>
/// Area temp di UINT di 4 byte (32 bit)
/// </summary>
public UInt32[] tempData;
/// <summary>
/// Memorie effettiva base byte (8 bit)
/// </summary>
public Byte[] data;
}
/// <summary>
/// Strtuttura memoria a Word
/// </summary>
public class EsaWordMem : EsaBaseMem
{
/// <summary>
/// Area temp di UINT di 4 byte (32 bit)
/// </summary>
public UInt32[] tempData;
/// <summary>
/// Memorie effettiva base Word (16 bit)
/// </summary>
public UInt16[] data;
}
/// <summary>
/// Strtuttura memoria a DoubleWord
/// </summary>
public class EsaDWordMem : EsaBaseMem
{
/// <summary>
/// Area temp di UINT di 4 byte (32 bit)
/// </summary>
public UInt32[] tempData;
/// <summary>
/// Memorie effettiva base DoubleWord (32 bit)
/// </summary>
public UInt32[] data;
}
/// <summary>
/// Strtuttura memoria a string
/// </summary>
public class EsaStringMem : EsaBaseMem
{
/// <summary>
/// Area temp di UINT di 4 byte (32 bit)
/// </summary>
public UInt32[] tempData;
/// <summary>
/// Memorie effettiva base DoubleWord (32 bit)
/// </summary>
public string data;
}
/// <summary>
/// Class for Esa Nc device
/// </summary>
public class thdNcEsaKvara : thdNcBase
{
#region oggetti di base
public Logger lg = LogManager.GetCurrentClassLogger();
private string SysLink = "";
private string DefCn = "";
private int iChannel;
private int iError;
#endregion
#region setup memoria
public EsaStringMem SCMA_MManCMS_Release;
public EsaStringMem SCMA_MManCMS_SerialNumber;
public EsaStringMem[] SCMA_MManCMS_Strings;
public EsaDWordMem SCMA_MMan_ACK;
public EsaDWordMem SCMA_MMan_STROBE;
public EsaDWordMem SCMA_MMan_ALM;
public EsaDWordMem SCMA_MMan_MNT;
public EsaDWordMem SCMA_MMan_ANALOG;
public EsaDWordMem SCMA_MMan_CNT;
public EsaWordMem SCMA_MMan_WD;
public EsaWordMem SCMA_MMan_MF;
public EsaWordMem SCMA_MMan_SF;
public EsaWordMem SCMA_MMan_TF;
public EsaWordMem SCMA_MMan_MNUM;
public EsaWordMem SCMA_MMan_SNUM;
public EsaWordMem SCMA_MMan_TNUM;
public EsaByteMem SCMA_MMan_OVR;
public EsaByteMem SCMA_MMan_status;
#endregion
#region area assi e altre variabili
/// <summary>
/// Vttore valori correnti assi
/// </summary>
protected AxisData[] currAxisData;
/// <summary>
/// Elenco assi "vietati" perché non sono in elenco (errore a rileggerli)
/// </summary>
protected List<int> vetoAxis = new List<int>();
/// <summary>
/// periodo reset veto (ogni 5 minuti rivaluta)
/// </summary>
protected DateTime lastVetoReset = DateTime.Now;
#endregion
// esa constants
#region ESA_PLC_CONSTANTS
private const UInt32 MAX_PATH = 256;
#endregion
#region ESA_DLL_IMPORT_FUNCTIONS
[DllImport("KvCom3x", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi, EntryPoint = "_ConvComunicationChannel@4")]
private static extern int ConvComunicationChannel([MarshalAs(UnmanagedType.LPStr)] string sChannelType);
[DllImport("KvCom3x", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi, EntryPoint = "_init_board@8")]
private static extern int init_board([MarshalAs(UnmanagedType.LPStr)] string defcn_name, int ChannelType);
[DllImport("KvCom3x", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi, EntryPoint = "_exit_board@0")]
private static extern int exit_board();
[DllImport("KvCom3x", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi, EntryPoint = "_get_reg_by_name@8")]
private static extern int get_reg_by_name([MarshalAs(UnmanagedType.LPStr)] string name, ref TS_REG pReg);
[DllImport("KvCom3x", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi, EntryPoint = "_read_regbuffer@16")]
private static extern int read_regbuffer(ref TS_REG pReg, UInt16 Offset, UInt16 Count, [MarshalAs(UnmanagedType.LPArray)] UInt32[] pDst);
[DllImport("KvCom3x", EntryPoint = "read_regstring")]
public static extern int read_regstring(ref TS_REG pReg, short Offset, short wNCharToRead, ref short wpNCharRead, [MarshalAs(UnmanagedType.LPArray)] byte[] pBuff);
//[DllImport(KVCOM3xDLL, EntryPoint = "read_regstring")]
//public static extern int read_regstring(ref TS_REG pReg, short Offset, short wNCharToRead, ref short wpNCharRead, [MarshalAs(UnmanagedType.LPArray)] byte[] pBuff);
[DllImport("KvCom3x", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi, EntryPoint = "_write_regbuffer@16")]
private static extern int write_regbuffer(ref TS_REG pReg, UInt16 Offset, UInt16 Count, [MarshalAs(UnmanagedType.LPArray)] UInt32[] pSrc);
[DllImport("VKEnv", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
private static extern void ENVGetProfileString(
[MarshalAs(UnmanagedType.LPStr)] string AppName,
[MarshalAs(UnmanagedType.LPStr)] string KeyName,
[MarshalAs(UnmanagedType.LPStr)] string Default,
//[MarshalAs(UnmanagedType.LPArray)] byte[] ReturnedString,
[MarshalAs(UnmanagedType.LPStr)] StringBuilder ReturnedString,
UInt32 nSize);
#endregion
/// <summary>
/// After calling this method the search path is:
/// 1 - The directory from which the application loaded
/// 2 - The directory specified by the lpPathName parameter
/// 3 - The system directory (The name of this directory is System32)
/// 4 - The 16-bit system directory (The name of this directory is System)
/// 5 - The Windows directory
/// 6 - The directories that are listed in the PATH environment variable
/// </summary>
/// <param name="lpPathName"></param>
/// <returns></returns>
[DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool SetDllDirectory(string lpPathName);
/// <summary>
/// Initializes a new instance of the <see cref="thdNcEsaKvara"/> class.
/// </summary>
/// <param name="fIni">The f ini.</param>
public thdNcEsaKvara(IniFile fIni) : base(fIni)
{
StringBuilder tempS = new StringBuilder(Convert.ToInt32(MAX_PATH));
// set executable path
SetDllDirectory(fIni.ReadString("NC", "SysExe", "C:\\KVARA\\EXE"));
// communication type
string defValue = fIni.ReadString("NC", "SysLink", "SIMULATO");
ENVGetProfileString("SYS", "LINK", defValue, tempS, MAX_PATH);
//bufferH.Free();
SysLink = tempS.ToString();
// communication channel
iChannel = ConvComunicationChannel(SysLink);
// definition path
defValue = fIni.ReadString("NC", "SysDefCn", "C:\\KVARA\\CNC\\C");
ENVGetProfileString("SYS", "DEFCN", defValue, tempS, MAX_PATH);
DefCn = tempS.ToString() + "\\defcn";
// inizializzo le memorie in modo STANDARD
setupMemAreaFromIni(fIni);
if (!Connect())
Disconnect();
}
/// <summary>
/// Setup aree di memoria standard SCMA x CMS
/// </summary>
private void setupMemAreaFromIni(IniFile fIni)
{
SCMA_MManCMS_Release = new EsaStringMem();
SCMA_MManCMS_SerialNumber = new EsaStringMem();
SCMA_MManCMS_Strings = new EsaStringMem[20];
SCMA_MMan_ACK = new EsaDWordMem();
SCMA_MMan_STROBE = new EsaDWordMem();
SCMA_MMan_WD = new EsaWordMem();
SCMA_MMan_status = new EsaByteMem();
SCMA_MMan_ALM = new EsaDWordMem();
SCMA_MMan_MNUM = new EsaWordMem();
SCMA_MMan_MF = new EsaWordMem();
SCMA_MMan_SNUM = new EsaWordMem();
SCMA_MMan_SF = new EsaWordMem();
SCMA_MMan_TNUM = new EsaWordMem();
SCMA_MMan_TF = new EsaWordMem();
SCMA_MMan_OVR = new EsaByteMem();
SCMA_MMan_ANALOG = new EsaDWordMem();
SCMA_MMan_CNT = new EsaDWordMem();
SCMA_MMan_MNT = new EsaDWordMem();
// aree FIXED secondo necessità: indicazione dimensione x impiego // rif aree reali ESA reale (commento successivo)
SCMA_MManCMS_Release.MemorySize = 20;
SCMA_MManCMS_SerialNumber.MemorySize = 50;
for (int i = 0; i < 20; i++)
{
SCMA_MManCMS_Strings[i] = new EsaStringMem();
SCMA_MManCMS_Strings[i].MemorySize = 50;
}
SCMA_MMan_ACK.MemorySize = 4; // 32
SCMA_MMan_STROBE.MemorySize = 4; // 32
SCMA_MMan_WD.MemorySize = 1; // 1
SCMA_MMan_status.MemorySize = 1; // 1
SCMA_MMan_ALM.MemorySize = 32; // 32
SCMA_MMan_MNUM.MemorySize = 2; // 2
SCMA_MMan_MF.MemorySize = 20; // 20
SCMA_MMan_SNUM.MemorySize = 2; // 2
SCMA_MMan_SF.MemorySize = 10; // 10
SCMA_MMan_TNUM.MemorySize = 2; // 2
SCMA_MMan_TF.MemorySize = 10; // 10
SCMA_MMan_OVR.MemorySize = 4; // 16
SCMA_MMan_ANALOG.MemorySize = 128; // 128
SCMA_MMan_CNT.MemorySize = 128; // 128
SCMA_MMan_MNT.MemorySize = 5; // 5
// indirizzo area ESA...
SCMA_MManCMS_Release.AddressName = "CMSretvariables.Release";
SCMA_MManCMS_SerialNumber.AddressName = "CMSretvariables.SerialNumber";
for (int i = 0; i < 20; i++)
{
SCMA_MManCMS_Strings[i].AddressName = $"scma.scmastring[{i}].tag";
}
SCMA_MMan_ACK.AddressName = "scma.ACK"; //fIni.ReadString("NC", "SCMA_AreaAddress_ACK", "scma.ACK");
SCMA_MMan_STROBE.AddressName = "scma.STROBE";
SCMA_MMan_WD.AddressName = "scma.WD";
SCMA_MMan_status.AddressName = "scma.status";
SCMA_MMan_ALM.AddressName = "scma.ALM";
SCMA_MMan_MNUM.AddressName = "scma.MNUM";
SCMA_MMan_MF.AddressName = "scma.MF";
SCMA_MMan_SNUM.AddressName = "scma.SNUM";
SCMA_MMan_SF.AddressName = "scma.SF";
SCMA_MMan_TNUM.AddressName = "scma.TNUM";
SCMA_MMan_TF.AddressName = "scma.TF";
SCMA_MMan_OVR.AddressName = "scma.OVR";
SCMA_MMan_ANALOG.AddressName = "scma.ANALOG";
SCMA_MMan_CNT.AddressName = "scma.CNT";
SCMA_MMan_MNT.AddressName = "scma.MNT";
// Creazione buffers letture memoria
SCMA_MManCMS_Release.data = "Release";
SCMA_MManCMS_SerialNumber.data = "SerialNumber";
for (int i = 0; i < 20; i++)
{
SCMA_MManCMS_Strings[i].data = "";
}
SCMA_MMan_ACK.data = new UInt32[SCMA_MMan_ACK.MemorySize];
SCMA_MMan_STROBE.data = new UInt32[SCMA_MMan_STROBE.MemorySize];
SCMA_MMan_ALM.data = new UInt32[SCMA_MMan_ALM.MemorySize];
SCMA_MMan_MNT.data = new UInt32[SCMA_MMan_MNT.MemorySize];
SCMA_MMan_ANALOG.data = new UInt32[SCMA_MMan_ANALOG.MemorySize];
SCMA_MMan_CNT.data = new UInt32[SCMA_MMan_CNT.MemorySize];
SCMA_MMan_WD.tempData = new UInt32[(int)Math.Ceiling((decimal)SCMA_MMan_WD.MemorySize / 2)];
SCMA_MMan_WD.data = new UInt16[SCMA_MMan_WD.MemorySize];
SCMA_MMan_MF.tempData = new UInt32[(int)Math.Ceiling((decimal)SCMA_MMan_MF.MemorySize / 2)];
SCMA_MMan_MF.data = new UInt16[SCMA_MMan_MF.MemorySize];
SCMA_MMan_SF.tempData = new UInt32[(int)Math.Ceiling((decimal)SCMA_MMan_SF.MemorySize / 2)];
SCMA_MMan_SF.data = new UInt16[SCMA_MMan_SF.MemorySize];
SCMA_MMan_TF.tempData = new UInt32[(int)Math.Ceiling((decimal)SCMA_MMan_TF.MemorySize / 2)];
SCMA_MMan_TF.data = new UInt16[SCMA_MMan_TF.MemorySize];
SCMA_MMan_MNUM.tempData = new UInt32[(int)Math.Ceiling((decimal)SCMA_MMan_MNUM.MemorySize / 2)];
SCMA_MMan_MNUM.data = new UInt16[SCMA_MMan_MNUM.MemorySize];
SCMA_MMan_SNUM.tempData = new UInt32[(int)Math.Ceiling((decimal)SCMA_MMan_SNUM.MemorySize / 2)];
SCMA_MMan_SNUM.data = new UInt16[SCMA_MMan_SNUM.MemorySize];
SCMA_MMan_TNUM.tempData = new UInt32[(int)Math.Ceiling((decimal)SCMA_MMan_TNUM.MemorySize / 2)];
SCMA_MMan_TNUM.data = new UInt16[SCMA_MMan_TNUM.MemorySize];
SCMA_MMan_OVR.tempData = new UInt32[(int)Math.Ceiling((decimal)SCMA_MMan_OVR.MemorySize / 4)];
SCMA_MMan_OVR.data = new Byte[SCMA_MMan_OVR.MemorySize];
SCMA_MMan_status.tempData = new UInt32[(int)Math.Ceiling((decimal)SCMA_MMan_status.MemorySize / 4)];
SCMA_MMan_status.data = new Byte[SCMA_MMan_status.MemorySize];
}
#if false
/// <summary>
/// Thread main execution
/// </summary>
public override void Execute()
{
while (!requestStop)
{
if (Connected)
{
// load data from NC
ReadBuffer();
// if requested make a pause
if (PlcDelay > 0)
Thread.Sleep(PlcDelay);
}
else if (!Connected)
{
// wait 5 sec and retry connection
Thread.Sleep(5000);
Connect();
}
else
Thread.Sleep(500);
}
if (Connected) Disconnect();
Finished = true;
}
#endif
/// <summary>
/// lettura e conversione byte
/// </summary>
/// <param name="currData"></param>
private void readConvByte(EsaByteMem currData)
{
// variabili di appoggio
TS_REG newTsReg = currData.AddresReg;// new TS_REG();
// effettuo lettura!
iError = read_regbuffer(ref newTsReg, 0, currData.MemorySize, currData.tempData);
currData.AddresReg = newTsReg;
// ...e copio in array a byte...
try
{
Buffer.BlockCopy(currData.tempData, 0, currData.data, 0, currData.MemorySize);
}
catch
{ }
}
/// <summary>
/// lettura e conversione WORD
/// </summary>
/// <param name="currData"></param>
private void readConvWord(EsaWordMem currData)
{
// variabili di appoggio
TS_REG newTsReg = currData.AddresReg;
// effettuo lettura!
iError = read_regbuffer(ref newTsReg, 0, currData.MemorySize, currData.tempData);
currData.AddresReg = newTsReg;
// ...e copio in array a byte...
try
{
Buffer.BlockCopy(currData.tempData, 0, currData.data, 0, currData.MemorySize * 2);
}
catch
{ }
}
/// <summary>
/// lettura e conversione STRING
/// </summary>
/// <param name="currData"></param>
private void readConvString(EsaStringMem currData)
{
// variabili di appoggio
TS_REG newTsReg = currData.AddresReg;
// lettura diretta stringa metodo nuovo e dedicato
byte[] StringRead = new byte[newTsReg.iMax + 1];
StringRead.Initialize();
short nCharR = 0;
iError = read_regstring(ref newTsReg, 0, (short)newTsReg.iMax, ref nCharR, StringRead);
if (iError == 0)
currData.data = Encoding.ASCII.GetString(StringRead).Replace("\0", " ").Trim();
}
/// <summary>
/// Leggo il buffer di memorie STRING
/// </summary>
public void ReadStringData()
{
//readConvString(SCMA_MManCMS_Release);
//readConvString(SCMA_MManCMS_SerialNumber);
// leggo le 20 variabili stringa...
for (int i = 0; i < 20; i++)
{
readConvString(SCMA_MManCMS_Strings[i]);
}
}
/// <summary>
/// Leggo il buffer di memorie DWORD
/// </summary>
public void ReadAnalogData()
{
readConvDWord(SCMA_MMan_ANALOG);
}
/// <summary>
/// Leggo il buffer di memorie DWORD
/// </summary>
public void ReadCounterData()
{
readConvDWord(SCMA_MMan_CNT);
}
/// <summary>
/// Leggo il buffer OVR e status
/// </summary>
public void ReadStatus()
{
readConvByte(SCMA_MMan_OVR);
readConvByte(SCMA_MMan_status);
readConvDWord(SCMA_MMan_MNT);
}
/// <summary>
/// Leggo il buffer di memorie DWORD ACK e STROBE
/// </summary>
public void ReadAckStrobe()
{
readConvDWord(SCMA_MMan_ACK);
readConvDWord(SCMA_MMan_STROBE);
}
/// <summary>
/// Leggo TUTTI i buffer MST
/// </summary>
public void ReadMSTData()
{
readConvWord(SCMA_MMan_MF);
readConvWord(SCMA_MMan_SF);
readConvWord(SCMA_MMan_TF);
readConvWord(SCMA_MMan_MNUM);
readConvWord(SCMA_MMan_SNUM);
readConvWord(SCMA_MMan_TNUM);
}
/// <summary>
/// Leggo il buffer di memorie DWORD ACK e STROBE
/// </summary>
public void ReadlAlarms()
{
readConvDWord(SCMA_MMan_ALM);
}
public bool WriteAck()
{
bool answ = false;
try
{
writeConvDWord(SCMA_MMan_ACK);
answ = true;
}
catch
{ }
return answ;
}
/// <summary>
/// lettura e conversione DWORD
/// </summary>
/// <param name="currData"></param>
protected void readConvDWord(EsaDWordMem currData)
{
// variabili di appoggio
TS_REG newTsReg = currData.AddresReg;// new TS_REG();
// effettuo lettura!
iError = read_regbuffer(ref newTsReg, 0, currData.MemorySize, currData.data);
currData.AddresReg = newTsReg;
}
/// <summary>
/// scrittura di un area DWORD
/// </summary>
/// <param name="currData"></param>
protected void writeConvDWord(EsaDWordMem currData)
{
// variabili di appoggio
TS_REG newTsReg = currData.AddresReg;// new TS_REG();
// effettuo scrittura!
iError = write_regbuffer(ref newTsReg, 0, currData.MemorySize, currData.data);
currData.AddresReg = newTsReg;
}
/// <summary>
/// Connects to device.
/// </summary>
/// <returns>True if connection is ok</returns>
public bool Connect()
{
// inizializzazione comunicazione x aree di memoria A BLOCCHI
iError = init_board(DefCn, iChannel);
if (iError != (int)ESAutomotionCNCcom.Link.Errors.ele_ok)
{
string sOut = "";
ESAutomotionCNCcom.Link.el_getReadErrorString(iError, ref sOut);
lg.Error(sOut);
}
// init oggetto LINK x gestione dati da CN..
iError = ESAutomotionCNCcom.Link.el_connect(@"c:\kvara\exe");
if (iError != (int)ESAutomotionCNCcom.Link.Errors.ele_ok)
{
string sOut = "";
ESAutomotionCNCcom.Link.el_getReadErrorString(iError, ref sOut);
lg.Error(sOut);
}
// salvo status connected
Connected = (iError == 0);
if (Connected)
{
setupMemConf();
setupAxisData();
}
return Connected;
}
/// <summary>
/// Effettuo setup di TUTTE le aree di memoria
/// </summary>
public void setupMemConf()
{
// Chiamo tutti i registri memoria!
setupMemAreaSingle(SCMA_MMan_ACK);
setupMemAreaSingle(SCMA_MMan_STROBE);
setupMemAreaSingle(SCMA_MMan_ALM);
setupMemAreaSingle(SCMA_MMan_MNT);
setupMemAreaSingle(SCMA_MMan_ANALOG);
setupMemAreaSingle(SCMA_MMan_CNT);
setupMemAreaSingle(SCMA_MMan_MF);
setupMemAreaSingle(SCMA_MMan_SF);
setupMemAreaSingle(SCMA_MMan_TF);
setupMemAreaSingle(SCMA_MMan_MNUM);
setupMemAreaSingle(SCMA_MMan_SNUM);
setupMemAreaSingle(SCMA_MMan_TNUM);
setupMemAreaSingle(SCMA_MMan_OVR);
setupMemAreaSingle(SCMA_MMan_status);
setupMemAreaSingle(SCMA_MManCMS_Release);
setupMemAreaSingle(SCMA_MManCMS_SerialNumber);
foreach (var item in SCMA_MManCMS_Strings)
{
setupMemAreaSingle(item);
}
}
/// <summary>
/// Effettua setup preliminare dati assi
/// </summary>
public void setupAxisData()
{
int numAxis = ESAutomotionCNCcom.Link.el_getAxisCount();
currAxisData = new AxisData[numAxis];
iError = ESAutomotionCNCcom.Link.el_getStatus(((uint)ESAutomotionCNCcom.Link.StatusMaskFlags.STATUS_AXES));
// recupero dati x TIPO asse e nome...
var axisInfo_t = new ESAutomotionCNCcom.Link.AxisInfoT();
for (int i = 0; i < numAxis; i++)
{
iError = ESAutomotionCNCcom.Link.el_getAxisInfo(i, ref axisInfo_t);
if (iError == 0)
{
currAxisData[axisInfo_t.AxisNum] = new AxisData()
{
num = axisInfo_t.AxisNum,
name = "",
isLinear = !axisInfo_t.IsRotative,
posMac = 0,
posTCP = 0,
distanceToGo = 0,
speed = 0,
load = 0
};
}
}
}
/// <summary>
/// Effettua setup registro
/// </summary>
/// <param name="currData"></param>
private void setupMemAreaSingle(EsaBaseMem currData)
{
TS_REG newTsReg = new TS_REG();
if (iError == 0)
{
iError = get_reg_by_name(currData.AddressName, ref newTsReg);
currData.AddresReg = newTsReg;
}
}
/// <summary>
/// Disconnects device.
/// </summary>
public void Disconnect()
{
iError = exit_board();
iError = ESAutomotionCNCcom.Link.el_disconnect();
}
/// <summary>
/// Esa virtual Nc needs 2ms of multimedia timer to work in real time
/// </summary>
/// <returns></returns>
public bool CheckMultimediaTimer()
{
int minimumPeriod = TimePeriod.MinimumPeriod;
//int maximumPeriod = TimePeriod.MaximumPeriod;
return ((minimumPeriod <= 2) && (minimumPeriod > 0));
}
/// <summary>
/// Valorizza parametri assi e restituisce errore
/// </summary>
/// <returns></returns>
public AxisData[] getAxisData()
{
// richiesta update stato assi
iError = ESAutomotionCNCcom.Link.el_getStatus(((uint)ESAutomotionCNCcom.Link.StatusMaskFlags.STATUS_AXES));
if (iError == 0)
{
var axis_t = new ESAutomotionCNCcom.Link.AxisT();
for (int i = 0; i < (int)ESAutomotionCNCcom.Link.Constants.MAX_AXIS_NUM; i++)
{
// SOLO SE NON in elenco veto...
if (!vetoAxis.Contains(i))
{
iError = ESAutomotionCNCcom.Link.el_getAxisStatus(i, ref axis_t);
if (iError == 0)
{
currAxisData[axis_t.AxisNum].name = axis_t.AxisName.Trim();
currAxisData[axis_t.AxisNum].posMac = axis_t.MachineCoord;
currAxisData[axis_t.AxisNum].posTCP = axis_t.RelativeCoord;
currAxisData[axis_t.AxisNum].distanceToGo = axis_t.Distance;
currAxisData[axis_t.AxisNum].speed = axis_t.Speed;
currAxisData[axis_t.AxisNum].load = axis_t.PowerAbsorbtion;
}
else
{
// metto in elenco veto...
vetoAxis.Add(i);
}
}
else
{
// se scaduto il tempo rivaluto veto...
if (DateTime.Now.Subtract(lastVetoReset).TotalSeconds > 60)
{
vetoAxis.Clear();
lastVetoReset = DateTime.Now;
}
}
}
}
return currAxisData;
}
/// <summary>
/// Restitusice feed e speed
/// </summary>
public feedSpeedData getFeedSpeed()
{
feedSpeedData answ = new feedSpeedData();
ESAutomotionCNCcom.Link.CncFeedStatusT currData = new ESAutomotionCNCcom.Link.CncFeedStatusT();
// richiesta update feed e speed
iError = ESAutomotionCNCcom.Link.el_getStatus(((uint)ESAutomotionCNCcom.Link.StatusMaskFlags.STATUS_FEED_SPEED));
if (iError == 0)
{
iError = ESAutomotionCNCcom.Link.el_getFeedStatus(ref currData);
if (iError == 0)
{
answ.programemdFeed = currData.ProgrammedFeed;
answ.programemdSpeed = currData.ProgrammedSpeed;
answ.realFeed = currData.RealFeed;
answ.realSpeed = currData.RealSpeed;
answ.overrideFeed = currData.FeedOverride;
answ.overrideSpeed = currData.SpeedOverride;
answ.overrideRapid = currData.RapidOverride;
}
}
return answ;
}
/// <summary>
/// recupera e restituisce elenco codici G attivi...
/// </summary>
/// <param name="numPath"></param>
/// <returns></returns>
public int[] getGCodes()
{
int[] answ = new int[10];
ESAutomotionCNCcom.Link.CncStatusT currData = new ESAutomotionCNCcom.Link.CncStatusT();
// richiesta update feed e speed
iError = ESAutomotionCNCcom.Link.el_getStatus(((uint)ESAutomotionCNCcom.Link.StatusMaskFlags.STATUS_MISC_FLAGS));
if (iError == 0)
{
iError = ESAutomotionCNCcom.Link.el_getCNCStatus(ref currData);
answ = currData.GroupG;
}
return answ;
}
}
/// <summary>
/// Struttura dati asse
/// </summary>
public struct AxisData
{
public int num;
public string name;
public bool isLinear;
public double posMac;
public double posTCP;
public double distanceToGo;
public double speed;
public int load;
}
public struct feedSpeedData
{
public double programemdFeed;
public double programemdSpeed;
public double realFeed;
public double realSpeed;
public double overrideFeed;
public double overrideSpeed;
public double overrideRapid;
}
}
+54 -39
View File
@@ -1,61 +1,76 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2"/>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2" />
</startup>
<appSettings>
<add key="appName" value="MTConnect Adapter DB"/>
<add key="appName" value="MTConnect Adapter DB" />
<!--obbligatorio x dump compilato su 7879...-->
<add key="portMTC" value="7879"/>
<add key="recTime" value="true"/>
<add key="verbose" value="true"/>
<add key="portMTC" value="7879" />
<add key="recTime" value="true" />
<add key="verbose" value="true" />
<!--gestione TIMERS-->
<add key="startTimerMs" value="250"/>
<add key="startTimerMs" value="250" />
<!--invio da adapter ad agent: 10ms-->
<add key="timerIntMs" value="10"/>
<add key="timerIntMs" value="10" />
<!--0.2 sec-->
<add key="fastCount" value="20"/>
<add key="fastCount" value="20" />
<!--0.5 sec-->
<add key="normCount" value="50"/>
<add key="normCount" value="50" />
<!--60 sec-->
<add key="slowCount" value="600"/>
<add key="slowCount" value="600" />
<!--2 min-->
<add key="verySlowCount" value="1200"/>
<add key="verySlowCount" value="1200" />
<!--parametri gestione watchdog-->
<add key="maxAdapterLockSec" value="5"/>
<add key="maxAdapterLockSec" value="5" />
<!--conf file-->
<add key="dataPath" value="DATA"/>
<add key="dataConfPath" value="DATA\CONF"/>
<add key="dataDatPath" value="DATA\DAT"/>
<add key="resxPath" value="Resources"/>
<add key="defaultPersLayerFile" value="PersistData.dat"/>
<add key="maxNumDD" value="30"/>
<add key="dataPath" value="DATA" />
<add key="dataConfPath" value="DATA\CONF" />
<add key="dataDatPath" value="DATA\DAT" />
<add key="resxPath" value="Resources" />
<add key="defaultPersLayerFile" value="PersistData.dat" />
<add key="maxNumDD" value="30" />
<!--Definizione avvio Adapter-->
<add key="autoStartOnLoad" value="true"/>
<add key="openDumpOnStart" value="true"/>
<add key="startMinimized" value="false"/>
<add key="windowCanMax" value="true"/>
<add key="trayClose" value="true"/>
<add key="autoSaveSec" value="60"/>
<add key="waitRecMSec" value="5000"/>
<add key="testCharSep" value="|"/>
<add key="autoStartOnLoad" value="true" />
<add key="openDumpOnStart" value="true" />
<add key="startMinimized" value="false" />
<add key="windowCanMax" value="true" />
<add key="trayClose" value="true" />
<add key="autoSaveSec" value="60" />
<add key="waitRecMSec" value="5000" />
<add key="testCharSep" value="|" />
<!--CONF DB-->
<add key="ServerType" value="MySQL"/>
<add key="ServerAddress" value="10.74.82.62"/>
<add key="DbName" value="savenergy"/>
<add key="DbUser" value="root"/>
<add key="DbPwd" value="scmgroup"/>
<add key="numRetryConnDb" value="10"/>
<add key="ServerType" value="MySQL" />
<add key="ServerAddress" value="10.74.82.62" />
<add key="DbName" value="savenergy" />
<add key="DbUser" value="root" />
<add key="DbPwd" value="scmgroup" />
<add key="numRetryConnDb" value="10" />
</appSettings>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="lib;libs"/>
<probing privatePath="lib;libs" />
<dependentAssembly>
<assemblyIdentity name="Google.Protobuf" publicKeyToken="a7d26565bac4d604" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.12.3.0" newVersion="3.12.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="BouncyCastle.Crypto" publicKeyToken="0e99375e54769942" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.8.6.0" newVersion="1.8.6.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.1.1" newVersion="4.0.1.1" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.6.0" newVersion="4.0.6.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.IO.Compression" publicKeyToken="b77a5c561934e089" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.2.0" newVersion="4.1.2.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<system.data>
<DbProviderFactories>
<remove invariant="MySql.Data.MySqlClient"/>
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
</DbProviderFactories>
</system.data></configuration>
</configuration>
+92 -9
View File
@@ -8,11 +8,12 @@
<OutputType>WinExe</OutputType>
<RootNamespace>MTC_ADB</RootNamespace>
<AssemblyName>MTC-ADB</AssemblyName>
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
@@ -43,21 +44,96 @@
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x86\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget>
<LangVersion>7.3</LangVersion>
<ErrorReport>prompt</ErrorReport>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
<OutputPath>bin\x86\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x86</PlatformTarget>
<LangVersion>7.3</LangVersion>
<ErrorReport>prompt</ErrorReport>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'MySql|x86'">
<OutputPath>bin\x86\MySql\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x86</PlatformTarget>
<LangVersion>7.3</LangVersion>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="BouncyCastle.Crypto, Version=1.8.6.0, Culture=neutral, PublicKeyToken=0e99375e54769942">
<HintPath>..\packages\BouncyCastle.1.8.6.1\lib\BouncyCastle.Crypto.dll</HintPath>
</Reference>
<Reference Include="DotNetAdapterSDK, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>ExtLib\DotNetAdapterSDK.dll</HintPath>
</Reference>
<Reference Include="MySql.Data, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL">
<HintPath>..\packages\MySql.Data.6.9.9\lib\net45\MySql.Data.dll</HintPath>
<Reference Include="Google.Protobuf, Version=3.12.3.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL">
<HintPath>..\packages\Google.Protobuf.3.12.3\lib\net45\Google.Protobuf.dll</HintPath>
</Reference>
<Reference Include="K4os.Compression.LZ4, Version=1.1.11.0, Culture=neutral, PublicKeyToken=2186fa9121ef231d, processorArchitecture=MSIL">
<HintPath>..\packages\K4os.Compression.LZ4.1.1.11\lib\net46\K4os.Compression.LZ4.dll</HintPath>
</Reference>
<Reference Include="K4os.Compression.LZ4.Streams, Version=1.1.11.0, Culture=neutral, PublicKeyToken=2186fa9121ef231d, processorArchitecture=MSIL">
<HintPath>..\packages\K4os.Compression.LZ4.Streams.1.1.11\lib\net46\K4os.Compression.LZ4.Streams.dll</HintPath>
</Reference>
<Reference Include="K4os.Hash.xxHash, Version=1.0.6.0, Culture=neutral, PublicKeyToken=32cd54395057cec3, processorArchitecture=MSIL">
<HintPath>..\packages\K4os.Hash.xxHash.1.0.6\lib\net46\K4os.Hash.xxHash.dll</HintPath>
</Reference>
<Reference Include="MySql.Data, Version=8.0.21.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL">
<HintPath>..\packages\MySql.Data.8.0.21\lib\net452\MySql.Data.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
<HintPath>..\packages\NLog.4.4.5\lib\net45\NLog.dll</HintPath>
<Private>True</Private>
<HintPath>..\packages\NLog.4.7.10\lib\net45\NLog.dll</HintPath>
</Reference>
<Reference Include="Renci.SshNet, Version=2016.1.0.0, Culture=neutral, PublicKeyToken=1cee9f8bde3db106, processorArchitecture=MSIL">
<HintPath>..\packages\SSH.NET.2016.1.0\lib\net40\Renci.SshNet.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
</Reference>
<Reference Include="System.ComponentModel" />
<Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System.configuration" />
<Reference Include="System.Configuration.Install" />
<Reference Include="System.Core" />
<Reference Include="System.Drawing.Design" />
<Reference Include="System.IO.Compression, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<HintPath>..\packages\System.IO.Compression.4.3.0\lib\net46\System.IO.Compression.dll</HintPath>
</Reference>
<Reference Include="System.Management" />
<Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
</Reference>
<Reference Include="System.Numerics" />
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.6.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.4.7.1\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.Serialization" />
<Reference Include="System.ServiceModel" />
<Reference Include="System.Transactions" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
@@ -67,6 +143,12 @@
<Reference Include="System.Net.Http" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
<Reference Include="Ubiety.Dns.Core, Version=2.2.1.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL">
<HintPath>..\packages\MySql.Data.8.0.21\lib\net452\Ubiety.Dns.Core.dll</HintPath>
</Reference>
<Reference Include="Zstandard.Net, Version=1.1.7.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL">
<HintPath>..\packages\MySql.Data.8.0.21\lib\net452\Zstandard.Net.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="..\VersGen\VersGen.cs">
@@ -112,12 +194,13 @@
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<None Include="DATA\DAT\PersistData.dat">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<Content Include="NLog.config">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<None Include="dump\build.bat" />
<None Include="dump\dump.obj" />
@@ -162,11 +245,11 @@
</ItemGroup>
<Move SourceFiles="@(MoveToLibFolder)" DestinationFolder="$(OutputPath)lib" OverwriteReadOnlyFiles="true" />
</Target>
<Import Project="..\packages\SlowCheetah.2.5.48\build\SlowCheetah.targets" Condition="Exists('..\packages\SlowCheetah.2.5.48\build\SlowCheetah.targets')" />
<Import Project="..\packages\Microsoft.VisualStudio.SlowCheetah.4.0.8\build\Microsoft.VisualStudio.SlowCheetah.targets" Condition="Exists('..\packages\Microsoft.VisualStudio.SlowCheetah.4.0.8\build\Microsoft.VisualStudio.SlowCheetah.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>Questo progetto fa riferimento a uno o più pacchetti NuGet che non sono presenti in questo computer. Usare lo strumento di ripristino dei pacchetti NuGet per scaricarli. Per altre informazioni, vedere http://go.microsoft.com/fwlink/?LinkID=322105. Il file mancante è {0}.</ErrorText>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\SlowCheetah.2.5.48\build\SlowCheetah.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\SlowCheetah.2.5.48\build\SlowCheetah.targets'))" />
<Error Condition="!Exists('..\packages\Microsoft.VisualStudio.SlowCheetah.4.0.8\build\Microsoft.VisualStudio.SlowCheetah.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.VisualStudio.SlowCheetah.4.0.8\build\Microsoft.VisualStudio.SlowCheetah.targets'))" />
</Target>
</Project>
+1 -1
View File
@@ -384,7 +384,7 @@ namespace MTC_ADB
{
get
{
return string.Format(@"{0}\MTCA.ico", utils.resxDir);
return string.Format(@"{0}\Scma.ico", utils.resxDir);
}
}
/// <summary>
+1 -1
View File
@@ -53,4 +53,4 @@
-->
<logger name="*" minlevel="Debug" writeTo="f" />
</rules>
</nlog>
</nlog>
+1076 -392
View File
File diff suppressed because it is too large Load Diff
+30 -38
View File
@@ -1,69 +1,61 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Codice generato da uno strumento.
// Versione runtime:4.0.30319.42000
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Le modifiche apportate a questo file possono causare un comportamento non corretto e andranno perse se
// il codice viene rigenerato.
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace MTC_ADB.Properties
{
namespace MTC_ADB.Properties {
using System;
/// <summary>
/// Classe di risorse fortemente tipizzata per la ricerca di stringhe localizzate e così via.
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// Questa classe è stata generata automaticamente dalla classe StronglyTypedResourceBuilder
// tramite uno strumento quale ResGen o Visual Studio.
// Per aggiungere o rimuovere un membro, modificare il file .ResX, quindi eseguire di nuovo ResGen
// con l'opzione /str oppure ricompilare il progetto VS.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources
{
internal class Resources {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources()
{
internal Resources() {
}
/// <summary>
/// Restituisce l'istanza di ResourceManager memorizzata nella cache e usata da questa classe.
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager
{
get
{
if ((resourceMan == null))
{
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("MTC_ADB.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Esegue l'override della proprietà CurrentUICulture del thread corrente per tutte
/// le ricerche di risorse che utilizzano questa classe di risorse fortemente tipizzata.
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture
{
get
{
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set
{
set {
resourceCulture = value;
}
}
+9 -13
View File
@@ -8,21 +8,17 @@
// </auto-generated>
//------------------------------------------------------------------------------
namespace MTC_ADB.Properties
{
namespace MTC_ADB.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
{
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.5.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default
{
get
{
public static Settings Default {
get {
return defaultInstance;
}
}
+16 -5
View File
@@ -1,9 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="MySql.Data" version="6.9.9" targetFramework="net452" />
<package id="NLog" version="4.4.5" targetFramework="net452" />
<package id="NLog.Config" version="4.4.5" targetFramework="net452" />
<package id="NLog.Schema" version="4.4.5" targetFramework="net452" />
<package id="BouncyCastle" version="1.8.6.1" targetFramework="net462" />
<package id="Google.Protobuf" version="3.12.3" targetFramework="net462" />
<package id="K4os.Compression.LZ4" version="1.1.11" targetFramework="net462" />
<package id="K4os.Compression.LZ4.Streams" version="1.1.11" targetFramework="net462" />
<package id="K4os.Hash.xxHash" version="1.0.6" targetFramework="net462" />
<package id="Microsoft.VisualStudio.SlowCheetah" version="4.0.8" targetFramework="net462" developmentDependency="true" />
<package id="MySql.Data" version="8.0.21" targetFramework="net462" />
<package id="Newtonsoft.Json" version="12.0.3" targetFramework="net452" />
<package id="NLog" version="4.7.10" targetFramework="net462" />
<package id="NLog.Schema" version="4.7.10" targetFramework="net462" />
<package id="PrettyBin" version="1.1.0" targetFramework="net452" />
<package id="SlowCheetah" version="2.5.48" targetFramework="net452" />
<package id="SSH.NET" version="2016.1.0" targetFramework="net462" />
<package id="System.Buffers" version="4.5.1" targetFramework="net462" />
<package id="System.IO.Compression" version="4.3.0" targetFramework="net462" />
<package id="System.Memory" version="4.5.4" targetFramework="net462" />
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net462" />
<package id="System.Runtime.CompilerServices.Unsafe" version="4.7.1" targetFramework="net462" />
</packages>
+38 -5
View File
@@ -9,8 +9,9 @@
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>MTC</RootNamespace>
<AssemblyName>MTC</AssemblyName>
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
@@ -29,14 +30,47 @@
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x86\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget>
<LangVersion>7.3</LangVersion>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
<OutputPath>bin\x86\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x86</PlatformTarget>
<LangVersion>7.3</LangVersion>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<ItemGroup>
<Reference Include="AForge, Version=2.2.5.0, Culture=neutral, PublicKeyToken=c1db6ff4eaa06aeb, processorArchitecture=MSIL">
<HintPath>..\packages\AForge.2.2.5\lib\AForge.dll</HintPath>
</Reference>
<Reference Include="AForge.Math, Version=2.2.5.0, Culture=neutral, PublicKeyToken=abba2e25397ee8c9, processorArchitecture=MSIL">
<HintPath>..\packages\AForge.Math.2.2.5\lib\AForge.Math.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
<HintPath>..\packages\NLog.4.4.4\lib\net45\NLog.dll</HintPath>
<HintPath>..\packages\NLog.4.7.10\lib\net45\NLog.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.configuration" />
<Reference Include="System.Core" />
<Reference Include="System.IO.Compression, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<HintPath>..\packages\System.IO.Compression.4.3.0\lib\net46\System.IO.Compression.dll</HintPath>
</Reference>
<Reference Include="System.Numerics" />
<Reference Include="System.Runtime.Serialization" />
<Reference Include="System.ServiceModel" />
<Reference Include="System.Transactions" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
@@ -46,13 +80,12 @@
</ItemGroup>
<ItemGroup>
<Compile Include="BinaryFormatter.cs" />
<Compile Include="enumerations.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="baseUtils.cs" />
</ItemGroup>
<ItemGroup>
<Content Include="NLog.config">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<None Include="app.config" />
<None Include="NLog.xsd">
<SubType>Designer</SubType>
</None>
+1083 -393
View File
File diff suppressed because it is too large Load Diff
+11
View File
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.IO.Compression" publicKeyToken="b77a5c561934e089" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.2.0" newVersion="4.1.2.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
+297 -12
View File
@@ -1,11 +1,11 @@
using System;
using NLog;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.IO;
using System.Linq;
using NLog;
namespace MTC
{
@@ -16,6 +16,8 @@ namespace MTC
/// </summary>
public static Logger lg;
#region area gestione conf file
/// <summary>
/// legge conf in formato char
/// </summary>
@@ -80,6 +82,33 @@ namespace MTC
{ }
return answ;
}
#endregion
#region area manipolazione bit/byte
/// <summary>
/// verifica se un dato bit sia alzato (come flag di strobe)
/// </summary>
/// <param name="currByte">valore da testare</param>
/// <param name="bitNum">valore cercato come INDICE base 0 del byte (b0..b7)</param>
/// <returns></returns>
public static bool IsSetBit(byte currByte, int bitNum)
{
return ((currByte & (1 << bitNum)) != 0);
}
/// <summary>
/// verifica se un dato bit sia alzato (come flag di strobe)
/// </summary>
/// <param name="currVal">valore da testare</param>
/// <param name="bitNum">valore cercato come INDICE base 0 del byte (b0..b7)</param>
/// <returns></returns>
public static bool IsSetBit(int currVal, int bitNum)
{
return ((currVal & (1 << bitNum)) != 0);
}
/// <summary>
/// verifica se un dato bit sia alzato (come flag di strobe)
/// </summary>
@@ -135,7 +164,7 @@ namespace MTC
catch
{ }
return answ;
}
}
/// <summary>
/// imposta un bit al valore richiesto duplicando il valore IN come OUT
/// </summary>
@@ -146,7 +175,10 @@ namespace MTC
public static byte[] setBitOnStFlag(byte[] original, bool bitBool, int bitIndex)
{
int bitVal = 0;
if (bitBool) bitVal = 1;
if (bitBool)
{
bitVal = 1;
}
// risposta è identica ad originale...
byte[] answ = original;
// verifico se il bit è 0/1b
@@ -175,7 +207,10 @@ namespace MTC
public static byte[] ToByteArray(BitArray bits)
{
int numBytes = bits.Count / 8;
if (bits.Count % 8 != 0) numBytes++;
if (bits.Count % 8 != 0)
{
numBytes++;
}
byte[] bytes = new byte[numBytes];
int byteIndex = 0, bitIndex = 0;
@@ -183,7 +218,9 @@ namespace MTC
for (int i = 0; i < bits.Count; i++)
{
if (bits[i])
{
bytes[byteIndex] |= (byte)(1 << (7 - bitIndex));
}
bitIndex++;
if (bitIndex == 8)
@@ -306,7 +343,7 @@ namespace MTC
}
return result;
}
#endregion
}
/// <summary>
/// Oggetto timing x archiviazione dati perfomances
@@ -356,6 +393,148 @@ namespace MTC
totMsec = new TimeSpan(nTicks);
}
}
/// <summary>
/// Classe gestione valori campionati su periodo
/// </summary>
public class sampleVect
{
/// <summary>
/// Dimensione finestra di campionamento (secondi)
/// </summary>
protected int windSize;
/// <summary>
/// vettore valori temporali della serie
/// </summary>
protected List<DateTime> lTime;
/// <summary>
/// vettore valoti puntuali della serie
/// </summary>
protected List<int> lVal;
/// <summary>
/// Inizializzo l'oggetto
/// </summary>
public sampleVect()
{
// init valori default...
windSize = baseUtils.CRI("countWindSize") > 0 ? baseUtils.CRI("countWindSize") : 60;
lTime = new List<DateTime>();
lVal = new List<int>();
}
/// <summary>
/// Conteggio elementi
/// </summary>
protected int numElem
{
get
{
int answ = 0;
try
{
answ = lTime.Count;
}
catch
{ }
return answ;
}
}
/// <summary>
/// Verifica ampiezza finestra valori First-Last
/// </summary>
protected double flWindSize
{
get
{
double answ = 0;
if (numElem > 1)
{
answ = lTime.Last().Subtract(lTime[0]).TotalSeconds;
}
return answ;
}
}
/// <summary>
/// Verifica ampiezza finestra valori Second-Last
/// </summary>
protected double slWindSize
{
get
{
double answ = 0;
if (numElem > 2) // altrimenti SE non ne ho almeno 3 NON posso avere secondo/ultimo...
{
answ = lTime.Last().Subtract(lTime[1]).TotalSeconds;
}
return answ;
}
}
/// <summary>
/// Aggiunge un valore alla serie ed eventualmente elimina i valori superflui a garantirne una finestra temporale valida
/// </summary>
/// <param name="tempo"></param>
/// <param name="valore"></param>
public void addValue(DateTime tempo, int valore)
{
lTime.Add(tempo);
lVal.Add(valore);
// verifico se siano da accorciare le serie... ovvero i 2 intervalli ENTRAMBI sono superiori al periodo minimo (in tal caso riduco..
while (flWindSize > windSize && slWindSize > windSize)
{
// elimino i 2 valori + vecchi
lTime.RemoveAt(0);
lVal.RemoveAt(0);
// ora ricontrollo...
}
}
/// <summary>
/// Calcola il valore mediano...
/// </summary>
public double vcMedian
{
get
{
double answ = 0;
// restituisce la mediana SE valida, altrimenti null...
if (numElem > 2 && flWindSize > windSize)
{
try
{
// calcolo mediana!
//answ = Statistics.Median(lVal.ToArray());
// rif: https://blogs.msmvps.com/deborahk/linq-mean-median-and-mode/
var sortedNumbers = lVal.OrderBy(n => n);
int numCount = lVal.Count;
int indice50 = lVal.Count / 2;
if ((numCount % 2) == 0)
{
answ = ((sortedNumbers.ElementAt(indice50) + sortedNumbers.ElementAt(indice50 - 1)) / 2);
}
else
{
answ = sortedNumbers.ElementAt(indice50);
}
}
catch
{ }
}
return answ;
}
}
/// <summary>
/// Verifica se la vc sia valida (ovvero almeno 2 valori e intervallo > window richiesta)
/// </summary>
public bool vcValid
{
get
{
return (flWindSize > windSize && numElem > 1);
}
}
}
public static class TimingData
{
public static List<TimeRec> results = new List<TimeRec>();
@@ -375,7 +554,10 @@ namespace MTC
for (int i = 0; i < results.Count; i++)
{
// se il codice è quello cercato...
if (results[i].codCall == codice) indice = i;
if (results[i].codCall == codice)
{
indice = i;
}
}
// se c'è aggiorno...
if (indice >= 0)
@@ -389,10 +571,43 @@ namespace MTC
results.Add(new TimeRec(codice, ticks));
}
}
/// <summary>
/// Resetta i dati registrati (ad avvio adapter...)
/// </summary>
public static void resetData()
{
results = new List<TimeRec>();
}
}
/// <summary>
/// Gestione Endianness
/// </summary>
public static class Endian
{
/// <summary>
/// Scambia MSB/LSB per 16bit
/// </summary>
/// <param name="inValue"></param>
/// <returns></returns>
public static UInt16 SwapUInt16(UInt16 inValue)
{
return (UInt16)(((inValue & 0xff00) >> 8) |
((inValue & 0x00ff) << 8));
}
/// <summary>
/// Scambia MSB/LSB per 32bit
/// </summary>
/// <param name="inValue"></param>
/// <returns></returns>
public static UInt32 SwapUInt32(UInt32 inValue)
{
return ((inValue & 0xff000000) >> 24) |
((inValue & 0x00ff0000) >> 8) |
((inValue & 0x0000ff00) << 8) |
((inValue & 0x000000ff) << 24);
}
}
public enum tipoAdapter
{
@@ -407,7 +622,11 @@ namespace MTC
/// <summary>
/// Adapter ESAGV (SCM)
/// </summary>
ESAGV,
ESAGVSCM,
/// <summary>
/// Adapter ESAGV (CMS)
/// </summary>
ESAGVCMS,
/// <summary>
/// adapter FANUC (CMS)
/// </summary>
@@ -428,6 +647,10 @@ namespace MTC
public enum gatherCycle
{
/// <summary>
/// Very High Frequency (solo x invii...)
/// </summary>
VHF,
/// <summary>
/// lettura dati ad alta frequenza
/// </summary>
@@ -480,6 +703,11 @@ namespace MTC
public int PathFeedrate;
public int PathFeedrateOver;
public int PathRapidOver;
public int PathJogOver;
public int PathSpindleOver_01;
public int PathSpindleOver_02;
public int PathSpindleOver_03;
public int PathSpindleOver_04;
public position PathPosAct;
}
@@ -579,7 +807,10 @@ namespace MTC
stop = DateTime.Today.AddHours(Convert.ToInt16(valori[9])).AddMinutes(Convert.ToInt16(valori[10])).AddSeconds(Convert.ToInt16(valori[11]));
// se ore == 0 --> aggiungo 1 gg!!!
if (Convert.ToInt16(valori[9]) == 0) stop.AddDays(1);
if (Convert.ToInt16(valori[9]) == 0)
{
stop.AddDays(1);
}
tEff = new TimeSpan(Convert.ToInt16(valori[12]), Convert.ToInt16(valori[13]), Convert.ToInt16(valori[14]));
@@ -598,23 +829,74 @@ namespace MTC
/// </summary>
public class allarme
{
/// <summary>
/// Codice
/// </summary>
public string codNum;
/// <summary>
/// Gruppo (CNC/PLC/HMI)
/// </summary>
public string gruppo;
/// <summary>
/// Livello allarme
/// - numerico [001...999]
/// - enum: FAULT=Alarm=900, Warning=500, Info=200, Maintenance=100
/// </summary>
public string livello;
/// <summary>
/// Descrizione in lingua corrente
/// </summary>
public string descrizione;
/// <summary>
/// Descrizione in IT
/// </summary>
public string descrizioneIt;
/// <summary>
/// Descrizione in EN
/// </summary>
public string descrizioneEn;
public allarme()
{
codNum = "";
gruppo = "";
livello = "";
descrizione = "";
descrizioneIt = "";
descrizioneEn = "";
}
/// <summary>
/// Inizializzaizone allarme con tutti i valori della descrizione in 3 lingue...
/// </summary>
/// <param name="_codNum"></param>
/// <param name="_gruppo"></param>
/// <param name="_livello"></param>
/// <param name="_descrizione">Usato per lingua CORRENTE, IT, EN</param>
public allarme(string _codNum, string _gruppo, string _livello, string _descrizione)
{
codNum = _codNum;
gruppo = _gruppo;
livello = _livello;
descrizione = _descrizione;
descrizioneIt = _descrizione;
descrizioneEn = _descrizione;
}
/// <summary>
/// Inizializzaizone allarme con tutti i valori della descrizione in 3 lingue...
/// </summary>
/// <param name="_codNum"></param>
/// <param name="_gruppo"></param>
/// <param name="_livello"></param>
/// <param name="_descrizione"></param>
/// <param name="_descrizioneIt"></param>
/// <param name="_descrizioneEn"></param>
public allarme(string _codNum, string _gruppo, string _livello, string _descrizione, string _descrizioneIt, string _descrizioneEn)
{
codNum = _codNum;
gruppo = _gruppo;
livello = _livello;
descrizione = _descrizione;
descrizioneIt = _descrizioneIt;
descrizioneEn = _descrizioneEn;
}
}
@@ -628,19 +910,22 @@ namespace MTC
public string memAddr;
public string varName;
public string dataType;
public int scale;
public otherData()
{
codNum = "";
memAddr = "";
varName = "";
dataType = "";
scale = 1;
}
public otherData(string _codNum, string _memAddr, string _varName, string _dataType)
public otherData(string _codNum, string _memAddr, string _varName, string _dataType, int _scale = 1)
{
codNum = _codNum;
memAddr = _memAddr;
varName = _varName;
dataType = _dataType;
scale = _scale;
}
}
+235
View File
@@ -0,0 +1,235 @@
namespace MTC
{
/// <summary>
/// Tipologia di ricerca ammessa
/// </summary>
public enum subsMode
{
/// ADD: includo
A,
/// X: ESCLUDO
X
}
/// <summary>
/// Tipologia di sostituzioni ammesse
/// </summary>
public enum substSearch
{
// CERCO BEGIN: inizia per
B,
// CERCO END: finisce per
E,
// CERCO CONTAINS: contiene
C,
// CERCO IDENTICAL: identica
I
}
/// <summary>
/// Classe utility dizionario per sostituzioni
/// </summary>
public class replDict
{
/// <summary>
/// Valore tradotto
/// </summary>
public string tradz;
/// <summary>
/// Tipologia di azione
/// </summary>
public subsMode modo;
/// <summary>
/// Modalità di ricerca
/// </summary>
public substSearch search;
}
/// <summary>
/// Classe item node (tipo/obj)
/// </summary>
public class itemNode
{
/// <summary>
/// Tipo oggetto (per cast)
/// </summary>
public itemType cType;
/// <summary>
/// Object specifico
/// </summary>
public object cObject;
/// <summary>
/// costruttore
/// </summary>
public itemNode()
{ }
/// <summary>
/// costruttore
/// </summary>
/// <param name="_tipo"></param>
/// <param name="_obj"></param>
public itemNode(itemType _tipo, object _obj)
{
cType = _tipo;
cObject = _obj;
}
}
/// <summary>
/// Tipologia di ITEM
/// </summary>
public enum itemType
{
/// <summary>
/// CONDIZION = ALLARME
/// </summary>
Condition,
/// <summary>
/// Evento = point in time data
/// </summary>
Event,
/// <summary>
/// Messaggio generico
/// </summary>
Message,
/// <summary>
/// Campionamento continuo
/// </summary>
Sample
}
/// <summary>
/// Varibili STATO ATTIVO (es attuatori, sistemi...)
/// </summary>
public enum actStatus
{
/// <summary>
/// Stato inattivo
/// </summary>
INACTIVE = 0,
/// <summary>
/// Stato Attivo
/// </summary>
ACTIVE
}
/// <summary>
/// Varibili STATO OnOff
/// </summary>
public enum onOffStatus
{
/// <summary>
/// Stato OFF
/// </summary>
OFF = 0,
/// <summary>
/// Stato ON
/// </summary>
ON
}
/// <summary>
/// Varibili STATO per EMERGENZA
/// </summary>
public enum emStatus
{
/// <summary>
/// Stato ARMATO
/// </summary>
ARMED = 0,
/// <summary>
/// Stato EMERGENZA PREMUTA
/// </summary>
TRIGGERED
}
/// <summary>
/// ENUM degli stati macchina(alto livello, OPC-UA)
/// </summary>
public enum macState
{
UNDEFINED = 0,
EXE = 1,
READY = 2,
FAIL = 3,
POWER_OFF = 4
}
/// <summary>
/// ENUM degli stati RUN del path MTC
/// </summary>
public enum MtcRunMode
{
UNDEFINED = 0,
AUTOMATIC,
EDIT,
MANUAL_DATA_INPUT,
MANUAL,
SEMI_AUTO
}
/// <summary>
/// ENUM dei MODE del path OPC-UA
/// </summary>
public enum OpcUaPathMode
{
UNDEFINED = 0,
AUTOMATIC,
EDIT,
SEMIAUTOMATIC,
MANUAL_JOG,
SEMIAUTOMATIC_MTC
}
/// <summary>
/// ENUM degli stati EXE del path MTC
/// </summary>
public enum MtcExeMode
{
UNDEFINED = 0,
ACTIVE,
READY,
STOPPED,
FEED_HOLD,
OPTIONAL_STOP,
PROGRAM_STOPPED,
PROGRAM_COMPLETED
}
/// <summary>
/// ENUM degli stati del path OPC-UA
/// </summary>
public enum OpcUaPathStatus
{
UNDEFINED = 0,
EXE,
READY,
HOLD,
FEED_HOLD,
OPTIONAL_STOP,
PROGRAM_STOPPED,
DONE
}
/// <summary>
/// Varibili STATO per AVAIL
/// </summary>
public enum availStatus
{
/// <summary>
/// Stato DISPONIBILE
/// </summary>
AVAILABLE = 0,
/// <summary>
/// Stato NON disponibile NULL/unavailable (era NULL, rimesso UNAVAILABLE su richiesta Nicola Carminati)
/// </summary>
UNAVAILABLE
}
/// <summary>
/// Varibili STATO per AVAIL
/// </summary>
public enum pathType
{
/// <summary>
/// Stato LAVORO
/// </summary>
LAVORO = 0,
/// <summary>
/// Stato ASSERV
/// </summary>
ASSERV
}
}
+6 -3
View File
@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="NLog" version="4.4.4" targetFramework="net452" />
<package id="NLog.Config" version="4.4.4" targetFramework="net452" />
<package id="NLog.Schema" version="4.4.4" targetFramework="net452" />
<package id="AForge" version="2.2.5" targetFramework="net452" />
<package id="AForge.Math" version="2.2.5" targetFramework="net452" />
<package id="Newtonsoft.Json" version="12.0.3" targetFramework="net452" />
<package id="NLog" version="4.7.10" targetFramework="net462" />
<package id="NLog.Schema" version="4.7.10" targetFramework="net462" />
<package id="System.IO.Compression" version="4.3.0" targetFramework="net462" />
</packages>
-140
View File
@@ -1,140 +0,0 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
VisualStudioVersion = 14.0.25420.1
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DotNetAdapterSDK", "..\..\..\GitHub\MTConnect\dot_net_sdk\DotNetAdapterSDK.csproj", "{D8D08DBE-B511-4DE0-B5A9-563EBFC60C4F}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{695A97F7-B396-4DD3-8596-F043ECA3E2BD}"
ProjectSection(SolutionItems) = preProject
..\..\..\Dropbox\30_Clienti\CMS\CMS-MTC\SetupMTC\AGENT\DATA\CONF_DEMO\Agent_ItemList_ESAKVARA.xml = ..\..\..\Dropbox\30_Clienti\CMS\CMS-MTC\SetupMTC\AGENT\DATA\CONF_DEMO\Agent_ItemList_ESAKVARA.xml
..\..\..\Dropbox\30_Clienti\CMS\CMS-MTC\SetupMTC\AGENT\DATA\CONF_DEMO\Agent_ItemList_FANUC.xml = ..\..\..\Dropbox\30_Clienti\CMS\CMS-MTC\SetupMTC\AGENT\DATA\CONF_DEMO\Agent_ItemList_FANUC.xml
..\AgentBin\CMS.xml = ..\AgentBin\CMS.xml
..\AgentBin\SCM.xml = ..\AgentBin\SCM.xml
EndProjectSection
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "CMSCncLib", "CMSCncLib\CMSCncLib.vbproj", "{2D769FFD-1122-4276-A115-29246E6D23C5}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MTC-Adapter", "MTC_Adapter\MTC-Adapter.csproj", "{736DF121-11E6-4D46-835D-6560ACF241E4}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VersGen", "VersGen\VersGen.csproj", "{58E399F3-9D4E-49D3-AB35-9ED536543D50}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SCMCncLib", "SCMCncLib\SCMCncLib.csproj", "{7A12FE26-9C58-4630-973D-D4872374DBAF}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MTC-ADB", "MTC-ADB\MTC-ADB.csproj", "{DF877E5E-8D04-4532-BA01-CEFD8636D4DA}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MTC", "MTC\MTC.csproj", "{EC83D80E-9F3B-4DE9-B16A-CA216543B7EC}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
CMS-FANUC|Any CPU = CMS-FANUC|Any CPU
CMS-OSAI|Any CPU = CMS-OSAI|Any CPU
CMS-SIEMENS|Any CPU = CMS-SIEMENS|Any CPU
Debug|Any CPU = Debug|Any CPU
MySql|Any CPU = MySql|Any CPU
Release|Any CPU = Release|Any CPU
SCM-ESA|Any CPU = SCM-ESA|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{D8D08DBE-B511-4DE0-B5A9-563EBFC60C4F}.CMS-FANUC|Any CPU.ActiveCfg = Release|Any CPU
{D8D08DBE-B511-4DE0-B5A9-563EBFC60C4F}.CMS-FANUC|Any CPU.Build.0 = Release|Any CPU
{D8D08DBE-B511-4DE0-B5A9-563EBFC60C4F}.CMS-OSAI|Any CPU.ActiveCfg = Release|Any CPU
{D8D08DBE-B511-4DE0-B5A9-563EBFC60C4F}.CMS-OSAI|Any CPU.Build.0 = Release|Any CPU
{D8D08DBE-B511-4DE0-B5A9-563EBFC60C4F}.CMS-SIEMENS|Any CPU.ActiveCfg = Release|Any CPU
{D8D08DBE-B511-4DE0-B5A9-563EBFC60C4F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D8D08DBE-B511-4DE0-B5A9-563EBFC60C4F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D8D08DBE-B511-4DE0-B5A9-563EBFC60C4F}.MySql|Any CPU.ActiveCfg = Release|Any CPU
{D8D08DBE-B511-4DE0-B5A9-563EBFC60C4F}.MySql|Any CPU.Build.0 = Release|Any CPU
{D8D08DBE-B511-4DE0-B5A9-563EBFC60C4F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D8D08DBE-B511-4DE0-B5A9-563EBFC60C4F}.Release|Any CPU.Build.0 = Release|Any CPU
{D8D08DBE-B511-4DE0-B5A9-563EBFC60C4F}.SCM-ESA|Any CPU.ActiveCfg = Release|Any CPU
{D8D08DBE-B511-4DE0-B5A9-563EBFC60C4F}.SCM-ESA|Any CPU.Build.0 = Release|Any CPU
{2D769FFD-1122-4276-A115-29246E6D23C5}.CMS-FANUC|Any CPU.ActiveCfg = Release|Any CPU
{2D769FFD-1122-4276-A115-29246E6D23C5}.CMS-FANUC|Any CPU.Build.0 = Release|Any CPU
{2D769FFD-1122-4276-A115-29246E6D23C5}.CMS-OSAI|Any CPU.ActiveCfg = Release|Any CPU
{2D769FFD-1122-4276-A115-29246E6D23C5}.CMS-OSAI|Any CPU.Build.0 = Release|Any CPU
{2D769FFD-1122-4276-A115-29246E6D23C5}.CMS-SIEMENS|Any CPU.ActiveCfg = Release|Any CPU
{2D769FFD-1122-4276-A115-29246E6D23C5}.CMS-SIEMENS|Any CPU.Build.0 = Release|Any CPU
{2D769FFD-1122-4276-A115-29246E6D23C5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2D769FFD-1122-4276-A115-29246E6D23C5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2D769FFD-1122-4276-A115-29246E6D23C5}.MySql|Any CPU.ActiveCfg = Release|Any CPU
{2D769FFD-1122-4276-A115-29246E6D23C5}.MySql|Any CPU.Build.0 = Release|Any CPU
{2D769FFD-1122-4276-A115-29246E6D23C5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2D769FFD-1122-4276-A115-29246E6D23C5}.Release|Any CPU.Build.0 = Release|Any CPU
{2D769FFD-1122-4276-A115-29246E6D23C5}.SCM-ESA|Any CPU.ActiveCfg = Release|Any CPU
{2D769FFD-1122-4276-A115-29246E6D23C5}.SCM-ESA|Any CPU.Build.0 = Release|Any CPU
{736DF121-11E6-4D46-835D-6560ACF241E4}.CMS-FANUC|Any CPU.ActiveCfg = CMS-FANUC|Any CPU
{736DF121-11E6-4D46-835D-6560ACF241E4}.CMS-FANUC|Any CPU.Build.0 = CMS-FANUC|Any CPU
{736DF121-11E6-4D46-835D-6560ACF241E4}.CMS-OSAI|Any CPU.ActiveCfg = CMS-OSAI|Any CPU
{736DF121-11E6-4D46-835D-6560ACF241E4}.CMS-OSAI|Any CPU.Build.0 = CMS-OSAI|Any CPU
{736DF121-11E6-4D46-835D-6560ACF241E4}.CMS-SIEMENS|Any CPU.ActiveCfg = CMS-SIEMENS|Any CPU
{736DF121-11E6-4D46-835D-6560ACF241E4}.CMS-SIEMENS|Any CPU.Build.0 = CMS-SIEMENS|Any CPU
{736DF121-11E6-4D46-835D-6560ACF241E4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{736DF121-11E6-4D46-835D-6560ACF241E4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{736DF121-11E6-4D46-835D-6560ACF241E4}.MySql|Any CPU.ActiveCfg = Release|Any CPU
{736DF121-11E6-4D46-835D-6560ACF241E4}.MySql|Any CPU.Build.0 = Release|Any CPU
{736DF121-11E6-4D46-835D-6560ACF241E4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{736DF121-11E6-4D46-835D-6560ACF241E4}.Release|Any CPU.Build.0 = Release|Any CPU
{736DF121-11E6-4D46-835D-6560ACF241E4}.SCM-ESA|Any CPU.ActiveCfg = SCM-ESA|Any CPU
{736DF121-11E6-4D46-835D-6560ACF241E4}.SCM-ESA|Any CPU.Build.0 = SCM-ESA|Any CPU
{58E399F3-9D4E-49D3-AB35-9ED536543D50}.CMS-FANUC|Any CPU.ActiveCfg = Release|Any CPU
{58E399F3-9D4E-49D3-AB35-9ED536543D50}.CMS-FANUC|Any CPU.Build.0 = Release|Any CPU
{58E399F3-9D4E-49D3-AB35-9ED536543D50}.CMS-OSAI|Any CPU.ActiveCfg = Release|Any CPU
{58E399F3-9D4E-49D3-AB35-9ED536543D50}.CMS-OSAI|Any CPU.Build.0 = Release|Any CPU
{58E399F3-9D4E-49D3-AB35-9ED536543D50}.CMS-SIEMENS|Any CPU.ActiveCfg = Release|Any CPU
{58E399F3-9D4E-49D3-AB35-9ED536543D50}.CMS-SIEMENS|Any CPU.Build.0 = Release|Any CPU
{58E399F3-9D4E-49D3-AB35-9ED536543D50}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{58E399F3-9D4E-49D3-AB35-9ED536543D50}.Debug|Any CPU.Build.0 = Debug|Any CPU
{58E399F3-9D4E-49D3-AB35-9ED536543D50}.MySql|Any CPU.ActiveCfg = Release|Any CPU
{58E399F3-9D4E-49D3-AB35-9ED536543D50}.MySql|Any CPU.Build.0 = Release|Any CPU
{58E399F3-9D4E-49D3-AB35-9ED536543D50}.Release|Any CPU.ActiveCfg = Release|Any CPU
{58E399F3-9D4E-49D3-AB35-9ED536543D50}.Release|Any CPU.Build.0 = Release|Any CPU
{58E399F3-9D4E-49D3-AB35-9ED536543D50}.SCM-ESA|Any CPU.ActiveCfg = Release|Any CPU
{58E399F3-9D4E-49D3-AB35-9ED536543D50}.SCM-ESA|Any CPU.Build.0 = Release|Any CPU
{7A12FE26-9C58-4630-973D-D4872374DBAF}.CMS-FANUC|Any CPU.ActiveCfg = Release|Any CPU
{7A12FE26-9C58-4630-973D-D4872374DBAF}.CMS-FANUC|Any CPU.Build.0 = Release|Any CPU
{7A12FE26-9C58-4630-973D-D4872374DBAF}.CMS-OSAI|Any CPU.ActiveCfg = Release|Any CPU
{7A12FE26-9C58-4630-973D-D4872374DBAF}.CMS-OSAI|Any CPU.Build.0 = Release|Any CPU
{7A12FE26-9C58-4630-973D-D4872374DBAF}.CMS-SIEMENS|Any CPU.ActiveCfg = Release|Any CPU
{7A12FE26-9C58-4630-973D-D4872374DBAF}.CMS-SIEMENS|Any CPU.Build.0 = Release|Any CPU
{7A12FE26-9C58-4630-973D-D4872374DBAF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7A12FE26-9C58-4630-973D-D4872374DBAF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7A12FE26-9C58-4630-973D-D4872374DBAF}.MySql|Any CPU.ActiveCfg = Release|Any CPU
{7A12FE26-9C58-4630-973D-D4872374DBAF}.MySql|Any CPU.Build.0 = Release|Any CPU
{7A12FE26-9C58-4630-973D-D4872374DBAF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7A12FE26-9C58-4630-973D-D4872374DBAF}.Release|Any CPU.Build.0 = Release|Any CPU
{7A12FE26-9C58-4630-973D-D4872374DBAF}.SCM-ESA|Any CPU.ActiveCfg = Release|Any CPU
{7A12FE26-9C58-4630-973D-D4872374DBAF}.SCM-ESA|Any CPU.Build.0 = Release|Any CPU
{DF877E5E-8D04-4532-BA01-CEFD8636D4DA}.CMS-FANUC|Any CPU.ActiveCfg = Release|Any CPU
{DF877E5E-8D04-4532-BA01-CEFD8636D4DA}.CMS-FANUC|Any CPU.Build.0 = Release|Any CPU
{DF877E5E-8D04-4532-BA01-CEFD8636D4DA}.CMS-OSAI|Any CPU.ActiveCfg = Release|Any CPU
{DF877E5E-8D04-4532-BA01-CEFD8636D4DA}.CMS-OSAI|Any CPU.Build.0 = Release|Any CPU
{DF877E5E-8D04-4532-BA01-CEFD8636D4DA}.CMS-SIEMENS|Any CPU.ActiveCfg = Release|Any CPU
{DF877E5E-8D04-4532-BA01-CEFD8636D4DA}.CMS-SIEMENS|Any CPU.Build.0 = Release|Any CPU
{DF877E5E-8D04-4532-BA01-CEFD8636D4DA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DF877E5E-8D04-4532-BA01-CEFD8636D4DA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DF877E5E-8D04-4532-BA01-CEFD8636D4DA}.MySql|Any CPU.ActiveCfg = MySql|Any CPU
{DF877E5E-8D04-4532-BA01-CEFD8636D4DA}.MySql|Any CPU.Build.0 = MySql|Any CPU
{DF877E5E-8D04-4532-BA01-CEFD8636D4DA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DF877E5E-8D04-4532-BA01-CEFD8636D4DA}.Release|Any CPU.Build.0 = Release|Any CPU
{DF877E5E-8D04-4532-BA01-CEFD8636D4DA}.SCM-ESA|Any CPU.ActiveCfg = Release|Any CPU
{DF877E5E-8D04-4532-BA01-CEFD8636D4DA}.SCM-ESA|Any CPU.Build.0 = Release|Any CPU
{EC83D80E-9F3B-4DE9-B16A-CA216543B7EC}.CMS-FANUC|Any CPU.ActiveCfg = Release|Any CPU
{EC83D80E-9F3B-4DE9-B16A-CA216543B7EC}.CMS-FANUC|Any CPU.Build.0 = Release|Any CPU
{EC83D80E-9F3B-4DE9-B16A-CA216543B7EC}.CMS-OSAI|Any CPU.ActiveCfg = Release|Any CPU
{EC83D80E-9F3B-4DE9-B16A-CA216543B7EC}.CMS-OSAI|Any CPU.Build.0 = Release|Any CPU
{EC83D80E-9F3B-4DE9-B16A-CA216543B7EC}.CMS-SIEMENS|Any CPU.ActiveCfg = Release|Any CPU
{EC83D80E-9F3B-4DE9-B16A-CA216543B7EC}.CMS-SIEMENS|Any CPU.Build.0 = Release|Any CPU
{EC83D80E-9F3B-4DE9-B16A-CA216543B7EC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EC83D80E-9F3B-4DE9-B16A-CA216543B7EC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EC83D80E-9F3B-4DE9-B16A-CA216543B7EC}.MySql|Any CPU.ActiveCfg = Release|Any CPU
{EC83D80E-9F3B-4DE9-B16A-CA216543B7EC}.MySql|Any CPU.Build.0 = Release|Any CPU
{EC83D80E-9F3B-4DE9-B16A-CA216543B7EC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EC83D80E-9F3B-4DE9-B16A-CA216543B7EC}.Release|Any CPU.Build.0 = Release|Any CPU
{EC83D80E-9F3B-4DE9-B16A-CA216543B7EC}.SCM-ESA|Any CPU.ActiveCfg = Release|Any CPU
{EC83D80E-9F3B-4DE9-B16A-CA216543B7EC}.SCM-ESA|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal
-407
View File
@@ -1,407 +0,0 @@
using MTC;
using System;
using System.Collections.Generic;
using System.IO;
using System.Xml;
using System.Xml.Serialization;
namespace MTC_Adapter
{
#region -- AdapterConf Class --
/// <summary>
/// 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
/// </summary>
[Serializable]
public class AdapterConf
{
string sNomeAdapt;
int nVers;
double tContOreMaccOn;
double tContOreMaccLav;
int[] _ContGiriElettrom;
float[] _ContKmMovAssi;
tipoAdapter etipoAdapt;
element[] _VacuumPump;
element[] _VacuumAct;
element[] _Lubro;
element[] _Cooler;
element[] _Press;
element[] _Temp;
element[] _Path;
element[] _UnOp;
element[] _Axis;
element[] _MemArea;
/// <summary>
/// init conf adapter
/// </summary>
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 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;
}
}
/// <summary>
/// Serializzazione XML dell'oggetto conf dell'adapter
/// </summary>
/// <param name="file"></param>
/// <param name="c"></param>
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();
}
/// <summary>
/// deserializzazione oggetto conf adapter
/// </summary>
/// <param name="file"></param>
/// <returns></returns>
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;
}
/// <summary>
/// restitusice forma XML grezza del file
/// </summary>
/// <param name="file"></param>
/// <returns></returns>
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 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[] 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<K, V>
{
public K Key { get; set; }
public V Value { get; set; }
public DataRefItem(K k, V v) : this() { Key = k; Value = v; }
}
/// <summary>
/// classe elemento base in cui salvare i dati di conf x recupero dati adapters
/// </summary>
public class element
{
/// <summary>
/// identificativo univoco x classe di elemento
/// </summary>
public string ident;
/// <summary>
/// Elenco riferimento dati x recupero (es posizioni memoria separate da #)
/// </summary>
public List<DataRefItem<string, string>> dataRefList;
/// <summary>
/// init empty
/// </summary>
public element()
{
ident = "";
dataRefList = new List<DataRefItem<string, string>>();
}
/// <summary>
/// init element con dati
/// </summary>
/// <param name="Idx">Identificativo univoco</param>
/// <param name="DataRef">Parametri x recupero dati in forma dictionary</param>
public element(string Idx, List<DataRefItem<string, string>> DataRef)
{
ident = Idx;
dataRefList = DataRef;
}
}
#endregion
}
-174
View File
@@ -1,174 +0,0 @@
using MTC;
using MTConnect;
using System;
namespace MTC_Adapter
{
public class AdapterDemo : AdapterGeneric
{
public Condition mTemp = new Condition("temp");
public Condition mFillLevel = new Condition("cool_low", true);
/// <summary>
/// estende l'init della classe base...
/// </summary>
/// <param name="caller"></param>
/// <param name="adpConf"></param>
public AdapterDemo(MainForm caller, AdapterConf adpConf) : base(caller, adpConf)
{
if (utils.CRB("verbose")) lg.Info("Start init Adapter DEMO");
// IMPLICITO: carica da metodo base tutte le specifiche del conf...
// aggiungo specifiche del demo: allarmi gestiti a buttons!!!
mAdapter.AddDataItem(mTemp);
mAdapter.AddDataItem(mFillLevel);
}
public override void startAdapter(int port)
{
base.startAdapter(port);
// aggiungo altre condizioni specifiche...
mTemp.Normal();
mFillLevel.Normal();
}
public override void getSlowChangingData()
{
// serve?!?
base.getSlowChangingData();
mOperator.Value = parentForm.datiProd.Operator;
// recupero SEMPRE dati ulteriori: status ON/OFF, clock, ...
mStatus.Value = parentForm.datiProd.Status;
mAccTime.Value = parentForm.datiProd.AccTime;
mClock.Value = DateTime.Now.Date.ToFileTimeUtc();
mPower.Value = parentForm.datiProd.Power;
}
public override void getStrobeAndAckStatus()
{
base.getStrobeAndAckStatus();
// controllo bool allarmi...
if (parentForm.datiProd.EmrStop)
{
mEStop.Value = "TRIGGERED";
}
else
{
mEStop.Value = "ARMED";
}
// imposto func mode...
mFunctionalMode.Value = parentForm.datiProd.FuncMode;
// se ho un messaggio...
if(parentForm.datiProd.MessageText.Length>0)
{
mMessage.Code = parentForm.datiProd.MessageCode;
mMessage.Value = parentForm.datiProd.MessageText;
}
}
public override void getConfigParam()
{
base.getConfigParam();
}
public override void processStrobe()
{
base.processStrobe();
// qui forzo la gestione di update dei path & co...
getPath();
getUnOp();
getAxis();
}
/// <summary>
/// non fa nulla perché recupera allarmi in vettore al singolo cambio...
/// </summary>
/// <param name="Alarm2Refresh"></param>
/// <param name="giveAck"></param>
public override void refreshAlarmState(StFlag32 Alarm2Refresh, bool giveAck)
{
base.refreshAlarmState(Alarm2Refresh, giveAck);
}
public override void getPath()
{
base.getPath();
PathData PtData = parentForm.CurrPath;
if(PtData.PathSel>=0)
{
vettPath[PtData.PathSel].mPathFeed.Value = PtData.PathFeedrate;
vettPath[PtData.PathSel].mPathFeedOver.Value = PtData.PathFeedrateOver;
vettPath[PtData.PathSel].mPathRapidOver.Value = PtData.PathRapidOver;
vettPath[PtData.PathSel].mPathPosActX.Value = PtData.PathPosAct.x;
vettPath[PtData.PathSel].mPathPosActY.Value = PtData.PathPosAct.y;
vettPath[PtData.PathSel].mPathPosActZ.Value = PtData.PathPosAct.z;
vettPath[PtData.PathSel].mPathPosActI.Value = PtData.PathPosAct.i;
vettPath[PtData.PathSel].mPathPosActJ.Value = PtData.PathPosAct.j;
vettPath[PtData.PathSel].mPathPosActK.Value = PtData.PathPosAct.k;
// aggiunta x revisione 2016.05.05
vettPath[PtData.PathSel].mPathType.Value = PtData.PathType;
vettPath[PtData.PathSel].mPathPartId.Value = PtData.PartId;
vettPath[PtData.PathSel].mPathPartCount.Value = PtData.pzTot;
vettPath[PtData.PathSel].mPathRunMode.Value = PtData.RunMode;
vettPath[PtData.PathSel].mPathExeMode.Value = PtData.ExeMode;
vettPath[PtData.PathSel].mPathCurrProg.Value = PtData.ProgramName;
vettPath[PtData.PathSel].mPathCurrProgRowNum.Value = PtData.ProgrRow;
vettPath[PtData.PathSel].mPathActiveAxes.Value = PtData.ActiveAxes;
}
}
public override void getUnOp()
{
base.getUnOp();
UnOpData uoData = parentForm.CurrUnOp;
if (uoData.UnOpSel >= 0)
{
vettUnOp[uoData.UnOpSel].mUnOpToolId.Value = uoData.UnOpToolId;
vettUnOp[uoData.UnOpSel].mUnOpNumCU.Value = uoData.UnOpNumCU;
vettUnOp[uoData.UnOpSel].mUnOpStatus.Value = uoData.UnOpStatus;
vettUnOp[uoData.UnOpSel].mUnOpVitaRes.Value = uoData.UnOpVitaRes;
vettUnOp[uoData.UnOpSel].mUnOpSpeed.Value = uoData.UnOpSpeed;
vettUnOp[uoData.UnOpSel].mUnOpLoad.Value = uoData.UnOpLoad;
vettUnOp[uoData.UnOpSel].mUnOpAccTime.Value = uoData.UnOpAccTime;
}
}
public override void getAxis()
{
base.getAxis();
AxisData AxData = parentForm.CurrAxis;
if (AxData.AxisSel >= 0)
{
// USO asse selezionato + dati visualizzati e di conseguenza aggiorno...
vettAxis[AxData.AxisSel].mAxMainProc.Value = AxData.AxisMainProc;
vettAxis[AxData.AxisSel].mAxIsMaster.Value = AxData.AxisIsMaster;
vettAxis[AxData.AxisSel].mAxMastId.Value = AxData.AxisMastId;
//vettAxis[AxData.AxisSel].mAxType.Value = AxData.AxisType;
vettAxis[AxData.AxisSel].mAxDir.Value = AxData.AxisDir;
vettAxis[AxData.AxisSel].mAxLoad.Value = AxData.AxisLoad;
vettAxis[AxData.AxisSel].mAxPosAct.Value = AxData.AxisPosAct;
vettAxis[AxData.AxisSel].mAxPosTgt.Value = AxData.AxisPosTgt;
vettAxis[AxData.AxisSel].mAxFeedAct.Value = AxData.AxisFeedAct;
vettAxis[AxData.AxisSel].mAxFeedOver.Value = AxData.AxisFeedOver;
vettAxis[AxData.AxisSel].mAxAccelAct.Value = AxData.AxisAccel;
vettAxis[AxData.AxisSel].mAxAccTime.Value = AxData.AxisAccTime;
vettAxis[AxData.AxisSel].mAxBattery.Value = AxData.AxisBattery;
}
}
}
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
-112
View File
@@ -1,112 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2"/></startup>
<appSettings>
<add key="appName" value="MTConnect Adapter"/>
<!--gestione TIMERS e periodi multipli x thread lenti-->
<add key="startTimerMs" value="250"/>
<add key="timerIntMs" value="5"/><!--invio da adapter ad agent: 5ms-->
<add key="fastCount" value="20"/><!--100ms-->
<add key="normCount" value="50"/><!--250ms-->
<add key="slowCount" value="500"/><!--2.5 sec-->
<add key="alarmSyncCount" value="6000"/><!--30 sec-->
<!--parametri gestione watchdog-->
<add key="maxAdapterLockSec" value="5"/>
<!--AREA CONF IP FANUC-->
<!--SIMULATORE LOCALE
IP LOOPBACK: 192.168.211.5/255.255.255.0
ipPLC = "192.168.211.5"-->
<!--<add key ="ipPLC" value="192.168.211.5" />-->
<!--SIM PC
IP ETH: 192.168.139.201/255.255.255.0
ipPLC = "192.168.139.100"-->
<!--<add key="ipPLC" value="192.168.139.100" />-->
<!--<add key="ipPLC" value="192.168.139.1" />-->
<!--Sviluppo Steamware
IP ETH: 10.74.82.110/255.255.255.0
ipPLC = "10.74.82.110"-->
<add key="ipPLC" value="192.168.157.2"/>
<!--PRODUZIONE
IP ETH: 192.168.139.201/255.255.255.0
ipPLC = "192.168.139.1"-->
<!--<add key ="ipPLC" value="192.168.139.1" />-->
<!--OSAI DEV-->
<!--<add key ="ipPLC" value="192.168.157.2" />-->
<add key="recTime" value="true"/>
<add key="verbose" value="true"/>
<!--Definizione avvio Adapter-->
<add key="autoLoadConf" value="false"/>
<add key="autoStartOnLoad" value="true"/>
<add key="openDumpOnStart" value="true"/>
<add key="startMinimized" value="false"/>
<add key="windowCanMax" value="true"/>
<add key="trayClose" value="true"/>
<add key="autoSaveSec" value="60"/>
<add key="waitRecMSec" value="5000"/>
<add key="testCharSep" value="|"/>
<add key="fattdecimale" value="1000"/>
<add key="fattConvDistAssi" value="1000"/>
<!--conf file-->
<add key="dataPath" value="DATA"/>
<add key="dataConfPath" value="DATA\CONF"/>
<add key="dataDatPath" value="DATA\DAT"/>
<add key="resxPath" value="Resources"/>
<add key="AlarmList" value="AlarmList.map"/>
<add key="AlarmListCNC" value="AlarmListCNC.map"/>
<add key="defaultConfFile" value="Adapter_ItemList.xml"/>
<add key="defaultPersLayerFile" value="PersistData.dat"/>
<add key="maxNumDD" value="30"/>
<add key="defaultEsaFile" value="EsaKvara.ini"/>
<add key="CounterListFilePath" value="CounterList.map"/>
<add key="StatusListFilePath" value="StatusList.map"/>
<add key="SubModeListFilePath" value="SubModeList.map"/>
<!--conf gestione "semplificata" accesso a tutta la memoria ogni volta-->
<!--conf x CMS-->
<!--<add key="procIotMem" value="false"/>-->
<!--conf x ESA-KVARA-->
<add key="procIotMem" value="true"/>
<!--file configurazione IotMem (ESA KVARA)-->
<add key="IOTByteFilePath" value="IOT_ByteList.map"/>
<add key="IOTWordFilePath" value="IOT_WordList.map"/>
<add key="IOTDWordFilePath" value="IOT_DWordList.map"/>
<add key="IOTStringFilePath" value="IOT_StringList.map"/>
<!--percorso file scambio dati "lenti" e conf MaintData memory area -->
<add key="GeneralStatusFilePath" value="CmsGeneralStatus.mtc"/>
<!--gestione trigger eventi da allarmi-->
<add key="eStopCode" value="152"/>
<!--gestione watchdog CMS-->
<add key="sendWatchDog" value="true"/>
<add key="ClientSettingsProvider.ServiceUri" value=""/>
</appSettings>
<system.web>
<membership defaultProvider="ClientAuthenticationMembershipProvider">
<providers>
<add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri=""/>
</providers>
</membership>
<roleManager defaultProvider="ClientRoleProvider" enabled="true">
<providers>
<add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400"/>
</providers>
</roleManager>
</system.web>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="OPENcontrol"/>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://192.168.20.2:8080" binding="basicHttpBinding" bindingConfiguration="OPENcontrol" contract="OPENcontrol.OPENcontrolPortType" name="OPENcontrol"/>
</client>
</system.serviceModel>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="lib;libs"/>
</assemblyBinding>
</runtime>
</configuration>
@@ -1,421 +0,0 @@
# Commenti con "#", elenco tipo COD_NUM|GRUPPO|LEVEL|DESCRIZIONE completa
000001|PLC|FAULT|[1] MANDRINO 1 NON BLOCCATO
000002|PLC|FAULT|[2] MANDRINO 2 NON BLOCCATO
000003|PLC|FAULT|[3] MANDRINO SUPPLEMENTARE NON BLOCCATO
000004|PLC|FAULT|[4] ZONA DI COLLISIONE CON CAMBIO UTENSILE ESTERNO
000005|PLC|FAULT|[5] ZONA DI COLLISIONE CON CAMBIO UTENSILE LINEARE
000006|PLC|FAULT|[6] GRUPPO ASSI NON VALIDO
000007|PLC|FAULT|[7] INVERTER 1 NON OK
000008|PLC|FAULT|[8] INVERTER 2 NON OK
000009|PLC|FAULT|[9] INVERTER MANDRINO SUPPLEMENTARE NON OK
0000010|PLC|FAULT|[10] SAVE ENERGY ATTIVO
0000011|PLC|FAULT|[11] B,[WD] SUPERATO NUMERO PEZZI MASSIMO CARICABILE SU TRANSFER
0000012|PLC|FAULT|[12] VERIFICA CONTATTORI NON OK
0000013|PLC|FAULT|[13] TIMEOUT COMUNICAZIONE XILOG
0000014|PLC|WARNING|[14] INTERVENTO MAGNETOTERMICI
0000015|PLC|FAULT|[15] PORTE PROTEZIONE APERTE
0000016|PLC|FAULT|[16] TAPPETO CONVOGLIA TRUCIOLI NON IN POSIZIONE
0000017|PLC|FAULT|[17] COLLISIONE RILEVATA DAL SIMULATORE
0000018|PLC|FAULT|[18] BUMPER MOBILE NON IN POSIZIONE
0000019|PLC|FAULT|[19] FORATRICE NON IN POSIZIONE
0000020|PLC|WARNING|[20] STOP MACCHINA DA CODICI M SUPPLEMENTARI
0000021|PLC|WARNING|[21] M00 ATTIVO: START CICLO
0000022|PLC|WARNING|[22] BATTERIA SCARICA ENCODER ASSI YASKAWA
0000023|PLC|FAULT|[23] AZIONAMENTI ASSI XYZ... NON OK
0000024|PLC|FAULT|[24] AZIONAMENTI ASSI ROTATIVI NON OK
0000025|PLC|FAULT|[25] CNC NON OK
0000026|PLC|FAULT|[26] PRESSOSTATO ARIA INTERVENUTO
0000027|PLC|FAULT|[27] BATTERIA CNC NON CARICA
0000028|PLC|FAULT|[28] ERRORE CANOPEN RING 0
0000029|PLC|FAULT|[29] ERRORE CANOPEN RING 1
0000030|PLC|WARNING|[30] ABILITAZIONE BL/SBL UTENSILE MANDRINO 1
0000031|PLC|WARNING|[31] ABILITAZIONE BL/SBL UTENSILE MANDRINO 2
0000032|PLC|WARNING|[32] ABILITAZIONE BL/SBL UTENSILE MANDRINO SUPPLEMENTARE
0000033|PLC|WARNING|[33] CICLO ETICHETTATURA IN CORSO
0000034|PLC|FAULT|[34] ETICHETTATRICE NON PRONTA
0000035|PLC|FAULT|[35] ETICHETTATRICE NON IN POSIZIONE
0000036|PLC|FAULT|[36] ERRORE ETICHETTATRICE
0000037|PLC|FAULT|[37] SONDA TERMICA/VENTOLA MANDRINO 1
0000038|PLC|FAULT|[38] SONDA TERMICA/VENTOLA MANDRINO 2
0000039|PLC|FAULT|[39] SONDA TERMICA/VENTOLA MANDRINO SUPPLEMENTARE
0000040|PLC|FAULT|[40] INTERVENTO MAGNETOTERMICO GRUPPO LAMA
0000041|PLC|FAULT|[41] RICARICARE POMPA LUBRIFICAZIONE
0000042|PLC|FAULT|[42] LUBRIFICAZIONE ASSI NON OK
0000043|PLC|WARNING|[43] LUBRIFICAZIONE ASSI IN CORSO
0000044|PLC|WARNING|[44] RICHIESTA VUOTO/ATTREZZATURA
0000045|PLC|FAULT|[45] EMERGENZA CAUSA VUOTO ZONA 1
0000046|PLC|FAULT|[46] EMERGENZA CAUSA VUOTO ZONA 2
0000047|PLC|FAULT|[47] ASSI IN FINE CORSA
0000048|PLC|FAULT|[48] CUFFIA ESTERNA NON IN POSIZIONE
0000049|PLC|FAULT|[49] CUFFIA INTERNA NON IN POSIZIONE
0000050|PLC|FAULT|[50] CUFFIA PULIZIA PIANO NON IN POSIZIONE
0000051|PLC|FAULT|[51] EMERGENZA CAUSA VUOTO ZONA 3
0000052|PLC|FAULT|[52] EMERGENZA CAUSA VUOTO ZONA 4
0000053|PLC|WARNING|[53] ESEGUIRE RIFERIMENTO ASSI
0000054|PLC|FAULT|[54] ESEGUIRE RIFERIMENTO MAGAZZINO UTENSILE 1
0000055|PLC|FAULT|[55] ESEGUIRE RIFERIMENTO MAGAZZINO UTENSILE 2
0000056|PLC|FAULT|[56] ESEGUIRE RIFERIMENTO MAGAZZINO UTENSILE MANDRINO SUPPLEMENTARE
0000057|PLC|FAULT|[57] ESEGUIRE RIFERIMENTO MAGAZZINO ESTERNO 1
0000058|PLC|FAULT|[58] ESEGUIRE RIFERIMENTO NAVETTA HS
0000059|PLC|FAULT|[59] ESEGUIRE RIFERIMENTO PINZE ROBOT CELLA WD
0000060|PLC|FAULT|[60] CONVOGLIATORE TRUCIOLI NON OK
0000061|PLC|WARNING|[61] SERBATOIO LUBRIFICAZIONE CONVOGLIATORE TRUCIOLI VUOTO
0000062|PLC|FAULT|[62] ASSE X IN FINE CORSA
0000063|PLC|FAULT|[63] ASSE Y IN FINE CORSA
0000064|PLC|FAULT|[64] ASSE Z IN FINE CORSA
0000065|PLC|FAULT|[65] PALPATORE SYNCRO NON IN POSIZIONE
0000066|PLC|WARNING|[66] ALLINEAMENTO ASSI GANTRY IN CORSO
0000067|PLC|FAULT|[67] ASSE B IN FINE CORSA
0000068|PLC|FAULT|[68] ASSE C IN FINE CORSA
0000069|PLC|FAULT|[69] ASSE Y NON IN POSIZIONE
0000070|PLC|FAULT|[70] ESEGUIRE RIFERIMENTO PALPATORE SYNCRO
0000071|PLC|FAULT|[71] PERNO BLOCCAGGIO TAVOLO ELEVATORE NON IN POSIZIONE
0000072|PLC|FAULT|[72] FOTOCELLULA PRESENZA UTENSILE
0000073|PLC|FAULT|[73] MANDRINO 1 NON OK
0000074|PLC|FAULT|[74] MANDRINO 2 NON OK
0000075|PLC|FAULT|[75] MANDRINO SUPPLEMENTARE NON OK
0000076|PLC|FAULT|[76] FOTOCELLULA PRESENZA UTENSILE (CATENA)
0000077|PLC|FAULT|[77] ALLARME SENSORE ROTAZIONE MANDRINO 1
0000078|PLC|FAULT|[78] ALLARME SENSORE ROTAZIONE MANDRINO 2
0000079|PLC|FAULT|[79] ALLARME SENSORE ROTAZIONE MANDRINO SUPPLEMENTARE
0000080|PLC|FAULT|[80] CAMBIO UTENSILE TESTA 1(ONBOARD) NON IN POSIZIONE
0000081|PLC|FAULT|[81] CAMBIO UTENSILE MANDRINO SUPPLEMENTARE (ONBOARD) NON IN POSIZIONE
0000082|PLC|FAULT|[82] CAMBIO UTENSILE LINEARE NON IN POSIZIONE
0000083|PLC|FAULT|[83] CAMBIO UTENSILE HS NON IN POSIZIONE
0000084|PLC|FAULT|[84] [TM] NAVETTA TOOL MANAGEMENT NON IN POSIZIONE
0000085|PLC|FAULT|[85] [TM] LETTORE CHIP TOOL MANAGMENT NON IN POSIZIONE
0000086|PLC|FAULT|[86] [TM] LIBERARE PINZA DI CARICO TOOL MANAGMENT
0000087|PLC|FAULT|[87] [TM] COLLISIONE CON TOOL MANAGMENT
0000088|PLC|FAULT|[88] [TM] CARICARE UTENSILE SULLA PINZA DI CARICO DEL TOOL MANAGMENT
0000089|PLC|FAULT|[89] BANDELLA NON IN POSIZIONE
0000090|PLC|FAULT|[90] PANNELLO PRELEVATO FUORI ALLINEAMENTO
0000091|PLC|FAULT|[91] SCARICATORE NON IN POSIZIONE
0000092|PLC|FAULT|[92] SPONDE/BATTUTE DI SCARICO NON IN POSIZIONE
0000093|PLC|FAULT|[93] ZONA DI SCARICO OCCUPATA
0000094|PLC|FAULT|[94] VERIFICARE DIMENSIONI PILA
0000095|PLC|FAULT|[95] CARICARE NUOVA PILA
0000096|PLC|FAULT|[96] CARICATORE NON IN POSIZIONE
0000097|PLC|FAULT|[97] TAVOLO ELEVATORE NON OK
0000098|PLC|FAULT|[98] PANNELLO NON PRELEVATO DA TAVOLO ELEVATORE
0000099|PLC|FAULT|[99] FOTOCELLULA RIFERIMENTO PANNELLO NON OK
0000100|PLC|FAULT|[100] ALLARME CELLA WD
0000101|PLC|FAULT|[101] REFRIGERANTE MANDRINO 1 NON OK
0000102|PLC|FAULT|[102] REFRIGERANTE MANDRINO 2 NON OK
0000103|PLC|FAULT|[103] INVERTER NASTRO DI SCARICO NON OK
0000104|PLC|FAULT|[104] ARRESTO OPERATIVO: RESETTARE LE FOTOCELLULE DI SICUREZZA
0000105|PLC|WARNING|[105] C.UTENSILE LINEARE IN CORSO: ABBASSARE GLI INNALZATORI E RESETTARE LE FOTOCELLULE DI SICUREZZA
0000106|PLC|FAULT|[106] CARICO PANNELLO NON AMMESSO
0000107|PLC|FAULT|[107] BYPASS COLLISIONI ATTIVO
0000108|PLC|FAULT|[108] SPORTELLO CAMBIO UTENSILE LINEARE DESTRO NON IN POSIZIONE
0000109|PLC|FAULT|[109] VERIFICA FUNZIONAMENTO SICUREZZE
0000110|PLC|FAULT|[110] RESETTARE LE FOTOCELLULE DI SICUREZZA
0000111|PLC|FAULT|[111] INSERIMENTO UTENSILE NON OK
0000112|PLC|FAULT|[112] GUASTO MICRO CONTROLLO PEDANE
0000113|PLC|FAULT|[113] INSERIMENTO UTENSILE IN NAVETTA HS NON OK
0000114|PLC|WARNING|[114] TABELLA NON AGGIORNATA
0000115|PLC|FAULT|[115] MANDRINO 1 NON SBLOCCATO
0000116|PLC|FAULT|[116] MANDRINO SUPPLEMENTARE NON SBLOCCATO
0000117|PLC|FAULT|[117] CONTROLLARE CICLO CHIUSURA BORDO
0000118|PLC|WARNING|[118] PM: SETUP NON POSSIBILE ZONA 3 [Vuoto ON/Teste DW]
0000119|PLC|WARNING|[119] PM: SETUP NON POSSIBILE ZONA 4 [Vuoto ON/Teste DW]
0000120|PLC|WARNING|[120] UTENSILE SPECIALE: OPERAZIONE NON AMMESSA
0000121|PLC|FAULT|[121] ERRORE CICLO CHIUSURA BORDO
0000122|PLC|FAULT|[122] MAGAZZINO UTENSILE ESTERNO 1 NON IN POSIZIONE
0000123|PLC|FAULT|[123] SPORTELLO MAGAZZINO ESTERNO NON IN POSIZIONE
0000124|PLC|WARNING|[124] ERRATA PROGRAMMAZIONE
0000125|PLC|WARNING|[125] ERRORE UTENSILE TESTA 1
0000126|PLC|WARNING|[126] ERRORE UTENSILE TESTA 2
0000127|PLC|FAULT|[127] SPORTELLO CAMBIO UTENSILE LINEARE SINISTRO NON IN POSIZIONE
0000128|PLC|FAULT|[128] TIME OUT PIGNA MOBILE
0000129|PLC|WARNING|[129] CAMBIO MODALITA' MACCHINA (M103)
0000130|PLC|FAULT|[130] PORTE ARMADIO ELETTRICO APERTE
0000131|PLC|WARNING|[131] ESEGUIRE MANUTENZIONE CONDIZIONATORE ARMADIO ELETTRICO
0000132|PLC|FAULT|[132] AGGREGATO PRESSATORE/CONVOGLIATORE TRUCIOLI NON OK
0000133|PLC|FAULT|[133] SERBATOIO LUBROREFRIGERATORE UTENSILE VUOTO
0000134|PLC|WARNING|[134] BATTERIA SCARICA TASTATORE RADIO
0000135|PLC|FAULT|[135] RILEVATORE SPESSORE PEZZO NON IN POSIZIONE
0000136|PLC|FAULT|[136] CICLO TASTATURA NON OK
0000137|PLC|FAULT|[137] BATTUTE DI RIFERIMENTO ZONA 1 NON OK
0000138|PLC|FAULT|[138] BATTUTE DI RIFERIMENTO ZONA 2 NON OK
0000139|PLC|FAULT|[139] ASSI PRISMA BC NON IN POSIZIONE
0000140|PLC|FAULT|[140] AZIONAMENTI ASSI PRISMA BC NON OK
0000141|PLC|FAULT|[141] TASTATORE RADIO NON OK
0000142|PLC|FAULT|[142] AVVICINATORI NON IN POSIZIONE
0000143|PLC|FAULT|[143] AVVICINAMENTO PANNELLO NON AVVENUTO
0000144|PLC|FAULT|[144] PRESA PANNELLO NON OK
0000145|PLC|WARNING|[145] RIAGGANCIO MANDRINO IN CORSO
0000146|PLC|WARNING|[146] RIAGGANCIO MANDRINO FALLITO
0000147|PLC|WARNING|[147] RIAGGANCIO MANDRINO AVVENUTO
0000148|PLC|FAULT|[148] INTERVENTO FUNE DI SICUREZZA
0000149|PLC|FAULT|[149] INTERVENTO OVERSPEED ASSI
0000150|PLC|FAULT|[150] INTERVENTO BUMPERS
0000151|PLC|WARNING|[151] MACCHINA SPENTA
0000152|PLC|FAULT|[152] EMERGENZA PREMUTA
0000153|PLC|WARNING|[153] PM: SETUP NON POSSIBILE ZONA 1 [VUOTO ON / TESTE DW]
0000154|PLC|WARNING|[154] PM: SETUP NON POSSIBILE ZONA 2 [VUOTO ON / TESTE DW]
0000155|PLC|WARNING|[155] BARRA MOBILE CENTRALE 1 NON IN POSIZIONE
0000156|PLC|WARNING|[156] BARRA MOBILE CENTRALE 2 NON IN POSIZIONE
0000157|PLC|WARNING|[157] PM: COLLISIONE BATTUTE CON SUPPORTI VENTOSE / MORSETTI
0000158|PLC|WARNING|[158] CUFFIA MANDRINO SUPPLEMENTARE NON IN POSIZIONE
0000159|PLC|WARNING|[159] TESTA GRUPPO MANDRINO SUPPLEMENTARE NON IN POSIZIONE
0000160|PLC|WARNING|[160] TESTA GRUPPO LAMA NON IN POSIZIONE
0000161|PLC|WARNING|[161] CICLO DI CARICO IN CORSO
0000162|PLC|WARNING|[162] CICLO DI SCARICO IN CORSO
0000163|PLC|WARNING|[163] BATTUTE DI CARICO NON IN POSIZIONE ZONA 1
0000164|PLC|WARNING|[164] ATTESA ROBOT IN POSIZIONE
0000165|PLC|WARNING|[165] INVERTER GUASTO POMPA VUOTO 1 (MASTER)
0000166|PLC|WARNING|[166] INVERTER GUASTO POMPA VUOTO 2 (SLAVE)
0000167|PLC|WARNING|[167] BATTUTE DI CARICO NON IN POSIZIONE ZONA 2
0000168|PLC|WARNING|[168] SALITA CUFFIA DA OPERATORE
0000169|PLC|WARNING|[169] TRAVERSA 1 NON IN POSIZIONE
0000170|PLC|WARNING|[170] TRAVERSA 2 NON IN POSIZIONE
0000171|PLC|WARNING|[171] TRAVERSA 3 NON IN POSIZIONE
0000172|PLC|WARNING|[172] TRAVERSA 4 NON IN POSIZIONE
0000173|PLC|WARNING|[173] TRAVERSA 5 NON IN POSIZIONE
0000174|PLC|WARNING|[174] TRAVERSA 6 NON IN POSIZIONE
0000175|PLC|WARNING|[175] TRAVERSA 7 NON IN POSIZIONE
0000176|PLC|WARNING|[176] TRAVERSA 8 NON IN POSIZIONE
0000177|PLC|WARNING|[177] TRAVERSA 9 NON IN POSIZIONE
0000178|PLC|WARNING|[178] TRAVERSA 10 NON IN POSIZIONE
0000179|PLC|WARNING|[179] TRAVERSA 11 NON IN POSIZIONE
0000180|PLC|WARNING|[180] TRAVERSA 12 NON IN POSIZIONE
0000181|PLC|WARNING|[181] SOSTITUZIONE VENTOSE IN CORSO AREA 1
0000182|PLC|WARNING|[182] SOSTITUZIONE VENTOSE IN CORSO AREA 2
0000183|PLC|FAULT|[183] BATTUTE DI RIFERIMENTO ZONA 3 NON OK
0000184|PLC|FAULT|[184] BATTUTE DI RIFERIMENTO ZONA 4 NON OK
0000185|PLC|FAULT|[185] [BRC] GR5: GRUPPO FUSI ORIZZONTALI NON IN POSIZIONE (fori spine)
0000186|PLC|FAULT|[186] [BRC] GR6: GRUPPO FRESA VERTICALE NON IN POSIZIONE
0000187|PLC|FAULT|[187] [BRC] GR7: GRUPPO FRESA ORIZZONTALE NON IN POSIZIONE
0000188|PLC|FAULT|[188] [BRC] GR8: GRUPPO LAMA NON IN POSIZIONE
0000189|PLC|FAULT|[189] [BRC] ATTESA INNESTO PER ROTAZIONE GRUPPO LAMA
0000190|PLC|FAULT|[190] SELETTORI CONTROSAGOMA NON OK [AREA UNICA]
0000191|PLC|FAULT|[191] BATTUTE DI RIFERIMENTO BARRA 1 NON OK
0000192|PLC|FAULT|[192] BATTUTE DI RIFERIMENTO BARRA 2 NON OK
0000193|PLC|FAULT|[193] BATTUTE DI RIFERIMENTO BARRA 3 NON OK
0000194|PLC|FAULT|[194] BATTUTE DI RIFERIMENTO BARRA 4 NON OK
0000195|PLC|FAULT|[195] BATTUTE DI RIFERIMENTO BARRA 5 NON OK
0000196|PLC|FAULT|[196] BATTUTE DI RIFERIMENTO BARRA 6 NON OK
0000197|PLC|FAULT|[197] BATTUTE DI RIFERIMENTO BARRA 7 NON OK
0000198|PLC|FAULT|[198] BATTUTE DI RIFERIMENTO BARRA 8 NON OK
0000199|PLC|FAULT|[199] BATTUTE DI RIFERIMENTO BARRA 9 NON OK
0000200|PLC|FAULT|[200] BATTUTE DI RIFERIMENTO BARRA 10 NON OK
0000201|PLC|FAULT|[201] BATTUTE DI RIFERIMENTO BARRA 11 NON OK
0000202|PLC|FAULT|[202] BATTUTE DI RIFERIMENTO BARRA 12 NON OK
0000203|PLC|FAULT|[203] BATTUTE DI RIFERIMENTO BARRA FISSA SX NON OK
0000204|PLC|FAULT|[204] BATTUTE DI RIFERIMENTO BARRA FISSA DX NON OK
0000205|PLC|FAULT|[205] BASI NON BLOCCATE ZONA 1
0000206|PLC|FAULT|[206] BASI NON BLOCCATE ZONA 2
0000207|PLC|FAULT|[207] BASI NON BLOCCATE ZONA 3
0000208|PLC|FAULT|[208] BASI NON BLOCCATE ZONA 4
0000209|PLC|WARNING|[209] SOSTITUZIONE VENTOSE IN CORSO AREA 3
0000210|PLC|WARNING|[210] SOSTITUZIONE VENTOSE IN CORSO AREA 4
0000211|PLC|FAULT|[211] [BORDATORE POWER] ATTESA GRUPPO A BORDARE ALTO
0000212|PLC|FAULT|[212] [BORDATORE POWER] ATTESA GRUPPO A BORDARE BASSO
0000213|PLC|FAULT|[213] [BORDATORE POWER] ATTESA GRUPPO A BORDARE POSIZ. CAMBIO RULLO
0000214|PLC|FAULT|[214] [BORDATORE POWER] ATTESA PIANO CARICAMENTO BORDI ALTO
0000215|PLC|FAULT|[215] [BORDATORE POWER] ATTESA PIANO CARICAMENTO BORDI BASSO
0000216|PLC|FAULT|[216] [BORDATORE POWER] MANCATA LETTURA BORDO GIUNZIONE
0000217|PLC|FAULT|[217] [BORDATORE POWER] ERRORE BORDO SU FOTOCELLULA DI CARICO
0000218|PLC|FAULT|[218] VASCA COLLA NON IN TEMPERATURA
0000219|PLC|FAULT|[219] [BORDATORE POWER] ASSENZA BORDO IN MULTIROTOLO
0000220|PLC|FAULT|[220] [BORDATORE POWER] ATTESA CICLO CARICO COLLA DA PREFUSORE
0000221|PLC|FAULT|[221] [BORDATORE POWER] MANCATO TAGLIO TRANCIA MAGAZZINO BORDI
0000222|PLC|FAULT|[222] [BORDATORE POWER] ATTESA CARICO COLLA DA PREFUSORE
0000223|PLC|FAULT|[223] [BORDATORE POWER] ANOMALIA SENSORI CILINDRO TESTA A BORDARE
0000224|PLC|FAULT|[224] SENSORE TESTA A BORDARE IN COLLISIONE
0000225|PLC|FAULT|[225] [BORDATORE POWER] TIMEOUT INTESTATURA BORDO TESTA A BORDARE
0000226|PLC|FAULT|[226] INTERVENTO TERMICI VASCA COLLA
0000227|PLC|FAULT|[227] INTERVENTO TERMICI PREFUSORE
0000228|PLC|FAULT|[228] INTERVENTO TERMICI LAMPADE ONDE CORTE
0000229|PLC|FAULT|[229] ESEGUIRE RIFERIMENTO MOT. ALTEZZA BORDO TESTA B.
0000230|PLC|FAULT|[230] ESEGUIRE RIFERIMENTO MOT. ALTEZZA BORDO MAGAZZINO B.
0000231|PLC|FAULT|[231] ESEGUIRE RIFERIMENTO MOT. CAMBIO RULLO PRESSIONE
0000232|PLC|FAULT|[232] TIMEOUT SENSORE CHIUSURA CILINDRO PREFUSORE
0000233|PLC|FAULT|[233] ESEGUIRE TARATURA TRAVERSE/VENTOSE
0000234|PLC|FAULT|[234] VENTOSE NON BLOCCATE AREA 1
0000235|PLC|FAULT|[235] VENTOSE NON BLOCCATE AREA 2
0000236|PLC|WARNING|[236] ATTESA SBLOCCO VENTOSA
0000237|PLC|WARNING|[237] ATTESA BLOCCO VENTOSA
0000238|PLC|WARNING|[238] RIMUOVERE VENTOSA: START CICLO
0000239|PLC|WARNING|[239] INSERIRE VENTOSA: START CICLO
0000240|PLC|FAULT|[240] ANOMALIA FOTOCELLULA MAGAZZINO BORDI
0000241|PLC|WARNING|[241] BARRA 1
0000242|PLC|WARNING|[242] BARRA 2
0000243|PLC|WARNING|[243] BARRA 3
0000244|PLC|WARNING|[244] BARRA 4
0000245|PLC|WARNING|[245] BARRA 5
0000246|PLC|WARNING|[246] BARRA 6
0000247|PLC|WARNING|[247] BARRA 7
0000248|PLC|WARNING|[248] BARRA 8
0000249|PLC|WARNING|[249] BARRA 9
0000250|PLC|WARNING|[250] BARRA 10
0000251|PLC|WARNING|[251] BARRA 11
0000252|PLC|WARNING|[252] BARRA 12
0000253|PLC|WARNING|[253] RIMUOVERE/INSERIRE VENTOSA COME DA GRAFICA SU AREA 1: START CICLO
0000254|PLC|WARNING|[254] RIMUOVERE/INSERIRE VENTOSA COME DA GRAFICA SU AREA 2: START CICLO
0000255|PLC|FAULT|[255] PORTE PROTEZIONE SBLOCCATE
0000256|PLC|FAULT|[256] ERRORE MODULO ZERO SPEED MANDRINO
0000257|PLC|FAULT|[257] INTESTATORE NON IN POSIZIONE
0000258|PLC|FAULT|[258] INTESTATORE 92 VUOTO
0000259|PLC|FAULT|[259] INTESTATORE 93 VUOTO
0000260|PLC|FAULT|[260] LIVELLO COLLA BASSO B.BASIC
0000261|PLC|FAULT|[261] [WD]EMERGENZA TRANSFER PREMUTA
0000262|PLC|FAULT|[262] [WD]INTERVENTO MAGNETOTERMICI TRANSFER
0000263|PLC|FAULT|[263] [WD]PORTE ARMADIO ELETTRICO TRANSFER APERTE
0000264|PLC|FAULT|[264] [WD]SVUOTARE TRANSFER
0000265|PLC|FAULT|[265] [WD]PEZZO IN ZONA DI SCARICO
0000266|PLC|FAULT|[266] [WD]ATTESA ROBOT 1 IN POSIZIONE
0000267|PLC|FAULT|[267] [WD]ATTESA ROBOT 2 IN POSIZIONE
0000268|PLC|FAULT|[268] [WD]SVUOTARE RULLIERE
0000269|PLC|FAULT|[269] [WD]DIMENSIONI PEZZO NON OK
0000270|PLC|FAULT|[270] [WD]SVUOTARE PIANO MACCHINA E PINZE ROBOT
0000271|PLC|FAULT|[271] [WD]PINZA ROBOT 1 NON IN POSIZIONE
0000272|PLC|FAULT|[272] [WD]PINZA ROBOT 2 NON IN POSIZIONE
0000273|PLC|FAULT|[273] MORSETTI ZONA 1 ALTI PNEUMATICAMENTE
0000274|PLC|FAULT|[274] MORSETTI ZONA 2 ALTI PNEUMATICAMENTE
0000275|PLC|FAULT|[275] EMERGENZA CAUSA MORSETTI ZONA 1
0000276|PLC|FAULT|[276] EMERGENZA CAUSA MORSETTI ZONA 2
0000277|PLC|FAULT|[277] ZONA DI COLLISIONE REFILATORE / RAS
0000278|PLC|FAULT|[278] PERICOLO SPORTELLO PANTOGRAFO APERTO
0000279|PLC|FAULT|[279] ZONA DI COLLISIONE BORDATORE
0000280|PLC|FAULT|[280] POSIZIONE DEL SELETTORE DELLA PULSANTIERA NON OK
0000281|PLC|FAULT|[281] PREMERE PULSANTE UOMO-MORTO
0000282|PLC|FAULT|[282] METTERE LA MACCHINA IN EMERGENZA
0000283|PLC|FAULT|[283] EMERGENZA TAPPETO ZONA 1
0000284|PLC|FAULT|[284] EMERGENZA TAPPETO ZONA 2
0000285|PLC|FAULT|[285] ZONA DI COLLISIONE MAGAZZINO RULLI PRESSIONE
0000286|PLC|FAULT|[286] TAPPETO AREA 1 IMPEGNATO
0000287|PLC|FAULT|[287] TAPPETO CENTRALE IMPEGNATO
0000288|PLC|FAULT|[288] TAPPETO AREA 2 IMPEGNATO
0000289|PLC|FAULT|[289] NUMERO RULLO PRESSORE ERRATO
0000290|PLC|FAULT|[290] CHECK VASCA COLLA
0000291|PLC|FAULT|[291] TIMEOUT GRUPPO VENTOSE NON ESCLUSO
0000292|PLC|FAULT|[292] TIMEOUT GRUPPO VENTOSE NON INSERITO
0000293|PLC|FAULT|[293] ASSE C BORDATORE IN QUOTA COLLISIONE CON G.VENTOSE
0000294|PLC|FAULT|[294] CICLO INSERIMENTO SPINA GRUPPO 92 NON OK(MUOVERE IN JOG+ L'ASSE X)
0000295|PLC|FAULT|[295] CICLO INSERIMENTO SPINA GRUPPO 93 NON OK(MUOVERE IN JOG- L'ASSE X)
0000296|PLC|FAULT|[296] RULLI NON IN POSIZIONE
0000297|PLC|FAULT|[297] ASSE X FUORI LIMITE PER RULLI
0000298|PLC|FAULT|[298] COLLISIONE RULLI CON GRUPPO TESTE
0000299|PLC|FAULT|[299] LASCIARE LIBERO
0000300|PLC|FAULT|[300] PERICOLO COLLISIONE BORDATORE PIANO MULTIFUNZIONE
0000301|PLC|FAULT|[301] MODALITÀ CELLA NON ATTIVA
0000302|PLC|FAULT|[302] ZONA DI COLLISIONE BORDATORE IN Y
0000303|PLC|FAULT|[303] ERRORE SEQUENZA CAMBIO RULLO PRESSORE
0000304|PLC|FAULT|[304]
0000305|PLC|FAULT|[305]
0000306|PLC|FAULT|[306]
0000307|PLC|FAULT|[307]
0000308|PLC|FAULT|[308]
0000309|PLC|FAULT|[309]
0000310|PLC|FAULT|[310]
0000311|PLC|FAULT|[311]
0000312|PLC|FAULT|[312]
0000313|PLC|FAULT|[313] PRESSORE 1 TESTA 1 NON IN POSIZIONE
0000314|PLC|FAULT|[314] PRESSORE 2 TESTA 1 NON IN POSIZIONE
0000315|PLC|FAULT|[315] PRESSORE 3 TESTA 1 NON IN POSIZIONE
0000316|PLC|FAULT|[316] PRESSORE 4 TESTA 1 NON IN POSIZIONE
0000317|PLC|FAULT|[317] PRESSORE 1 TESTA 2 NON IN POSIZIONE
0000318|PLC|FAULT|[318] PRESSORE 2 TESTA 2 NON IN POSIZIONE
0000319|PLC|FAULT|[319] PRESSORE 3 TESTA 2 NON IN POSIZIONE
0000320|PLC|FAULT|[320] PRESSORE 4 TESTA 2 NON IN POSIZIONE
0000321|PLC|FAULT|[321] ATTESA FINE CAMBIO UTENSILE
0000322|PLC|FAULT|[322]
0000323|PLC|FAULT|[323] PERICOLO COLLISIONE ASSI X-U
0000324|PLC|FAULT|[324] PERICOLO COLLISIONE ASSI Y-V
0000325|PLC|FAULT|[325] ZERO FEED RATE
0000326|PLC|FAULT|[326] PIGNA MOBILE ATTIVA - PADDLE DISABILITATO
0000327|PLC|FAULT|[327] APERTURA PINZE BLOCCATO DA ASSI Z-W BASSI
0000328|PLC|FAULT|[328] ATTENZIONE! PERICOLO COLLISIONE
0000329|PLC|FAULT|[329] CUFFIA LAMA NON IN POSIZIONE
0000330|PLC|FAULT|[330] BATTUTA RIFERIMENTO NON ESCLUSA
0000331|PLC|FAULT|[331] SCARICO PANNELLO: CONFERMARE CON START CICLO
0000332|PLC|FAULT|[332] VELOCITA' RIDOTTA A 25MT/MIN
0000333|PLC|FAULT|[333] DISCESA PRESSORE BLOCCATA DA ASSI Z-W BASSI
0000334|PLC|FAULT|[334] DISCESA MANDRINO BLOCCATA DA ASSI Z-W BASSI
0000335|PLC|FAULT|[335] DISCESA FUSO/LAMA BLOCCATA DA ASSI Z-W BASSI
0000336|PLC|FAULT|[336] DISCESA BATTUTA RIFERIMENTO BLOCCATA DA ASSI Z-W BASSI
0000337|PLC|FAULT|[337] MOVIMENTO ASSI X BLOCCATO DA PINZA APERTA E TESTE BASSE
0000338|PLC|FAULT|[338] MOVIMENTO ASSI U BLOCCATO DA PINZA APERTA E TESTE BASSE
0000339|PLC|FAULT|[339] MOVIMENTO ASSI YZ BLOCCATO DA PINZE APERTE
0000340|PLC|FAULT|[340] MOVIMENTO ASSI VW BLOCCATO DA PINZE APERTE
0000341|PLC|FAULT|[341]
0000342|PLC|FAULT|[342]
0000343|PLC|FAULT|[343]
0000344|PLC|FAULT|[344]
0000345|PLC|FAULT|[345]
0000346|PLC|FAULT|[346]
0000347|PLC|FAULT|[347]
0000348|PLC|FAULT|[348]
0000349|PLC|FAULT|[349]
0000350|PLC|FAULT|[350]
0000351|PLC|FAULT|[351]
0000352|PLC|FAULT|[352]
0000353|PLC|FAULT|[353]
0000354|PLC|FAULT|[354]
0000355|PLC|FAULT|[355]
0000356|PLC|FAULT|[356]
0000357|PLC|FAULT|[357]
0000358|PLC|FAULT|[358]
0000359|PLC|FAULT|[359]
0000360|PLC|FAULT|[360]
0000361|PLC|FAULT|[361]
0000362|PLC|FAULT|[362]
0000363|PLC|FAULT|[363]
0000364|PLC|FAULT|[364]
0000365|PLC|FAULT|[365]
0000366|PLC|FAULT|[366]
0000367|PLC|FAULT|[367]
0000368|PLC|FAULT|[368]
0000369|PLC|FAULT|[369]
0000370|PLC|FAULT|[370]
0000371|PLC|FAULT|[371]
0000372|PLC|FAULT|[372]
0000373|PLC|FAULT|[373]
0000374|PLC|FAULT|[374]
0000375|PLC|FAULT|[375]
0000376|PLC|FAULT|[376]
0000377|PLC|FAULT|[377]
0000378|PLC|FAULT|[378]
0000379|PLC|FAULT|[379]
0000380|PLC|FAULT|[380]
0000381|PLC|FAULT|[381]
0000382|PLC|FAULT|[382]
0000383|PLC|FAULT|[383]
0000384|PLC|FAULT|[384]
0000385|PLC|FAULT|[385]
0000386|PLC|FAULT|[386]
0000387|PLC|FAULT|[387]
0000388|PLC|FAULT|[388]
0000389|PLC|FAULT|[389]
0000390|PLC|FAULT|[390]
0000391|PLC|FAULT|[391]
0000392|PLC|FAULT|[392]
0000393|PLC|FAULT|[393]
0000394|PLC|FAULT|[394]
0000395|PLC|FAULT|[395]
0000396|PLC|FAULT|[396]
0000397|PLC|FAULT|[397]
0000398|PLC|FAULT|[398]
0000399|PLC|FAULT|[399]
0000400|PLC|FAULT|[400]
0000401|PLC|FAULT|[401]
0000402|PLC|FAULT|[402]
0000403|PLC|FAULT|[403]
0000404|PLC|FAULT|[404]
0000405|PLC|FAULT|[405]
0000406|PLC|FAULT|[406]
0000407|PLC|FAULT|[407]
0000408|PLC|FAULT|[408]
0000409|PLC|FAULT|[409]
0000410|PLC|FAULT|[410]
0000411|PLC|FAULT|[411]
0000412|PLC|FAULT|[412]
0000413|PLC|FAULT|[413]
0000414|PLC|FAULT|[414]
0000415|PLC|FAULT|[415]
0000416|PLC|FAULT|[416]
0000417|PLC|FAULT|[417]
0000418|PLC|FAULT|[418]
0000419|PLC|FAULT|[419]
0000420|PLC|FAULT|[420]
@@ -1,654 +0,0 @@
# Commenti con "#", elenco tipo COD_NUM|GRUPPO|LEVEL|DESCRIZIONE completa
000001|CNC|FAULT|[1] Atteso carattere [
000002|CNC|FAULT|[2] Numero Registro Errato
000003|CNC|FAULT|[3] Funzione non valida
000004|CNC|FAULT|[4] Parametrica: carattere non valido
000005|CNC|FAULT|[5] IF: Atteso carattere =
000006|CNC|FAULT|[6] JSR: Livello Annidamento Subroutine Errato
000007|CNC|FAULT|[7] RET: Annidamento Subroutine Errato
000008|CNC|FAULT|[8] Funzione non disponibile
000009|CNC|FAULT|[9] Troppe funzioni M consecutive
000010|CNC|FAULT|[10] Raggio senza G2/G3
000011|CNC|FAULT|[11] Raggio Inconsistente
000012|CNC|FAULT|[12] Errore inizializzazione canale
000013|CNC|FAULT|[13] Canale in stallo (deadlock)
000014|CNC|FAULT|[14] Ciclo Fisso non esistente
000015|CNC|FAULT|[15] Troppi livelli di parentesi (
000016|CNC|FAULT|[16] Assegnamento: atteso carattere =
000017|CNC|FAULT|[17] Atteso carattere CR
000018|CNC|FAULT|[18] Modo operativo cambiato
000019|CNC|FAULT|[19] JMP: Numero Blocco non trovato
000020|CNC|FAULT|[20] Programma non trovato
000021|CNC|FAULT|[21] Errore da procedura esterna
000022|CNC|FAULT|[22] Quota Fuori Limite
000023|CNC|FAULT|[23] Asse non configurato
000024|CNC|FAULT|[24] Mandrino non configurato
000025|CNC|FAULT|[25] Piano Selezionato Errato
000026|CNC|FAULT|[26] Asse non Disponibile
000027|CNC|FAULT|[27] Passo Maschiatura Nullo
000028|CNC|FAULT|[28] Asse in Allarme
000029|CNC|FAULT|[29] Feed Nulla
000030|CNC|FAULT|[30] Raggio Utensile Nullo
000031|CNC|FAULT|[31] Simbolo % non trovato
000032|CNC|FAULT|[32] Cambio Piano o Lato con CUT Attiva
000033|CNC|FAULT|[33] Mandrino senza Encoder
000034|CNC|FAULT|[34] Indirizzo senza numero
000035|CNC|FAULT|[35] SQRT: Argomento negativo
000036|CNC|FAULT|[36] TAN: Valore Infinito
000037|CNC|FAULT|[37] ASIN, ACOS: Argomento fuori range
000038|CNC|FAULT|[38] Divisione per zero
000039|CNC|FAULT|[39] Indirizzo non usato
000040|CNC|FAULT|[40] Numero senza indirizzo
000041|CNC|FAULT|[41] Parametro su indirizzo G
000042|CNC|FAULT|[42] Programma senza M2-M30
000043|CNC|FAULT|[43] Interpolazione con assi incompatibili
000044|CNC|FAULT|[44] Velocità mandrino troppo elevata
000045|CNC|FAULT|[45] Vel Asse Z > Vel Max Canale
000046|CNC|FAULT|[46] Correzione Tornio G18
000047|CNC|FAULT|[47] Tipo Geometria Utensile non gestita
000048|CNC|FAULT|[48] Coda Trasmissione Esaurita
000049|CNC|FAULT|[49] Coda Pacchetti Liberi Esaurita
000050|CNC|FAULT|[50] Raggio profilo minore Raggio Utensile
000051|CNC|FAULT|[51] Punto Finale Arco inconsistente
000052|CNC|FAULT|[52] Il Percorso non puo' essere seguito
000053|CNC|FAULT|[53] Segmento nullo
000054|CNC|FAULT|[54] Angolo nullo
000055|CNC|FAULT|[55] Operazione Illegale
000056|CNC|FAULT|[56] Intersezione tra segmenti o archi
000057|CNC|FAULT|[57] Attacco Profilo non permesso: usare G0
000058|CNC|FAULT|[58] Sovrataglio su Segmento Lineare
000059|CNC|FAULT|[59] Sovrataglio su Arco di Circonferenza
000060|CNC|FAULT|[60] Atteso carattere ]
000061|CNC|FAULT|[61] Valore troppo elevato
000062|CNC|FAULT|[62] Errore accesso file
000063|CNC|FAULT|[63] Descrittore Utensile Errato
000064|CNC|FAULT|[64] Troppi parametri
000065|CNC|FAULT|[65] Troppi caratteri nei campi stringa
000066|CNC|FAULT|[66] Atteso oggetto dopo ^
000067|CNC|FAULT|[67] Assegnazione a registro inesistente
000068|CNC|FAULT|[68] Argomento inesistente
000069|CNC|FAULT|[69] Codice SPC non riconosciuto
000070|CNC|FAULT|[70] Violazione semantica blocco APND
000071|CNC|FAULT|[71] Per spiegazioni vedere il Manuale
000072|CNC|FAULT|[72] CFC: Subroutine non trovata
000073|CNC|FAULT|[73] CFC: Parametri errati
000074|CNC|FAULT|[74] CFC: Errore di gestione risorse
000075|CNC|FAULT|[75] CFC: Nessuna risorsa
000076|CNC|FAULT|[76] CFC: Errore di chiusura
000077|CNC|FAULT|[77] CFC: Non specificato
000078|CNC|FAULT|[78] CFC: <DEBUG 1>
000079|CNC|FAULT|[79] CFC: (Per spiegazioni vedere il Manuale)
000080|CNC|FAULT|[80] CFC: Task eseguito correttamente
000081|CNC|FAULT|[81] CVB: Codice operativo sconosciuto
000082|CNC|FAULT|[82] CVB: Errore di gestione risorse
000083|CNC|FAULT|[83] CVB: Nessuna risorsa
000084|CNC|FAULT|[84] CVB: Errore di chiusura
000085|CNC|FAULT|[85] CVB: Pipe interrotta
000086|CNC|FAULT|[86] CVB: Ripristinato da stallo/Fine file inattesa
000087|CNC|FAULT|[87] CVB: Non specificato
000088|CNC|FAULT|[88] CVB: <DEBUG 1>
000089|CNC|FAULT|[89] CVB: (Per le spiegazioni vedere il Manuale)
000090|CNC|FAULT|[90] CVB: Task eseguito correttamente
000093|CNC|FAULT|[93] APIO: Nessuna risorsa
000094|CNC|FAULT|[94] APIO: Errore di chiusura
000095|CNC|FAULT|[95] APIO: Non specificato
000096|CNC|FAULT|[96] APIO: <DEBUG 1>
000097|CNC|FAULT|[97] APIO: (Per spiegazioni vedere il Manuale)
000098|CNC|FAULT|[98] APIO: Task eseguito correttamente
000099|CNC|FAULT|[99] XCL: Codice operativo sconosciuto
000100|CNC|FAULT|[100] XCL: Errore di gestione risorse
000101|CNC|FAULT|[101] XCL: Nessuna risorsa
000102|CNC|FAULT|[102] XCL: Errore di chiusura
000103|CNC|FAULT|[103] XCL: Pipe interrotta
000104|CNC|FAULT|[104] XCL: Ripristinato da stallo/Fine file inattesa
000105|CNC|FAULT|[105] XCL: Non specificato
000106|CNC|FAULT|[106] XCL: <DEBUG 1>
000107|CNC|FAULT|[107] XCL: (Per le spiegazioni vedere il Manuale)
000108|CNC|FAULT|[108] XCL: Compito eseguito correttamente
000109|CNC|FAULT|[109] XAM: Codice operativo sconosciuto
000110|CNC|FAULT|[110] XAM: Errore di gestione risorse
000111|CNC|FAULT|[111] XAM: Nessuna risorsa
000112|CNC|FAULT|[112] XAM: Errore di chiusura
000113|CNC|FAULT|[113] XAM: Pipe interrotta
000114|CNC|FAULT|[114] XAM: Ripristinato da stallo/Fine file inattesa
000115|CNC|FAULT|[115] XAM: Non specificato
000116|CNC|FAULT|[116] XAM: <DEBUG 1>
000117|CNC|FAULT|[117] XAM: (Per le spiegazioni vedere il Manuale)
000118|CNC|FAULT|[118] XAM: Task eseguito correttamente
000119|CNC|FAULT|[119] RETR: Codice operativo sconosciuto
000120|CNC|FAULT|[120] RETR: Errore di gestione risorse
000121|CNC|FAULT|[121] RETR: Nessuna risorsa
000122|CNC|FAULT|[122] RETR: Errore di chiusura
000123|CNC|FAULT|[123] RETR: Pipe interrotta
000124|CNC|FAULT|[124] RETR: Ripristinato da stallo/Fine file inattesa
000125|CNC|FAULT|[125] RETR: Non specificato
000126|CNC|FAULT|[126] RETR: <DEBUG 1>
000127|CNC|FAULT|[127] RETR: (Per le spiegazioni vedere il Manuale)
000128|CNC|FAULT|[128] RETR: Task eseguito correttamente
000129|CNC|FAULT|[129] PG2: Codice operativo sconosciuto
000130|CNC|FAULT|[130] PG2: Errore di gestione risorse
000131|CNC|FAULT|[131] PG2: Nessuna risorsa
000132|CNC|FAULT|[132] PG2: Errore di chiusura
000133|CNC|FAULT|[133] PG2: Pipe interrotta
000134|CNC|FAULT|[134] PG2: Ripristinato da stallo/Fine file inattesa
000135|CNC|FAULT|[135] PG2: Non specificato
000136|CNC|FAULT|[136] PG2: <DEBUG 1>
000137|CNC|FAULT|[137] PG2: (Per le spiegazioni vedere il Manuale)
000138|CNC|FAULT|[138] PG2: Task eseguito correttamente
000139|CNC|FAULT|[139] WARP: Codice operativo sconosciuto
000140|CNC|FAULT|[140] WARP: Errore di gestione risorse
000141|CNC|FAULT|[141] WARP: Nessuna risorsa
000142|CNC|FAULT|[142] WARP: Errore di chiusura
000143|CNC|FAULT|[143] WARP: Pipe interrotta
000144|CNC|FAULT|[144] WARP: Ripristinato da stallo/Fine file inattesa
000145|CNC|FAULT|[145] WARP: Non specificato
000146|CNC|FAULT|[146] WARP: <DEBUG 1>
000147|CNC|FAULT|[147] WARP: (Per le spiegazioni vedere il Manuale)
000148|CNC|FAULT|[148] WARP: Task eseguito correttamente
000149|CNC|FAULT|[149] PAG: Codice operativo sconosciuto
000150|CNC|FAULT|[150] PAG: Errore di gestione risorse
000151|CNC|FAULT|[151] PAG: Nessuna risorsa
000152|CNC|FAULT|[152] PAG: Errore di chiusura
000153|CNC|FAULT|[153] PAG: Pipe interrotta
000154|CNC|FAULT|[154] PAG: Ripristinato da stallo/Fine file inattesa
000155|CNC|FAULT|[155] PAG: Non specificato
000156|CNC|FAULT|[156] PAG: <DEBUG 1>
000157|CNC|FAULT|[157] PAG: (Per le spiegazioni vedere il Manuale)
000158|CNC|FAULT|[158] PAG: Task eseguito correttamente
000159|CNC|FAULT|[159] Codice di errore sconosciuto
000160|CNC|FAULT|[160] Asse X Quota Fuori Limite
000161|CNC|FAULT|[161] Asse Y Quota Fuori Limite
000162|CNC|FAULT|[162] Asse Z Quota Fuori Limite
000163|CNC|FAULT|[163] Asse U Quota Fuori Limite
000164|CNC|FAULT|[164] Asse V Quota Fuori Limite
000165|CNC|FAULT|[165] Asse W Quota Fuori Limite
000166|CNC|FAULT|[166] Asse A Quota Fuori Limite
000167|CNC|FAULT|[167] Asse B Quota Fuori Limite
000168|CNC|FAULT|[168] Asse C Quota Fuori Limite
000170|CNC|FAULT|[170] Errore definizione variabile record [simbolo]
000171|CNC|FAULT|[171] Errore assegnazione variabile record [simbolo]
000172|CNC|FAULT|[172] Errore definizione variabile record [var defcn]
000173|CNC|FAULT|[173] Errore assegnazione variabile record [var defcn]
000174|CNC|FAULT|[174] Errore definizione variabile record [INPUT]
000175|CNC|FAULT|[175] Impossibile assegnare registro di input
000176|CNC|FAULT|[176] Errore definizione variabile record [OUT]
000177|CNC|FAULT|[177] Errore assegnazione variabile record [OUT]
000178|CNC|FAULT|[178] Errore definizione variabile record [registro logico]
000179|CNC|FAULT|[179] Errore definizione variabile record [variabile automatica]
000180|CNC|FAULT|[180] Atteso valore da assegnare a variabile record
000181|CNC|FAULT|[181] Array oltre il massimo consentito
000182|CNC|FAULT|[182] Simbolo giá definito
000183|CNC|FAULT|[183] Impossibile inizializzare gli Array
000184|CNC|FAULT|[184] Errore inizializzazione variabile
000185|CNC|FAULT|[185] Errore sintattico definizione parametrica
000186|CNC|FAULT|[186] Tipo di dato incompatibile
000187|CNC|FAULT|[187] Impossibile definire altri simboli
000188|CNC|FAULT|[188] Simbolo non definito
000189|CNC|FAULT|[189] Errore assegnamento stringa
000190|CNC|FAULT|[190] Errore assegnamento numerico
000191|CNC|FAULT|[191] Simbolo inesistente
000192|CNC|FAULT|[192] Errore definizione variabile record [registro logico]
000193|CNC|FAULT|[193] Atteso simbolo parametrica
000194|CNC|FAULT|[194] Errore accesso registro in defcn
000195|CNC|FAULT|[195] Superato numero massimo di variabili simboliche
000197|CNC|FAULT|[197] Out of memory/Memory not awarded
000199|CNC|FAULT|[199] Errore di inizializzazione
000200|CNC|FAULT|[200] <DEBUG: TCO: Codice operativo sconosciuto>
000201|CNC|FAULT|[201] <DEBUG: TCO: Errore di gestione risorse>
000202|CNC|FAULT|[202] <DEBUG: TCO: Nessuna risorsa>
000203|CNC|FAULT|[203] <DEBUG: TCO: Errore di chiusura>
000204|CNC|FAULT|[204] <DEBUG: TCO: Pipe interrotta>
000205|CNC|FAULT|[205] <DEBUG: TCO: Ripristinato da stallo/Fine file inattesa>
000206|CNC|FAULT|[206] <DEBUG: TCO: Non specificato>
000207|CNC|FAULT|[207] <DEBUG: TCO: <DEBUG 1>>
000208|CNC|FAULT|[208] <DEBUG: TCO: (Per le spiegazioni vedere il Manuale)>
000209|CNC|FAULT|[209] <DEBUG: TCO: Task eseguito correttamente>
000210|CNC|FAULT|[210] XCL: Violazione Semantica Blocco APND
000211|CNC|FAULT|[211] XAM: Violazione Semantica Blocco APND
000212|CNC|FAULT|[212] <DEBUG: PMI: Codice operativo non valido>
000213|CNC|FAULT|[213] <DEBUG: PMI: Paratetri vettore di I/O errati>
000214|CNC|FAULT|[214] <DEBUG: PMI: Ricevuto segnale di terminazione>
000215|CNC|FAULT|[215] <DEBUG: PMI: Errore di inizializzazione>
000216|CNC|FAULT|[216] <DEBUG: PMI: Errore di chiusura>
000217|CNC|FAULT|[217] <DEBUG: PMI: Non specificato>
000218|CNC|FAULT|[218] <DEBUG: PMI: (Per le spiegazioni vedere il Manuale)>
000219|CNC|FAULT|[219] <DEBUG: PMI: Task eseguito correttamente>
000220|CNC|FAULT|[220] Dati Tagliente non trovati
000221|CNC|FAULT|[221] Cinematica non supportata
000222|CNC|FAULT|[222] Errato orientamento entità TWI
000223|CNC|FAULT|[223] Orientamento utensile non definito
000224|CNC|FAULT|[224] TCP non trovato
000225|CNC|FAULT|[225] Trasformazione THD non supportata
000226|CNC|FAULT|[226] Impossibile selezionare tagliente, IJK assenti
000227|CNC|FAULT|[227] Violazione tagliente
000228|CNC|FAULT|[228] XCL: Vedi manuale
000229|CNC|FAULT|[229] Orientamento utensile impossibile
000230|CNC|FAULT|[230] Driver assi polari non supportato
000231|CNC|FAULT|[231] Beccheggio incoerente
000232|CNC|FAULT|[232] Imbardata incoerente
000233|CNC|FAULT|[233] Modalità ICDSID non supportata
000234|CNC|FAULT|[234] Relazione ambigua tra tagliente e lavorazione
000235|CNC|FAULT|[235] Richiesto blocco di movimento dopo G00
000236|CNC|FAULT|[236] Troppi blocchi non di movimento
000237|CNC|FAULT|[237] Sequenza assi di percorso non gestita
000238|CNC|FAULT|[238] Errore interno XCL
000240|CNC|FAULT|[240] Overflow buffer DLE
000241|CNC|FAULT|[241] Deceleration Look-Ahead: Troppi blocchi non di movimento
000242|CNC|FAULT|[242] Formato non riconosciuto da DLE
000243|CNC|FAULT|[243] La Pipe interna di DLE é interrotta
000244|CNC|FAULT|[244] Errore interno DLE
000245|CNC|FAULT|[245] DLE: (Per le spiegazioni vedere il Manuale)
000250|CNC|FAULT|[250] TCO: Violazione Semantica Blocco APND
000251|CNC|FAULT|[251] PG2: Violazione Semantica Blocco APND
000256|CNC|FAULT|[256] Orientamento utensile non definito con ICDSID
000257|CNC|FAULT|[257] Vettore di superficie non definito con ICDSID
000258|CNC|FAULT|[258] Beccheggio utensile incompatibile con la lavorazione
000259|CNC|FAULT|[259] Imbardata utensile indeterminata con PADSID attivo
000260|CNC|FAULT|[260] Modalità PADSID non supportata
000261|CNC|FAULT|[261] Modalità PADCHK non supportata
000262|CNC|FAULT|[262] Discontinuità superficie troppo elevata
000263|CNC|FAULT|[263] Avanzamento nel materiale incompatibile con l'utensile
000265|CNC|FAULT|[265] Codice TWI troppo elevato
000266|CNC|FAULT|[266] Codice THD troppo elevato
000267|CNC|FAULT|[267] Codice D troppo elevato
000270|CNC|FAULT|[270] Richiesto idoneo orientamento utensile con xSCMOD
000271|CNC|FAULT|[271] Richiesto idoneo vettore di superficie con xSCMOD
000272|CNC|FAULT|[272] Orientamento utensile non definito con xSCMOD
000273|CNC|FAULT|[273] Vettore di superficie non definito con xSCMOD
000274|CNC|FAULT|[274] Soli blocchi G1 consentiti con xSCMOD
000275|CNC|FAULT|[275] Lunghezza blocco in testa incompatibile con ESCMOD
000276|CNC|FAULT|[276] Lunghezza unico blocco incompatibile con xSCMOD
000277|CNC|FAULT|[277] Lunghezza blocco in coda incompatibile con XSCMOD
000282|CNC|FAULT|[282] PAG: Implementation restriction
000283|CNC|FAULT|[283] PAG: Not enough data
000284|CNC|FAULT|[284] PAG: Ambiguous data
000285|CNC|FAULT|[285] PAG: Undetermined solution
000286|CNC|FAULT|[286] PAG: No solution found
000287|CNC|FAULT|[287] PAG: Invalid feed command
000290|CNC|FAULT|[290] <DEBUG: PMI: Estensione utente non inizializzata>
000292|CNC|FAULT|[292] Speed Mandrino < Speed Min
000400|CNC|FAULT|[400] Superato numero massimo strutture di controllo
000401|CNC|FAULT|[401] IF () THEN non sono sullo stesso blocco
000402|CNC|FAULT|[402] BREAK non inserito in struttura di controllo
000403|CNC|FAULT|[403] ELSE senza IF/THEN
000404|CNC|FAULT|[404] Due ELSE consecutivi
000405|CNC|FAULT|[405] Disallineamento strutture di controllo
000406|CNC|FAULT|[406] ENDW, ENDFOR,REPEAT non devono essere seguiti da codice
000407|CNC|FAULT|[407] UNTIL senza REPEAT
000408|CNC|FAULT|[408] FOR senza valore limite
000409|CNC|FAULT|[409] RPT/BREAK: errore salto fuori dal ciclo
000412|CNC|FAULT|[412] Errore accesso dati ricerca blocco in DEFCN
000413|CNC|FAULT|[413] Procedura Overstore: blocchi di movimentazione non ammessi
000420|CNC|FAULT|[420] Errore di condivisione file
000421|CNC|FAULT|[421] Memoria insufficiente per aprire il file
000422|CNC|FAULT|[422] Errore sconosciuto sul file
000424|CNC|FAULT|[424] Vita utensile esaurita
000513|CNC|FAULT|[513] <DEBUG: Errore accesso dati limiti assi>
000514|CNC|FAULT|[514] <DEBUG: Errore interno>
000522|CNC|FAULT|[522] Asse X Quota Fuori Limite
000523|CNC|FAULT|[523] Asse Y Quota Fuori Limite
000524|CNC|FAULT|[524] Asse Z Quota Fuori Limite
000525|CNC|FAULT|[525] Asse U Quota Fuori Limite
000526|CNC|FAULT|[526] Asse V Quota Fuori Limite
000527|CNC|FAULT|[527] Asse W Quota Fuori Limite
000528|CNC|FAULT|[528] Asse A Quota Fuori Limite
000529|CNC|FAULT|[529] Asse B Quota Fuori Limite
000530|CNC|FAULT|[530] Asse C Quota Fuori Limite
000549|CNC|FAULT|[549] <DEBUG: Errore sulla pipe di uscita della grafica>
000550|CNC|FAULT|[550] <DEBUG: Chiamata alle TMAPI non implementata>
000554|CNC|FAULT|[554] <DEBUG: Connessione al server grafico gia' stabilita>
000555|CNC|FAULT|[555] <DEBUG: Impossibile registrarsi presso il server grafico>
000556|CNC|FAULT|[556] <DEBUG: Nessuna connessione stabilita col server grafico>
000557|CNC|FAULT|[557] <DEBUG: Il server grafico ha interrotto le attivita'>
000560|CNC|FAULT|[560] <DEBUG: L'evento di chiusura e' stato segnalato dal Kernel>
000564|CNC|FAULT|[564] <DEBUG: Non c'e' abbastanza memoria per inizializzare TMAPI>
000565|CNC|FAULT|[565] <DEBUG: Non e' stato possibile liberare tutte le risorse>
000566|CNC|FAULT|[566] <DEBUG: Non specificato>
000569|CNC|FAULT|[569] <DEBUG: Vedere il manuale>
000609|CNC|FAULT|[609] <DEBUG: Configurazione di assi non gestita>
000610|CNC|FAULT|[610] <DEBUG: La prestazione non e' implementata>
000612|CNC|FAULT|[612] <DEBUG: GRAPH Multitool setup has bad freecells>
000613|CNC|FAULT|[613] <DEBUG: GRAPH Multitool setup has NO freecells>
000625|CNC|FAULT|[625] <DEBUG: Errore nella lettura della configurazione del server grafico>
000641|CNC|FAULT|[641] <DEBUG: Fallita scrittura di dati packed>
000642|CNC|FAULT|[642] <DEBUG: Errato tipo di destinazione per dato packed>
000643|CNC|FAULT|[643] <DEBUG: Errato tipo di sorgente per dato packed>
000644|CNC|FAULT|[644] <DEBUG: Impossibile arrotondare il valore del dato packed>
000649|CNC|FAULT|[649] <DEBUG: Fallita scrittura di dati unpacked>
000650|CNC|FAULT|[650] <DEBUG: Errato tipo di destinazione per dato unpacked>
000657|CNC|FAULT|[657] <DEBUG: Semantica errata>
000658|CNC|FAULT|[658] <DEBUG: Comando sconosciuto>
000659|CNC|FAULT|[659] Codice SPC non riconosciuto
000673|CNC|FAULT|[673] <DEBUG: Errore accesso dati CED, THD o TWI>
000674|CNC|FAULT|[674] Memoria insufficiente per il tool caching
000682|CNC|FAULT|[682] Cinematica non supportata
000692|CNC|FAULT|[692] Codice TWI troppo elevato
000693|CNC|FAULT|[693] Codice THD troppo elevato
000694|CNC|FAULT|[694] Codice D troppo elevato
000695|CNC|FAULT|[695] Driver assi polari non supportato
000714|CNC|FAULT|[714] Cinematica non supportata
000715|CNC|FAULT|[715] Errato orientamento entità TWI
000716|CNC|FAULT|[716] Orientamento utensile non definito
000717|CNC|FAULT|[717] TCP non trovato
000718|CNC|FAULT|[718] Trasformazione THD non supportata
000719|CNC|FAULT|[719] Impossibile selezionare tagliente, IJK assenti
000720|CNC|FAULT|[720] Violazione tagliente
000724|CNC|FAULT|[724] <DEBUG: Vedere il manuale>
000738|CNC|FAULT|[738] <DEBUG: Errore pipe di ingresso esec. passante>
000743|CNC|FAULT|[743] <DEBUG: Il server della esec. passante ha interrotto le attivita'>
000746|CNC|FAULT|[746] <DEBUG: Troppi file non remoti aperti in esec. passante>
000749|CNC|FAULT|[749] Salto ad etichetta impossibile in esecuzione passante
000750|CNC|FAULT|[750] <DEBUG: Errore nella lettura della configurazione in esec. passante>
000751|CNC|FAULT|[751] Linea troppo lunga in esecuzione passante
001001|CNC|FAULT|[1001] PLC IN BLOCCO
001002|CNC|FAULT|[1002] ERRORE CARICAMENTO PLC
001003|CNC|FAULT|[1003] PLC LENTO TIMEOUT
001005|CNC|FAULT|[1005] PLC VELOCE TIMEOUT
001006|CNC|FAULT|[1006] CN IN BLOCCO
001007|CNC|FAULT|[1007] CONFIGURAZIONE NULLA
001008|CNC|FAULT|[1008] DATI MACCHINA ERRATI
001033|CNC|FAULT|[1033] Errore I/O: CRC
001034|CNC|FAULT|[1034] Errore I/O: TIMEOUT
001035|CNC|FAULT|[1035] Errore I/O: NACK
001036|CNC|FAULT|[1036] Errore I/O: INVALID ID
001039|CNC|FAULT|[1039] Errore I/O: RX not READY
001040|CNC|FAULT|[1040] Errore I/O: ERRORE GENERICO
001041|CNC|FAULT|[1041] Errore I/O: ALIMENTAZIONE NODO KO
001042|CNC|FAULT|[1042] Errore I/O: USCITA IN PROTEZIONE
001043|CNC|FAULT|[1043] Errore I/O: MANCA 24 VOLT
001044|CNC|FAULT|[1044] Errore I/O: ADC BUSY
001047|CNC|FAULT|[1047] Errore I/O: SCHEDA NON PRESENTE
001049|CNC|FAULT|[1049] V+12 FUORI SOGLIA
001050|CNC|FAULT|[1050] V-12 FUORI SOGLIA
001051|CNC|FAULT|[1051] V ENCODER FUORI SOGLIA
001052|CNC|FAULT|[1052] V BATTERIA FUORI SOGLIA
001056|CNC|FAULT|[1056] TEMPERATURA FUORI SOGLIA
001057|CNC|FAULT|[1057] CN HARDWARE ERROR: BOARD OR NODE ERROR
001058|CNC|FAULT|[1058] X:F.C. Avanti
001059|CNC|FAULT|[1059] X:F.C. Indietro
001060|CNC|FAULT|[1060] X:F.C. Software
001061|CNC|FAULT|[1061] X:Allarme Asse: Richiesta esterna
001062|CNC|FAULT|[1062] X:Errore Taratura
001063|CNC|FAULT|[1063] X:Asse non definito
001064|CNC|FAULT|[1064] X:Asse non presente e fly
001065|CNC|FAULT|[1065] X:Errore Tolleranza
001066|CNC|FAULT|[1066] X:Errore d'inseguimento
001067|CNC|FAULT|[1067] X:Errore Offset
001068|CNC|FAULT|[1068] X:Richiesta Allarme I/O di controllo
001069|CNC|FAULT|[1069] X:Interfaccia DAC o Encoder mancante
001070|CNC|FAULT|[1070] X:Mancanza conteggio Encoder
001071|CNC|FAULT|[1071] X:Asse in collisione
001072|CNC|FAULT|[1072] X:Gamma non presente
001073|CNC|FAULT|[1073] X:Encoder non collegato
001074|CNC|FAULT|[1074] X:Asse non disponibile
001075|CNC|FAULT|[1075] X:Allarme Servodrive Digitale
001076|CNC|FAULT|[1076] X:Disallineamento assi Gantry
001077|CNC|FAULT|[1077] X:Allarme Protocollo CanOpen
001078|CNC|FAULT|[1078] X:Drive in Allarme
001079|CNC|FAULT|[1079] X:Errore Comando
001080|CNC|FAULT|[1080] X:Reserved
001081|CNC|FAULT|[1081] X:Reserved
001082|CNC|FAULT|[1082] X:Reserved
001083|CNC|FAULT|[1083] X:Reserved
001084|CNC|FAULT|[1084] X:Reserved
001085|CNC|FAULT|[1085] X:Azionamento digitale non pronto
001086|CNC|FAULT|[1086] X:Dati non validi
001087|CNC|FAULT|[1087] X:Pacchetto dati corrotto errore di BCC
001088|CNC|FAULT|[1088] X:Rumore sulla linea di comunicazione con l'azionamento
001089|CNC|FAULT|[1089] X:Timeout comunicazione con azionamento digitale
001090|CNC|FAULT|[1090] Y:F.C. Avanti
001091|CNC|FAULT|[1091] Y:F.C. Indietro
001092|CNC|FAULT|[1092] Y:F.C. Software
001093|CNC|FAULT|[1093] Y:Allarme Asse: Richiesta esterna
001094|CNC|FAULT|[1094] Y:Errore Taratura
001095|CNC|FAULT|[1095] Y:Asse non definito
001096|CNC|FAULT|[1096] Y:Asse non presente e fly
001097|CNC|FAULT|[1097] Y:Errore Tolleranza
001098|CNC|FAULT|[1098] Y:Errore d'inseguimento
001099|CNC|FAULT|[1099] Y:Errore Offset
001100|CNC|FAULT|[1100] Y:Richiesta Allarme I/O di controllo
001101|CNC|FAULT|[1101] Y:Interfaccia DAC o Encoder mancante
001102|CNC|FAULT|[1102] Y:Mancanza conteggio Encoder
001103|CNC|FAULT|[1103] Y:Asse in collisione
001104|CNC|FAULT|[1104] Y:Gamma non presente
001105|CNC|FAULT|[1105] Y:Encoder non collegato
001106|CNC|FAULT|[1106] Y:Asse non disponibile
001107|CNC|FAULT|[1107] Y:Allarme Servodrive Digitale
001108|CNC|FAULT|[1108] Y:Disallineamento assi Gantry
001109|CNC|FAULT|[1109] Y:Allarme Protocollo CanOpen
001110|CNC|FAULT|[1110] Y:Drive in Allarme
001111|CNC|FAULT|[1111] Y:Errore Comando
001112|CNC|FAULT|[1112] Y:Reserved
001113|CNC|FAULT|[1113] Y:Reserved
001114|CNC|FAULT|[1114] Y:Reserved
001115|CNC|FAULT|[1115] Y:Reserved
001116|CNC|FAULT|[1116] Y:Reserved
001117|CNC|FAULT|[1117] Y:Azionamento digitale non pronto
001118|CNC|FAULT|[1118] Y:Dati non validi
001119|CNC|FAULT|[1119] Y:Pacchetto dati corrotto errore di BCC
001120|CNC|FAULT|[1120] Y:Rumore sulla linea di comunicazione con l'azionamento
001121|CNC|FAULT|[1121] Y:Timeout comunicazione con azionamento digitale
001122|CNC|FAULT|[1122] Z:F.C. Avanti
001123|CNC|FAULT|[1123] Z:F.C. Indietro
001124|CNC|FAULT|[1124] Z:F.C. Software
001125|CNC|FAULT|[1125] Z:Allarme Asse: Richiesta esterna
001126|CNC|FAULT|[1126] Z:Errore Taratura
001127|CNC|FAULT|[1127] Z:Asse non definito
001128|CNC|FAULT|[1128] Z:Asse non presente e fly
001129|CNC|FAULT|[1129] Z:Errore Tolleranza
001130|CNC|FAULT|[1130] Z:Errore d'inseguimento
001131|CNC|FAULT|[1131] Z:Errore Offset
001132|CNC|FAULT|[1132] Z:Richiesta Allarme I/O di controllo
001133|CNC|FAULT|[1133] Z:Interfaccia DAC o Encoder mancante
001134|CNC|FAULT|[1134] Z:Mancanza conteggio Encoder
001135|CNC|FAULT|[1135] Z:Asse in collisione
001136|CNC|FAULT|[1136] Z:Gamma non presente
001137|CNC|FAULT|[1137] Z:Encoder non collegato
001138|CNC|FAULT|[1138] Z:Asse non disponibile
001139|CNC|FAULT|[1139] Z:Allarme Servodrive Digitale
001140|CNC|FAULT|[1140] Z:Disallineamento assi Gantry
001141|CNC|FAULT|[1141] Z:Allarme Protocollo CanOpen
001142|CNC|FAULT|[1142] Z:Drive in Allarme
001143|CNC|FAULT|[1143] Z:Errore Comando
001144|CNC|FAULT|[1144] Z:Reserved
001145|CNC|FAULT|[1145] Z:Reserved
001146|CNC|FAULT|[1146] Z:Reserved
001147|CNC|FAULT|[1147] Z:Reserved
001148|CNC|FAULT|[1148] Z:Reserved
001149|CNC|FAULT|[1149] Z:Azionamento digitale non pronto
001150|CNC|FAULT|[1150] Z:Dati non validi
001151|CNC|FAULT|[1151] Z:Pacchetto dati corrotto errore di BCC
001152|CNC|FAULT|[1152] Z:Rumore sulla linea di comunicazione con l'azionamento
001153|CNC|FAULT|[1153] Z:Timeout comunicazione con azionamento digitale
001154|CNC|FAULT|[1154] U:F.C. Avanti
001155|CNC|FAULT|[1155] U:F.C. Indietro
001156|CNC|FAULT|[1156] U:F.C. Software
001157|CNC|FAULT|[1157] U:Allarme Asse: Richiesta esterna
001158|CNC|FAULT|[1158] U:Errore Taratura
001159|CNC|FAULT|[1159] U:Asse non definito
001160|CNC|FAULT|[1160] U:Asse non presente e fly
001161|CNC|FAULT|[1161] U:Errore Tolleranza
001162|CNC|FAULT|[1162] U:Errore d'inseguimento
001163|CNC|FAULT|[1163] U:Errore Offset
001164|CNC|FAULT|[1164] U:Richiesta Allarme I/O di controllo
001165|CNC|FAULT|[1165] U:Interfaccia DAC o Encoder mancante
001166|CNC|FAULT|[1166] U:Mancanza conteggio Encoder
001167|CNC|FAULT|[1167] U:Asse in collisione
001168|CNC|FAULT|[1168] U:Gamma non presente
001169|CNC|FAULT|[1169] U:Encoder non collegato
001170|CNC|FAULT|[1170] U:Asse non disponibile
001171|CNC|FAULT|[1171] U:Allarme Servodrive Digitale
001172|CNC|FAULT|[1172] U:Disallineamento assi Gantry
001173|CNC|FAULT|[1173] U:Allarme Protocollo CanOpen
001174|CNC|FAULT|[1174] U:Drive in Allarme
001175|CNC|FAULT|[1175] U:Errore Comando
001176|CNC|FAULT|[1176] U:Reserved
001177|CNC|FAULT|[1177] U:Reserved
001178|CNC|FAULT|[1178] U:Reserved
001179|CNC|FAULT|[1179] U:Reserved
001180|CNC|FAULT|[1180] U:Reserved
001181|CNC|FAULT|[1181] U:Azionamento digitale non pronto
001182|CNC|FAULT|[1182] U:Dati non validi
001183|CNC|FAULT|[1183] U:Pacchetto dati corrotto errore di BCC
001184|CNC|FAULT|[1184] U:Rumore sulla linea di comunicazione con l'azionamento
001185|CNC|FAULT|[1185] U:Timeout comunicazione con azionamento digitale
001186|CNC|FAULT|[1186] V:F.C. Avanti
001187|CNC|FAULT|[1187] V:F.C. Indietro
001188|CNC|FAULT|[1188] V:F.C. Software
001189|CNC|FAULT|[1189] V:Allarme Asse: Richiesta esterna
001190|CNC|FAULT|[1190] V:Errore Taratura
001191|CNC|FAULT|[1191] V:Asse non definito
001192|CNC|FAULT|[1192] V:Asse non presente e fly
001193|CNC|FAULT|[1193] V:Errore Tolleranza
001194|CNC|FAULT|[1194] V:Errore d'inseguimento
001195|CNC|FAULT|[1195] V:Errore Offset
001196|CNC|FAULT|[1196] V:Richiesta Allarme I/O di controllo
001197|CNC|FAULT|[1197] V:Interfaccia DAC o Encoder mancante
001198|CNC|FAULT|[1198] V:Mancanza conteggio Encoder
001199|CNC|FAULT|[1199] V:Asse in collisione
001200|CNC|FAULT|[1200] V:Gamma non presente
001201|CNC|FAULT|[1201] V:Encoder non collegato
001202|CNC|FAULT|[1202] V:Asse non disponibile
001203|CNC|FAULT|[1203] V:Allarme Servodrive Digitale
001204|CNC|FAULT|[1204] V:Disallineamento assi Gantry
001205|CNC|FAULT|[1205] V:Allarme Protocollo CanOpen
001206|CNC|FAULT|[1206] V:Drive in Allarme
001207|CNC|FAULT|[1207] V:Errore Comando
001208|CNC|FAULT|[1208] V:Reserved
001209|CNC|FAULT|[1209] V:Reserved
001210|CNC|FAULT|[1210] V:Reserved
001211|CNC|FAULT|[1211] V:Reserved
001212|CNC|FAULT|[1212] V:Reserved
001213|CNC|FAULT|[1213] V:Azionamento digitale non pronto
001214|CNC|FAULT|[1214] V:Dati non validi
001215|CNC|FAULT|[1215] V:Pacchetto dati corrotto errore di BCC
001216|CNC|FAULT|[1216] V:Rumore sulla linea di comunicazione con l'azionamento
001217|CNC|FAULT|[1217] V:Timeout comunicazione con azionamento digitale
001218|CNC|FAULT|[1218] W:F.C. Avanti
001219|CNC|FAULT|[1219] W:F.C. Indietro
001220|CNC|FAULT|[1220] W:F.C. Software
001221|CNC|FAULT|[1221] W:Allarme Asse: Richiesta esterna
001222|CNC|FAULT|[1222] W:Errore Taratura
001223|CNC|FAULT|[1223] W:Asse non definito
001224|CNC|FAULT|[1224] W:Asse non presente e fly
001225|CNC|FAULT|[1225] W:Errore Tolleranza
001226|CNC|FAULT|[1226] W:Errore d'inseguimento
001227|CNC|FAULT|[1227] W:Errore Offset
001228|CNC|FAULT|[1228] W:Richiesta Allarme I/O di controllo
001229|CNC|FAULT|[1229] W:Interfaccia DAC o Encoder mancante
001230|CNC|FAULT|[1230] W:Mancanza conteggio Encoder
001231|CNC|FAULT|[1231] W:Asse in collisione
001232|CNC|FAULT|[1232] W:Gamma non presente
001233|CNC|FAULT|[1233] W:Encoder non collegato
001234|CNC|FAULT|[1234] W:Asse non disponibile
001235|CNC|FAULT|[1235] W:Allarme Servodrive Digitale
001236|CNC|FAULT|[1236] W:Disallineamento assi Gantry
001237|CNC|FAULT|[1237] W:Allarme Protocollo CanOpen
001238|CNC|FAULT|[1238] W:Drive in Allarme
001239|CNC|FAULT|[1239] W:Errore Comando
001240|CNC|FAULT|[1240] W:Reserved
001241|CNC|FAULT|[1241] W:Reserved
001242|CNC|FAULT|[1242] W:Reserved
001243|CNC|FAULT|[1243] W:Reserved
001244|CNC|FAULT|[1244] W:Reserved
001245|CNC|FAULT|[1245] W:Azionamento digitale non pronto
001246|CNC|FAULT|[1246] W:Dati non validi
001247|CNC|FAULT|[1247] W:Pacchetto dati corrotto errore di BCC
001248|CNC|FAULT|[1248] W:Rumore sulla linea di comunicazione con l'azionamento
001249|CNC|FAULT|[1249] W:Timeout comunicazione con azionamento digitale
001250|CNC|FAULT|[1250] A:F.C. Avanti
001251|CNC|FAULT|[1251] A:F.C. Indietro
001252|CNC|FAULT|[1252] A:F.C. Software
001253|CNC|FAULT|[1253] A:Allarme Asse: Richiesta esterna
001254|CNC|FAULT|[1254] A:Errore Taratura
001255|CNC|FAULT|[1255] A:Asse non definito
001256|CNC|FAULT|[1256] A:Asse non presente e fly
001257|CNC|FAULT|[1257] A:Errore Tolleranza
001258|CNC|FAULT|[1258] A:Errore d'inseguimento
001259|CNC|FAULT|[1259] A:Errore Offset
001260|CNC|FAULT|[1260] A:Richiesta Allarme I/O di controllo
001261|CNC|FAULT|[1261] A:Interfaccia DAC o Encoder mancante
001262|CNC|FAULT|[1262] A:Mancanza conteggio Encoder
001263|CNC|FAULT|[1263] A:Asse in collisione
001264|CNC|FAULT|[1264] A:Gamma non presente
001265|CNC|FAULT|[1265] A:Encoder non collegato
001266|CNC|FAULT|[1266] A:Asse non disponibile
001267|CNC|FAULT|[1267] A:Allarme Servodrive Digitale
001268|CNC|FAULT|[1268] A:Disallineamento assi Gantry
001269|CNC|FAULT|[1269] A:Allarme Protocollo CanOpen
001270|CNC|FAULT|[1270] A:Drive in Allarme
001271|CNC|FAULT|[1271] A:Errore Comando
001272|CNC|FAULT|[1272] A:Reserved
001273|CNC|FAULT|[1273] A:Reserved
001274|CNC|FAULT|[1274] A:Reserved
001275|CNC|FAULT|[1275] A:Reserved
001276|CNC|FAULT|[1276] A:Reserved
001277|CNC|FAULT|[1277] A:Azionamento digitale non pronto
001278|CNC|FAULT|[1278] A:Dati non validi
001279|CNC|FAULT|[1279] A:Pacchetto dati corrotto errore di BCC
001280|CNC|FAULT|[1280] A:Rumore sulla linea di comunicazione con l'azionamento
001281|CNC|FAULT|[1281] A:Timeout comunicazione con azionamento digitale
001282|CNC|FAULT|[1282] B:F.C. Avanti
001283|CNC|FAULT|[1283] B:F.C. Indietro
001284|CNC|FAULT|[1284] B:F.C. Software
001285|CNC|FAULT|[1285] B:Allarme Asse: Richiesta esterna
001286|CNC|FAULT|[1286] B:Errore Taratura
001287|CNC|FAULT|[1287] B:Asse non definito
001288|CNC|FAULT|[1288] B:Asse non presente e fly
001289|CNC|FAULT|[1289] B:Errore Tolleranza
001290|CNC|FAULT|[1290] B:Errore d'inseguimento
001291|CNC|FAULT|[1291] B:Errore Offset
001292|CNC|FAULT|[1292] B:Richiesta Allarme I/O di controllo
001293|CNC|FAULT|[1293] B:Interfaccia DAC o Encoder mancante
001294|CNC|FAULT|[1294] B:Mancanza conteggio Encoder
001295|CNC|FAULT|[1295] B:Asse in collisione
001296|CNC|FAULT|[1296] B:Gamma non presente
001297|CNC|FAULT|[1297] B:Encoder non collegato
001298|CNC|FAULT|[1298] B:Asse non disponibile
001299|CNC|FAULT|[1299] B:Allarme Servodrive Digitale
001300|CNC|FAULT|[1300] B:Disallineamento assi Gantry
001301|CNC|FAULT|[1301] B:Allarme Protocollo CanOpen
001302|CNC|FAULT|[1302] B:Drive in Allarme
001303|CNC|FAULT|[1303] B:Errore Comando
001304|CNC|FAULT|[1304] B:Reserved
001305|CNC|FAULT|[1305] B:Reserved
001306|CNC|FAULT|[1306] B:Reserved
001307|CNC|FAULT|[1307] B:Reserved
001308|CNC|FAULT|[1308] B:Reserved
001309|CNC|FAULT|[1309] B:Azionamento digitale non pronto
001310|CNC|FAULT|[1310] B:Dati non validi
001311|CNC|FAULT|[1311] B:Pacchetto dati corrotto errore di BCC
001312|CNC|FAULT|[1312] B:Rumore sulla linea di comunicazione con l'azionamento
001313|CNC|FAULT|[1313] B:Timeout comunicazione con azionamento digitale
001314|CNC|FAULT|[1314] C:F.C. Avanti
001315|CNC|FAULT|[1315] C:F.C. Indietro
001316|CNC|FAULT|[1316] C:F.C. Software
001317|CNC|FAULT|[1317] C:Allarme Asse: Richiesta esterna
001318|CNC|FAULT|[1318] C:Errore Taratura
001319|CNC|FAULT|[1319] C:Asse non definito
001320|CNC|FAULT|[1320] C:Asse non presente e fly
001321|CNC|FAULT|[1321] C:Errore Tolleranza
001322|CNC|FAULT|[1322] C:Errore d'inseguimento
001323|CNC|FAULT|[1323] C:Errore Offset
001324|CNC|FAULT|[1324] C:Richiesta Allarme I/O di controllo
001325|CNC|FAULT|[1325] C:Interfaccia DAC o Encoder mancante
001326|CNC|FAULT|[1326] C:Mancanza conteggio Encoder
001327|CNC|FAULT|[1327] C:Asse in collisione
001328|CNC|FAULT|[1328] C:Gamma non presente
001329|CNC|FAULT|[1329] C:Encoder non collegato
001330|CNC|FAULT|[1330] C:Asse non disponibile
001331|CNC|FAULT|[1331] C:Allarme Servodrive Digitale
001332|CNC|FAULT|[1332] C:Disallineamento Assi Gantry
001333|CNC|FAULT|[1333] C:Allarme Protocollo CanOpen
001334|CNC|FAULT|[1334] C:Drive Guasto
001335|CNC|FAULT|[1335] C:Errore Comando
001336|CNC|FAULT|[1336] C:Reserved
001337|CNC|FAULT|[1337] C:Reserved
001338|CNC|FAULT|[1338] C:Reserved
001339|CNC|FAULT|[1339] C:Reserved
001340|CNC|FAULT|[1340] C:Reserved
001341|CNC|FAULT|[1341] C:Azionamento digitale non pronto
001342|CNC|FAULT|[1342] C:Dati non validi
001343|CNC|FAULT|[1343] C:Pacchetto dati corrotto errore di BCC
001344|CNC|FAULT|[1344] C:Rumore sulla linea di comunicazione con l'azionamento
001345|CNC|FAULT|[1345] C:Timeout comunicazione con azionamento digitale
Binary file not shown.
-98
View File
@@ -1,98 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MTC_Adapter
{
public static class EnumerationExtensions
{
/// <summary>
/// checks if the value contains the provided type
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="type"></param>
/// <param name="value"></param>
/// <returns></returns>
public static bool Has<T>(this System.Enum type, T value)
{
try
{
return (((int)(object)type & (int)(object)value) == (int)(object)value);
}
catch
{
return false;
}
}
/// <summary>
/// checks if the value is only the provided type
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="type"></param>
/// <param name="value"></param>
/// <returns></returns>
public static bool Is<T>(this System.Enum type, T value)
{
try
{
return (int)(object)type == (int)(object)value;
}
catch
{
return false;
}
}
/// <summary>
/// appends a value
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="type"></param>
/// <param name="value"></param>
/// <returns></returns>
public static T Add<T>(this System.Enum type, T value)
{
try
{
return (T)(object)(((int)(object)type | (int)(object)value));
}
catch (Exception ex)
{
throw new ArgumentException(
string.Format(
"Could not append value from enumerated type '{0}'.",
typeof(T).Name
), ex);
}
}
/// <summary>
/// completely removes the value
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="type"></param>
/// <param name="value"></param>
/// <returns></returns>
public static T Remove<T>(this System.Enum type, T value)
{
try
{
return (T)(object)(((int)(object)type & ~(int)(object)value));
}
catch (Exception ex)
{
throw new ArgumentException(
string.Format(
"Could not remove value from enumerated type '{0}'.",
typeof(T).Name
), ex);
}
}
}
}
-382
View File
@@ -1,382 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{736DF121-11E6-4D46-835D-6560ACF241E4}</ProjectGuid>
<OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>MTC_Adapter</RootNamespace>
<AssemblyName>MTC_Adapter</AssemblyName>
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<IsWebBootstrapper>false</IsWebBootstrapper>
<PublishUrl>publish\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
<TargetFrameworkProfile />
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<UseVSHostingProcess>true</UseVSHostingProcess>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>Resources\MTCA.ico</ApplicationIcon>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'CMS-FANUC|AnyCPU' ">
<OutputPath>bin\CMS-FANUC\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>AnyCPU</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'SCM-ESA|AnyCPU' ">
<OutputPath>bin\SCM-ESA\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>AnyCPU</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'CMS-SIEMENS|AnyCPU'">
<OutputPath>bin\CMS-SIEMENS\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>AnyCPU</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'CMS-OSAI|AnyCPU'">
<OutputPath>bin\CMS-OSAI\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>AnyCPU</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="DotNetAdapterSDK, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>ExtLib\DotNetAdapterSDK.dll</HintPath>
</Reference>
<Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
<HintPath>..\packages\NLog.4.4.4\lib\net45\NLog.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System" />
<Reference Include="System.configuration" />
<Reference Include="System.Core" />
<Reference Include="System.Numerics" />
<Reference Include="System.Web.Extensions" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\VersGen\VersGen.cs">
<Link>VersGen.cs</Link>
</Compile>
<Compile Include="AdapterConf.cs" />
<Compile Include="AdapterESA.cs" />
<Compile Include="AdapterOsai.cs" />
<Compile Include="AdapterSiemens.cs" />
<Compile Include="AdapterGeneric.cs" />
<Compile Include="AdapterDemo.cs" />
<Compile Include="AdapterFanuc.cs" />
<Compile Include="MainForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="MainForm.Designer.cs">
<DependentUpon>MainForm.cs</DependentUpon>
</Compile>
<Compile Include="EnumExtensions.cs" />
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="SetupAdapter.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="SetupAdapter.Designer.cs">
<DependentUpon>SetupAdapter.cs</DependentUpon>
</Compile>
<Compile Include="utils.cs" />
<EmbeddedResource Include="MainForm.resx">
<DependentUpon>MainForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<EmbeddedResource Include="SetupAdapter.resx">
<DependentUpon>SetupAdapter.cs</DependentUpon>
</EmbeddedResource>
<Content Include="Resources\CMS\Appunti CMS OSAI.txt" />
<Content Include="Resources\CMS\OSAI.xml">
<SubType>Designer</SubType>
</Content>
<Content Include="Resources\CMS\SIEMENS.xml">
<SubType>Designer</SubType>
</Content>
<Content Include="Resources\SCM\SCM_ESA.xml" />
<Content Include="Readme\Analisi tempi.txt" />
<None Include="App.CMS-OSAI.config">
<DependentUpon>App.config</DependentUpon>
<IsTransformFile>True</IsTransformFile>
</None>
<None Include="App.CMS-SIEMENS.config">
<DependentUpon>App.config</DependentUpon>
<IsTransformFile>True</IsTransformFile>
</None>
<None Include="DATA\CONF\AlarmListCNC.map">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="DATA\CONF\CounterList.map">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="App.CMS-FANUC.config">
<DependentUpon>App.config</DependentUpon>
<IsTransformFile>True</IsTransformFile>
</None>
<None Include="App.SCM-ESA.config">
<DependentUpon>App.config</DependentUpon>
<SubType>Designer</SubType>
<IsTransformFile>True</IsTransformFile>
</None>
<None Include="DATA\CmsGeneralStatus.mtc" />
<None Include="DATA\CONF\EsaKvara.ini" />
<None Include="DATA\CONF\IOT_ByteList.map">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="DATA\CONF\IOT_DWordList.map">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="DATA\CONF\IOT_StringList.map">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="DATA\CONF\IOT_WordList.map">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="NLog.xsd">
<SubType>Designer</SubType>
</None>
<None Include="Resources\CMS\AlarmListOSAI.map" />
<None Include="Resources\CMS\AlarmListEmpty.map" />
<None Include="Resources\SCM\AlarmListEsaGvCNC.map" />
<None Include="Resources\SCM\cnc.msg" />
<None Include="Resources\SCM\IOT_StringList.map" />
<None Include="Resources\SCM\IOT_DWordList.map" />
<None Include="Resources\SCM\IOT_WordList.map" />
<None Include="DATA\CONF\StatusList.map">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<Content Include="DATA\CONF\Adapter_ItemList.xml">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
<SubType>Designer</SubType>
</Content>
<Content Include="ExtLib\DotNetAdapterSDK.dll" />
<Content Include="Resources\CMS\probe.xml">
<SubType>Designer</SubType>
</Content>
<None Include="Resources\SCM\IOT_ByteList.map" />
<None Include="packages.config" />
<None Include="Resources\CMS\AlarmListSIEMENS.map" />
<None Include="Resources\SCM\AlarmListEsaGv.map" />
<Content Include="Resources\SCM\Appunti doc CFG.txt" />
<Content Include="Resources\SCM\Appunti SCM.txt" />
<Content Include="Resources\SCM\DecodFileProd.txt" />
<Content Include="Resources\SCM\IstruzioniTestProd.txt" />
<Content Include="Resources\SCM\README.txt" />
<Content Include="Resources\SCM\scm_logo_blu.png" />
<Content Include="Resources\SCM\scm_logo_blu_resize.png" />
<Content Include="Resources\SCM\VariabiliContatori.txt" />
<Content Include="Resources\CMS\CMS.ico" />
<Content Include="dump\dump.exe">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="logs\.placeholder.txt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="Resources\SCM\SCM.ico" />
<Content Include="Resources\MTCA.ico">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<None Include="DATA\CONF\SubModeList.map">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<Content Include="NLog.config">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<None Include="App.Debug.config">
<DependentUpon>App.config</DependentUpon>
<IsTransformFile>True</IsTransformFile>
</None>
<None Include="App.Release.config">
<DependentUpon>App.config</DependentUpon>
<IsTransformFile>True</IsTransformFile>
</None>
<None Include="DATA\DAT\PersistData.dat">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="Resources\SCM\app.msg" />
<None Include="Resources\SCM\convertScmAlarm.ps1" />
<Content Include="Resources\SCM\EsaKvara_SIM.ini" />
<None Include="dump\build.bat" />
<None Include="dump\dump.c" />
<None Include="dump\dump.obj" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
<Content Include="Resources\SCM\EsaKvara_PROD.ini" />
<None Include="Resources\SCM\SCM_prodFile.pro" />
<Content Include="Resources\SCM\SCM_prodFile-demo.pro" />
<None Include="setupTgt.bat" />
</ItemGroup>
<ItemGroup>
<None Include="App.config">
<SubType>Designer</SubType>
<TransformOnBuild>true</TransformOnBuild>
</None>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\CMSCncLib\CMSCncLib.vbproj">
<Project>{2d769ffd-1122-4276-a115-29246e6d23c5}</Project>
<Name>CMSCncLib</Name>
</ProjectReference>
<ProjectReference Include="..\MTC\MTC.csproj">
<Project>{ec83d80e-9f3b-4de9-b16a-ca216543b7ec}</Project>
<Name>MTC</Name>
</ProjectReference>
<ProjectReference Include="..\SCMCncLib\SCMCncLib.csproj">
<Project>{7a12fe26-9c58-4630-973d-d4872374dbaf}</Project>
<Name>SCMCncLib</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Content Include="Resources\CMS\FANUC.xml">
<SubType>Designer</SubType>
</Content>
<None Include="DATA\CONF\AlarmList.map">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="Resources\CMS\AlarmListFANUC.map" />
<Content Include="Resources\CMS\Appunti CMS FANUC.txt" />
<None Include="DATA\CONF\HaltTypeList.map">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include=".NETFramework,Version=v4.5.2">
<Visible>False</Visible>
<ProductName>Microsoft .NET Framework 4.5.2 %28x86 and x64%29</ProductName>
<Install>true</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1</ProductName>
<Install>false</Install>
</BootstrapperPackage>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Web\Microsoft.Web.Publishing.Tasks.dll" />
<Target Name="AfterCompile" Condition="Exists('App.$(Configuration).config')">
<!--Generate transformed app config in the intermediate directory-->
<TransformXml Source="App.config" Destination="$(IntermediateOutputPath)$(TargetFileName).config" Transform="App.$(Configuration).config" />
<!--Force build process to use the transformed configuration file from now on.-->
<ItemGroup>
<AppConfigWithTargetPath Remove="App.config" />
<AppConfigWithTargetPath Include="$(IntermediateOutputPath)$(TargetFileName).config">
<TargetPath>$(TargetFileName).config</TargetPath>
</AppConfigWithTargetPath>
</ItemGroup>
</Target>
<PropertyGroup>
<PreBuildEvent>"$(ProjectDir)setupTgt.bat" "$(ConfigurationName)" "$(ProjectDir)"</PreBuildEvent>
</PropertyGroup>
<!--Override After Publish to support ClickOnce AfterPublish. Target replaces the untransformed config file copied to the deployment directory with the transformed one.-->
<Target Name="AfterPublish">
<PropertyGroup>
<DeployedConfig>$(_DeploymentApplicationDir)$(TargetName)$(TargetExt).config$(_DeploymentFileMappingExtension)</DeployedConfig>
</PropertyGroup>
<!--Publish copies the untransformed App.config to deployment directory so overwrite it-->
<Copy Condition="Exists('$(DeployedConfig)')" SourceFiles="$(IntermediateOutputPath)$(TargetFileName).config" DestinationFiles="$(DeployedConfig)" />
</Target>
<Target Name="AfterBuild">
<ItemGroup>
<MoveToLibFolder Include="$(OutputPath)*.dll ; $(OutputPath)*.pdb ; $(OutputPath)*.xml" />
</ItemGroup>
<Move SourceFiles="@(MoveToLibFolder)" DestinationFolder="$(OutputPath)lib" OverwriteReadOnlyFiles="true" />
</Target>
<Import Project="..\packages\SlowCheetah.2.5.48\build\SlowCheetah.targets" Condition="Exists('..\packages\SlowCheetah.2.5.48\build\SlowCheetah.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>Questo progetto fa riferimento a uno o più pacchetti NuGet che non sono presenti in questo computer. Usare lo strumento di ripristino dei pacchetti NuGet per scaricarli. Per altre informazioni, vedere http://go.microsoft.com/fwlink/?LinkID=322105. Il file mancante è {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\SlowCheetah.2.5.48\build\SlowCheetah.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\SlowCheetah.2.5.48\build\SlowCheetah.targets'))" />
</Target>
</Project>
File diff suppressed because it is too large Load Diff
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 145 KiB

-409
View File
@@ -1,409 +0,0 @@
namespace MTC_Adapter
{
partial class SetupAdapter
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
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.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",
"SIEMENS"});
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);
this.nMemArea.Name = "nMemArea";
this.nMemArea.Size = new System.Drawing.Size(43, 22);
this.nMemArea.TabIndex = 26;
this.nMemArea.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.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();
}
#endregion
private System.Windows.Forms.TextBox txtAdapter;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.TextBox txtFileName;
private System.Windows.Forms.Button btnSave;
private System.Windows.Forms.Button btnLoad;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.TextBox nVacPump;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.TextBox nVacAct;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.ComboBox cbTipoAdapt;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.TextBox nLubro;
private System.Windows.Forms.Label label7;
private System.Windows.Forms.TextBox nCooler;
private System.Windows.Forms.Label label8;
private System.Windows.Forms.TextBox nPress;
private System.Windows.Forms.Label label9;
private System.Windows.Forms.TextBox nTempe;
private System.Windows.Forms.Label label10;
private System.Windows.Forms.TextBox nPath;
private System.Windows.Forms.Label label11;
private System.Windows.Forms.TextBox nUnOp;
private System.Windows.Forms.Label label12;
private System.Windows.Forms.TextBox nAssi;
private System.Windows.Forms.Label label13;
private System.Windows.Forms.TextBox nMemArea;
}
}
-480
View File
@@ -1,480 +0,0 @@
using MTC;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace MTC_Adapter
{
public partial class SetupAdapter : Form
{
public SetupAdapter()
{
InitializeComponent();
// fix icon!
this.Icon = Icon.ExtractAssociatedIcon(defIconFilePath);
}
protected string defIconFilePath
{
get
{
return string.Format(@"{0}\MTCA.ico", utils.resxDir);
}
}
/// <summary>
/// Percorso file completo
/// </summary>
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 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 "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<DataRefItem<string, string>> 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<DataRefItem<string, string>>();
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<DataRefItem<string, string>>();
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<DataRefItem<string, string>>();
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<DataRefItem<string, string>>();
Lubro[i] = new element(string.Format("Lubro_{0:00}", i + 1), listaDR);
}
// salvo oggetto
c.Lubro = Lubro;
}
// 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<DataRefItem<string, string>>();
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<DataRefItem<string, string>>();
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<DataRefItem<string, string>>();
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<DataRefItem<string, string>>();
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<DataRefItem<string, string>>();
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<DataRefItem<string, string>>();
// 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, string>(string.Format("Axis_{0:00}_Type", i + 1), "LINEAR"));
listaDR.Add(new DataRefItem<string, string>(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, string>(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, string>(string.Format("Axis_{0:00}_Type", i + 1), "LINEAR"));
listaDR.Add(new DataRefItem<string, string>(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();
//cbTipoAdapt.Refresh();
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;
// salvo assi correnti...
oAxisLoad = objLoad.Axis;
}
}
}
-8
View File
@@ -1,8 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="NLog" version="4.4.4" targetFramework="net452" />
<package id="NLog.Config" version="4.4.4" targetFramework="net452" />
<package id="NLog.Schema" version="4.4.4" targetFramework="net452" />
<package id="PrettyBin" version="1.1.0" targetFramework="net452" />
<package id="SlowCheetah" version="2.5.48" targetFramework="net452" />
</packages>
-49
View File
@@ -1,49 +0,0 @@
using System.Windows.Forms;
using MTC;
namespace MTC_Adapter
{
public class utils : MTC.baseUtils
{
/// <summary>
/// folder archiviazione dati configurazione (DATA\CONF)
/// </summary>
public static string resxDir
{
get
{
return string.Format(@"{0}\{1}", Application.StartupPath, CRS("resxPath"));
}
}
/// <summary>
/// folder archiviazione dati configurazione (DATA\CONF)
/// </summary>
public static string confDir
{
get
{
return string.Format(@"{0}\{1}", Application.StartupPath, CRS("dataConfPath"));
}
}
/// <summary>
/// folder archiviazione dati storici giornalieri (DATA\DAT)
/// </summary>
public static string dataDatDir
{
get
{
return string.Format(@"{0}\{1}", Application.StartupPath, CRS("dataDatPath"));
}
}
/// <summary>
/// folder archiviazione dati (DATA)
/// </summary>
public static string dataDir
{
get
{
return string.Format(@"{0}\{1}", Application.StartupPath, CRS("dataPath"));
}
}
}
}
+16
View File
@@ -0,0 +1,16 @@
G1128 ed F1343
leggo bit, se in AND sono 1 --> processo migrato
parametro 981 --> assegno a
1
1
1
2
2
2
1
1
1
devo guardare dove ho 2 (processo predisposto) e se i bit sono 1 --> sono spostati di PROCESSO, e devo guardare quelli...
+707
View File
@@ -0,0 +1,707 @@
using MTC;
using NLog;
using System;
using System.Collections;
using System.Collections.Generic;
namespace OPC_UA_REDIS
{
public class AdapterRed
{
/// <summary>
/// wrapper di log
/// </summary>
public static Logger lg;
/// <summary>
/// Determina se il server redis sia attivo e connesso (check periodico...)
/// </summary>
public bool redServAlive;
/// <summary>
/// DataOra ultimo controllo stato server REDIS
/// </summary>
protected DateTime lastRedSrvCheck;
/// <summary>
/// Bool x verifica SE SIANO DA INVIARE info in fase di START (no se REDIS non attivo...)
/// </summary>
protected bool startData2Send = false;
/// <summary>
/// Bool x verifica SE SIANO DA INVIARE info in fase di STOP (no se REDIS non attivo...)
/// </summary>
protected bool stopData2Send = false;
/// <summary>
/// Bool x verifica SE SIANO DA INVIARE info in fase di REFRESH (no se REDIS non attivo...)
/// </summary>
protected bool refreshData2Send = false;
/// <summary>
/// Metodo send changed iniziato e stiamo inviando conditions.
/// </summary>
bool mBegun = false;
/// <summary>
/// DataModel di riferimento
/// </summary>
public string DataModel;
/// <summary>
/// Oggetto elenco allarmi (in + lingue...)
/// </summary>
public allarme[] elencoAllarmi { get; set; }
/// <summary>
/// Dizionario REGOLE conversione nome variabili con replace "like" (per gestione REDIS "_" --> ":")
/// </summary>
public Dictionary<string, replDict> nameRepRoles { get; set; }
/// <summary>
/// Dizionario di TUTTE le conversioni variabili (MTC-->OPC-UA) applicate
/// </summary>
public Dictionary<string, string> nameReplaced = new Dictionary<string, string>();
/// <summary>
/// Dizionario di TUTTE le conversioni variabili (OPC-UA-->MTC) applicate
/// </summary>
public Dictionary<string, string> nameReplacedInvert = new Dictionary<string, string>();
/// <summary>
/// Dizionario di TUTTE le variabili ESCLUSE (filtrate)
/// </summary>
public Dictionary<string, string> nameExcluded = new Dictionary<string, string>();
/// <summary>
/// Elenco di TUTTI i NODI ITEMS gestiti dal gateway (item/variabile)...
/// </summary>
public Dictionary<string, itemNode> itemNodes { get; set; }
/// <summary>
/// Elenco di TUTTI i NODI CONDITIONS gestiti dal gateway (allarme/condizione)...
/// </summary>
public Dictionary<string, itemNode> conditionNodes { get; set; }
/// <summary>
/// All the data items we're tracking.
/// </summary>
private ArrayList mDataItems = new ArrayList();
/// <summary>
/// Classe adapter verso REDIS
/// </summary>
/// <param name="sPort"></param>
/// <param name="sAddress"></param>
/// <param name="verbose"></param>
public AdapterRed(int sPort = 6379, string sAddress = "127.0.0.1", bool verbose = false)
{
lg = LogManager.GetCurrentClassLogger();
ServerPort = sPort;
ServerAddr = sAddress;
Verbose = verbose;
nameRepRoles = new Dictionary<string, replDict>();
itemNodes = new Dictionary<string, itemNode>();
conditionNodes = new Dictionary<string, itemNode>();
// aggiungo controllo server...
checkAlive();
lastRedSrvCheck = DateTime.Now;
}
/// <summary>
/// Controlla stato server alive
/// </summary>
private void checkAlive()
{
bool newStatus = redUtil.connRedis.IsConnected;
// controllo se cambia lo stato...
string message = "";
if (redServAlive != newStatus)
{
message = newStatus ? "Server REDIS tornato ONLINE! salvo aggiornamento di stato" : "Server REDIS offline, impossibile inviare aggiornamenti.";
lg.Info(message);
redServAlive = newStatus;
if (newStatus)
{
checkRedisStatusAndSend();
}
}
}
public int Heartbeat { get; set; }
public bool Running { get; }
public int ServerPort { get; set; }
public string ServerAddr { get; set; }
public bool Verbose { get; set; }
#region metodi esposti
/// <summary>
/// The asks all data items to begin themselves for collection. Only
/// required for conditions and should not be called if you are not
/// planning on adding all the conditions before you send. If you skip this
/// the adapter will not perform the mark and sweep.
/// </summary>
public void Begin()
{
mBegun = true;
foreach (DataItemRed di in mDataItems)
{
di.Begin();
}
}
/// <summary>
/// Aggiunta di un DataItem (generico)
/// </summary>
/// <param name="aDI"></param>
public void AddDataItem(DataItemRed aDI)
{
// controllo se ci sia già (sennò NON duplico...)
if (!mDataItems.Contains(aDI))
{
mDataItems.Add(aDI);
}
}
/// <summary>
/// Remove all data items.
/// </summary>
public void RemoveAllDataItems()
{
mDataItems.Clear();
}
/// <summary>
/// Remove a data item from the adapter.
/// </summary>
/// <param name="aItem"></param>
public void RemoveDataItem(DataItemRed aItem)
{
int ind = mDataItems.IndexOf(aItem);
if (ind >= 0)
{
mDataItems.RemoveAt(ind);
}
}
/// <summary>
/// Make all data items unavailable
/// </summary>
public void Unavailable()
{
foreach (DataItemRed di in mDataItems)
{
di.Unavailable();
}
}
/// <summary>
/// Effettua invio di tutte le variabili modificate...
/// </summary>
/// <param name="timestamp"></param>
public void SendChanged()
{
// registro che necessito invio dati STOP
refreshData2Send = true;
if (redServAlive)
{
sendChangedData(false);
}
else
{
// controllo se sia scaduto timeout 5 sec prima di scrivere errore...
if (DateTime.Now.AddSeconds(-baseUtils.CRI("logRedConnWaitTime")) > lastRedSrvCheck)
{
lg.Error("Attenzione! server REDIS non disponibile (SendChanged)");
lastRedSrvCheck = DateTime.Now;
}
}
// forzo controllo stato
checkAlive();
}
/// <summary>
/// Invio dati modificati
/// </summary>
/// <param name="forceSend">forza invio di TUTTO comunque...</param>
/// <returns></returns>
private string sendChangedData(bool forceSend = false)
{
string timestamp = null;
// var accessorie
string hashKey = "";
string hashVal = "";
if (mBegun)
{
foreach (DataItemRed di in mDataItems)
{
di.Prepare();
}
}
// Separate out the data items into those that are on one line and those
// need separate lines.
List<DataItemRed> together = new List<DataItemRed>();
foreach (DataItemRed di in mDataItems)
{
List<DataItemRed> list = di.ItemList(forceSend);
together.AddRange(list);
}
if (timestamp == null)
{
timestamp = DateTime.UtcNow.ToString("yyyy-MM-dd\\THH:mm:ss.fffK");
}
if (redServAlive)
{
if (together.Count > 0)
{
// salvo su REDIS!!!
foreach (DataItemRed di in together)
{
hashKey = machineHash(di.Name);
hashVal = di.Value.ToString().Trim();
saveHashKeyVal(hashKey, hashVal);
}
}
// salvo anche heartbeat e running...
hashKey = redUtil.man.redHash("Adp:Heartbeat");
saveHashKeyVal(hashKey, timestamp);
hashKey = redUtil.man.redHash("Adp:Status");
hashVal = "running";
saveHashKeyVal(hashKey, hashVal);
}
else
{
lg.Error("Attenzione! server REDIS non disponibile (SendChanged:toghether)");
checkAlive();
}
// Cleanup
foreach (DataItemRed di in mDataItems)
{
di.Cleanup();
}
// finito
mBegun = false;
return timestamp;
}
/// <summary>
/// Salva hask KeyVal in REDIS
/// </summary>
/// <param name="hashKey"></param>
/// <param name="hashVal"></param>
private static void saveHashKeyVal(string hashKey, string hashVal)
{
if (!hashKey.EndsWith("NONE"))
{
redUtil.man.setRSV(hashKey, hashVal);
}
}
/// <summary>
/// Arresto adapter
/// </summary>
public void Stop()
{
// registro che necessito invio dati STOP
stopData2Send = true;
if (redServAlive)
{
sendStopData();
}
else
{
lg.Error("Attenzione! server REDIS non disponibile (STOP)");
// forzo controllo stato
checkAlive();
}
}
/// <summary>
/// Invio dati in fase di CHIUSURA
/// </summary>
private void sendStopData()
{
// var accessorie
string hashKey = "";
string hashVal = "";
// Imposto CONF
hashKey = redUtil.man.redHash("Adp:Status");
hashVal = string.Format("stopped");
saveHashKeyVal(hashKey, hashVal);
hashKey = redUtil.man.redHash("Adp:Heartbeat");
hashVal = DateTime.UtcNow.ToString("yyyy-MM-dd\\THH:mm:ss.fffK");
saveHashKeyVal(hashKey, hashVal);
// SOLO se richiesto FULL RESET...
if (baseUtils.CRB("fullReset"))
{
// ora il valore delle chaivi diventa unavailable...
hashVal = availStatus.UNAVAILABLE.ToString();
// percorro tutto l'albero nodi item ed allarmi e SCRIVO!!!!
foreach (var item in itemNodes)
{
hashKey = machineHash(item.Key);
saveHashKeyVal(hashKey, hashVal);
}
}
stopData2Send = false;
}
/// <summary>
/// Aggiorna stato redis server + invio dati pending
/// </summary>
private void checkRedisStatusAndSend()
{
// verifico eventuali invii pending... SE connesso...
if (redServAlive)
{
if (startData2Send)
{
sendStartData();
lg.Info("Reinviati dati sendStartData");
}
if (refreshData2Send)
{
sendChangedData(true);
lg.Info("Reinviati dati sendChangedData");
}
if (stopData2Send)
{
sendStopData();
lg.Info("Reinviati dati sendStopData");
}
}
// aggiorno stato redis
checkAlive();
}
/// <summary>
/// Avvio adapter (popolamento iniziale su redis...)
/// </summary>
public void Start()
{
// registro che necessito invio dati START
startData2Send = true;
stopData2Send = false;
if (redServAlive)
{
sendStartData();
}
else
{
lg.Error("Attenzione! server REDIS non disponibile (START)");
// forzo controllo stato
checkAlive();
}
}
/// <summary>
/// Decodifica il livello di severiti da testo a numerico:
/// 900 Alarm
/// 500 Warning
/// 200 Info
/// 100 Maintenance
/// </summary>
/// <param name="livello"></param>
/// <returns></returns>
public static string condLevel(string livello)
{
string answ = "0";
switch (livello.ToLower())
{
case "alarm":
case "fault":
answ = "900";
break;
case "warning":
answ = "500";
break;
case "info":
answ = "200";
break;
case "maintenance":
answ = "100";
break;
default:
// verifico sia una stringa
int lev = 0;
int.TryParse(livello, out lev);
answ = lev.ToString("000");
break;
}
return answ;
}
/// <summary>
/// Invio dati in fase di AVVIO
/// </summary>
private void sendStartData()
{
// var accessorie
string hashKey = "";
string hashVal = "";
string nLevel = "";
var listCNC_curr = new List<KeyValuePair<string, string>>();
var listPLC_curr = new List<KeyValuePair<string, string>>();
var listHMI_curr = new List<KeyValuePair<string, string>>();
var listCNC_it = new List<KeyValuePair<string, string>>();
var listPLC_it = new List<KeyValuePair<string, string>>();
var listHMI_it = new List<KeyValuePair<string, string>>();
var listCNC_en = new List<KeyValuePair<string, string>>();
var listPLC_en = new List<KeyValuePair<string, string>>();
var listHMI_en = new List<KeyValuePair<string, string>>();
// resetto TUTTE le aree di competenza
redUtil.man.redFlushKey(redUtil.man.redHash("AdpVeto*"));
redUtil.man.redFlushKey(redUtil.man.redHash("AdpConf*"));
redUtil.man.redFlushKey(redUtil.man.redHash("Adp*"));
redUtil.man.redFlushKey(redUtil.man.redHash("Machine*"));
// imposto valori "empty" di default....
listCNC_curr.Add(new KeyValuePair<string, string>("000000000000|000", "NONE"));
listCNC_en.Add(new KeyValuePair<string, string>("000000000000|000", "NONE"));
listCNC_it.Add(new KeyValuePair<string, string>("000000000000|000", "NONE"));
listHMI_curr.Add(new KeyValuePair<string, string>("000000000000|000", "NONE"));
listHMI_en.Add(new KeyValuePair<string, string>("000000000000|000", "NONE"));
listHMI_it.Add(new KeyValuePair<string, string>("000000000000|000", "NONE"));
listPLC_curr.Add(new KeyValuePair<string, string>("000000000000|000", "NONE"));
listPLC_en.Add(new KeyValuePair<string, string>("000000000000|000", "NONE"));
listPLC_it.Add(new KeyValuePair<string, string>("000000000000|000", "NONE"));
// Imposto CONF
hashKey = redUtil.man.redHash("Adp:Vers");
hashVal = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString();
saveHashKeyVal(hashKey, hashVal);
hashKey = redUtil.man.redHash("Adp:Status");
hashVal = "started";
saveHashKeyVal(hashKey, hashVal);
hashKey = redUtil.man.redHash("Adp:Heartbeat");
hashVal = DateTime.UtcNow.ToString("yyyy-MM-dd\\THH:mm:ss.fffK");
saveHashKeyVal(hashKey, hashVal);
// allarmi CNC, aggiungo Curr (rif SOURS 2018.11.14)
foreach (var item in elencoAllarmi)
{
// aggiungo secondo gruppo
if (item.gruppo.ToUpper().Contains("CNC"))
{
nLevel = condLevel(item.livello);
listCNC_curr.Add(new KeyValuePair<string, string>(item.codNum + "|" + nLevel, item.descrizione));
listCNC_en.Add(new KeyValuePair<string, string>(item.codNum + "|" + nLevel, item.descrizioneEn));
listCNC_it.Add(new KeyValuePair<string, string>(item.codNum + "|" + nLevel, item.descrizioneIt));
}
else if (item.gruppo.ToUpper().Contains("HMI"))
{
nLevel = condLevel(item.livello);
listHMI_curr.Add(new KeyValuePair<string, string>(item.codNum + "|" + nLevel, item.descrizione));
listHMI_en.Add(new KeyValuePair<string, string>(item.codNum + "|" + nLevel, item.descrizioneEn));
listHMI_it.Add(new KeyValuePair<string, string>(item.codNum + "|" + nLevel, item.descrizioneIt));
}
else if (item.gruppo.ToUpper().Contains("PLC"))
{
nLevel = condLevel(item.livello);
listPLC_curr.Add(new KeyValuePair<string, string>(item.codNum + "|" + nLevel, item.descrizione));
listPLC_en.Add(new KeyValuePair<string, string>(item.codNum + "|" + nLevel, item.descrizioneEn));
listPLC_it.Add(new KeyValuePair<string, string>(item.codNum + "|" + nLevel, item.descrizioneIt));
}
}
// salvo vettori lingua CURR
hashKey = confHash("Cnc:Condition:Curr");
redUtil.man.redFlushKey(hashKey);
redUtil.man.redSaveHashList(hashKey, listCNC_curr);
hashKey = confHash("Hmi:Condition:Curr");
redUtil.man.redFlushKey(hashKey);
redUtil.man.redSaveHashList(hashKey, listHMI_curr);
hashKey = confHash("Plc:Condition:Curr");
redUtil.man.redFlushKey(hashKey);
redUtil.man.redSaveHashList(hashKey, listPLC_curr);
// salvo vettori lingua EN
hashKey = confHash("Cnc:Condition:En");
redUtil.man.redFlushKey(hashKey);
redUtil.man.redSaveHashList(hashKey, listCNC_en);
hashKey = confHash("Hmi:Condition:En");
redUtil.man.redFlushKey(hashKey);
redUtil.man.redSaveHashList(hashKey, listHMI_en);
hashKey = confHash("Plc:Condition:En");
redUtil.man.redFlushKey(hashKey);
redUtil.man.redSaveHashList(hashKey, listPLC_en);
// salvo vettori lingua IT
hashKey = confHash("Cnc:Condition:It");
redUtil.man.redFlushKey(hashKey);
redUtil.man.redSaveHashList(hashKey, listCNC_it);
hashKey = confHash("Hmi:Condition:It");
redUtil.man.redFlushKey(hashKey);
redUtil.man.redSaveHashList(hashKey, listHMI_it);
hashKey = confHash("Plc:Condition:It");
redUtil.man.redFlushKey(hashKey);
redUtil.man.redSaveHashList(hashKey, listPLC_it);
// DataModel --> salvo in redis!
hashKey = confHash("DataModel");
hashVal = DataModel;
saveHashKeyVal(hashKey, hashVal);
// imposto VETO
hashKey = vetoHash("Cnc:Condition");
hashVal = "0,0|000";
redUtil.man.redFlushKey(hashKey);
saveHashKeyVal(hashKey, hashVal);
hashKey = vetoHash("Hmi:Condition");
hashVal = "0,0|000";
redUtil.man.redFlushKey(hashKey);
saveHashKeyVal(hashKey, hashVal);
hashKey = vetoHash("Plc:Condition");
hashVal = "0,0|000";
redUtil.man.redFlushKey(hashKey);
saveHashKeyVal(hashKey, hashVal);
// Imposto DATI: percorro tutto l'albero nodi item ed allarmi e SCRIVO!!!!
foreach (var item in itemNodes)
{
hashKey = machineHash(item.Key);
hashVal = availStatus.UNAVAILABLE.ToString(); // item.Value.cObject.ToString();
saveHashKeyVal(hashKey, hashVal);
}
}
#endregion
#region helper gestione REDIS
public string getOrigKey(string redKey)
{
string answ = redKey;
if (nameReplacedInvert.ContainsKey(redKey))
{
answ = nameReplacedInvert[redKey];
}
return answ;
}
/// <summary>
/// Fix KEY x standard redis ("_" --> ":")
/// </summary>
/// <param name="origKey"></param>
/// <returns></returns>
public string fixRedKey(string origKey)
{
// parto da variabile dichiarata
string answ = origKey;
// se la trovo nel dizionario restituisco...
if (nameReplaced != null && nameReplaced.ContainsKey(origKey))
{
answ = nameReplaced[origKey];
}
// altrimenti controllo tra esclusi
else if (nameExcluded != null && nameExcluded.ContainsKey(origKey))
{
answ = nameExcluded[origKey];
}
// altrimenti calcolo e salvo in dizionario...
else
{
bool trovato = false;
bool keyExcluded = false;
string txt2find = "";
// se NON HO un MATCH processo il replace e se trovo corrispondenza processo
foreach (var item in nameRepRoles)
{
// SE NON trovato procedo...
if (!trovato)
{
// cerco se escluso o aggiunto...
keyExcluded = item.Value.modo == subsMode.X;
// testo cercato
txt2find = item.Key;
// B --> cerco inizio
if (item.Value.search == substSearch.B)
{
trovato = answ.StartsWith(txt2find);
}
// E --> cerco fine
else if (item.Value.search == substSearch.E)
{
trovato = answ.EndsWith(txt2find);
}
// I --> cerco IDENTICO
else if (item.Value.search == substSearch.I)
{
trovato = (answ == txt2find);
}
// C --> cerco OVUNQUE contenuto
else if (item.Value.search == substSearch.C)
{
trovato = answ.IndexOf(txt2find) >= 0;
}
// se trovato SOSTITUISCO...
if (trovato)
{
// effetuo sostituzione chiave/valore
answ = answ.Replace(txt2find, item.Value.tradz);
}
}
}
// se è escluso --> salvo in escluso e restituisco NONE
if (keyExcluded && trovato)
{
answ = "NONE";
// salvo in dizionario
if (nameExcluded != null && nameExcluded.ContainsKey(origKey))
{
nameExcluded.Remove(origKey);
}
// salvo in dizionario
nameExcluded.Add(origKey, "NONE");
}
else
{
// altrimenti continuo: sostituzione "_" --> ":"
try
{
answ = answ.Replace("_", ":");
}
catch
{ }
// SOLO SE DIFFERISCONO SALVO...
if (answ != origKey)
{
if (nameReplaced != null && !nameReplaced.ContainsKey(origKey))
{
// salvo in dizionario
nameReplaced.Add(origKey, answ);
}
if (nameReplacedInvert != null && !nameReplacedInvert.ContainsKey(answ))
{
// salvo in dizionario INVERSO (SE C'E' conversione...)
nameReplacedInvert.Add(answ, origKey);
}
}
}
}
return answ;
}
/// <summary>
/// HASH x la parte MACHINE del server REDIS
/// </summary>
/// <param name="keyName"></param>
/// <returns></returns>
public string machineHash(string keyName)
{
return redUtil.man.redHash("Machine:" + fixRedKey(keyName));
}
/// <summary>
/// HASH x la parte ADAPTER CONF del server REDIS
/// </summary>
/// <param name="keyName"></param>
/// <returns></returns>
public string confHash(string keyName)
{
return redUtil.man.redHash("AdpConf:" + fixRedKey(keyName));
}
/// <summary>
/// HASH x la parte ADAPTER ERRORS del server REDIS
/// </summary>
/// <param name="keyName"></param>
/// <returns></returns>
public string adpErHash(string keyName)
{
return redUtil.man.redHash("AdpError:" + fixRedKey(keyName));
}
/// <summary>
/// HASH x la parte VETO del server REDIS
/// </summary>
/// <param name="keyName"></param>
/// <returns></returns>
public string vetoHash(string keyName)
{
return redUtil.man.redHash("AdpVeto:" + fixRedKey(keyName));
}
#endregion
}
}
+510
View File
@@ -0,0 +1,510 @@
using System;
using System.Collections.Generic;
using System.Linq;
namespace OPC_UA_REDIS
{
/// <summary>
/// Classe dataitem x REDIS:
/// - classe base x dataItem
/// - possiede valore e nome astratti
/// - tiene traccia di modifica dall'ultimo reset
/// </summary>
public class DataItemRed
{
/// <summary>
/// NOME del data item
/// </summary>
protected String mName;
/// <summary>
/// VALORE del data item, può essere ogni type.
/// </summary>
protected object mValue = "UNAVAILABLE";
/// <summary>
/// A flag to indicate if the data item's value has changed since it
/// has last been set.
/// </summary>
protected bool mChanged = true;
/// <summary>
/// Prefisso (opzionale)
/// </summary>
public string DevicePrefix = null;
public DataItemRed(string name)
{
mName = name;
}
public string Name { get { return mName; } }
/// <summary>
/// Get/set del valore
/// </summary>
public object Value
{
get
{
return mValue;
}
set
{
if (!mValue.Equals(value))
{
mValue = value;
mChanged = true;
}
}
}
/// <summary>
/// Rende data item unavailable.
/// </summary>
public virtual void Unavailable() { Value = "NULL"; }
/// <summary>
/// Controlla se data item sia unavailable.
/// </summary>
/// <returns>true if Unavailable</returns>
public bool IsUnavailable() { return mValue.Equals("NULL"); }
/// <summary>
/// Getter x la proprietà mChanged
/// </summary>
public bool Changed { get { return mChanged; } }
public void ForceChanged()
{
mChanged = true;
}
/// <summary>
/// These methods are mainly for conditions. They allow for
/// mark and sweep of the condition activations.
/// </summary>
public virtual void Begin() { }
public virtual void Prepare() { }
/// <summary>
/// Reset the Changed flag.
/// </summary>
public virtual void Cleanup() { mChanged = false; }
/// <summary>
/// Get a list of all the changed data items. Since this is a
/// single value, just return a list with one item if it has
/// changed
/// </summary>
/// <param name="onlyChanged">true means to return this data item regardless of the
/// changed flag. This is used to send initial data back to a new client.</param>
/// <returns>The changed data item</returns>
public virtual List<DataItemRed> ItemList(bool all = false)
{
List<DataItemRed> list = new List<DataItemRed>();
if (all || mChanged)
{
list.Add(this);
}
return list;
}
}
/// <summary>
/// A condition handles the fact that a single condition can have multiple
/// activations and needs to check when the are present and are cleared.
/// </summary>
public class ConditionRed : DataItemRed
{
/// <summary>
/// The four values for the condition.
/// </summary>
public enum Level
{
UNAVAILABLE,
NORMAL,
WARNING,
FAULT
}
/// <summary>
/// The Activation is itself a data item. This is so it can be cleared
/// and treated like other data items when generating text.
/// </summary>
public class Active : DataItemRed
{
// The pieces of the activation are only used by the condition.
public Level mLevel;
public string mText;
public string mNativeCode;
public string mNativeSeverity;
public string mQualifier;
/// <summary>
/// The marked flag tells if this alarm has been reasserted.
/// </summary>
public bool mMarked = true;
/// <summary>
/// A placeholder activation is just a normal or unavailable.
/// </summary>
public bool mPlaceholder = false;
/// <summary>
/// Create a new activation
/// </summary>
/// <param name="name">The name of the condition, passed from the parent</param>
/// <param name="level">The condition level</param>
/// <param name="text">The descriptive text for the condition</param>
/// <param name="code">The native code of the alarm or warning</param>
/// <param name="qualifier">A high/low qualifier</param>
/// <param name="severity">The native severity of the condition</param>
public Active(string name, Level level, string text = "", string code = "",
string qualifier = "", string severity = "")
: base(name)
{
mLevel = level;
mText = text;
mNativeCode = code;
mQualifier = qualifier;
mNativeSeverity = severity;
if (mNativeCode.Length == 0 && (mLevel == Level.NORMAL || mLevel == Level.UNAVAILABLE))
{
mPlaceholder = true;
}
}
/// <summary>
/// Update the values of the activation. Also marks this activation.
/// </summary>
/// <param name="level">The condition level</param>
/// <param name="text">The descriptive text for the condition</param>
/// <param name="qualifier">A high/low qualifier</param>
/// <param name="severity">The native severity of the condition</param>
/// <returns>true if the condition has changed</returns>
public bool Set(Level level, string text = "",
string qualifier = "", string severity = "")
{
mChanged = level != mLevel || text != mText || qualifier != mQualifier ||
severity != mNativeSeverity;
if (mChanged)
{
mLevel = level;
mQualifier = qualifier;
mText = text;
mNativeSeverity = severity;
}
mMarked = true;
return mChanged;
}
public override string ToString()
{
return mName + "|" + Enum.GetName(mLevel.GetType(), mLevel) + "|" + mNativeCode + "|" + mNativeSeverity + "|" + mQualifier + "|" + mText;
}
/// <summary>
/// Resets the marked flag.
/// </summary>
public void Clear()
{
mMarked = false;
}
}
/// <summary>
/// A flag to indicate that the mark and sweep has begun.
/// </summary>
bool mBegun = false;
/// <summary>
/// A flag indicating the second phase of the mark and sweep has completed.
/// </summary>
bool mPrepared = false;
/// <summary>
/// true means this is a simple condition and does not require
/// mark and sweep processing.
/// </summary>
bool mSimple;
List<Active> mActiveList = new List<Active>();
/// <summary>
/// Create a new condition
/// </summary>
/// <param name="name">The name of the data item</param>
/// <param name="simple">If this is a simple condition or if it uses
/// mark and sweep</param>
public ConditionRed(String name, bool simple = false) : base(name)
{
mSimple = simple;
Add(new Active(mName, Level.UNAVAILABLE));
}
/// <summary>
/// Make this condition unavailable
/// </summary>
public override void Unavailable()
{
Add(Level.UNAVAILABLE);
}
/// <summary>
/// This clears all the marks and begins so we can tell which
/// conditions were not added during this pass. This is not
/// required for simple conditions.
/// </summary>
public override void Begin()
{
if (!mSimple)
{
foreach (Active active in mActiveList)
{
active.Clear();
}
mBegun = true;
}
mPrepared = mChanged = false;
}
/// <summary>
/// This is called before we send the actual changed data. It
/// does the diff from the previous state and finds all the
/// activations that need to be removed. This also check to see
/// if all the activations have been removed because we only
/// need to do a single normal with no native code to clear all.
///
/// This is not required for simple conditions.
/// </summary>
public override void Prepare()
{
if (mBegun)
{
bool marked = false;
// Check to see if we have any active marked conditions
foreach (Active active in mActiveList)
{
if (active.mPlaceholder || active.mMarked)
{
marked = true;
break;
}
}
// If they've all been cleared, then go back to normal.
if (!marked)
{
Normal();
}
// Sweep the old conditions and if they are not marked
// set them to normal.
foreach (Active active in mActiveList)
{
if (!active.mPlaceholder && !active.mMarked)
{
active.Set(Level.NORMAL, "");
active.mMarked = false;
}
if (active.Changed)
{
mChanged = true;
}
}
mPrepared = true;
}
}
/// <summary>
/// This is the sweep phase where we removed the changed flags
/// and remove all the stale activations.
/// </summary>
public override void Cleanup()
{
base.Cleanup();
mBegun = mPrepared = false;
foreach (Active active in mActiveList.ToList())
{
// It is assumed that if the activations are no longer needed, they will
// be removed here after they are returned.
if (!active.mPlaceholder && !active.mMarked)
{
mActiveList.Remove(active);
}
active.Cleanup();
}
// Remvoe stale items from the active list that are not marked
}
/// <summary>
/// Add a new activation.
/// </summary>
/// <param name="active"></param>
private void Add(Active active)
{
mActiveList.Add(active);
}
/// <summary>
/// Adds a new activation to the condition or if normal or unavailable, removes the
/// activation.
/// </summary>
/// <param name="level">The level</param>
/// <param name="text">The descriptive text for the condition</param>
/// <param name="code">The native code</param>
/// <param name="qualifier">The qualifier</param>
/// <param name="severity">The native severity</param>
/// <returns>true if the activation is modified</returns>
public bool Add(Level level, string text = "", string code = "", string qualifier = "", string severity = "")
{
bool result = false;
// Get the first activation
Active first = null;
if (mActiveList.Count > 0)
{
first = mActiveList.First();
}
// Check for a reset of all conditions for a normal or an unavailable
if ((level == Level.NORMAL || level == Level.UNAVAILABLE) && code.Length == 0)
{
// If we haven't changed.
if (mActiveList.Count == 1 && first.mLevel == level)
{
first.mMarked = true;
}
else
{
// Create a new placeholder activation. We don't need to remember the
// old activations because the global normal will reset everything.
mActiveList.Clear();
Add(new Active(mName, level));
result = mChanged = true;
}
}
else
{
// If the first entry is a normal or unavailable and we are entering
// into a warning or fault, remove the normal or unavailable
if (mActiveList.Count() == 1 && first.mPlaceholder)
{
mActiveList.Clear();
}
// See if we can find the activation with the same native code.
Active found = mActiveList.Find(delegate (Active ak) { return ak.mNativeCode == code; });
if (found != null)
{
// If we found it, update all the properties and see if it has changed.
// This will mark this activation
result = found.Set(level, text, qualifier, severity);
mChanged = mChanged || result;
}
else
{
// Otherwise, we have a new activation and we should create a new one.
Add(new Active(mName, level, text, code, qualifier, severity));
result = mChanged = true;
}
}
return result;
}
/// <summary>
/// Clear a condition from the active list - Used only for simple Conditions.
/// </summary>
/// <param name="code">The native code</param>
/// <returns>true if the activation is found</returns>
public bool Clear(string code)
{
// Find the activation.
Active found = mActiveList.Find(delegate (Active ak) { return ak.mNativeCode == code; });
if (found != null)
{
// If we've removed the last activation, go back to normal.
if (mActiveList.Count() == 1)
{
Add(Level.NORMAL);
}
else
{
// Otherwise, just clear this one.
found.Set(Level.NORMAL);
// Clear makes the activation be removed next sweep.
found.Clear();
}
mChanged = true;
return true;
}
else
{
return false;
}
}
// Cover to set everything to normal.
public bool Normal()
{
return Add(Level.NORMAL);
}
/// <summary>
/// Used to get a list of the active conditions for writing out to
/// the clients.
/// </summary>
/// <param name="all">This flag is used to get all activations, regardless
/// of their changed state. This is used to deliver initial state to the client</param>
/// <returns>A list of activations (also DataItems)</returns>
public override List<DataItemRed> ItemList(bool all = false)
{
List<DataItemRed> list = new List<DataItemRed>();
if (all)
{
// Just grab all the activations.
foreach (Active active in mActiveList)
{
list.Add(active);
}
}
else if (mSimple)
{
// For a simple condition, we are only looking for the changed set.
// Since we don't care about the mark and sweep, this is similar to
// all other data items.
foreach (Active active in mActiveList)
{
if (active.Changed)
{
list.Add(active);
}
}
}
else if (mBegun && mPrepared)
{
if (mChanged)
{
// Find all the changed activations and add them to the list
foreach (Active active in mActiveList)
{
if (active.Changed)
{
list.Add(active);
}
}
}
}
return list;
}
}
}
@@ -4,38 +4,53 @@
xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
autoReload="true"
throwExceptions="false"
internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log">
internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log" >
<!-- optional, add some variables
<!-- optional, add some variabeles
https://github.com/nlog/NLog/wiki/Configuration-file#variables
-->
<variable name="myvar" value="myvalue"/>
<!--
See https://github.com/nlog/nlog/wiki/Configuration-file
<!--
See https://github.com/nlog/nlog/wiki/Configuration-file
for information on customizing logging rules and outputs.
-->
<targets>
<!--
add your targets here
<targets async="true">
<!--
add your targets here
See https://github.com/nlog/NLog/wiki/Targets for possible targets.
See https://github.com/nlog/NLog/wiki/Layout-Renderers for the possible layout renderers.
-->
<!--
Write events to a file with the date in the filename.
Write events to a file with the date in the filename.
<target xsi:type="File" name="f" fileName="${basedir}/logs/${shortdate}.log"
layout="${longdate} ${uppercase:${level}} ${message}" />
-->
<target xsi:type="File"
name="f"
fileName="${basedir}/logs/${shortdate}.log"
layout="${longdate} ${uppercase:${level}} ${message}"
/>
<!--<target xsi:type="File"
name="default"
layout="${longdate} - ${level:uppercase=true}: ${message}${onexception:${newline}EXCEPTION\: ${exception:format=ToString}}"
fileName="${specialfolder:ApplicationData}\${appName}\Debug.log"
keepFileOpen="false"
archiveFileName="${specialfolder:ApplicationData}\${appName}\Debug_${shortdate}.{##}.log"
archiveNumbering="Sequence"
archiveEvery="Day"
maxArchiveFiles="30"
/>-->
</targets>
<rules>
<!-- add your logging rules here -->
<!--
Write all events with minimal level of Debug (So Debug, Info, Warn, Error and Fatal, but not Trace) to "f"
<logger name="*" minlevel="Debug" writeTo="f" />
-->
<logger name="*" minlevel="Debug" writeTo="f" />
</rules>
</nlog>
</nlog>
@@ -0,0 +1,135 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{5AFCCD6A-3758-44C8-96ED-84E809FCA8A1}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>OPC_UA_REDIS</RootNamespace>
<AssemblyName>OPC-UA-REDIS</AssemblyName>
<TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x86\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget>
<LangVersion>7.3</LangVersion>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
<OutputPath>bin\x86\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x86</PlatformTarget>
<LangVersion>7.3</LangVersion>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<ItemGroup>
<Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=5.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.5.0.0\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
<HintPath>..\packages\NLog.4.7.10\lib\net45\NLog.dll</HintPath>
</Reference>
<Reference Include="Pipelines.Sockets.Unofficial, Version=1.0.0.0, Culture=neutral, PublicKeyToken=42ea0a778e13fbe2, processorArchitecture=MSIL">
<HintPath>..\packages\Pipelines.Sockets.Unofficial.2.2.0\lib\net461\Pipelines.Sockets.Unofficial.dll</HintPath>
</Reference>
<Reference Include="StackExchange.Redis, Version=2.0.0.0, Culture=neutral, PublicKeyToken=c219ff1ca8c2ce46, processorArchitecture=MSIL">
<HintPath>..\packages\StackExchange.Redis.2.2.3\lib\net461\StackExchange.Redis.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
</Reference>
<Reference Include="System.Configuration" />
<Reference Include="System.Core" />
<Reference Include="System.Diagnostics.PerformanceCounter, Version=5.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Diagnostics.PerformanceCounter.5.0.0\lib\net461\System.Diagnostics.PerformanceCounter.dll</HintPath>
</Reference>
<Reference Include="System.IO.Compression, Version=4.3.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<HintPath>..\packages\System.IO.Compression.4.3.0\lib\net46\System.IO.Compression.dll</HintPath>
</Reference>
<Reference Include="System.IO.Pipelines, Version=5.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.IO.Pipelines.5.0.0\lib\net461\System.IO.Pipelines.dll</HintPath>
</Reference>
<Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
</Reference>
<Reference Include="System.Numerics" />
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.6.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.4.7.1\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.InteropServices.RuntimeInformation, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.InteropServices.RuntimeInformation.4.3.0\lib\net45\System.Runtime.InteropServices.RuntimeInformation.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.Serialization" />
<Reference Include="System.ServiceModel" />
<Reference Include="System.Threading.Channels, Version=5.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Threading.Channels.5.0.0\lib\net461\System.Threading.Channels.dll</HintPath>
</Reference>
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
</Reference>
<Reference Include="System.Transactions" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="AdapterRed.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="DataItemRed.cs" />
<Compile Include="redUtil.cs" />
</ItemGroup>
<ItemGroup>
<Content Include="NLog.config">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<None Include="app.config" />
<None Include="NLog.xsd">
<SubType>Designer</SubType>
</None>
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\MTC\MTC.csproj">
<Project>{ec83d80e-9f3b-4de9-b16a-ca216543b7ec}</Project>
<Name>MTC</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
@@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// Le informazioni generali relative a un assembly sono controllate dal seguente
// set di attributi. Modificare i valori di questi attributi per modificare le informazioni
// associate a un assembly.
[assembly: AssemblyTitle("OPC-UA-REDIS")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("OPC-UA-REDIS")]
[assembly: AssemblyCopyright("Copyright © 2018")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Se si imposta ComVisible su false, i tipi in questo assembly non saranno visibili
// ai componenti COM. Se è necessario accedere a un tipo in questo assembly da
// COM, impostare su true l'attributo ComVisible per tale tipo.
[assembly: ComVisible(false)]
// Se il progetto viene esposto a COM, il GUID seguente verrà utilizzato come ID della libreria dei tipi
[assembly: Guid("5afccd6a-3758-44c8-96ed-84e809fca8a1")]
// Le informazioni sulla versione di un assembly sono costituite dai seguenti quattro valori:
//
// Versione principale
// Versione secondaria
// Numero di build
// Revisione
//
// È possibile specificare tutti i valori oppure impostare valori predefiniti per i numeri relativi alla revisione e alla build
// usando l'asterisco '*' come illustrato di seguito:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
+35
View File
@@ -0,0 +1,35 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.6.0" newVersion="4.0.6.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.IO.Pipelines" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.0.1" newVersion="4.2.0.1" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Numerics.Vectors" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.4.0" newVersion="4.1.4.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.IO.Compression" publicKeyToken="b77a5c561934e089" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.2.0" newVersion="4.1.2.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Runtime.InteropServices.RuntimeInformation" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
+19
View File
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Microsoft.Bcl.AsyncInterfaces" version="5.0.0" targetFramework="net462" />
<package id="Newtonsoft.Json" version="12.0.3" targetFramework="net452" />
<package id="NLog" version="4.7.10" targetFramework="net462" />
<package id="NLog.Schema" version="4.7.10" targetFramework="net462" />
<package id="Pipelines.Sockets.Unofficial" version="2.2.0" targetFramework="net462" />
<package id="StackExchange.Redis" version="2.2.3" targetFramework="net462" />
<package id="System.Buffers" version="4.5.1" targetFramework="net462" />
<package id="System.Diagnostics.PerformanceCounter" version="5.0.0" targetFramework="net462" />
<package id="System.IO.Compression" version="4.3.0" targetFramework="net462" />
<package id="System.IO.Pipelines" version="5.0.0" targetFramework="net462" />
<package id="System.Memory" version="4.5.4" targetFramework="net462" />
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net462" />
<package id="System.Runtime.CompilerServices.Unsafe" version="4.7.1" targetFramework="net462" />
<package id="System.Runtime.InteropServices.RuntimeInformation" version="4.3.0" targetFramework="net462" />
<package id="System.Threading.Channels" version="5.0.0" targetFramework="net462" />
<package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net462" />
</packages>
+803
View File
@@ -0,0 +1,803 @@
using MTC;
using NLog;
using StackExchange.Redis;
using System;
using System.Collections.Generic;
namespace OPC_UA_REDIS
{
public class redUtil
{
/// <summary>
/// wrapper di log
/// </summary>
public static Logger lg;
public redUtil()
{
lg = LogManager.GetCurrentClassLogger();
}
/// <summary>
/// Metodo accesso statico
/// </summary>
public static redUtil man = new redUtil();
#region gestione valori in RedisCache
/// <summary>
/// Nome della variabile HASH da utilizzare (dato CodModulo / Server / DB impiegato da funzionalita' DbConfig) + keyName richiesto...
/// </summary>
public string redHash(string keyName)
{
string answ = keyName;
try
{
answ = string.Format("{0}:{1}", baseUtils.CRS("SOURS_baseHash"), keyName);
}
catch
{ }
return answ;
}
/// <summary>
/// Connessione lazy a redis...
/// </summary>
private static Lazy<ConnectionMultiplexer> lazyConnection = new Lazy<ConnectionMultiplexer>(() =>
{
return ConnectionMultiplexer.Connect("127.0.0.1,abortConnect=false,ssl=false");
});
/// <summary>
/// Connessione lazy a redis...
/// </summary>
private static Lazy<ConnectionMultiplexer> lazyConnectionAdmin = new Lazy<ConnectionMultiplexer>(() =>
{
return ConnectionMultiplexer.Connect("127.0.0.1,abortConnect=false,ssl=false,allowAdmin=true");
});
/// <summary>
/// Oggetto statico connessione redis
/// </summary>
public static ConnectionMultiplexer connRedis
{
get
{
return lazyConnection.Value;
}
}
/// <summary>
/// Oggetto statico connessione redis
/// </summary>
public static ConnectionMultiplexer connRedisAdmin
{
get
{
return lazyConnectionAdmin.Value;
}
}
/// <summary>
/// Restituisce info dei server connessi...
/// </summary>
/// <returns></returns>
public IServer[] redServInfo()
{
IServer[] answ = new IServer[1];
if (connRedisAdmin.IsConnected)
{
try
{
answ = new IServer[connRedisAdmin.GetEndPoints().Length];
int i = 0;
foreach (var ep in connRedisAdmin.GetEndPoints())
{
var server = connRedisAdmin.GetServer(ep);
answ[i] = server;
i++;
}
}
catch (Exception exc)
{
lg.Error("Eccezione in redServInfo: " + exc.ToString());
}
}
else
{
lg.Error("Server REDIS Admin non disponibile");
}
return answ;
}
/// <summary>
/// Restituisce una chiave salvata in RedisCache
/// </summary>
/// <param name="chiave"></param>
/// <returns></returns>
public string getRSV(string chiave)
{
string answ = "";
if (connRedis.IsConnected)
{
try
{
IDatabase cache = connRedis.GetDatabase();
answ = cache.StringGet(chiave);
}
catch (Exception exc)
{
lg.Info(string.Format("Errore in getRSV:{0}{1}", Environment.NewLine, exc));
}
}
else
{
lg.Error("Server REDIS non disponibile per getRSV");
}
return answ;
}
/// <summary>
/// Salva una chiave in RedisCache
/// </summary>
/// <param name="chiave"></param>
/// <param name="valore"></param>
/// <returns></returns>
public bool setRSV(string chiave, string valore)
{
bool answ = false;
if (connRedis.IsConnected)
{
try
{
IDatabase cache = connRedis.GetDatabase();
cache.StringSet(chiave, valore);
answ = true;
}
catch (Exception exc)
{
lg.Info(string.Format("Errore in setRSV:{0}{1}", Environment.NewLine, exc));
}
}
else
{
lg.Error("Server REDIS non disponibile (setRSV)");
}
return answ;
}
/// <summary>
/// Salva una chiave in RedisCache
/// </summary>
/// <param name="chiave"></param>
/// <param name="valore"></param>
/// <param name="TTL_sec">in secondi</param>
/// <returns></returns>
public bool setRSV(string chiave, string valore, int TTL_sec)
{
bool answ = false;
if (connRedis.IsConnected)
{
try
{
IDatabase cache = connRedis.GetDatabase();
TimeSpan expT = new TimeSpan(0, 0, TTL_sec);
// salvo con expyry...
cache.StringSet(chiave, valore, expT);
answ = true;
}
catch (Exception exc)
{
lg.Info(string.Format("Errore in setRSV:{0}{1}", Environment.NewLine, exc));
}
}
else
{
lg.Error("Server REDIS non disponibile (setRSV:TTL)");
}
return answ;
}
/// <summary>
/// Incrementa un contatore in Redis
/// </summary>
/// <param name="chiave"></param>
/// <returns></returns>
public long setRCntI(string chiave)
{
long answ = 0;
try
{
IDatabase cache = connRedis.GetDatabase();
answ = cache.StringIncrement(chiave, 1);
}
catch (Exception exc)
{
lg.Info(string.Format("Errore in setRCI:{0}{1}", Environment.NewLine, exc));
}
return answ;
}
/// <summary>
/// Decrementa un contatore in Redis
/// </summary>
/// <param name="chiave"></param>
/// <returns></returns>
public long setRCntD(string chiave)
{
long answ = 0;
try
{
IDatabase cache = connRedis.GetDatabase();
answ = cache.StringDecrement(chiave, 1);
}
catch (Exception exc)
{
lg.Info(string.Format("Errore in setRCD:{0}{1}", Environment.NewLine, exc));
}
return answ;
}
/// <summary>
/// Restituisce una chiave COUNTER in RedisCache
/// </summary>
/// <param name="chiave"></param>
/// <returns></returns>
public int getRCnt(string chiave)
{
int answInt = 0;
string answ = "";
try
{
IDatabase cache = connRedis.GetDatabase();
answ = cache.StringGet(chiave);
answInt = Convert.ToInt32(answ);
}
catch (Exception exc)
{
lg.Info(string.Format("Errore in getRSV:{0}{1}", Environment.NewLine, exc));
}
return answInt;
}
/// <summary>
/// Resetta (elimina) un contatore in Redis
/// </summary>
/// <param name="chiave"></param>
/// <returns></returns>
public bool resetRCnt(string chiave)
{
bool answ = false;
try
{
IDatabase cache = connRedis.GetDatabase();
answ = cache.KeyDelete(chiave);
}
catch (Exception exc)
{
lg.Info(string.Format("Errore in resetRCnt:{0}{1}", Environment.NewLine, exc));
}
return answ;
}
/// <summary>
/// Restituisce un set KVP (Key Value Pair) salvati in RedisCache
/// </summary>
/// <param name="chiavi"></param>
/// <returns></returns>
public RedisValue[] getRKeys(RedisKey[] chiavi)
{
RedisValue[] answ = null;
try
{
IDatabase cache = connRedis.GetDatabase();
answ = cache.StringGet(chiavi);
}
catch (Exception exc)
{
lg.Info(string.Format("Errore in getRKeys:{0}{1}", Environment.NewLine, exc));
}
return answ;
}
/// <summary>
/// Salva un set KVP (Key Value Pair) in RedisCache
/// </summary>
/// <param name="valori">Set KVP chiave-valore da salvare</param>
/// <returns></returns>
public bool setRKeys(KeyValuePair<RedisKey, RedisValue>[] valori)
{
bool answ = false;
try
{
IDatabase cache = connRedis.GetDatabase();
cache.StringSet(valori);
answ = true;
}
catch (Exception exc)
{
lg.Info(string.Format("Errore in setRKeys:{0}{1}", Environment.NewLine, exc));
}
return answ;
}
/// <summary>
/// Verifica se ci siano valori nella hash indicata...
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
public bool redHashPresent(RedisKey key)
{
bool answ = false;
// cerco se ci sia valore in redis...
IDatabase cache = connRedis.GetDatabase();
try
{
answ = cache.HashGetAll(key).Length > 0;
}
catch
{ }
return answ;
}
/// <summary>
/// Verifica se ci siano valori nella hash indicata (string)
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
public bool redHashPresentSz(string key)
{
bool answ = false;
try
{
RedisKey chiave = key;
answ = redHashPresent(chiave);
}
catch
{ }
return answ;
}
/// <summary>
/// Recupera tutti i valori dalla hash
/// </summary>
/// <param name="hashKey"></param>
/// <returns></returns>
public KeyValuePair<string, string>[] redGetHash(string hashKey)
{
KeyValuePair<string, string>[] answ = new KeyValuePair<string, string>[1];
// cerco se ci sia valore in redis...
IDatabase cache = connRedis.GetDatabase();
try
{
RedisKey chiave = hashKey;
HashEntry[] valori = cache.HashGetAll(chiave);
answ = new KeyValuePair<string, string>[valori.Length];
int i = 0;
foreach (HashEntry item in valori)
{
answ[i] = new KeyValuePair<string, string>(item.Name, item.Value);
i++;
}
}
catch
{ }
return answ;
}
/// <summary>
/// Recupera tutti i valori dalla hash in formato Dictionary
/// </summary>
/// <param name="hashKey"></param>
/// <returns></returns>
public Dictionary<string, string> redGetHashDict(string hashKey)
{
Dictionary<string, string> answ = new Dictionary<string, string>();
// cerco se ci sia valore in redis...
IDatabase cache = connRedis.GetDatabase();
try
{
RedisKey chiave = hashKey;
HashEntry[] valori = cache.HashGetAll(chiave);
foreach (HashEntry item in valori)
{
answ.Add(item.Name, item.Value);
}
}
catch
{ }
return answ;
}
/// <summary>
/// Recupera UN SINGOLO VALORE dalla hash per un dato field
/// </summary>
/// <param name="hashKey"></param>
/// <param name="hashField"></param>
/// <returns></returns>
public string redGetHashField(string hashKey, string hashField)
{
string answ = "";
// cerco se ci sia valore in redis...
IDatabase cache = connRedis.GetDatabase();
try
{
RedisKey chiave = hashKey;
RedisValue campo = hashField;
RedisValue valOut = cache.HashGet(chiave, campo);
answ = valOut.ToString();
}
catch
{ }
return answ;
}
/// <summary>
/// Salvataggio di una hash di valori
/// </summary>
/// <param name="hashKey">chiave</param>
/// <param name="hashFields">valori</param>
/// <returns></returns>
public bool redSaveHash(string hashKey, KeyValuePair<string, string>[] hashFields)
{
bool answ = false;
if (connRedis.IsConnected)
{
// cerco se ci sia valore in redis...
IDatabase cache = connRedis.GetDatabase();
try
{
RedisKey chiave = hashKey;
HashEntry[] valori = new HashEntry[hashFields.Length];
int i = 0;
foreach (KeyValuePair<string, string> kvp in hashFields)
{
valori[i] = new HashEntry(kvp.Key, kvp.Value);
i++;
}
cache.HashSet(chiave, valori);
answ = true;
}
catch
{ }
}
else
{
lg.Error("Server REDIS non disponibile (redSaveHash)");
}
return answ;
}
/// <summary>
/// Salvataggio di una hash di valori
/// </summary>
/// <param name="hashKey">chiave</param>
/// <param name="hashListKVP">valori come lista KVP</param>
/// <returns></returns>
public bool redSaveHashList(string hashKey, List<KeyValuePair<string, string>> hashListKVP)
{
bool answ = false;
if (connRedis.IsConnected)
{
// cerco se ci sia valore in redis...
IDatabase cache = connRedis.GetDatabase();
try
{
RedisKey chiave = hashKey;
HashEntry[] valori = new HashEntry[hashListKVP.Count];
int i = 0;
foreach (KeyValuePair<string, string> kvp in hashListKVP)
{
valori[i] = new HashEntry(kvp.Key, kvp.Value);
i++;
}
cache.HashSet(chiave, valori);
answ = true;
}
catch
{ }
}
else
{
lg.Error("Server REDIS non disponibile (redSaveHashList)");
}
return answ;
}
/// <summary>
/// Salvataggio di una hash di valori in formato Dictionary
/// </summary>
/// <param name="hashKey">chiave</param>
/// <param name="hashFields">valori</param>
/// <returns></returns>
public bool redSaveHashDict(string hashKey, Dictionary<string, string> hashFields)
{
bool answ = false;
// cerco se ci sia valore in redis...
IDatabase cache = connRedis.GetDatabase();
try
{
RedisKey chiave = hashKey;
HashEntry[] valori = new HashEntry[hashFields.Count];
int i = 0;
foreach (KeyValuePair<string, string> kvp in hashFields)
{
valori[i] = new HashEntry(kvp.Key, kvp.Value);
i++;
}
cache.HashSet(chiave, valori);
answ = true;
}
catch
{ }
return answ;
}
/// <summary>
/// Salvataggio di una hash di valori
/// </summary>
/// <param name="hashKey">chiave</param>
/// <param name="hashFields">valori</param>
/// <param name="expireSeconds">scadenza preimpostata hash (secondi) | defaoult = -1 (non scade)</param>
/// <returns></returns>
public bool redSaveHash(string hashKey, KeyValuePair<string, string>[] hashFields, double expireSeconds = -1)
{
bool answ = false;
// cerco se ci sia valore in redis...
IDatabase cache = connRedis.GetDatabase();
try
{
RedisKey chiave = hashKey;
answ = redSaveHash(hashKey, hashFields);
if (expireSeconds > 0)
{
cache.KeyExpire(chiave, DateTime.Now.AddSeconds(expireSeconds));
}
//answ = true;
}
catch
{ }
return answ;
}
/// <summary>
/// Salvataggio di una hash di valori in formato Dictionary
/// </summary>
/// <param name="hashKey">chiave</param>
/// <param name="hashFields">valori</param>
/// <param name="expireSeconds">scadenza preimpostata hash (secondi) | defaoult = -1 (non scade)</param>
/// <returns></returns>
public bool redSaveHashDict(string hashKey, Dictionary<string, string> hashFields, double expireSeconds = -1)
{
bool answ = false;
// cerco se ci sia valore in redis...
IDatabase cache = connRedis.GetDatabase();
try
{
RedisKey chiave = hashKey;
answ = redSaveHashDict(hashKey, hashFields);
if (expireSeconds > 0)
{
cache.KeyExpire(chiave, DateTime.Now.AddSeconds(expireSeconds));
}
//answ = true;
}
catch
{ }
return answ;
}
/// <summary>
/// Elimina una key (hash, string)
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
public bool redDelKey(string key)
{
bool answ = false;
// cerco se ci sia valore in redis...
IDatabase cache = connRedis.GetDatabase();
try
{
RedisKey chiave = key;
cache.KeyDelete(chiave);
answ = true;
}
catch
{ }
return answ;
}
/// <summary>
/// Flush completo cache redis
/// </summary>
/// <param name="keyPattern">** = tutti</param>
/// <returns></returns>
public bool redFlushKey(string keyPattern)
{
bool answ = false;
// cerco se ci sia valore in redis...
IDatabase cache = connRedis.GetDatabase();
// se vuoto = ALL...
keyPattern = keyPattern == "" ? "**" : keyPattern;
try
{
foreach (var ep in connRedis.GetEndPoints())
{
var server = connRedis.GetServer(ep);
foreach (var key in server.Keys(pattern: keyPattern))
{
cache.KeyDelete(key);
}
}
answ = true;
}
catch (Exception exc)
{
lg.Error(string.Format("Eccezione: {0}", exc));
}
return answ;
}
/// <summary>
/// Conta num oggetti cache redis che rispondono a pattern
/// </summary>
/// <param name="keyPattern">** = tutti</param>
/// <returns></returns>
public int redCountKey(string keyPattern)
{
int answ = 0;
// cerco se ci sia valore in redis...
IDatabase cache = connRedis.GetDatabase();
// se vuoto = ALL...
keyPattern = keyPattern == "" ? "**" : keyPattern;
try
{
foreach (var ep in connRedis.GetEndPoints())
{
var server = connRedis.GetServer(ep);
foreach (var key in server.Keys(pattern: keyPattern))
{
answ++;
}
}
}
catch (Exception exc)
{
lg.Error(string.Format("Eccezione: {0}", exc));
}
return answ;
}
/// <summary>
/// Restituisce numero record in Redis DB
/// </summary>
public long numRecRedis
{
get
{
long answ = 0;
try
{
foreach (var ep in connRedis.GetEndPoints())
{
var server = connRedis.GetServer(ep);
answ += server.DatabaseSize();
}
}
catch
{ }
return answ;
}
}
/// <summary>
/// Restituisce oggetti cache redis che rispondono a pattern
/// </summary>
/// <param name="keyPattern">** = tutti</param>
/// <param name="orderBy">Tipo di ordinamento per kvp</param>
/// <returns></returns>
public List<KeyValuePair<string, int>> redGetCounterByKey(string keyPattern, kvpOrderBy orderBy)
{
int numAnsw = redCountKey(keyPattern);
RedisKey[] chiavi = new RedisKey[numAnsw];
List<KeyValuePair<string, int>> answ = new List<KeyValuePair<string, int>>();
// se vuoto = ALL...
keyPattern = keyPattern == "" ? "**" : keyPattern;
// recupero in primis elenco chiavi
try
{
int i = 0;
foreach (var ep in connRedis.GetEndPoints())
{
var server = connRedis.GetServer(ep);
foreach (var key in server.Keys(pattern: keyPattern))
{
chiavi[i] = key;
i++;
}
}
}
catch (Exception exc)
{
lg.Error(string.Format("Eccezione: {0}", exc));
}
// ora recupero valori!
var valori = getRKeys(chiavi);
int currVal = 0;
// popolo rispsota
try
{
for (int i = 0; i < numAnsw; i++)
{
Int32.TryParse(valori[i], out currVal);
answ.Add(new KeyValuePair<string, int>(chiavi[i], currVal));
}
}
catch
{ }
// se richiesto riordino...
switch (orderBy)
{
case kvpOrderBy.KeyAsc:
answ.Sort(CompareKey);
break;
case kvpOrderBy.KeyDesc:
answ.Sort(CompareKeyDesc);
break;
case kvpOrderBy.ValAsc:
answ.Sort(CompareVal);
break;
case kvpOrderBy.ValDesc:
answ.Sort(CompareValDesc);
break;
default:
break;
}
return answ;
}
/// <summary>
/// Effettua comaprazione x CHIAVE in KVP ASC
/// </summary>
/// <param name="x"></param>
/// <param name="y"></param>
/// <returns></returns>
private int CompareKey(KeyValuePair<string, int> x, KeyValuePair<string, int> y)
{
return x.Key.CompareTo(y.Key);
}
/// <summary>
/// Effettua comaprazione x VALORE in KVP ASC
/// </summary>
/// <param name="x"></param>
/// <param name="y"></param>
/// <returns></returns>
public int CompareVal(KeyValuePair<string, int> x, KeyValuePair<string, int> y)
{
return x.Value.CompareTo(y.Value);
}
/// <summary>
/// Effettua comaprazione x CHIAVE in KVP DESC
/// </summary>
/// <param name="x"></param>
/// <param name="y"></param>
/// <returns></returns>
private int CompareKeyDesc(KeyValuePair<string, int> x, KeyValuePair<string, int> y)
{
return y.Key.CompareTo(x.Key);
}
/// <summary>
/// Effettua comaprazione x VALORE in KVP DESC
/// </summary>
/// <param name="x"></param>
/// <param name="y"></param>
/// <returns></returns>
public int CompareValDesc(KeyValuePair<string, int> x, KeyValuePair<string, int> y)
{
return y.Value.CompareTo(x.Value);
}
/// <summary>
/// Tipologia di ordinamento x liste KVP
/// </summary>
public enum kvpOrderBy
{
/// <summary>
/// Ordinamento ASCending per KEY
/// </summary>
KeyAsc,
/// <summary>
/// Ordinamento DESCending per KEY
/// </summary>
KeyDesc,
/// <summary>
/// Ordinamento ASCending per VAL
/// </summary>
ValAsc,
/// <summary>
/// Ordinamento DESCending per VAL
/// </summary>
ValDesc
}
#endregion
}
}
+314
View File
@@ -0,0 +1,314 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.29926.136
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{695A97F7-B396-4DD3-8596-F043ECA3E2BD}"
ProjectSection(SolutionItems) = preProject
Y:\30_Clienti\CMS\CMS-MTC\SetupMTC\AGENT\DATA\CONF_DEMO\Agent_ItemList_ESAKVARA.xml = Y:\30_Clienti\CMS\CMS-MTC\SetupMTC\AGENT\DATA\CONF_DEMO\Agent_ItemList_ESAKVARA.xml
Y:\30_Clienti\CMS\CMS-MTC\SetupMTC\AGENT\DATA\CONF_DEMO\Agent_ItemList_FANUC.xml = Y:\30_Clienti\CMS\CMS-MTC\SetupMTC\AGENT\DATA\CONF_DEMO\Agent_ItemList_FANUC.xml
Y:\30_Clienti\CMS\CMS-MTC\SetupMTC\AGENT\DATA\CONF_DEMO\Agent_ItemList_OSAI.xml = Y:\30_Clienti\CMS\CMS-MTC\SetupMTC\AGENT\DATA\CONF_DEMO\Agent_ItemList_OSAI.xml
..\AgentBin\CMS.xml = ..\AgentBin\CMS.xml
..\AgentBin\SCM.xml = ..\AgentBin\SCM.xml
EndProjectSection
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "CMSCncLib", "CMSCncLib\CMSCncLib.vbproj", "{2D769FFD-1122-4276-A115-29246E6D23C5}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SCMA", "SCMA\SCMA.csproj", "{736DF121-11E6-4D46-835D-6560ACF241E4}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VersGen", "VersGen\VersGen.csproj", "{58E399F3-9D4E-49D3-AB35-9ED536543D50}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SCMCncLib", "SCMCncLib\SCMCncLib.csproj", "{7A12FE26-9C58-4630-973D-D4872374DBAF}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MTC-ADB", "MTC-ADB\MTC-ADB.csproj", "{DF877E5E-8D04-4532-BA01-CEFD8636D4DA}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MTC", "MTC\MTC.csproj", "{EC83D80E-9F3B-4DE9-B16A-CA216543B7EC}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OPC-UA-REDIS", "OPC-UA-REDIS\OPC-UA-REDIS.csproj", "{5AFCCD6A-3758-44C8-96ED-84E809FCA8A1}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EsaCncLib", "EsaCncLib\EsaCncLib.csproj", "{884C07F1-7E6E-4A3D-BF1E-FECF36348268}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
CMS-ESA|Any CPU = CMS-ESA|Any CPU
CMS-ESA|x86 = CMS-ESA|x86
CMS-FANUC|Any CPU = CMS-FANUC|Any CPU
CMS-FANUC|x86 = CMS-FANUC|x86
CMS-OSAI|Any CPU = CMS-OSAI|Any CPU
CMS-OSAI|x86 = CMS-OSAI|x86
CMS-SIEMENS|Any CPU = CMS-SIEMENS|Any CPU
CMS-SIEMENS|x86 = CMS-SIEMENS|x86
Debug|Any CPU = Debug|Any CPU
Debug|x86 = Debug|x86
MySql|Any CPU = MySql|Any CPU
MySql|x86 = MySql|x86
Release|Any CPU = Release|Any CPU
Release|x86 = Release|x86
SCM-ESA|Any CPU = SCM-ESA|Any CPU
SCM-ESA|x86 = SCM-ESA|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{2D769FFD-1122-4276-A115-29246E6D23C5}.CMS-ESA|Any CPU.ActiveCfg = Release|Any CPU
{2D769FFD-1122-4276-A115-29246E6D23C5}.CMS-ESA|Any CPU.Build.0 = Release|Any CPU
{2D769FFD-1122-4276-A115-29246E6D23C5}.CMS-ESA|x86.ActiveCfg = Debug|x86
{2D769FFD-1122-4276-A115-29246E6D23C5}.CMS-ESA|x86.Build.0 = Debug|x86
{2D769FFD-1122-4276-A115-29246E6D23C5}.CMS-FANUC|Any CPU.ActiveCfg = Release|Any CPU
{2D769FFD-1122-4276-A115-29246E6D23C5}.CMS-FANUC|Any CPU.Build.0 = Release|Any CPU
{2D769FFD-1122-4276-A115-29246E6D23C5}.CMS-FANUC|x86.ActiveCfg = Debug|x86
{2D769FFD-1122-4276-A115-29246E6D23C5}.CMS-FANUC|x86.Build.0 = Debug|x86
{2D769FFD-1122-4276-A115-29246E6D23C5}.CMS-OSAI|Any CPU.ActiveCfg = Release|Any CPU
{2D769FFD-1122-4276-A115-29246E6D23C5}.CMS-OSAI|Any CPU.Build.0 = Release|Any CPU
{2D769FFD-1122-4276-A115-29246E6D23C5}.CMS-OSAI|x86.ActiveCfg = Debug|x86
{2D769FFD-1122-4276-A115-29246E6D23C5}.CMS-OSAI|x86.Build.0 = Debug|x86
{2D769FFD-1122-4276-A115-29246E6D23C5}.CMS-SIEMENS|Any CPU.ActiveCfg = Release|Any CPU
{2D769FFD-1122-4276-A115-29246E6D23C5}.CMS-SIEMENS|Any CPU.Build.0 = Release|Any CPU
{2D769FFD-1122-4276-A115-29246E6D23C5}.CMS-SIEMENS|x86.ActiveCfg = Debug|x86
{2D769FFD-1122-4276-A115-29246E6D23C5}.CMS-SIEMENS|x86.Build.0 = Debug|x86
{2D769FFD-1122-4276-A115-29246E6D23C5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2D769FFD-1122-4276-A115-29246E6D23C5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2D769FFD-1122-4276-A115-29246E6D23C5}.Debug|x86.ActiveCfg = Debug|x86
{2D769FFD-1122-4276-A115-29246E6D23C5}.Debug|x86.Build.0 = Debug|x86
{2D769FFD-1122-4276-A115-29246E6D23C5}.MySql|Any CPU.ActiveCfg = Release|Any CPU
{2D769FFD-1122-4276-A115-29246E6D23C5}.MySql|Any CPU.Build.0 = Release|Any CPU
{2D769FFD-1122-4276-A115-29246E6D23C5}.MySql|x86.ActiveCfg = Debug|x86
{2D769FFD-1122-4276-A115-29246E6D23C5}.MySql|x86.Build.0 = Debug|x86
{2D769FFD-1122-4276-A115-29246E6D23C5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2D769FFD-1122-4276-A115-29246E6D23C5}.Release|Any CPU.Build.0 = Release|Any CPU
{2D769FFD-1122-4276-A115-29246E6D23C5}.Release|x86.ActiveCfg = Release|x86
{2D769FFD-1122-4276-A115-29246E6D23C5}.Release|x86.Build.0 = Release|x86
{2D769FFD-1122-4276-A115-29246E6D23C5}.SCM-ESA|Any CPU.ActiveCfg = Release|Any CPU
{2D769FFD-1122-4276-A115-29246E6D23C5}.SCM-ESA|Any CPU.Build.0 = Release|Any CPU
{2D769FFD-1122-4276-A115-29246E6D23C5}.SCM-ESA|x86.ActiveCfg = Debug|x86
{2D769FFD-1122-4276-A115-29246E6D23C5}.SCM-ESA|x86.Build.0 = Debug|x86
{736DF121-11E6-4D46-835D-6560ACF241E4}.CMS-ESA|Any CPU.ActiveCfg = CMS-ESA|Any CPU
{736DF121-11E6-4D46-835D-6560ACF241E4}.CMS-ESA|Any CPU.Build.0 = CMS-ESA|Any CPU
{736DF121-11E6-4D46-835D-6560ACF241E4}.CMS-ESA|x86.ActiveCfg = CMS-ESA|x86
{736DF121-11E6-4D46-835D-6560ACF241E4}.CMS-ESA|x86.Build.0 = CMS-ESA|x86
{736DF121-11E6-4D46-835D-6560ACF241E4}.CMS-FANUC|Any CPU.ActiveCfg = CMS-FANUC|Any CPU
{736DF121-11E6-4D46-835D-6560ACF241E4}.CMS-FANUC|Any CPU.Build.0 = CMS-FANUC|Any CPU
{736DF121-11E6-4D46-835D-6560ACF241E4}.CMS-FANUC|x86.ActiveCfg = CMS-FANUC|x86
{736DF121-11E6-4D46-835D-6560ACF241E4}.CMS-FANUC|x86.Build.0 = CMS-FANUC|x86
{736DF121-11E6-4D46-835D-6560ACF241E4}.CMS-OSAI|Any CPU.ActiveCfg = CMS-OSAI|Any CPU
{736DF121-11E6-4D46-835D-6560ACF241E4}.CMS-OSAI|Any CPU.Build.0 = CMS-OSAI|Any CPU
{736DF121-11E6-4D46-835D-6560ACF241E4}.CMS-OSAI|x86.ActiveCfg = CMS-OSAI|x86
{736DF121-11E6-4D46-835D-6560ACF241E4}.CMS-OSAI|x86.Build.0 = CMS-OSAI|x86
{736DF121-11E6-4D46-835D-6560ACF241E4}.CMS-SIEMENS|Any CPU.ActiveCfg = CMS-SIEMENS|Any CPU
{736DF121-11E6-4D46-835D-6560ACF241E4}.CMS-SIEMENS|Any CPU.Build.0 = CMS-SIEMENS|Any CPU
{736DF121-11E6-4D46-835D-6560ACF241E4}.CMS-SIEMENS|x86.ActiveCfg = CMS-SIEMENS|x86
{736DF121-11E6-4D46-835D-6560ACF241E4}.CMS-SIEMENS|x86.Build.0 = CMS-SIEMENS|x86
{736DF121-11E6-4D46-835D-6560ACF241E4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{736DF121-11E6-4D46-835D-6560ACF241E4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{736DF121-11E6-4D46-835D-6560ACF241E4}.Debug|x86.ActiveCfg = Debug|x86
{736DF121-11E6-4D46-835D-6560ACF241E4}.Debug|x86.Build.0 = Debug|x86
{736DF121-11E6-4D46-835D-6560ACF241E4}.MySql|Any CPU.ActiveCfg = Release|Any CPU
{736DF121-11E6-4D46-835D-6560ACF241E4}.MySql|Any CPU.Build.0 = Release|Any CPU
{736DF121-11E6-4D46-835D-6560ACF241E4}.MySql|x86.ActiveCfg = Debug|x86
{736DF121-11E6-4D46-835D-6560ACF241E4}.MySql|x86.Build.0 = Debug|x86
{736DF121-11E6-4D46-835D-6560ACF241E4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{736DF121-11E6-4D46-835D-6560ACF241E4}.Release|Any CPU.Build.0 = Release|Any CPU
{736DF121-11E6-4D46-835D-6560ACF241E4}.Release|x86.ActiveCfg = Release|x86
{736DF121-11E6-4D46-835D-6560ACF241E4}.Release|x86.Build.0 = Release|x86
{736DF121-11E6-4D46-835D-6560ACF241E4}.SCM-ESA|Any CPU.ActiveCfg = SCM-ESA|Any CPU
{736DF121-11E6-4D46-835D-6560ACF241E4}.SCM-ESA|Any CPU.Build.0 = SCM-ESA|Any CPU
{736DF121-11E6-4D46-835D-6560ACF241E4}.SCM-ESA|x86.ActiveCfg = SCM-ESA|x86
{736DF121-11E6-4D46-835D-6560ACF241E4}.SCM-ESA|x86.Build.0 = SCM-ESA|x86
{58E399F3-9D4E-49D3-AB35-9ED536543D50}.CMS-ESA|Any CPU.ActiveCfg = Release|Any CPU
{58E399F3-9D4E-49D3-AB35-9ED536543D50}.CMS-ESA|Any CPU.Build.0 = Release|Any CPU
{58E399F3-9D4E-49D3-AB35-9ED536543D50}.CMS-ESA|x86.ActiveCfg = Debug|x86
{58E399F3-9D4E-49D3-AB35-9ED536543D50}.CMS-ESA|x86.Build.0 = Debug|x86
{58E399F3-9D4E-49D3-AB35-9ED536543D50}.CMS-FANUC|Any CPU.ActiveCfg = Release|Any CPU
{58E399F3-9D4E-49D3-AB35-9ED536543D50}.CMS-FANUC|Any CPU.Build.0 = Release|Any CPU
{58E399F3-9D4E-49D3-AB35-9ED536543D50}.CMS-FANUC|x86.ActiveCfg = Debug|x86
{58E399F3-9D4E-49D3-AB35-9ED536543D50}.CMS-FANUC|x86.Build.0 = Debug|x86
{58E399F3-9D4E-49D3-AB35-9ED536543D50}.CMS-OSAI|Any CPU.ActiveCfg = Release|Any CPU
{58E399F3-9D4E-49D3-AB35-9ED536543D50}.CMS-OSAI|Any CPU.Build.0 = Release|Any CPU
{58E399F3-9D4E-49D3-AB35-9ED536543D50}.CMS-OSAI|x86.ActiveCfg = Debug|x86
{58E399F3-9D4E-49D3-AB35-9ED536543D50}.CMS-OSAI|x86.Build.0 = Debug|x86
{58E399F3-9D4E-49D3-AB35-9ED536543D50}.CMS-SIEMENS|Any CPU.ActiveCfg = Release|Any CPU
{58E399F3-9D4E-49D3-AB35-9ED536543D50}.CMS-SIEMENS|Any CPU.Build.0 = Release|Any CPU
{58E399F3-9D4E-49D3-AB35-9ED536543D50}.CMS-SIEMENS|x86.ActiveCfg = Debug|x86
{58E399F3-9D4E-49D3-AB35-9ED536543D50}.CMS-SIEMENS|x86.Build.0 = Debug|x86
{58E399F3-9D4E-49D3-AB35-9ED536543D50}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{58E399F3-9D4E-49D3-AB35-9ED536543D50}.Debug|Any CPU.Build.0 = Debug|Any CPU
{58E399F3-9D4E-49D3-AB35-9ED536543D50}.Debug|x86.ActiveCfg = Debug|x86
{58E399F3-9D4E-49D3-AB35-9ED536543D50}.Debug|x86.Build.0 = Debug|x86
{58E399F3-9D4E-49D3-AB35-9ED536543D50}.MySql|Any CPU.ActiveCfg = Release|Any CPU
{58E399F3-9D4E-49D3-AB35-9ED536543D50}.MySql|Any CPU.Build.0 = Release|Any CPU
{58E399F3-9D4E-49D3-AB35-9ED536543D50}.MySql|x86.ActiveCfg = Debug|x86
{58E399F3-9D4E-49D3-AB35-9ED536543D50}.MySql|x86.Build.0 = Debug|x86
{58E399F3-9D4E-49D3-AB35-9ED536543D50}.Release|Any CPU.ActiveCfg = Release|Any CPU
{58E399F3-9D4E-49D3-AB35-9ED536543D50}.Release|Any CPU.Build.0 = Release|Any CPU
{58E399F3-9D4E-49D3-AB35-9ED536543D50}.Release|x86.ActiveCfg = Release|x86
{58E399F3-9D4E-49D3-AB35-9ED536543D50}.Release|x86.Build.0 = Release|x86
{58E399F3-9D4E-49D3-AB35-9ED536543D50}.SCM-ESA|Any CPU.ActiveCfg = Release|Any CPU
{58E399F3-9D4E-49D3-AB35-9ED536543D50}.SCM-ESA|Any CPU.Build.0 = Release|Any CPU
{58E399F3-9D4E-49D3-AB35-9ED536543D50}.SCM-ESA|x86.ActiveCfg = Debug|x86
{58E399F3-9D4E-49D3-AB35-9ED536543D50}.SCM-ESA|x86.Build.0 = Debug|x86
{7A12FE26-9C58-4630-973D-D4872374DBAF}.CMS-ESA|Any CPU.ActiveCfg = Release|Any CPU
{7A12FE26-9C58-4630-973D-D4872374DBAF}.CMS-ESA|Any CPU.Build.0 = Release|Any CPU
{7A12FE26-9C58-4630-973D-D4872374DBAF}.CMS-ESA|x86.ActiveCfg = Debug|x86
{7A12FE26-9C58-4630-973D-D4872374DBAF}.CMS-ESA|x86.Build.0 = Debug|x86
{7A12FE26-9C58-4630-973D-D4872374DBAF}.CMS-FANUC|Any CPU.ActiveCfg = Release|Any CPU
{7A12FE26-9C58-4630-973D-D4872374DBAF}.CMS-FANUC|Any CPU.Build.0 = Release|Any CPU
{7A12FE26-9C58-4630-973D-D4872374DBAF}.CMS-FANUC|x86.ActiveCfg = Debug|x86
{7A12FE26-9C58-4630-973D-D4872374DBAF}.CMS-FANUC|x86.Build.0 = Debug|x86
{7A12FE26-9C58-4630-973D-D4872374DBAF}.CMS-OSAI|Any CPU.ActiveCfg = Release|Any CPU
{7A12FE26-9C58-4630-973D-D4872374DBAF}.CMS-OSAI|Any CPU.Build.0 = Release|Any CPU
{7A12FE26-9C58-4630-973D-D4872374DBAF}.CMS-OSAI|x86.ActiveCfg = Debug|x86
{7A12FE26-9C58-4630-973D-D4872374DBAF}.CMS-OSAI|x86.Build.0 = Debug|x86
{7A12FE26-9C58-4630-973D-D4872374DBAF}.CMS-SIEMENS|Any CPU.ActiveCfg = Release|Any CPU
{7A12FE26-9C58-4630-973D-D4872374DBAF}.CMS-SIEMENS|Any CPU.Build.0 = Release|Any CPU
{7A12FE26-9C58-4630-973D-D4872374DBAF}.CMS-SIEMENS|x86.ActiveCfg = Debug|x86
{7A12FE26-9C58-4630-973D-D4872374DBAF}.CMS-SIEMENS|x86.Build.0 = Debug|x86
{7A12FE26-9C58-4630-973D-D4872374DBAF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7A12FE26-9C58-4630-973D-D4872374DBAF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7A12FE26-9C58-4630-973D-D4872374DBAF}.Debug|x86.ActiveCfg = Debug|x86
{7A12FE26-9C58-4630-973D-D4872374DBAF}.Debug|x86.Build.0 = Debug|x86
{7A12FE26-9C58-4630-973D-D4872374DBAF}.MySql|Any CPU.ActiveCfg = Release|Any CPU
{7A12FE26-9C58-4630-973D-D4872374DBAF}.MySql|Any CPU.Build.0 = Release|Any CPU
{7A12FE26-9C58-4630-973D-D4872374DBAF}.MySql|x86.ActiveCfg = Debug|x86
{7A12FE26-9C58-4630-973D-D4872374DBAF}.MySql|x86.Build.0 = Debug|x86
{7A12FE26-9C58-4630-973D-D4872374DBAF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7A12FE26-9C58-4630-973D-D4872374DBAF}.Release|Any CPU.Build.0 = Release|Any CPU
{7A12FE26-9C58-4630-973D-D4872374DBAF}.Release|x86.ActiveCfg = Release|x86
{7A12FE26-9C58-4630-973D-D4872374DBAF}.Release|x86.Build.0 = Release|x86
{7A12FE26-9C58-4630-973D-D4872374DBAF}.SCM-ESA|Any CPU.ActiveCfg = Release|Any CPU
{7A12FE26-9C58-4630-973D-D4872374DBAF}.SCM-ESA|Any CPU.Build.0 = Release|Any CPU
{7A12FE26-9C58-4630-973D-D4872374DBAF}.SCM-ESA|x86.ActiveCfg = Debug|x86
{7A12FE26-9C58-4630-973D-D4872374DBAF}.SCM-ESA|x86.Build.0 = Debug|x86
{DF877E5E-8D04-4532-BA01-CEFD8636D4DA}.CMS-ESA|Any CPU.ActiveCfg = Release|Any CPU
{DF877E5E-8D04-4532-BA01-CEFD8636D4DA}.CMS-ESA|Any CPU.Build.0 = Release|Any CPU
{DF877E5E-8D04-4532-BA01-CEFD8636D4DA}.CMS-ESA|x86.ActiveCfg = Debug|x86
{DF877E5E-8D04-4532-BA01-CEFD8636D4DA}.CMS-ESA|x86.Build.0 = Debug|x86
{DF877E5E-8D04-4532-BA01-CEFD8636D4DA}.CMS-FANUC|Any CPU.ActiveCfg = Release|Any CPU
{DF877E5E-8D04-4532-BA01-CEFD8636D4DA}.CMS-FANUC|Any CPU.Build.0 = Release|Any CPU
{DF877E5E-8D04-4532-BA01-CEFD8636D4DA}.CMS-FANUC|x86.ActiveCfg = Debug|x86
{DF877E5E-8D04-4532-BA01-CEFD8636D4DA}.CMS-FANUC|x86.Build.0 = Debug|x86
{DF877E5E-8D04-4532-BA01-CEFD8636D4DA}.CMS-OSAI|Any CPU.ActiveCfg = Release|Any CPU
{DF877E5E-8D04-4532-BA01-CEFD8636D4DA}.CMS-OSAI|Any CPU.Build.0 = Release|Any CPU
{DF877E5E-8D04-4532-BA01-CEFD8636D4DA}.CMS-OSAI|x86.ActiveCfg = Debug|x86
{DF877E5E-8D04-4532-BA01-CEFD8636D4DA}.CMS-OSAI|x86.Build.0 = Debug|x86
{DF877E5E-8D04-4532-BA01-CEFD8636D4DA}.CMS-SIEMENS|Any CPU.ActiveCfg = Release|Any CPU
{DF877E5E-8D04-4532-BA01-CEFD8636D4DA}.CMS-SIEMENS|Any CPU.Build.0 = Release|Any CPU
{DF877E5E-8D04-4532-BA01-CEFD8636D4DA}.CMS-SIEMENS|x86.ActiveCfg = Debug|x86
{DF877E5E-8D04-4532-BA01-CEFD8636D4DA}.CMS-SIEMENS|x86.Build.0 = Debug|x86
{DF877E5E-8D04-4532-BA01-CEFD8636D4DA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DF877E5E-8D04-4532-BA01-CEFD8636D4DA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DF877E5E-8D04-4532-BA01-CEFD8636D4DA}.Debug|x86.ActiveCfg = Debug|x86
{DF877E5E-8D04-4532-BA01-CEFD8636D4DA}.Debug|x86.Build.0 = Debug|x86
{DF877E5E-8D04-4532-BA01-CEFD8636D4DA}.MySql|Any CPU.ActiveCfg = MySql|Any CPU
{DF877E5E-8D04-4532-BA01-CEFD8636D4DA}.MySql|Any CPU.Build.0 = MySql|Any CPU
{DF877E5E-8D04-4532-BA01-CEFD8636D4DA}.MySql|x86.ActiveCfg = MySql|x86
{DF877E5E-8D04-4532-BA01-CEFD8636D4DA}.MySql|x86.Build.0 = MySql|x86
{DF877E5E-8D04-4532-BA01-CEFD8636D4DA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DF877E5E-8D04-4532-BA01-CEFD8636D4DA}.Release|Any CPU.Build.0 = Release|Any CPU
{DF877E5E-8D04-4532-BA01-CEFD8636D4DA}.Release|x86.ActiveCfg = Release|x86
{DF877E5E-8D04-4532-BA01-CEFD8636D4DA}.Release|x86.Build.0 = Release|x86
{DF877E5E-8D04-4532-BA01-CEFD8636D4DA}.SCM-ESA|Any CPU.ActiveCfg = Release|Any CPU
{DF877E5E-8D04-4532-BA01-CEFD8636D4DA}.SCM-ESA|Any CPU.Build.0 = Release|Any CPU
{DF877E5E-8D04-4532-BA01-CEFD8636D4DA}.SCM-ESA|x86.ActiveCfg = Debug|x86
{DF877E5E-8D04-4532-BA01-CEFD8636D4DA}.SCM-ESA|x86.Build.0 = Debug|x86
{EC83D80E-9F3B-4DE9-B16A-CA216543B7EC}.CMS-ESA|Any CPU.ActiveCfg = Release|Any CPU
{EC83D80E-9F3B-4DE9-B16A-CA216543B7EC}.CMS-ESA|Any CPU.Build.0 = Release|Any CPU
{EC83D80E-9F3B-4DE9-B16A-CA216543B7EC}.CMS-ESA|x86.ActiveCfg = Debug|x86
{EC83D80E-9F3B-4DE9-B16A-CA216543B7EC}.CMS-ESA|x86.Build.0 = Debug|x86
{EC83D80E-9F3B-4DE9-B16A-CA216543B7EC}.CMS-FANUC|Any CPU.ActiveCfg = Release|Any CPU
{EC83D80E-9F3B-4DE9-B16A-CA216543B7EC}.CMS-FANUC|Any CPU.Build.0 = Release|Any CPU
{EC83D80E-9F3B-4DE9-B16A-CA216543B7EC}.CMS-FANUC|x86.ActiveCfg = Debug|x86
{EC83D80E-9F3B-4DE9-B16A-CA216543B7EC}.CMS-FANUC|x86.Build.0 = Debug|x86
{EC83D80E-9F3B-4DE9-B16A-CA216543B7EC}.CMS-OSAI|Any CPU.ActiveCfg = Release|Any CPU
{EC83D80E-9F3B-4DE9-B16A-CA216543B7EC}.CMS-OSAI|Any CPU.Build.0 = Release|Any CPU
{EC83D80E-9F3B-4DE9-B16A-CA216543B7EC}.CMS-OSAI|x86.ActiveCfg = Debug|x86
{EC83D80E-9F3B-4DE9-B16A-CA216543B7EC}.CMS-OSAI|x86.Build.0 = Debug|x86
{EC83D80E-9F3B-4DE9-B16A-CA216543B7EC}.CMS-SIEMENS|Any CPU.ActiveCfg = Release|Any CPU
{EC83D80E-9F3B-4DE9-B16A-CA216543B7EC}.CMS-SIEMENS|Any CPU.Build.0 = Release|Any CPU
{EC83D80E-9F3B-4DE9-B16A-CA216543B7EC}.CMS-SIEMENS|x86.ActiveCfg = Debug|x86
{EC83D80E-9F3B-4DE9-B16A-CA216543B7EC}.CMS-SIEMENS|x86.Build.0 = Debug|x86
{EC83D80E-9F3B-4DE9-B16A-CA216543B7EC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EC83D80E-9F3B-4DE9-B16A-CA216543B7EC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EC83D80E-9F3B-4DE9-B16A-CA216543B7EC}.Debug|x86.ActiveCfg = Debug|x86
{EC83D80E-9F3B-4DE9-B16A-CA216543B7EC}.Debug|x86.Build.0 = Debug|x86
{EC83D80E-9F3B-4DE9-B16A-CA216543B7EC}.MySql|Any CPU.ActiveCfg = Release|Any CPU
{EC83D80E-9F3B-4DE9-B16A-CA216543B7EC}.MySql|Any CPU.Build.0 = Release|Any CPU
{EC83D80E-9F3B-4DE9-B16A-CA216543B7EC}.MySql|x86.ActiveCfg = Debug|x86
{EC83D80E-9F3B-4DE9-B16A-CA216543B7EC}.MySql|x86.Build.0 = Debug|x86
{EC83D80E-9F3B-4DE9-B16A-CA216543B7EC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EC83D80E-9F3B-4DE9-B16A-CA216543B7EC}.Release|Any CPU.Build.0 = Release|Any CPU
{EC83D80E-9F3B-4DE9-B16A-CA216543B7EC}.Release|x86.ActiveCfg = Release|x86
{EC83D80E-9F3B-4DE9-B16A-CA216543B7EC}.Release|x86.Build.0 = Release|x86
{EC83D80E-9F3B-4DE9-B16A-CA216543B7EC}.SCM-ESA|Any CPU.ActiveCfg = Release|Any CPU
{EC83D80E-9F3B-4DE9-B16A-CA216543B7EC}.SCM-ESA|Any CPU.Build.0 = Release|Any CPU
{EC83D80E-9F3B-4DE9-B16A-CA216543B7EC}.SCM-ESA|x86.ActiveCfg = Debug|x86
{EC83D80E-9F3B-4DE9-B16A-CA216543B7EC}.SCM-ESA|x86.Build.0 = Debug|x86
{5AFCCD6A-3758-44C8-96ED-84E809FCA8A1}.CMS-ESA|Any CPU.ActiveCfg = Release|Any CPU
{5AFCCD6A-3758-44C8-96ED-84E809FCA8A1}.CMS-ESA|Any CPU.Build.0 = Release|Any CPU
{5AFCCD6A-3758-44C8-96ED-84E809FCA8A1}.CMS-ESA|x86.ActiveCfg = Debug|x86
{5AFCCD6A-3758-44C8-96ED-84E809FCA8A1}.CMS-ESA|x86.Build.0 = Debug|x86
{5AFCCD6A-3758-44C8-96ED-84E809FCA8A1}.CMS-FANUC|Any CPU.ActiveCfg = Release|Any CPU
{5AFCCD6A-3758-44C8-96ED-84E809FCA8A1}.CMS-FANUC|Any CPU.Build.0 = Release|Any CPU
{5AFCCD6A-3758-44C8-96ED-84E809FCA8A1}.CMS-FANUC|x86.ActiveCfg = Debug|x86
{5AFCCD6A-3758-44C8-96ED-84E809FCA8A1}.CMS-FANUC|x86.Build.0 = Debug|x86
{5AFCCD6A-3758-44C8-96ED-84E809FCA8A1}.CMS-OSAI|Any CPU.ActiveCfg = Release|Any CPU
{5AFCCD6A-3758-44C8-96ED-84E809FCA8A1}.CMS-OSAI|Any CPU.Build.0 = Release|Any CPU
{5AFCCD6A-3758-44C8-96ED-84E809FCA8A1}.CMS-OSAI|x86.ActiveCfg = Debug|x86
{5AFCCD6A-3758-44C8-96ED-84E809FCA8A1}.CMS-OSAI|x86.Build.0 = Debug|x86
{5AFCCD6A-3758-44C8-96ED-84E809FCA8A1}.CMS-SIEMENS|Any CPU.ActiveCfg = Release|Any CPU
{5AFCCD6A-3758-44C8-96ED-84E809FCA8A1}.CMS-SIEMENS|Any CPU.Build.0 = Release|Any CPU
{5AFCCD6A-3758-44C8-96ED-84E809FCA8A1}.CMS-SIEMENS|x86.ActiveCfg = Debug|x86
{5AFCCD6A-3758-44C8-96ED-84E809FCA8A1}.CMS-SIEMENS|x86.Build.0 = Debug|x86
{5AFCCD6A-3758-44C8-96ED-84E809FCA8A1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5AFCCD6A-3758-44C8-96ED-84E809FCA8A1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5AFCCD6A-3758-44C8-96ED-84E809FCA8A1}.Debug|x86.ActiveCfg = Debug|x86
{5AFCCD6A-3758-44C8-96ED-84E809FCA8A1}.Debug|x86.Build.0 = Debug|x86
{5AFCCD6A-3758-44C8-96ED-84E809FCA8A1}.MySql|Any CPU.ActiveCfg = Release|Any CPU
{5AFCCD6A-3758-44C8-96ED-84E809FCA8A1}.MySql|Any CPU.Build.0 = Release|Any CPU
{5AFCCD6A-3758-44C8-96ED-84E809FCA8A1}.MySql|x86.ActiveCfg = Debug|x86
{5AFCCD6A-3758-44C8-96ED-84E809FCA8A1}.MySql|x86.Build.0 = Debug|x86
{5AFCCD6A-3758-44C8-96ED-84E809FCA8A1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5AFCCD6A-3758-44C8-96ED-84E809FCA8A1}.Release|Any CPU.Build.0 = Release|Any CPU
{5AFCCD6A-3758-44C8-96ED-84E809FCA8A1}.Release|x86.ActiveCfg = Release|x86
{5AFCCD6A-3758-44C8-96ED-84E809FCA8A1}.Release|x86.Build.0 = Release|x86
{5AFCCD6A-3758-44C8-96ED-84E809FCA8A1}.SCM-ESA|Any CPU.ActiveCfg = Release|Any CPU
{5AFCCD6A-3758-44C8-96ED-84E809FCA8A1}.SCM-ESA|Any CPU.Build.0 = Release|Any CPU
{5AFCCD6A-3758-44C8-96ED-84E809FCA8A1}.SCM-ESA|x86.ActiveCfg = Debug|x86
{5AFCCD6A-3758-44C8-96ED-84E809FCA8A1}.SCM-ESA|x86.Build.0 = Debug|x86
{884C07F1-7E6E-4A3D-BF1E-FECF36348268}.CMS-ESA|Any CPU.ActiveCfg = Release|Any CPU
{884C07F1-7E6E-4A3D-BF1E-FECF36348268}.CMS-ESA|Any CPU.Build.0 = Release|Any CPU
{884C07F1-7E6E-4A3D-BF1E-FECF36348268}.CMS-ESA|x86.ActiveCfg = Debug|x86
{884C07F1-7E6E-4A3D-BF1E-FECF36348268}.CMS-ESA|x86.Build.0 = Debug|x86
{884C07F1-7E6E-4A3D-BF1E-FECF36348268}.CMS-FANUC|Any CPU.ActiveCfg = Release|Any CPU
{884C07F1-7E6E-4A3D-BF1E-FECF36348268}.CMS-FANUC|Any CPU.Build.0 = Release|Any CPU
{884C07F1-7E6E-4A3D-BF1E-FECF36348268}.CMS-FANUC|x86.ActiveCfg = Debug|x86
{884C07F1-7E6E-4A3D-BF1E-FECF36348268}.CMS-FANUC|x86.Build.0 = Debug|x86
{884C07F1-7E6E-4A3D-BF1E-FECF36348268}.CMS-OSAI|Any CPU.ActiveCfg = Release|Any CPU
{884C07F1-7E6E-4A3D-BF1E-FECF36348268}.CMS-OSAI|Any CPU.Build.0 = Release|Any CPU
{884C07F1-7E6E-4A3D-BF1E-FECF36348268}.CMS-OSAI|x86.ActiveCfg = Debug|x86
{884C07F1-7E6E-4A3D-BF1E-FECF36348268}.CMS-OSAI|x86.Build.0 = Debug|x86
{884C07F1-7E6E-4A3D-BF1E-FECF36348268}.CMS-SIEMENS|Any CPU.ActiveCfg = Release|Any CPU
{884C07F1-7E6E-4A3D-BF1E-FECF36348268}.CMS-SIEMENS|Any CPU.Build.0 = Release|Any CPU
{884C07F1-7E6E-4A3D-BF1E-FECF36348268}.CMS-SIEMENS|x86.ActiveCfg = Debug|x86
{884C07F1-7E6E-4A3D-BF1E-FECF36348268}.CMS-SIEMENS|x86.Build.0 = Debug|x86
{884C07F1-7E6E-4A3D-BF1E-FECF36348268}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{884C07F1-7E6E-4A3D-BF1E-FECF36348268}.Debug|Any CPU.Build.0 = Debug|Any CPU
{884C07F1-7E6E-4A3D-BF1E-FECF36348268}.Debug|x86.ActiveCfg = Debug|x86
{884C07F1-7E6E-4A3D-BF1E-FECF36348268}.Debug|x86.Build.0 = Debug|x86
{884C07F1-7E6E-4A3D-BF1E-FECF36348268}.MySql|Any CPU.ActiveCfg = Release|Any CPU
{884C07F1-7E6E-4A3D-BF1E-FECF36348268}.MySql|Any CPU.Build.0 = Release|Any CPU
{884C07F1-7E6E-4A3D-BF1E-FECF36348268}.MySql|x86.ActiveCfg = Debug|x86
{884C07F1-7E6E-4A3D-BF1E-FECF36348268}.MySql|x86.Build.0 = Debug|x86
{884C07F1-7E6E-4A3D-BF1E-FECF36348268}.Release|Any CPU.ActiveCfg = Release|Any CPU
{884C07F1-7E6E-4A3D-BF1E-FECF36348268}.Release|Any CPU.Build.0 = Release|Any CPU
{884C07F1-7E6E-4A3D-BF1E-FECF36348268}.Release|x86.ActiveCfg = Release|x86
{884C07F1-7E6E-4A3D-BF1E-FECF36348268}.Release|x86.Build.0 = Release|x86
{884C07F1-7E6E-4A3D-BF1E-FECF36348268}.SCM-ESA|Any CPU.ActiveCfg = Release|Any CPU
{884C07F1-7E6E-4A3D-BF1E-FECF36348268}.SCM-ESA|Any CPU.Build.0 = Release|Any CPU
{884C07F1-7E6E-4A3D-BF1E-FECF36348268}.SCM-ESA|x86.ActiveCfg = Debug|x86
{884C07F1-7E6E-4A3D-BF1E-FECF36348268}.SCM-ESA|x86.Build.0 = Debug|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {C7C9CC69-EF84-4B45-8C42-E5002A954A03}
EndGlobalSection
EndGlobal

Some files were not shown because too many files have changed in this diff Show More