194 Commits

Author SHA1 Message Date
Samuele Locatelli 5442ca494a Merge branch 'develop' into SDK/Icoel 2023-09-07 08:16:15 +02:00
Samuele Locatelli 68b819e430 Update conf x package icoel (rimozione massiva!!!) 2023-09-07 08:16:09 +02:00
Samuele Locatelli e8812faad2 Update riferimenti x autobinding redirect 2023-09-07 08:10:02 +02:00
Samuele Locatelli 4825b10e35 code cleanup 2023-09-06 19:24:14 +02:00
Samuele Locatelli 7e825d0e93 Ancora update nuget 2023-09-06 19:21:55 +02:00
Samuele Locatelli 2b81645350 Merge branch 'develop' into SDK/Icoel 2023-09-06 19:02:04 +02:00
Samuele Locatelli 924519f157 Ancora update nuget x ProxyIcoel 2023-09-06 19:01:59 +02:00
Samuele Locatelli a5a46a7a41 Merge branch 'develop' into SDK/Icoel 2023-09-06 18:53:21 +02:00
Samuele Locatelli 24ff59aeb8 Update nuget EgwProxyIcoel 2023-09-06 18:51:25 +02:00
Samuele Locatelli eb4655edbd Inizio fix warning compilazione 2023-09-06 18:43:50 +02:00
Samuele Locatelli 9be445273e Merge tag 'FixPingReadPlc04' into develop
Update gestione ping aggiornata
2023-09-06 18:08:10 +02:00
Samuele Locatelli 87f7288c08 Merge branch 'release/FixPingReadPlc04' 2023-09-06 18:08:01 +02:00
Samuele Locatelli 4f21fc3b94 Ancora update PING x ritorno online 2023-09-06 18:07:45 +02:00
Samuele Locatelli 3e9a96861f Merge tag 'FixPingReadPlc03' into develop
Tentativo fix ping IOB
2023-09-06 15:35:39 +02:00
Samuele Locatelli 4d0353cd83 Merge branch 'release/FixPingReadPlc03' 2023-09-06 15:35:30 +02:00
Samuele Locatelli 13c10dc0dc Ancor amodifica ocmportamento PING 2023-09-06 15:35:12 +02:00
Samuele Locatelli 5f5b89e445 Merge tag 'FixPingReadPlc02' into develop
Timeout last ping rivisto
2023-09-06 11:50:50 +02:00
Samuele Locatelli eddec0566a Merge branch 'release/FixPingReadPlc02' 2023-09-06 11:50:43 +02:00
Samuele Locatelli f78c1422be Ancora update ping x timeout primo ping 2023-09-06 11:50:24 +02:00
Samuele Locatelli 25fa766aeb Merge tag 'FixPingReadPlc01' into develop
Fix gestione lastConnectPLC x ping adapter
2023-09-06 10:52:48 +02:00
Samuele Locatelli 9f6d5a80da Merge branch 'release/FixPingReadPlc01' 2023-09-06 10:50:51 +02:00
Samuele Locatelli bb14c275d5 Update ping x aggiornamento variabile lastreadPLC 2023-09-06 10:50:27 +02:00
Samuele Locatelli 9a70d3806f Merge tag 'FixPingDisconnectOnLoad01' into develop
Fix ping adapter x disconnessioni all'avvio
2023-09-05 14:48:01 +02:00
Samuele Locatelli 22fbc5c763 Merge branch 'release/FixPingDisconnectOnLoad01' 2023-09-05 14:47:46 +02:00
Samuele Locatelli 7e819f39ad Update PING adapter
- check errate disconnessioni immediate
- check con/senza ODL
2023-09-05 14:47:20 +02:00
Samuele Locatelli 845567ca33 Merge tag 'UpdateSeleniumNuget01' into develop
update selenium drivers
2023-07-31 17:17:31 +02:00
Samuele Locatelli d0c14f17fd Merge branch 'release/UpdateSeleniumNuget01' 2023-07-31 17:17:22 +02:00
Samuele Locatelli 6ae0a594e6 update nuget selenium IDE x MAPO 2023-07-31 17:14:23 +02:00
Samuele Locatelli 458d378c12 Update conf x export fixed-width AS400 2023-07-26 19:06:50 +02:00
Samuele Locatelli d5f041756b Update conf consumi x Tenditalia (errore nome colonne) 2023-07-24 16:14:04 +02:00
Samuele Locatelli ed93c4d123 Merge tag 'AddOutputFixWidth_AS400' into develop
completato merge versione FIMAT x Tenditalia con output AS400 in fixed
width
2023-07-19 15:22:34 +02:00
Samuele Locatelli a2423c157d Merge branch 'release/AddOutputFixWidth_AS400' 2023-07-19 15:22:15 +02:00
Samuele Locatelli 86a7bdc912 Update conf x FIMAT Tenditalia effettivo 2023-07-19 15:21:46 +02:00
Samuele Locatelli 604ab558fc Completata review gestione output FixedWidth x Tenditalia 2023-07-10 14:26:32 +02:00
Samuele Locatelli af461e1cbf Aggiunta PRELIMINARE funzionalità save fixedWidth 2023-07-10 13:36:33 +02:00
Samuele Locatelli b9c6bbcd82 Merge tag 'FixEmptyQueueOnClose01' into develop
Gestione condizione chiusura e svuotamento code (evitato se c'è redis
 queue)
2023-07-06 12:37:14 +02:00
Samuele Locatelli 73958c8573 Merge branch 'release/FixEmptyQueueOnClose01' 2023-07-06 12:36:59 +02:00
Samuele Locatelli fe9543681a Fix condizione uscita e send valori 2023-07-06 12:36:26 +02:00
Samuele Locatelli 56b5850b1a Merge tag 'AddRedisQueueOnSim02' into develop
Aggiornamento gestione Count x DataQueue (diminuzione op lettura)
2023-07-05 14:53:02 +02:00
Samuele Locatelli c5e4605de6 Merge branch 'release/AddRedisQueueOnSim02' 2023-07-05 14:52:20 +02:00
Samuele Locatelli 96be4bdf64 Update gestione Count x DataQueue 2023-07-05 14:51:59 +02:00
Samuele Locatelli ff1586b36d Merge tag 'AddRedisQueueOnSim' into develop
Aggiunta gestione coda redis e test in SIM
2023-07-05 14:10:50 +02:00
Samuele Locatelli 7abe80f7b0 Merge branch 'release/AddRedisQueueOnSim' 2023-07-05 14:10:42 +02:00
Samuele Locatelli 27d76311a0 Update conf x redis queue in SIM 2023-07-05 14:10:30 +02:00
Samuele Locatelli 88d65ae806 Update x gestione code REDIS/Memoria 2023-07-05 14:09:24 +02:00
Samuele Locatelli 03e2d68477 Refresh Stel 2023-07-05 10:25:35 +02:00
Samuele Locatelli d9de2b52d6 Merge tag 'UpdateSqlDbLantekPama01' into develop
Update x ritorno PODL con codice + data/ora eventi
2023-06-06 20:03:35 +02:00
Samuele Locatelli 6b73efa871 Merge branch 'release/UpdateSqlDbLantekPama01' 2023-06-06 20:03:19 +02:00
Samuele Locatelli 597597ef5b SqlDB:
- Update gestione Lantek x DB (ritorno PODL)
- Update PAMA x invio cod PODL
2023-06-06 20:02:22 +02:00
Samuele Locatelli c884e4886a Merge tag 'UpdateIcoelDbConf' into develop
Update x gestione corretta parametri DB/Server ICOEL
2023-05-31 14:35:50 +02:00
Samuele Locatelli d1eeb7f43e Merge branch 'release/UpdateIcoelDbConf' 2023-05-31 14:35:37 +02:00
Samuele Locatelli b644a9973f Update icoel DB:
- gest server + nome DB parametrica corretta
2023-05-31 14:35:19 +02:00
Samuele Locatelli a57fc701aa Merge tag 'UpdateInterclaysMixOxFe01' into develop
Update x OMRON Interclais impianto Mix OxFe
2023-05-18 18:58:22 +02:00
Samuele Locatelli 092e2cea15 Merge branch 'release/UpdateInterclaysMixOxFe01' 2023-05-18 18:58:02 +02:00
Samuele Locatelli b3db69f682 Interclays - OMRON:
- Update x gestione nuovi bit stato poweron / lavora x mix OxFe
2023-05-18 18:57:24 +02:00
Samuele Locatelli de7d55ac7d Merge tag 'FixOpcUaRebootToEmerg02' into develop
fix merge con remote x conf test
2023-05-16 09:41:19 +02:00
Samuele Locatelli cd49fe747c Merge branch 'release/FixOpcUaRebootToEmerg02' 2023-05-16 09:40:59 +02:00
Samuele Locatelli c987caf75e Merge branch 'develop' of https://gitlab.steamware.net/steamware/Mapo-IOB-WIN into develop 2023-05-16 09:40:31 +02:00
Samuele Locatelli de908b710c Merge tag 'FixOpcUarebootToEmerg' into develop
Fix reboot OPC-UA di Cimolai (andava in emergenza) --> fix ping ad ip
diverso da CNC...
2023-05-16 09:40:04 +02:00
Samuele Locatelli 5d83283178 Merge branch 'release/FixOpcUarebootToEmerg' 2023-05-16 09:39:45 +02:00
Samuele E. Locatelli 23143ff639 update x test baglietto, andata! 2023-05-16 09:38:41 +02:00
Samuele Locatelli 34ee4d48ab OPC-UA Cimolai:
- update x evitare errore in riavvio notturno che porta emergenza
2023-05-16 09:16:44 +02:00
Samuele Locatelli 9fdee19c7c Update x gestione nuovo campo ip di ping 2023-05-16 09:16:11 +02:00
Samuele Locatelli 2f2a1c5856 Merge tag 'ReorgIobFolders01' into develop
Riorganizzazione interna codice con folder e gruppi IOB
2023-04-27 14:54:59 +02:00
Samuele Locatelli 236b44a7d5 Merge branch 'release/ReorgIobFolders01' 2023-04-27 14:54:35 +02:00
Samuele Locatelli aac9d92780 CodeMaid reorg 2023-04-27 14:53:43 +02:00
Samuele Locatelli 6a214b937d Spostamento IobGenerici + refresh namespace base 2023-04-27 14:52:16 +02:00
Samuele Locatelli 5a46383da4 Fix area IobNet 2023-04-27 14:45:57 +02:00
Samuele Locatelli 5828994ee3 Reorg codice CodeMaid x IobSiemens 2023-04-27 14:42:57 +02:00
Samuele Locatelli 305af5c74d Update area IobSiemens 2023-04-27 14:34:44 +02:00
Samuele Locatelli dcf95e37ce CodeMaid cleanup x IobOpcUa 2023-04-27 14:30:09 +02:00
Samuele Locatelli b44092654c Modifica preliminare blocco IobOpcUa 2023-04-27 14:26:05 +02:00
Samuele Locatelli 7d4b9e8fdf Typo correction Beckhoff 2023-04-27 14:19:45 +02:00
Samuele Locatelli 4b1d5d9ba5 Update IobBeckhoff 2023-04-27 14:18:26 +02:00
Samuele Locatelli d32968950a reord codemaid 2023-04-27 13:06:55 +02:00
Samuele Locatelli 87a480132b Reord area SQL e Icoel (special/gen) 2023-04-27 13:05:50 +02:00
Samuele Locatelli b6f5df7cc0 CodeMain in area modBusTCP 2023-04-27 13:02:19 +02:00
Samuele Locatelli ee9d6bccd9 Riorganizzata area IobModbusTCP 2023-04-27 12:57:35 +02:00
Samuele Locatelli 020d48ef81 Riorganizzato area IobFile 2023-04-27 12:52:20 +02:00
Samuele Locatelli b5a10f0a4d Fix display valori 0 raw x SIG-IN 2023-04-27 12:40:59 +02:00
Samuele Locatelli 4fbd022656 Merge tag 'AddSoitaabFileAdapter01' into develop
Aggiunta adapter Soitaab file-based
2023-04-27 12:26:03 +02:00
Samuele Locatelli f7741afc30 Merge branch 'release/AddSoitaabFileAdapter01' 2023-04-27 12:25:54 +02:00
Samuele Locatelli 5aa295e892 Merge branch 'develop' of https://gitlab.steamware.net/steamware/Mapo-IOB-WIN into develop 2023-04-27 12:02:16 +02:00
Samuele Locatelli 05464488c2 update appunti 2023-04-27 12:02:10 +02:00
Samuele E. Locatelli 9c74816bab Aggiunto test ping preliminare 2023-04-27 12:00:59 +02:00
Samuele E. Locatelli e0847cd908 Update con correzioni check cartella 2023-04-27 11:58:30 +02:00
Samuele Locatelli 916939ac04 Reorg code Lantek 2023-04-27 11:14:10 +02:00
Samuele Locatelli ff43684c34 Eliminati riferimenti metodi file-based x LANTEK 2023-04-27 11:13:56 +02:00
Samuele Locatelli 10f24fd8a9 Ancora update adapter 2023-04-27 11:10:38 +02:00
Samuele Locatelli 7fe9041597 Update adapter file soitaab (2 test!) 2023-04-27 11:10:30 +02:00
Samuele Locatelli d0abff101f inizio riscrittura adapter file Soitaab 2023-04-27 10:57:39 +02:00
Samuele Locatelli f0cd2524cf Riorganizzazione file conf x SOITAAB x splittare in 2 IOB 2023-04-27 10:56:16 +02:00
Samuele E. Locatelli c593e804a7 Aggiunta appunti 2023-04-24 12:11:36 +02:00
Samuele E. Locatelli c35950da01 Merge tag 'TesLantekSoitaab03' into develop
Update con testing invio stati da lettura logFile --> OK!
2023-04-24 12:04:39 +02:00
Samuele E. Locatelli 4f56bfefba Merge branch 'release/TesLantekSoitaab03' 2023-04-24 12:04:19 +02:00
Samuele E. Locatelli 10cda086d2 Update SOITAAB:
- ok decodifica sstati "oggi" da file
- possibile rilettura dati vecchi (ma a che pro?)
- da dividere in 2 una volta saputo cosa dice lantek
2023-04-24 12:03:40 +02:00
Samuele E. Locatelli b31ade6b6a fix test null x logfile 2023-04-24 11:33:26 +02:00
Samuele E. Locatelli 5730bfa154 update conf x test online soitaab 2023-04-24 11:32:48 +02:00
Samuele E. Locatelli c8f2572f51 Update x inizio sdoppiamento tra adapter SQL lantek e adapter file-based soitaab 2023-04-24 10:10:21 +02:00
Samuele E. Locatelli 71c8a26ac8 Update x fluxLog da SoiTaab 2023-04-24 09:37:36 +02:00
Samuele E. Locatelli 9a348bef64 completato review x lettura log e generare FluxLog + SigLog 2023-04-21 17:00:15 +02:00
Samuele E. Locatelli 62cf634c95 Ok confronto righe vecchie/nuove nel log... 2023-04-21 16:02:47 +02:00
Samuele E. Locatelli 789defb69d update x acquisizione logtable da SOITAAB 2023-04-21 15:14:37 +02:00
Samuele E. Locatelli a10d23b131 Merge tag 'TesLantekSoitaab02' into develop
Fix gestione file csproj sballato
2023-04-21 09:39:45 +02:00
Samuele E. Locatelli a75726bdad Merge branch 'release/TesLantekSoitaab02' 2023-04-21 09:39:29 +02:00
Samuele E. Locatelli 06d05b8d95 fix *.csproj 2023-04-21 09:38:33 +02:00
Samuele E. Locatelli c11a9a91b8 Merge tag 'TesLantekSoitaab01' into develop
Update con gestione lantek che fa sempre export all
2023-04-21 09:34:59 +02:00
Samuele E. Locatelli d2596d57df Merge branch 'release/TesLantekSoitaab01' 2023-04-21 09:34:36 +02:00
Samuele E. Locatelli 2a98a0270a Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/mes/mapo/Mapo-IOB-WIN into develop 2023-04-21 09:32:30 +02:00
Samuele E. Locatelli 5ed50840ac aggiunta export prima di import x lantek 2023-04-21 09:27:45 +02:00
Samuele Locatelli 3a6689d752 Rename conf soitaab 2023-04-20 18:54:37 +02:00
Samuele E. Locatelli 3538277d0b Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/mes/mapo/Mapo-IOB-WIN into develop 2023-04-18 19:31:28 +02:00
Samuele E. Locatelli 51e0486c01 Merge conf x SOITAAB 2023-04-18 19:31:22 +02:00
Samuele Locatelli 76052f9b23 Update conf file SOITAAB 2023-04-18 19:30:47 +02:00
Samuele Locatelli e71de2c52f Aggiunta conf test soitaab preliminare 2023-04-18 09:06:44 +02:00
Samuele Locatelli c19b635366 - tolto aree NON impiegate x invio parametri attivi
- fix gestione progetto (aree PIZ09/10 da NON copiare always)
2023-04-14 17:59:55 +02:00
Samuele Locatelli dff6e4a4e2 update x migliore log in invio parametri conf 2023-04-14 17:58:34 +02:00
Samuele Locatelli 6acc206fb1 Merge tag 'ModbusTCP_FixWriteHamPizzaferri' into develop
Update x fix scrittura HAM x pizzaferri
2023-04-14 12:44:05 +02:00
Samuele Locatelli 674e34f9b5 Merge branch 'release/ModbusTCP_FixWriteHamPizzaferri' 2023-04-14 12:43:56 +02:00
Samuele Locatelli 79f20fd611 FIX ModBus HAM x pizzaferri 2023-04-14 12:43:35 +02:00
Samuele Locatelli 0758afdd98 Merge tag 'ModbusTCP_FixexetaskSyncDB' into develop
Fix gestione execute task syncDbData x ModbusTCP
2023-04-14 09:58:04 +02:00
Samuele Locatelli 3160d2b60b Merge branch 'release/ModbusTCP_FixexetaskSyncDB' 2023-04-14 09:57:51 +02:00
Samuele Locatelli 6b5c4ddaa7 fix mancata esecuzione task scrittura/sync in ModbusTCP 2023-04-14 09:57:19 +02:00
Samuele Locatelli 957d245a53 Merge tag 'UpdatelogPrepareRecipe01' into develop
Aggiornamento log invio ricette x FIMAT
2023-04-14 09:51:51 +02:00
Samuele Locatelli eca5cd628c Merge branch 'release/UpdatelogPrepareRecipe01' 2023-04-14 09:51:36 +02:00
Samuele Locatelli 1118725454 update x log copia ricette tenditalia 2023-04-14 09:51:10 +02:00
Samuele Locatelli d28d3ddcfa Merge tag 'AddReportCsvFimat02' into develop
Update x recupero sync ricette
2023-04-13 11:18:45 +02:00
Samuele Locatelli f6b926d77e Merge branch 'release/AddReportCsvFimat02' 2023-04-13 11:18:33 +02:00
Samuele Locatelli 48ffbb6de1 Completato test import ricette in sync 2023-04-13 10:34:14 +02:00
Samuele Locatelli 7010548337 Gestione import ricette (DA PROVARE!!!) 2023-04-12 19:23:26 +02:00
Samuele Locatelli 55e8aada24 Ok processing settimane consumo passate... 2023-04-12 17:46:29 +02:00
Samuele Locatelli 7aed2bfb32 Merge tag 'AddReportCsvFimat01' into develop
Aggiunta preliminare gestione FIMAT x ricette e report output consumi
2023-04-12 17:01:48 +02:00
Samuele Locatelli 3c215cbaa5 Merge branch 'release/AddReportCsvFimat01' 2023-04-12 17:01:24 +02:00
Samuele Locatelli c16ca8d422 Tenditalia/FIMAT:
- Completato setup da conf x output consumi FIMAT
2023-04-12 16:53:23 +02:00
Samuele Locatelli 77ba05537c Ok chiamate x FIMAT
- archivio zip
- cancellazione tra compiti da svolgere
2023-04-12 11:02:06 +02:00
Samuele Locatelli 79e9e6c348 correzione calcolo DateTime con millisecondi x chaiamte PODL 2023-04-11 11:35:34 +02:00
Samuele Locatelli 97bc417be4 update gestione ricette 2023-04-08 11:12:38 +02:00
Samuele Locatelli 6b7a854bb1 Spostamento ricette fimat in area temp conf generica esterna 2023-04-08 11:12:32 +02:00
Samuele Locatelli 1d08af6a1f PODL x FIMAT:
- Bozza metodi x inviare dati avvio/chiusura PODL (DA TESTARE!!!)
2023-04-07 19:20:49 +02:00
Samuele Locatelli 1abbbf0f06 Refactor/Typo 2023-04-07 18:25:57 +02:00
Samuele Locatelli 52632c24ba riorganizzazione gestione file ricette in adapter generic 2023-04-07 18:23:48 +02:00
Samuele Locatelli ee8a02c156 bozza nuova app import XML (copia da Excel Import) 2023-04-06 19:41:14 +02:00
Samuele Locatelli 6b3e5b8715 Aggiunti folder profile x pubblicazione 2023-04-06 19:41:05 +02:00
Samuele Locatelli c2d76264eb Merge tag 'FixFimatExport02' into develop
Fix file export 02
2023-04-06 14:42:35 +02:00
Samuele Locatelli 6c1f620775 Merge branch 'release/FixFimatExport02' 2023-04-06 14:42:26 +02:00
Samuele Locatelli 81abde6743 update file copy task 2023-04-06 14:42:10 +02:00
Samuele Locatelli b4afc67f55 Merge tag 'FixFimatExport01' into develop
update export ricette
2023-04-06 12:59:33 +02:00
Samuele Locatelli bfd46d3c26 Merge branch 'release/FixFimatExport01' 2023-04-06 12:59:15 +02:00
Samuele Locatelli 32a0be9f90 update conf FIMAT 2023-04-06 12:58:43 +02:00
Samuele Locatelli fbd955e218 OK test creazione + copia + archiviazione 2023-04-06 11:39:31 +02:00
Samuele Locatelli 86b17ddeba OK test simula x creazione ricette XML (multiple) 2023-04-06 09:24:57 +02:00
Samuele Locatelli 206020281d commit parziale gestione ricette 2023-04-05 19:52:19 +02:00
Samuele Locatelli dbc4a03df2 cambio val elapsed time x reconnecting 2023-03-31 17:44:49 +02:00
Samuele Locatelli 9a9138998b Merge tag 'FixCimolaiOpcDisconnectedLost' into develop
Fix riavvio OpcUa quando non poweroff e non aggiornato
2023-03-27 12:14:16 +02:00
Samuele Locatelli 57992108cd Merge branch 'release/FixCimolaiOpcDisconnectedLost' 2023-03-27 12:13:59 +02:00
Samuele Locatelli 020516dcac Fix reboot OPC-UA su mancato udpate info 2023-03-27 12:13:22 +02:00
Samuele Locatelli 6d1ba5f1ad FIX conf MTConnect IMI 50 CMS:
- fix gestione emergenza non armata a true
- test in prod
2023-03-24 15:47:33 +01:00
Samuele Locatelli a347d4e60d Fix template ricette FIMAT 2023-03-23 18:03:23 +01:00
Samuele Locatelli f7420ad6c5 script fix contenuto file ricette 2023-03-23 18:00:51 +01:00
Samuele Locatelli 2c5f3ad29c rename file ricette:
- +10'000 (x --> 10'00x)
2023-03-23 17:59:50 +01:00
Samuele Locatelli 36b5e5c81e Inizio gestione ricette FIMAT da tempalte, conf... 2023-03-23 12:37:40 +01:00
Samuele Locatelli c20adac35c Aggiunta XML ricette FIMAT (NON in install) 2023-03-23 12:37:29 +01:00
Samuele Locatelli 1b46b1b083 Merge tag 'TestFimat03' into develop
Fix conf x FIMAT
2023-03-21 19:07:30 +01:00
Samuele Locatelli b6e0353f78 Merge branch 'release/TestFimat03' 2023-03-21 19:07:24 +01:00
Samuele Locatelli 0dd39fc73f FIMAT:
- fix stati (discr input --> holdReg)
- fix conf (-1 valori da tab iniziale)
2023-03-21 19:07:08 +01:00
Samuele Locatelli ca960ff094 Merge tag 'TestFimat02' into develop
Aggiunta layer traduzione valori stati modbus (FIMAT)
2023-03-21 16:30:04 +01:00
Samuele Locatelli 6776fe848f Merge branch 'release/TestFimat02' 2023-03-21 16:29:17 +01:00
Samuele Locatelli 0f0acaae49 Update Gestione FIMAT x bit trad 2023-03-21 16:28:58 +01:00
Samuele Locatelli b3315ebc7c Update x decodifica traduzione valori FIMAT... 2023-03-20 20:08:40 +01:00
Samuele Locatelli 4255a813d6 Merge tag 'TestFimat01' into develop
Update di test x FIMAT
2023-03-20 12:12:51 +01:00
Samuele Locatelli 4abc80f676 Merge branch 'release/TestFimat01' 2023-03-20 12:12:38 +01:00
Samuele Locatelli 1c17d2ed2d Update x metodi chiusura ODL x SQL PAMA 2023-03-20 12:10:44 +01:00
Samuele Locatelli 200ba3c7d5 Update con conf FIMAT di test 2023-03-20 12:10:30 +01:00
Samuele E. Locatelli 8c38ac95ec Merge remote-tracking branch 'gitlab/develop' into develop 2023-03-17 12:15:12 +01:00
Samuele Locatelli b4e5297c5a Merge tag 'UpdateSqlPama' into develop
Test gestione emtodi estesi PAMA
2023-03-17 12:13:39 +01:00
Samuele Locatelli f63a34a547 Merge branch 'release/UpdateSqlPama' 2023-03-17 12:13:19 +01:00
Samuele Locatelli 26e2f3a3a0 Merge remote-tracking branch 'origin/develop' into develop 2023-03-17 12:13:00 +01:00
Samuele E. Locatelli 0829d4474a Chiusura TASK x DB 2023-03-17 12:12:41 +01:00
Samuele E. Locatelli 42185bf93e Test scrittura PODL OK anche post modifiche + log 2023-03-17 12:06:56 +01:00
Samuele E. Locatelli c5e5a5befe Update stato stored PAMA 2023-03-17 10:46:18 +01:00
Samuele E. Locatelli 466e91de18 fix stored (updated) 2023-03-17 08:41:52 +01:00
Samuele E. Locatelli 083362ccf7 Spostamento area stored SQL di test 2023-03-17 08:39:07 +01:00
Samuele E. Locatelli 90fb77a2c3 Update stored PAMA 2023-03-16 14:20:19 +01:00
Samuele E. Locatelli 6e96070cd1 udpate conf RIMOR 2023-03-16 13:22:50 +01:00
Samuele E. Locatelli 60972602b0 Fix ricalcolo indici x SqlImport PAMA 2023-03-16 13:22:44 +01:00
Samuele E. Locatelli a4bdc7fd21 test vern RIMOR 2023-03-16 11:07:22 +01:00
Samuele Locatelli fa7d1fdee6 Merge tag 'IobRimorAddOdlClose' into develop
Aggiunta gestioen end ODL da bit su RIMOR ModBus
2023-03-16 10:01:13 +01:00
Samuele Locatelli e7dc77a058 Merge branch 'release/IobRimorAddOdlClose' 2023-03-16 10:00:54 +01:00
Samuele Locatelli e12de0f60e aggiunta gestione chiusura ODL x RIMOR 2023-03-16 10:00:26 +01:00
Samuele Locatelli 9e76475908 Merge tag 'IobSqlDbAddSendFluxLog' into develop
Aggiunta gestione preliminare invio fluxLog (da testare)
2023-03-16 08:58:10 +01:00
Samuele Locatelli cda3a89b78 Merge branch 'release/IobSqlDbAddSendFluxLog' 2023-03-16 08:57:54 +01:00
Samuele Locatelli add5495c29 Aggiunta gestione FluxLog da DB x invio IOB 2023-03-16 08:57:23 +01:00
Samuele Locatelli 8799c74874 PAMA:
- aggiunta gestione PODL --> sync DB
2023-03-15 16:00:09 +01:00
Samuele Locatelli ad6b0478f3 Merge commit 'de9b6fa3fb8a7d7c2a0f6d4bedfbba1f71dbcb94' into SDK/Icoel 2022-10-18 15:49:34 +02:00
441 changed files with 30304 additions and 2569 deletions
+11
View File
@@ -0,0 +1,11 @@
# ToDo's aperti
## ALL
- verifica disattivazione WDST da IOB vari
- riorganizzazione GLOBALE degli IOB x folder del tipo iob (OPC-UA, ModBus, Siemens...)
## IMI REMOSA
Da completare:
- lantek: capire come rendono il link tra dati PODL e part program
- check stato dati IMI altri impianto (sembrano "vuotini")
BIN
View File
Binary file not shown.
@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
https://go.microsoft.com/fwlink/?LinkID=208121.
-->
<Project>
<PropertyGroup>
<Configuration>Release</Configuration>
<Platform>Any CPU</Platform>
<PublishDir>bin\Release\net6.0\win-x64\publish\</PublishDir>
<PublishProtocol>FileSystem</PublishProtocol>
<_TargetId>Folder</_TargetId>
<TargetFramework>net6.0</TargetFramework>
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
<SelfContained>false</SelfContained>
<PublishSingleFile>true</PublishSingleFile>
<PublishReadyToRun>false</PublishReadyToRun>
</PropertyGroup>
</Project>
+37
View File
@@ -0,0 +1,37 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.2.32516.85
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EgwCApp.Core", "EgwCApp.Core\EgwCApp.Core.csproj", "{DF02D478-2309-48B8-BF0D-90B02327AF02}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EgwCApp.XmlProc", "EgwCApp.XmlProc\EgwCApp.XmlProc.csproj", "{64BC5889-BE30-489A-B78F-8B3EE08819CB}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EgwCApp.XmlTesting", "EgwCApp.XmlTesting\EgwCApp.XmlTesting.csproj", "{52D72303-ACAB-4289-8856-0F56A50474FC}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{DF02D478-2309-48B8-BF0D-90B02327AF02}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DF02D478-2309-48B8-BF0D-90B02327AF02}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DF02D478-2309-48B8-BF0D-90B02327AF02}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DF02D478-2309-48B8-BF0D-90B02327AF02}.Release|Any CPU.Build.0 = Release|Any CPU
{64BC5889-BE30-489A-B78F-8B3EE08819CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{64BC5889-BE30-489A-B78F-8B3EE08819CB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{64BC5889-BE30-489A-B78F-8B3EE08819CB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{64BC5889-BE30-489A-B78F-8B3EE08819CB}.Release|Any CPU.Build.0 = Release|Any CPU
{52D72303-ACAB-4289-8856-0F56A50474FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{52D72303-ACAB-4289-8856-0F56A50474FC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{52D72303-ACAB-4289-8856-0F56A50474FC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{52D72303-ACAB-4289-8856-0F56A50474FC}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {2AF3181F-288A-47D5-8087-2AB660476D85}
EndGlobalSection
EndGlobal
@@ -0,0 +1,20 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\EgwCApp.Core\EgwCApp.Core.csproj" />
</ItemGroup>
<ItemGroup>
<None Update="testConf.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>
+378
View File
@@ -0,0 +1,378 @@
using EgwCApp.Core;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static EgwCApp.Core.WharehouseData;
namespace EgwCApp.XmlProc
{
public class ImportProc
{
#region Public Constructors
/// <summary>
/// Init oggetto per import
/// </summary>
/// <param name="confFileName"></param>
public ImportProc(string confFileName)
{
if (!string.IsNullOrEmpty(confFileName))
{
fileConfName = confFileName;
}
}
#endregion Public Constructors
#region Public Methods
/// <summary>
/// Decodifica configurazione
/// </summary>
/// <returns></returns>
public bool decodeConfig()
{
bool answ = false;
if (!string.IsNullOrEmpty(fileConfName))
{
// deserializzo config
if (!File.Exists(fileConfName))
{
Console.WriteLine($"Error: ConfigFile not found | {fileConfName}");
}
else
{
string rawData = File.ReadAllText(fileConfName);
// se ho contenuto procedo
if (string.IsNullOrEmpty(rawData))
{
Console.WriteLine($"Error: ConfigFile empty! | {fileConfName}");
}
else
{
// deserializzo
taskConfig = JsonConvert.DeserializeObject<ConfigFile>(rawData);
answ = taskConfig != null;
}
}
}
return answ;
}
/// <summary>
/// Esegue import (se possibile)
/// </summary>
/// <returns></returns>
public bool doProcess()
{
bool answ = false;
if (taskConfig != null)
{
// verifico esista il file...
if (string.IsNullOrEmpty(taskConfig.FileInPath) && File.Exists(taskConfig.FileInPath))
{
// manca file ingresso!!! esco!
}
else
{
// verifico il tipo di process necessario...
switch (taskConfig.Type)
{
case ImportType.CSV:
fileReturnData = File.ReadAllText(taskConfig.FileInPath);
answ = true;
break;
case ImportType.Excel:
fileReturnData = processExcelImport(taskConfig.FileInPath);
answ = true;
break;
case ImportType.ND:
default:
break;
}
}
}
return answ;
}
/// <summary>
/// Esecuzione ritorno informazioni secondo configurazione...
/// </summary>
/// <returns></returns>
public bool doReturn()
{
bool answ = false;
if (taskConfig != null)
{
// verifico il tipo di return necessario...
switch (taskConfig.Return)
{
case ReturnMode.Console:
Console.WriteLine(fileReturnData);
answ = true;
break;
case ReturnMode.Redis:
break;
case ReturnMode.File:
// verifico path ci sia... sennò creo
string outPath = string.IsNullOrEmpty(taskConfig.FileOutPath) ? "FileOut.txt" : taskConfig.FileOutPath;
// verifico se vadano salvati in una folder differente...
if (!string.IsNullOrEmpty(taskConfig.ConvertDir))
{
if (!Directory.Exists(taskConfig.ConvertDir))
{
Directory.CreateDirectory(taskConfig.ConvertDir);
}
outPath = Path.Combine(taskConfig.ConvertDir, Path.GetFileName(outPath));
}
// salvo il file!
File.WriteAllText(outPath, fileReturnData);
answ = true;
break;
case ReturnMode.ND:
default:
break;
}
// se fatto eventualmente archivio
if (answ)
{
if (!string.IsNullOrEmpty(taskConfig.ArchiveDir))
{
// verifico cartella archivio
if (!Directory.Exists(taskConfig.ArchiveDir))
{
Directory.CreateDirectory(taskConfig.ArchiveDir);
}
// sposto file
string fName = Path.GetFileName(taskConfig.FileInPath);
File.Move(taskConfig.FileInPath, Path.Combine(taskConfig.ArchiveDir, fName), true);
}
}
}
return answ;
}
#endregion Public Methods
#region Protected Properties
/// <summary>
/// Nome del file config da processare
/// </summary>
protected string fileConfName { get; set; } = "";
/// <summary>
/// Contenuto del file da restituire come return data (serializzato)
/// </summary>
protected string fileReturnData { get; set; } = "";
/// <summary>
/// Configurazione del task da eseguire
/// </summary>
protected ConfigFile? taskConfig { get; set; } = new ConfigFile();
#endregion Protected Properties
#region Protected Methods
/// <summary>
/// Estrae da una riga l'i-esimo elemento
/// </summary>
/// <param name="riga"></param>
/// <param name="col"></param>
/// <returns></returns>
protected string getCellVal(System.Data.DataRow? riga, int col)
{
string answ = "";
if (riga != null)
{
try
{
answ = $"{riga.ItemArray[col]}".Trim();
}
catch
{ }
}
return answ;
}
/// <summary>
/// Cleanup stringa x impiego tipo ident da char dubbi
/// </summary>
/// <param name="origData"></param>
/// <returns></returns>
protected string strFixId(string origData)
{
return origData.Replace(".", "").Replace(" ", "_");
}
#endregion Protected Methods
#region Private Methods
/// <summary>
/// Importa un file excel e restituisce una
/// </summary>
/// <param name="fileItem"></param>
/// <returns></returns>
private string processExcelImport(string fileItem)
{
string outVal = "";
int numErr = 0;
// test procedura di import files excel x Giacovelli...
var currExcel = new ExcelMan(fileItem);
// creo lista dati in formato RegGiacenze...
Dictionary<string, BatchRec> listaGiac = new Dictionary<string, BatchRec>();
var dtSet = currExcel.getDataSet();
if (dtSet != null && dtSet.Tables != null && dtSet.Tables.Count > 0)
{
string nomeFile = Path.GetFileName(fileItem);
nomeFile = nomeFile.Substring(0, nomeFile.LastIndexOf("."));
var elSheet = dtSet.Tables;
int idxTab = 0;
// cerco lo sheet corretto se > 1
if (dtSet.Tables.Count > 1)
{
bool found = false;
for (int i = 0; i < dtSet.Tables.Count; i++)
{
if (nomeFile.Contains(dtSet.Tables[i].TableName))
{
idxTab = i;
found = true;
break;
}
// controllo parametro opzionale...
if (!found && taskConfig != null && !string.IsNullOrEmpty(taskConfig.TargetName))
{
if (dtSet.Tables[i].TableName == taskConfig.TargetName)
{
idxTab = i;
break;
}
}
}
}
var tabella = dtSet.Tables[idxTab];
int numRighe = tabella.Rows.Count;
int idxODL = taskConfig != null ? taskConfig.IdxODL : 0;
for (int i = 0; i < numRighe; i++)
{
if (taskConfig != null && taskConfig.ProcessParamInt != null && taskConfig.ProcessParamInt.Count > 5)
{
if (numErr < numRighe / 5)
{
try
{
// variabili di appoggio...
DateTime dtRif = DateTime.Today;
double qtyTot = 0;
int numPack = 0;
var riga = tabella.Rows[i];
if (riga != null)
{
string ddt = getCellVal(riga, taskConfig.ProcessParamInt["ExtDoc"]);
string sDate = getCellVal(riga, taskConfig.ProcessParamInt["DateRif"]);
string prod = getCellVal(riga, taskConfig.ProcessParamInt["Product"]);
// verifiche x import: header, data e DDT (vuoti o "-") --> SKIP!
bool checkHeaderKo = (ddt == "DDT" || prod == "PRODOTTO");
bool checkEmptyDdt = (string.IsNullOrEmpty(ddt) || ddt == "-");
bool checkEmptyDate = (string.IsNullOrEmpty(sDate) || sDate == "-");
if (checkHeaderKo)
{
//lgTrace($"SKIP header");
}
else if (checkEmptyDdt || checkEmptyDate)
{
//lgTrace($"SKIP linea vuota | i: {i} | ddt: {ddt} | date: {sDate} | prod: {prod}");
}
else
{
string variety = getCellVal(riga, taskConfig.ProcessParamInt["Variety"]);
string suppl = getCellVal(riga, taskConfig.ProcessParamInt["Supplier"]);
string sQty = getCellVal(riga, taskConfig.ProcessParamInt["QtyTot"]);
string sNum = getCellVal(riga, taskConfig.ProcessParamInt["NumPack"]);
string numPed = getCellVal(riga, taskConfig.ProcessParamInt["NumPed"]);
string packPed = getCellVal(riga, taskConfig.ProcessParamInt["PackPed"]);
string pesoPack = getCellVal(riga, taskConfig.ProcessParamInt["PesoPack"]);
DateTime.TryParse(sDate, out dtRif);
int.TryParse(sNum, out numPack);
double.TryParse(sQty, out qtyTot);
string identRG = ddt.Length > 2 ? $"{strFixId(ddt)}.{strFixId(prod)}.{strFixId(variety)}.{strFixId(suppl)}" : $"{dtRif:yyyyMMdd}.{strFixId(prod)}.{strFixId(variety)}.{strFixId(suppl)}";
string notes = $"{numPed}x{packPed}x{pesoPack}";
// verifico di avere dati per proseguire...
bool checkIdent = !string.IsNullOrEmpty($"{prod}{variety}{suppl}");
if (checkIdent)
{
BatchRec newRow = new BatchRec()
{
IdxODL = idxODL,
IdentRG = identRG,
DateRif = dtRif,
ExtDoc = ddt,
Product = prod,
Variety = variety,
Supplier = suppl,
NumPack = numPack,
QtyTot = qtyTot,
Notes = notes
};
// verifico: se manca aggiungo
if (!listaGiac.ContainsKey(identRG))
{
listaGiac.Add(identRG, newRow);
}
else
{
// altrimenti aggiorno giacenza con valori numerici
listaGiac[identRG].NumPack += newRow.NumPack;
listaGiac[identRG].QtyTot += newRow.QtyTot;
}
}
else
{
//lgError($"Errore verifica identità riga | prod: {prod} | variety: {variety} | suppl: {suppl}");
numErr++;
}
}
}
}
catch (Exception exc)
{
numErr++;
}
}
}
}
}
if (listaGiac.Count > 0)
{
// converto in una nuova lista...
int rCounter = 1;
Dictionary<int, BatchRec> list2Send = new Dictionary<int, BatchRec>();
foreach (var item in listaGiac)
{
list2Send.Add(rCounter, item.Value);
rCounter++;
}
// serializzo e restituisco file JSON...
var serVal = JsonConvert.SerializeObject(list2Send);
if (serVal != null && !string.IsNullOrEmpty(serVal))
{
outVal = serVal;
}
}
return outVal;
}
#endregion Private Methods
}
}
+62
View File
@@ -0,0 +1,62 @@
// See https://aka.ms/new-console-template for more information
// ExcImport: Excel Importer, per IobWin in logica lettura Giacenze
// parametri:
// $0: Path ConfigFile file per esecuzione
using EgwCApp.XmlProc;
string separator = "--------------------------------------";
string fileName = "";
// controllo args, se mancassero o incompleti mostro help
if (args.Length < 1)
{
Console.WriteLine(separator);
Console.WriteLine("- ExcelFileImporter - Core 6.0");
Console.WriteLine("- v.0.0.0.0 | @Egalware 2022+");
Console.WriteLine(separator);
Console.WriteLine();
Console.WriteLine("Mancano parametri per esecuzione:");
Console.WriteLine("");
Console.WriteLine("$0: ConfigFile da impiegare");
// provo a processare testConf...
fileName = "testConf.json";
}
else
{
fileName = args[0];
}
// ora processo se ho filename valido...
if (!string.IsNullOrEmpty(fileName))
{
// verifico se ho file...
if (File.Exists(fileName))
{
ImportProc importObj = new ImportProc(fileName);
bool stepOk = importObj.decodeConfig();
if (stepOk)
{
stepOk = importObj.doProcess();
if (!stepOk)
{
Console.WriteLine("Errore in processing file");
}
else
{
importObj.doReturn();
}
}
else
{
Console.WriteLine("Errore in processing config file");
}
}
else
{
Console.WriteLine("Errore file non trovato!");
}
}
@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
https://go.microsoft.com/fwlink/?LinkID=208121.
-->
<Project>
<PropertyGroup>
<Configuration>Release</Configuration>
<Platform>Any CPU</Platform>
<PublishDir>bin\Release\net6.0\win-x64\publish\</PublishDir>
<PublishProtocol>FileSystem</PublishProtocol>
<_TargetId>Folder</_TargetId>
<TargetFramework>net6.0</TargetFramework>
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
<SelfContained>false</SelfContained>
<PublishSingleFile>true</PublishSingleFile>
<PublishReadyToRun>false</PublishReadyToRun>
</PropertyGroup>
</Project>
+4
View File
@@ -0,0 +1,4 @@
@echo off
REM compilo in publish
dotnet publish EgwCApp.ExcImport.csproj -p:PublishSingleFile=true -r win-x64 -c Release --self-contained false
+25
View File
@@ -0,0 +1,25 @@
{
"ArchiveDir": "C:\\temp\\import\\archive",
"ConvertDir": "C:\\temp\\import\\convert",
"FileInPath": "C:\\temp\\import\\01.12.xlsx",
"FileOutPath": "01.12.json",
"IdxODL": 987654321,
"ProcessParamInt": {
"Product": 3,
"Variety": 9,
"Supplier": 8,
"ExtDoc": 2,
"DateRif": 14,
"QtyTot": 22,
"NumPack": 21,
"NumPed": 17,
"PackPed": 18,
"PesoPack": 20
},
"ProcessParamStr": {},
"RedisDB": 0,
"RedisOut": "",
"Return": "File",
"TargetName": "DB Loco",
"Type": "Excel"
}
+6
View File
@@ -0,0 +1,6 @@
{
"FilePath": "C:\\Temp\\test.log",
"ProcessParams": {},
"Return": "Console",
"Type": "Excel"
}
@@ -0,0 +1,25 @@
{
"ArchiveDir": "C:\\temp\\import\\archive",
"ConvertDir": "C:\\temp\\import\\convert",
"FileInPath": "C:\\temp\\import\\01.12.xlsx",
"FileOutPath": "01.12.json",
"IdxODL": 987654321,
"ProcessParamInt": {
"Product": 3,
"Variety": 9,
"Supplier": 8,
"ExtDoc": 2,
"DateRif": 14,
"QtyTot": 22,
"NumPack": 21,
"NumPed": 17,
"PackPed": 18,
"PesoPack": 20
},
"ProcessParamStr": {},
"RedisDB": 0,
"RedisOut": "",
"Return": "File",
"TargetName": "DB Loco",
"Type": "Excel"
}
+9
View File
@@ -0,0 +1,9 @@
echo ------------ Parametri compilazione ------------
echo OutDir: $(OutDir)
echo Configuration: $(ConfigurationName)
echo ProjectDir: $(ProjectDir)
echo AssemblyName: $(AssemblyName)
echo TargetDir: $(TargetDir)
echo ------------ Parametri compilazione ------------
preBuild.bat $(SolutionDir)EgwCApp.ExcImport\EgwCApp.ExcImport.csproj $(SolutionDir)EgwCApp.ExcImport\bin\Release\net6.0\publish\win-x64\ $(ProjectDir)Utils
@@ -0,0 +1,21 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\EgwCApp.Core\EgwCApp.Core.csproj" />
<ProjectReference Include="..\EgwCApp.XmlProc\EgwCApp.XmlProc.csproj" />
</ItemGroup>
<ItemGroup>
<None Update="Tools\ExcImport.exe">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>
+120
View File
@@ -0,0 +1,120 @@
using System;
using System.Collections.Generic;
using EgwCApp.Core;
using Newtonsoft.Json;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EgwCApp.XmlTesting
{
public class FileProcMan
{
#region Public Constructors
public FileProcMan(string toolDir, string exeFileName)
{
this.confFileName = "conf.json";
this.baseDir = toolDir;
this.exeName = exeFileName;
appPath = $"./{baseDir}/{exeName}";
}
#endregion Public Constructors
#region Public Methods
/// <summary>
/// Processa il singolo file e riporta tempo esecuzione
/// </summary>
/// <returns></returns>
public TimeSpan doProcess(string fPath)
{
TimeSpan outVal = new TimeSpan();
Stopwatch sw = new Stopwatch();
// preparo file conf
createConfFile(fPath);
// avvio processing
Console.WriteLine("calling ext app with args:");
Console.WriteLine($"{appPath} {confFileName}");
Console.WriteLine();
ProcessStartInfo psi = new ProcessStartInfo
{
FileName = appPath,
Arguments = $"{confFileName}",
WindowStyle = ProcessWindowStyle.Minimized,
//WindowStyle = ProcessWindowStyle.Hidden,
UseShellExecute = false,
//CreateNoWindow = true,
RedirectStandardOutput = true,
RedirectStandardInput = true,
};
sw.Start();
Process p = Process.Start(psi);
string q = "";
while (!p.HasExited)
{
q += p.StandardOutput.ReadToEnd();
}
sw.Stop();
outVal = sw.Elapsed;
return outVal;
}
#endregion Public Methods
#region Protected Fields
protected string appPath = "";
protected string baseDir = "";
protected string confFileName = "";
protected string exeName = "";
#endregion Protected Fields
#region Private Methods
private void createConfFile(string item)
{
Dictionary<string, int> importParams = new Dictionary<string, int>();
importParams.Add("Product", 3);
importParams.Add("Variety", 9);
importParams.Add("Supplier", 8);
importParams.Add("ExtDoc", 2);
importParams.Add("DateRif", 14);
importParams.Add("QtyTot", 22);
importParams.Add("NumPack", 21);
importParams.Add("NumPed", 17);
importParams.Add("PackPed", 18);
importParams.Add("PesoPack", 20);
// calcolo nome file conf specifico
string outFileName = Path.GetFileName(item).Replace("xlsx", "json");
confFileName = $"conf_{outFileName}";
// calcolo outFIleName
var newConf = new ConfigFile()
{
ArchiveDir = @"C:\temp\import\archive\",
ConvertDir = @"C:\temp\import\convert\",
Type = ImportType.Excel,
FileInPath = item,
FileOutPath = outFileName,
Return = ReturnMode.File,
ProcessParamInt = importParams,
TargetName = "DB Loco"
};
// serializzo e salvo!
var rawData = JsonConvert.SerializeObject(newConf, Formatting.Indented);
File.WriteAllText(confFileName, rawData);
}
#endregion Private Methods
}
}
+65
View File
@@ -0,0 +1,65 @@
// See https://aka.ms/new-console-template for more information
using EgwCApp.Core;
using System.Diagnostics;
using Newtonsoft.Json;
using EgwCApp.XmlTesting;
Dictionary<string, TimeSpan> statsColl = new Dictionary<string, TimeSpan>();
Stopwatch sw = new Stopwatch();
string separator = "--------------------------------------";
Console.WriteLine(separator);
Console.WriteLine("Console Test Application");
Console.WriteLine(separator);
Console.WriteLine();
// creo il file di configurazione...
string fileName = "conf.json";
ConfigFile newConf = new ConfigFile();
string rawData = "";
// test CSV
//newConf = new ConfigFile()
//{
// Type = ImportType.CSV,
// FileInPath = @"C:\Temp\test.log",
// Return = ReturnMode.Console
//};
// svuoto eventuali conf vecchi
var listaConf = Directory.GetFiles(Directory.GetCurrentDirectory(), "*.json");
if (listaConf != null && listaConf.Count() > 0)
{
foreach (var file2del in listaConf)
{
File.Delete(file2del);
}
}
// cerco file xlsx e ciclo...
var listaFiles = Directory.GetFiles(@"C:\temp\import\", "*.xlsx");
if (listaFiles != null && listaFiles.Count() > 0)
{
FileProcMan fpm = new FileProcMan("Tools", "ExcImport.exe");
foreach (var item in listaFiles)
{
TimeSpan timeElaps = fpm.doProcess(item);
statsColl.Add($"Ext prog executed for {item}", timeElaps);
}
}
Console.WriteLine(separator);
Console.WriteLine("press enter to proceed...");
Console.ReadLine();
foreach (var item in statsColl)
{
Console.WriteLine($"{item.Key} {item.Value.TotalMilliseconds} ms");
}
//Console.WriteLine($"Display executed in {timeElaps.TotalMilliseconds} ms");
Console.ReadLine();
Binary file not shown.
+6
View File
@@ -0,0 +1,6 @@
@echo off
REM recupero versione compilata
ROBOCOPY %1 %2 *.exe /MIR
echo Eseguito restore CApp!
+3 -3
View File
@@ -19,11 +19,11 @@
<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.5.0" newVersion="4.0.5.0" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.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" />
<bindingRedirect oldVersion="0.0.0.0-4.0.1.2" newVersion="4.0.1.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
@@ -39,7 +39,7 @@
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.IO.Compression" publicKeyToken="b77a5c561934e089" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.0.0" newVersion="4.1.0.0" />
<bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
@@ -35,47 +35,14 @@
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Azure.Core, Version=1.6.0.0, Culture=neutral, PublicKeyToken=92742159e12e44c8, processorArchitecture=MSIL">
<HintPath>..\packages\Azure.Core.1.6.0\lib\net461\Azure.Core.dll</HintPath>
</Reference>
<Reference Include="Azure.Identity, Version=1.3.0.0, Culture=neutral, PublicKeyToken=92742159e12e44c8, processorArchitecture=MSIL">
<HintPath>..\packages\Azure.Identity.1.3.0\lib\netstandard2.0\Azure.Identity.dll</HintPath>
</Reference>
<Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<HintPath>..\packages\EntityFramework.6.4.4\lib\net45\EntityFramework.dll</HintPath>
</Reference>
<Reference Include="EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<HintPath>..\packages\EntityFramework.6.4.4\lib\net45\EntityFramework.SqlServer.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=1.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.1.0.0\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Data.SqlClient, Version=4.1.0.0, Culture=neutral, PublicKeyToken=23ec7fc2d6eaa4a5, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Data.SqlClient.4.1.1\lib\net461\Microsoft.Data.SqlClient.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Identity.Client, Version=4.22.0.0, Culture=neutral, PublicKeyToken=0a613f4dd989e8ae, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Identity.Client.4.22.0\lib\net461\Microsoft.Identity.Client.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Identity.Client.Extensions.Msal, Version=2.16.5.0, Culture=neutral, PublicKeyToken=0a613f4dd989e8ae, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Identity.Client.Extensions.Msal.2.16.5\lib\net45\Microsoft.Identity.Client.Extensions.Msal.dll</HintPath>
</Reference>
<Reference Include="Microsoft.IdentityModel.JsonWebTokens, Version=6.8.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.IdentityModel.JsonWebTokens.6.8.0\lib\net461\Microsoft.IdentityModel.JsonWebTokens.dll</HintPath>
</Reference>
<Reference Include="Microsoft.IdentityModel.Logging, Version=6.8.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.IdentityModel.Logging.6.8.0\lib\net461\Microsoft.IdentityModel.Logging.dll</HintPath>
</Reference>
<Reference Include="Microsoft.IdentityModel.Protocols, Version=6.8.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.IdentityModel.Protocols.6.8.0\lib\net461\Microsoft.IdentityModel.Protocols.dll</HintPath>
</Reference>
<Reference Include="Microsoft.IdentityModel.Protocols.OpenIdConnect, Version=6.8.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.IdentityModel.Protocols.OpenIdConnect.6.8.0\lib\net461\Microsoft.IdentityModel.Protocols.OpenIdConnect.dll</HintPath>
</Reference>
<Reference Include="Microsoft.IdentityModel.Tokens, Version=6.8.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.IdentityModel.Tokens.6.8.0\lib\net461\Microsoft.IdentityModel.Tokens.dll</HintPath>
</Reference>
<Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
<HintPath>..\packages\NLog.4.7.9\lib\net45\NLog.dll</HintPath>
<Reference Include="NLog, Version=5.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
<HintPath>..\packages\NLog.5.2.3\lib\net46\NLog.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
@@ -83,43 +50,36 @@
</Reference>
<Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System.Configuration" />
<Reference Include="System.Configuration.ConfigurationManager, Version=5.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Configuration.ConfigurationManager.5.0.0\lib\net461\System.Configuration.ConfigurationManager.dll</HintPath>
</Reference>
<Reference Include="System.Core" />
<Reference Include="System.Data.OracleClient" />
<Reference Include="System.Diagnostics.DiagnosticSource, Version=4.0.4.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Diagnostics.DiagnosticSource.4.6.0\lib\net46\System.Diagnostics.DiagnosticSource.dll</HintPath>
</Reference>
<Reference Include="System.Drawing" />
<Reference Include="System.IdentityModel" />
<Reference Include="System.IdentityModel.Tokens.Jwt, Version=6.8.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\System.IdentityModel.Tokens.Jwt.6.8.0\lib\net461\System.IdentityModel.Tokens.Jwt.dll</HintPath>
</Reference>
<Reference Include="System.IO, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.IO.4.3.0\lib\net462\System.IO.dll</HintPath>
</Reference>
<Reference Include="System.IO.Compression, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<HintPath>..\packages\System.IO.Compression.4.1.0\lib\net46\System.IO.Compression.dll</HintPath>
<Reference Include="System.IO.Compression, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<HintPath>..\packages\System.IO.Compression.4.3.0\lib\net46\System.IO.Compression.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</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 Include="System.Memory, Version=4.0.1.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Memory.4.5.5\lib\net461\System.Memory.dll</HintPath>
</Reference>
<Reference Include="System.Net" />
<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.5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.4.6.0\lib\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.6.0.0\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.Security" />
<Reference Include="System.Security.AccessControl, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.AccessControl.5.0.0\lib\net461\System.Security.AccessControl.dll</HintPath>
<Reference Include="System.Security.AccessControl, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.AccessControl.6.0.0\lib\net461\System.Security.AccessControl.dll</HintPath>
</Reference>
<Reference Include="System.Security.Cryptography.Algorithms, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.Cryptography.Algorithms.4.3.1\lib\net461\System.Security.Cryptography.Algorithms.dll</HintPath>
@@ -127,26 +87,11 @@
<Reference Include="System.Security.Cryptography.Primitives, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.Cryptography.Primitives.4.3.0\lib\net46\System.Security.Cryptography.Primitives.dll</HintPath>
</Reference>
<Reference Include="System.Security.Cryptography.ProtectedData, Version=4.0.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.Cryptography.ProtectedData.4.5.0\lib\net461\System.Security.Cryptography.ProtectedData.dll</HintPath>
</Reference>
<Reference Include="System.Security.Permissions, Version=5.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.Permissions.5.0.0\lib\net461\System.Security.Permissions.dll</HintPath>
</Reference>
<Reference Include="System.Security.Principal.Windows, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.Principal.Windows.5.0.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
</Reference>
<Reference Include="System.ServiceModel" />
<Reference Include="System.ServiceProcess" />
<Reference Include="System.Text.Encodings.Web, Version=4.0.5.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Text.Encodings.Web.4.7.2\lib\net461\System.Text.Encodings.Web.dll</HintPath>
</Reference>
<Reference Include="System.Text.Json, Version=4.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Text.Json.4.6.0\lib\net461\System.Text.Json.dll</HintPath>
</Reference>
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Threading.Tasks.Extensions.4.5.2\lib\netstandard2.0\System.Threading.Tasks.Extensions.dll</HintPath>
</Reference>
<Reference Include="System.Transactions" />
<Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
@@ -186,7 +131,5 @@
<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\EntityFramework.6.4.4\build\EntityFramework.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\EntityFramework.6.4.4\build\EntityFramework.targets'))" />
<Error Condition="!Exists('..\packages\Microsoft.Data.SqlClient.SNI.4.0.1\build\net46\Microsoft.Data.SqlClient.SNI.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Data.SqlClient.SNI.4.0.1\build\net46\Microsoft.Data.SqlClient.SNI.targets'))" />
</Target>
<Import Project="..\packages\Microsoft.Data.SqlClient.SNI.4.0.1\build\net46\Microsoft.Data.SqlClient.SNI.targets" Condition="Exists('..\packages\Microsoft.Data.SqlClient.SNI.4.0.1\build\net46\Microsoft.Data.SqlClient.SNI.targets')" />
</Project>
+5 -25
View File
@@ -1,37 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Azure.Core" version="1.6.0" targetFramework="net462" />
<package id="Azure.Identity" version="1.3.0" targetFramework="net462" />
<package id="EntityFramework" version="6.4.4" targetFramework="net462" />
<package id="Microsoft.Bcl.AsyncInterfaces" version="1.0.0" targetFramework="net462" />
<package id="Microsoft.Data.SqlClient" version="4.1.1" targetFramework="net462" />
<package id="Microsoft.Data.SqlClient.SNI" version="4.0.1" targetFramework="net462" />
<package id="Microsoft.Identity.Client" version="4.22.0" targetFramework="net462" />
<package id="Microsoft.Identity.Client.Extensions.Msal" version="2.16.5" targetFramework="net462" />
<package id="Microsoft.IdentityModel.JsonWebTokens" version="6.8.0" targetFramework="net462" />
<package id="Microsoft.IdentityModel.Logging" version="6.8.0" targetFramework="net462" />
<package id="Microsoft.IdentityModel.Protocols" version="6.8.0" targetFramework="net462" />
<package id="Microsoft.IdentityModel.Protocols.OpenIdConnect" version="6.8.0" targetFramework="net462" />
<package id="Microsoft.IdentityModel.Tokens" version="6.8.0" targetFramework="net462" />
<package id="NLog" version="4.7.9" targetFramework="net462" />
<package id="NLog" version="5.2.3" targetFramework="net462" />
<package id="System.Buffers" version="4.5.1" targetFramework="net462" />
<package id="System.Configuration.ConfigurationManager" version="5.0.0" targetFramework="net462" />
<package id="System.Diagnostics.DiagnosticSource" version="4.6.0" targetFramework="net462" />
<package id="System.IdentityModel.Tokens.Jwt" version="6.8.0" targetFramework="net462" />
<package id="System.IO" version="4.3.0" targetFramework="net462" />
<package id="System.IO.Compression" version="4.1.0" targetFramework="net462" />
<package id="System.Memory" version="4.5.4" targetFramework="net462" />
<package id="System.IO.Compression" version="4.3.0" targetFramework="net462" />
<package id="System.Memory" version="4.5.5" targetFramework="net462" />
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net462" />
<package id="System.Runtime.CompilerServices.Unsafe" version="4.6.0" targetFramework="net462" />
<package id="System.Runtime.CompilerServices.Unsafe" version="6.0.0" targetFramework="net462" />
<package id="System.Runtime.InteropServices.RuntimeInformation" version="4.3.0" targetFramework="net462" />
<package id="System.Security.AccessControl" version="5.0.0" targetFramework="net462" />
<package id="System.Security.AccessControl" version="6.0.0" targetFramework="net462" />
<package id="System.Security.Cryptography.Algorithms" version="4.3.1" targetFramework="net462" />
<package id="System.Security.Cryptography.Primitives" version="4.3.0" targetFramework="net462" />
<package id="System.Security.Cryptography.ProtectedData" version="4.5.0" targetFramework="net462" />
<package id="System.Security.Permissions" version="5.0.0" targetFramework="net462" />
<package id="System.Security.Principal.Windows" version="5.0.0" targetFramework="net462" />
<package id="System.Text.Encodings.Web" version="4.7.2" targetFramework="net462" />
<package id="System.Text.Json" version="4.6.0" targetFramework="net462" />
<package id="System.Threading.Tasks.Extensions" version="4.5.2" targetFramework="net462" />
<package id="System.ValueTuple" version="4.5.0" targetFramework="net462" />
</packages>
+1 -1
View File
@@ -12,7 +12,7 @@
<copyright>#copyright#</copyright>
<tags>EgwProxy.Icoel EgwProxy Icoel</tags>
<dependencies>
<dependency id="NLog" version="4.7.9" />
<dependency id="NLog" version="5.1.2" />
<dependency id="EntityFramework" version="6.4.4" />
</dependencies>
</metadata>
+1 -1
View File
@@ -12,7 +12,7 @@
<copyright>#copyright#</copyright>
<tags>EgwProxy.Icoel EgwProxy Icoel</tags>
<dependencies>
<dependency id="NLog" version="4.7.9" />
<dependency id="NLog" version="5.1.2" />
<dependency id="EntityFramework" version="6.4.4" />
</dependencies>
</metadata>
+3 -3
View File
@@ -50,11 +50,11 @@
<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.5.0" newVersion="4.0.5.0" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.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" />
<bindingRedirect oldVersion="0.0.0.0-4.0.1.2" newVersion="4.0.1.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
@@ -70,7 +70,7 @@
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.IO.Compression" publicKeyToken="b77a5c561934e089" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.0.0" newVersion="4.1.0.0" />
<bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
@@ -36,8 +36,8 @@
<Reference Include="System" />
<Reference Include="System.Configuration" />
<Reference Include="System.Core" />
<Reference Include="System.IO.Compression, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<HintPath>..\packages\System.IO.Compression.4.1.0\lib\net46\System.IO.Compression.dll</HintPath>
<Reference Include="System.IO.Compression, Version=4.2.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.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
+1 -1
View File
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="System.IO.Compression" version="4.1.0" targetFramework="net462" />
<package id="System.IO.Compression" version="4.3.0" targetFramework="net462" />
</packages>
+3 -3
View File
@@ -36,11 +36,11 @@
<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.5.0" newVersion="4.0.5.0" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.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" />
<bindingRedirect oldVersion="0.0.0.0-4.0.1.2" newVersion="4.0.1.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
@@ -56,7 +56,7 @@
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.IO.Compression" publicKeyToken="b77a5c561934e089" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.0.0" newVersion="4.1.0.0" />
<bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
+5 -4
View File
@@ -39,15 +39,16 @@
<StartupObject />
</PropertyGroup>
<ItemGroup>
<Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
<HintPath>..\packages\NLog.4.7.9\lib\net45\NLog.dll</HintPath>
<Reference Include="NLog, Version=5.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
<HintPath>..\packages\NLog.5.2.3\lib\net46\NLog.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System.Configuration" />
<Reference Include="System.Core" />
<Reference Include="System.IO.Compression, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<HintPath>..\packages\System.IO.Compression.4.1.0\lib\net46\System.IO.Compression.dll</HintPath>
<Reference Include="System.IO.Compression, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<HintPath>..\packages\System.IO.Compression.4.3.0\lib\net46\System.IO.Compression.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System.Runtime.Serialization" />
<Reference Include="System.ServiceModel" />
+2 -2
View File
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="NLog" version="4.7.9" targetFramework="net462" />
<package id="System.IO.Compression" version="4.1.0" targetFramework="net462" />
<package id="NLog" version="5.2.3" targetFramework="net462" />
<package id="System.IO.Compression" version="4.3.0" targetFramework="net462" />
</packages>
Binary file not shown.
@@ -1,4 +1,3 @@
ALTER PROCEDURE [dbo].[GetMachineFluxLog]
AS
BEGIN
@@ -26,7 +25,7 @@ BEGIN
IF(@NewIdx > @LastIdx)
BEGIN
/* --------------------------------------------------
* Inviero solo VARIAZIONI dei valori
* Invierò solo VARIAZIONI dei valori
* - CurrentPP (Part Program)
* - ActiveProdOrder (Ordine in esecuzione)
*
@@ -1,4 +1,4 @@
ALTER PROCEDURE [dbo].GetMachineProdData
ALTER PROCEDURE [dbo].[stp_GetMachineProdData]
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
@@ -24,9 +24,10 @@ BEGIN
IF(@NewIdx > @LastIdx)
BEGIN
/* --------------------------------------------------
* Invierò solo VARIAZIONI dei valori
* Invierò solo VARIAZIONI dei valori
* - CurrentProdOrder (iniziato/concluso)
* - Quantità Produzione
* - Quantità Produzione
* - dati FluxLog x ordini/quantità/tempi di produzione
*
* andando ad incrociare ogni record col precedente...
* -------------------------------------------------- */
@@ -86,7 +87,66 @@ BEGIN
FROM cteActDec
WHERE OrdAction <> 'NONE'
-- ora processo ANCHE come fluxLog i record dei degli ordini (cod ordine, tempi...)
;WITH cteCurrOrd AS
(
SELECT ID
,ProdOrder
,Targa as IdxMacchina
,[DateTime] AS DtEvento
,ProdOrderState
,ProdQty
,ElapsedTime
FROM syn_M2ERP_PRODORDERS
WHERE ID > @LastIdx AND ID <= @NewIdx
)
, ctePrevOrd AS
(
SELECT ID
,ProdOrder
,Targa as IdxMacchina
,[DateTime] AS DtEvento
,ProdOrderState
,ProdQty
,ElapsedTime
FROM syn_M2ERP_PRODORDERS
WHERE ID >= @LastIdx AND ID < @NewIdx
)
, cteActDec AS
(
SELECT curr.DtEvento as DtEve
,curr.IdxMacchina
,CASE
WHEN curr.ProdOrderState = 1 THEN 'StartOrd'
--WHEN curr.ProdOrderState = 2 THEN 'PauseOrd'
WHEN curr.ProdOrderState = 3 THEN 'EndOrd'
--WHEN curr.ProdOrderState = 6 THEN 'InsOrd'
ELSE 'NONE'
END AS OrdAction
,CAST(CASE
WHEN LEFT(curr.ProdOrder, 4) = 'PODL' THEN REPLACE(curr.ProdOrder,'PODL','')
ELSE '0' END AS NVARCHAR(50)) AS IdxPodl
,CAST(CASE
WHEN LEFT(curr.ProdOrder, 3) = 'ODL' THEN REPLACE(curr.ProdOrder,'ODL','')
ELSE '0' END AS NVARCHAR(50)) AS IdxOdl
,CAST(curr.ProdOrder AS NVARCHAR(50)) as CodComm
,curr.ProdQty as PzCount
,CAST(curr.ElapsedTime AS NVARCHAR(50)) AS ElapsedTime
FROM cteCurrOrd curr
INNER JOIN ctePrevOrd prev
ON curr.ID = prev.ID+1
WHERE (curr.ProdOrder <> prev.ProdOrder)
OR (curr.ProdOrderState <> prev.ProdOrderState)
OR (curr.ProdQty <> prev.ProdQty)
)
-- lego i valori col precedente x calcolare se siano variati x insert valori
--INSERT INTO MachineFluxLog(DtEvento, IdxMacchina, CodFlux, Valore, Cnt)
SELECT DtEve as DtEvento, IdxMacchina, CodFlux, Valore,0 as Cnt
FROM cteActDec
UNPIVOT (Valore FOR CodFlux IN (CodComm, ElapsedTime, IdxOdl, IdxPOdl)) AS Unpvt
WHERE OrdAction <> 'NONE'
AND Valore <> '0'
-- aggiorno valore indice processato
MERGE SyncState AS tgt
USING (SELECT @NewIdx as LastIdx, 'ToMachineProdData' AS TableName) as src (LastIdx, TableName)
@@ -104,6 +164,3 @@ BEGIN
COMMIT tran
END
GO
Binary file not shown.
@@ -4,6 +4,11 @@ select * from SyncState
select * from MesPODL_last
select * from MesPODL_req
select * from MachineFluxLog
select * from MachineProdData
select * from MachineSignalLog
-- test scrittura PODL: OK!
exec dbo.SyncPodlToMachine
@@ -12,24 +17,49 @@ select * from SyncState
select * from MachineSignalLog
/*
truncate table MachineSignalLog
truncate table MachineFluxLog
update SyncState
set lastidx=0
where TableName='syn_M2ERP_MACHINE_STATE'
where TableName='ToMachineFluxLog'
*/
select top 2 * from MachineFluxLog order by 1 desc
select top 2 * from MachineProdData order by 1 desc
select top 10 * from MachineSignalLog order by 1 desc
select * from SyncState
exec dbo.GetMachineFluxLog
select * from MachineFluxLog
select * from syn_ERP2M
select * from syn_M2ERP_MACHINE_STATE
select * from syn_M2ERP_PRODORDERS
select * from syn_ERP2M
select top 10 * from syn_M2ERP_PRODORDERS
where ProdOrder LIKE 'PODL000%'
select top 10 * from syn_M2ERP_PRODORDERS
where ProdOrder LIKE '%ODL%'
order by 1 desc
EXEC GetMachineProdData
SELECT * FROM SyncState
SELECT * FROM MachineFluxLog
SELECT * FROM MachineProdData
SELECT * FROM MachineSignalLog
/*
truncate table MachineProdData
update SyncState
set lastidx=0
where TableName='ToMachineProdData'
*/
select * from ActType
/*
@@ -64,3 +94,5 @@ select * from M2ERP_MACHINE_STATE where ActiveProdOrder = 'ODL0003743'
select * from M2ERP_PRODORDERS
select * from M2ERP_PRODORDERS where ProdOrder = 'ODL0003743'
@@ -0,0 +1,49 @@
-- =============================================
-- Author: S.E.L.
-- Create date: 2023.03.17
-- Description: Verifica ordini aperti - EXT schema/special
-- =============================================
CREATE PROCEDURE ext.stp_OrdState
(
@onlyOpen INT = 0 -- 1 = solo ordini rimasti aperti/validi
)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
IF (@onlyOpen = 0)
BEGIN
;WITH cteOrd AS
(
SELECT ProdOrder, MAX(id) as lastID
FROM syn_M2ERP_PRODORDERS
GROUP BY ProdOrder
)
SELECT m2erp.*
FROM syn_M2ERP_PRODORDERS m2erp
INNER JOIN cteord cte ON m2erp.ID=cte.lastID
ORDER BY 1 DESC
END
ELSE
BEGIN
;WITH cteOrd AS
(
SELECT ProdOrder, MAX(id) as lastID
FROM syn_M2ERP_PRODORDERS
GROUP BY ProdOrder
)
SELECT m2erp.*
FROM syn_M2ERP_PRODORDERS m2erp
INNER JOIN cteord cte ON m2erp.ID=cte.lastID
WHERE m2erp.ProdOrderState NOT IN (3,4)
ORDER BY 1 DESC
END
END
GO
+1 -1
View File
@@ -101,7 +101,7 @@
<Reference Include="System.Diagnostics.PerformanceCounter, Version=6.0.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Diagnostics.PerformanceCounter.6.0.1\lib\net461\System.Diagnostics.PerformanceCounter.dll</HintPath>
</Reference>
<Reference Include="System.IO.Compression, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<Reference Include="System.IO.Compression, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<HintPath>..\packages\System.IO.Compression.4.3.0\lib\net46\System.IO.Compression.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
+28
View File
@@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace IOB_UT_NEXT
{
public class BitUtils
{
/// <summary>
/// Test se il bit sia attivo
/// </summary>
/// <param name="val2check">valkore da verificare</param>
/// <param name="bitNum">bit da verificare (0 based, 00..31)</param>
/// <returns></returns>
public static bool isActive(int val2check, int bitNum)
{
bool answ = false;
// testa i-esimo bit (max 32 bit...)
if (bitNum <= 31)
{
answ = ((val2check & (1 << bitNum)) != 0);
}
return answ;
}
}
}
+1
View File
@@ -116,6 +116,7 @@ namespace IOB_UT_NEXT
public string Note { get; set; } = "";
public string CodCli { get; set; } = "";
public DateTime InsertDate { get; set; } = DateTime.Now;
public string Recipe { get; set; } = "";
public string CodFase
{
+54 -3
View File
@@ -14,8 +14,8 @@ namespace IOB_UT_NEXT
/// Effettua salvataggio in file di un generico oggetto in formato CSV
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="reportData"></param>
/// <param name="path"></param>
/// <param name="reportData">Lista oggetti da esportare</param>
/// <param name="path">Percorso file di output</param>
/// <param name="writeHeader">Indica se scrivere header ad inizio CSV</param>
/// <param name="separator">Separatore da impiegare (default ";")</param>
/// <returns></returns>
@@ -34,7 +34,6 @@ namespace IOB_UT_NEXT
lines.Add(header);
}
var valueLines = reportData.Select(row => string.Join($"{separator}", fieldList.Split(separator).Select(a => row.GetType().GetProperty(a).GetValue(row, null))));
//var valueLines = reportData.Select(row => string.Join(";", header.Split(';').Select(a => row.GetType().GetProperty(a).GetValue(row, null))));
lines.AddRange(valueLines);
File.WriteAllLines(path, lines.ToArray());
answ = true;
@@ -43,5 +42,57 @@ namespace IOB_UT_NEXT
{ }
return answ;
}
/// <summary>
/// Effettua salvataggio in file di un generico oggetto in formato Fixed width
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="reportData">Lista oggetti da esportare</param>
/// <param name="path">Percorso file di output</param>
/// <param name="widthList">Vettore delle larghezze richieste</param>
/// <returns></returns>
public static bool SaveFixedWidth<T>(List<T> reportData, string path, Dictionary<string, int> widthList, Dictionary<string, char> fieldLPad, Dictionary<string, int> numDecReq)
{
bool answ = false;
var lines = new List<string>();
try
{
IEnumerable<PropertyDescriptor> props = TypeDescriptor.GetProperties(typeof(T)).OfType<PropertyDescriptor>();
var elencoValori = props.ToList();
foreach (var dataRow in reportData)
{
string currRow = "";
// processo 1:1 x width...
foreach (var item in widthList)
{
string currValue = dataRow.GetType().GetProperty(item.Key).GetValue(dataRow, null).ToString();
// se ha un num decimali specifico richiesto esegue...
if (numDecReq.ContainsKey(item.Key))
{
string nDec = $"N{numDecReq[item.Key]}";
decimal rawVal = 0;
decimal.TryParse(currValue, out rawVal);
currValue = rawVal.ToString(nDec);
}
if (currValue.Length > item.Value)
{
currValue = currValue.Substring(0, item.Value);
}
// se ha un LPad richiesto esegue...
if (fieldLPad.ContainsKey(item.Key))
{
currValue = currValue.PadLeft(item.Value, fieldLPad[item.Key]);
}
currRow += string.Format($"{{0,-{item.Value}}}", currValue);
}
lines.Add(currRow);
}
File.WriteAllLines(path, lines.ToArray());
answ = true;
}
catch
{ }
return answ;
}
}
}
+348
View File
@@ -0,0 +1,348 @@
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
namespace IOB_UT_NEXT.DataModel
{
public class Fimat
{
#region Public Classes
[XmlRoot(ElementName = "A_Recipe")]
public class ARecipe
{
#region Public Properties
[XmlElement(ElementName = "ColRecipe")]
public List<ColRecipe> ColRecipe { get; set; }
[XmlElement(ElementName = "DesRecipe")]
public DesRecipe DesRecipe { get; set; }
[XmlAttribute(AttributeName = "noNamespaceSchemaLocation")]
public string NoNamespaceSchemaLocation { get; set; }
[XmlText]
public string Text { get; set; }
[XmlAttribute(AttributeName = "xsi")]
public string Xsi { get; set; }
#endregion Public Properties
}
[XmlRoot(ElementName = "ColData")]
public class ColData
{
#region Public Properties
[XmlElement(ElementName = "ColourCode")]
public string ColourCode { get; set; }
[XmlElement(ElementName = "CompNumber")]
public int CompNumber { get; set; }
[XmlElement(ElementName = "Cost")]
public double Cost { get; set; }
[XmlElement(ElementName = "Date")]
public string Date { get; set; }
[XmlElement(ElementName = "Description")]
public string Description { get; set; }
[XmlElement(ElementName = "DosDuration")]
public int DosDuration { get; set; }
[XmlElement(ElementName = "DosError")]
public string DosError { get; set; }
[XmlElement(ElementName = "DosNote")]
public string DosNote { get; set; }
[XmlElement(ElementName = "Origin")]
public string Origin { get; set; }
[XmlElement(ElementName = "PartsPerc")]
public double PartsPerc { get; set; }
[XmlElement(ElementName = "PartsWeight")]
public double PartsWeight { get; set; }
[XmlElement(ElementName = "TypComp")]
public string TypComp { get; set; }
[XmlElement(ElementName = "Weight-gr")]
public double Weightgr { get; set; }
[XmlElement(ElementName = "Weight-gr-dosed")]
public double Weightgrdosed { get; set; }
[XmlElement(ElementName = "Weight-gr-prev")]
public double Weightgrprev { get; set; }
[XmlElement(ElementName = "Weight-gr-total")]
public double Weightgrtotal { get; set; }
#endregion Public Properties
}
[XmlRoot(ElementName = "ColRecipe")]
public class ColRecipe
{
#region Public Properties
[XmlElement(ElementName = "ColData")]
public ColData ColData { get; set; }
#endregion Public Properties
}
/// <summary>
/// Record consumo componente x rendiconto settimanale
/// </summary>
public class ConsRec
{
#region Public Properties
public string FileRef { get; set; } = "";
public string ColourCode { get; set; } = "";
public string Description { get; set; } = "";
public DateTime DtRif { get; set; } = DateTime.Now;
public double WeightGrTot { get; set; } = 0;
#endregion Public Properties
}
/// <summary>
/// Record consumo componente x rendiconto settimanale
/// </summary>
public class ConsOut
{
#region Public Properties
public string CodMag { get; set; } = "";
public string ColourCode { get; set; } = "";
public string Description { get; set; } = "";
public string UM { get; set; } = "";
public double WeightKgProc { get; set; } = 0;
public DateTime DtRif { get; set; } = DateTime.Now;
//public string FileRef { get; set; } = "";
#endregion Public Properties
}
/// <summary>
/// Record info sul periodo indicato
/// </summary>
public class PeriodInfo
{
#region Public Properties
public int NumFilesReceived { get; set; } = 0;
public string CurrStatus { get; set; } = "";
public Dictionary<string, string> ActionList { get; set; } = new Dictionary<string, string>();
#endregion Public Properties
}
/// <summary>
/// Configurazione x conversioni dati
/// </summary>
public class ConvSetup
{
/// <summary>
/// Inclusione o meno dell'header in file CSV
/// </summary>
public bool addHeader { get; set; } = false;
/// <summary>
/// Numero cifre decimale x arrotondamento
/// </summary>
public int numDec { get; set; } = 3;
/// <summary>
/// CodMagazzino
/// </summary>
public string codMag { get; set; } = "";
/// <summary>
/// Modalità export:
/// csv / FixWidth
/// </summary>
public string mode { get; set; } = "";
/// <summary>
/// Rapporti di conversione x gli item indicati
/// </summary>
public Dictionary<string, double> convRatio { get; set; } = new Dictionary<string, double>();
/// <summary>
/// Lunghezza fissa campi
/// </summary>
public Dictionary<string, int> fieldLength { get; set; } = new Dictionary<string, int>();
/// <summary>
/// Numero decimali campo
/// </summary>
public Dictionary<string, int> fieldNDec { get; set; } = new Dictionary<string, int>();
/// <summary>
/// Padding left (OVE necessari)
/// </summary>
public Dictionary<string, char> fieldLPad { get; set; } = new Dictionary<string, char>();
}
[XmlRoot(ElementName = "DesData")]
public class DesData
{
#region Public Properties
[XmlElement(ElementName = "Article")]
public string Article { get; set; }
[XmlElement(ElementName = "CustDrumCode")]
public string CustDrumCode { get; set; }
[XmlElement(ElementName = "Customer")]
public string Customer { get; set; }
[XmlElement(ElementName = "Date")]
public string Date { get; set; }
[XmlElement(ElementName = "Design")]
public string Design { get; set; }
[XmlElement(ElementName = "DosDuration")]
public int DosDuration { get; set; }
[XmlElement(ElementName = "DosedLine")]
public int DosedLine { get; set; }
[XmlElement(ElementName = "DosType")]
public string DosType { get; set; }
[XmlElement(ElementName = "DrumCode")]
public string DrumCode { get; set; }
[XmlElement(ElementName = "DrumInitialWeightKG")]
public double DrumInitialWeightKG { get; set; }
[XmlElement(ElementName = "DrumTag")]
public int DrumTag { get; set; }
[XmlElement(ElementName = "DrumType")]
public int DrumType { get; set; }
[XmlElement(ElementName = "Info1")]
public string Info1 { get; set; }
[XmlElement(ElementName = "Info2")]
public string Info2 { get; set; }
[XmlElement(ElementName = "Info3")]
public string Info3 { get; set; }
[XmlElement(ElementName = "Info4")]
public string Info4 { get; set; }
[XmlElement(ElementName = "Info5")]
public string Info5 { get; set; }
[XmlElement(ElementName = "Info6")]
public string Info6 { get; set; }
[XmlElement(ElementName = "Info7")]
public string Info7 { get; set; }
[XmlElement(ElementName = "Info8")]
public string Info8 { get; set; }
[XmlElement(ElementName = "Info9")]
public string Info9 { get; set; }
[XmlElement(ElementName = "LotID")]
public string LotID { get; set; }
[XmlElement(ElementName = "Note1")]
public string Note1 { get; set; }
[XmlElement(ElementName = "Note2")]
public string Note2 { get; set; }
[XmlElement(ElementName = "OrderCode")]
public string OrderCode { get; set; }
[XmlElement(ElementName = "Prio")]
public string Prio { get; set; }
[XmlElement(ElementName = "Quantity-kg")]
public double Quantitykg { get; set; }
[XmlElement(ElementName = "Quantity-kg-dosed")]
public double Quantitykgdosed { get; set; }
[XmlElement(ElementName = "RecipeStatus")]
public string RecipeStatus { get; set; }
[XmlElement(ElementName = "RecipeType")]
public string RecipeType { get; set; }
[XmlElement(ElementName = "RecName")]
public string RecName { get; set; }
[XmlElement(ElementName = "ReqType")]
public string ReqType { get; set; }
[XmlElement(ElementName = "Screen")]
public string Screen { get; set; }
[XmlElement(ElementName = "Sequence")]
public int Sequence { get; set; }
[XmlElement(ElementName = "SequenceTot")]
public int SequenceTot { get; set; }
[XmlElement(ElementName = "Series")]
public int Series { get; set; }
[XmlElement(ElementName = "ServiceType")]
public string ServiceType { get; set; }
[XmlElement(ElementName = "SplitCurrent")]
public int SplitCurrent { get; set; }
[XmlElement(ElementName = "SplitTotal")]
public int SplitTotal { get; set; }
[XmlElement(ElementName = "Taglio-D")]
public double TaglioD { get; set; }
[XmlElement(ElementName = "Taglio-N")]
public double TaglioN { get; set; }
[XmlElement(ElementName = "UM")]
public int UM { get; set; }
[XmlElement(ElementName = "Variant")]
public string Variant { get; set; }
[XmlElement(ElementName = "ViscoName")]
public string ViscoName { get; set; }
[XmlElement(ElementName = "ViscoValue")]
public double ViscoValue { get; set; }
#endregion Public Properties
}
[XmlRoot(ElementName = "DesRecipe")]
public class DesRecipe
{
#region Public Properties
[XmlElement(ElementName = "DesData")]
public DesData DesData { get; set; }
#endregion Public Properties
}
#endregion Public Classes
}
}
+129
View File
@@ -0,0 +1,129 @@
using StackExchange.Redis;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
namespace IOB_UT_NEXT
{
/// <summary>
/// Classe gestione code, a seconda della conf come LIST redis o come concurrent queue in memoria
/// </summary>
public class DataQueue
{
#region Public Fields
public int Count = 0;
#endregion Public Fields
#region Public Constructors
public DataQueue(string codIOB, string qName, bool useRedis)
{
UseRedis = useRedis;
CodIOB = codIOB;
QueueName = qName;
KeyName = redisMan.redHash($"IOB:QUEUE:{CodIOB}:{QueueName}");
}
#endregion Public Constructors
#region Public Methods
/// <summary>
/// Accodamento elemento
/// </summary>
/// <param name="item"></param>
public void Enqueue(string item)
{
if (UseRedis)
{
redisMan.redQueuePush(KeyName, item);
Count = (int)redisMan.redQueueCount(KeyName);
}
else
{
MemQueue.Enqueue(item);
Count = MemQueue.Count;
}
}
/// <summary>
/// Lista string degli elementi in coda, svuotando la coda
/// </summary>
/// <returns></returns>
public List<string> ToList()
{
List<string> answ = new List<string>();
if (UseRedis)
{
Count = (int)redisMan.redQueueCount(KeyName);
// ciclo x prendere tutti...
while (Count > 0)
{
answ.Add(redisMan.redQueuePop(KeyName));
Count = (int)redisMan.redQueueCount(KeyName);
}
}
else
{
answ = MemQueue.ToList();
Count = MemQueue.Count;
}
return answ;
}
/// <summary>
/// Recupera 1 record dalla coda...
/// </summary>
/// <param name="result"></param>
/// <returns></returns>
public bool TryDequeue(out string result)
{
bool fatto = false;
if (UseRedis)
{
result = redisMan.redQueuePop(KeyName);
Count = (int)redisMan.redQueueCount(KeyName);
fatto = true;
}
else
{
fatto = MemQueue.TryDequeue(out result);
Count = MemQueue.Count;
}
return fatto;
}
#endregion Public Methods
#region Private Fields
private string CodIOB = "NA";
private RedisKey KeyName = "NA";
/// <summary>
/// Coda modalità memoria locale
/// </summary>
private ConcurrentQueue<string> MemQueue = new ConcurrentQueue<string>();
private string QueueName = "NA";
/// <summary>
/// Indica se usare redis come datastore vs memoria
/// </summary>
private bool UseRedis = false;
#endregion Private Fields
#region Private Properties
/// <summary>
/// Oggetto connessione REDIS
/// </summary>
private RedisIobCache redisMan { get; set; } = new RedisIobCache();
#endregion Private Properties
}
}
+5
View File
@@ -312,6 +312,11 @@ namespace IOB_UT_NEXT
///// </summary>
//FILE_XYLOG,
/// <summary>
/// File Based Log file analisys per Soitaab
/// </summary>
FILE_SOITAAB,
/// <summary>
/// Adapter KAWASAKI e-controller
/// </summary>
+17 -14
View File
@@ -75,11 +75,11 @@
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<ItemGroup>
<Reference Include="ICSharpCode.SharpZipLib, Version=1.3.1.9, Culture=neutral, PublicKeyToken=1b03e6acf1164f73, processorArchitecture=MSIL">
<HintPath>..\packages\SharpZipLib.1.3.1\lib\net45\ICSharpCode.SharpZipLib.dll</HintPath>
<Reference Include="ICSharpCode.SharpZipLib, Version=1.4.2.13, Culture=neutral, PublicKeyToken=1b03e6acf1164f73, processorArchitecture=MSIL">
<HintPath>..\packages\SharpZipLib.1.4.2\lib\netstandard2.0\ICSharpCode.SharpZipLib.dll</HintPath>
</Reference>
<Reference Include="MapoSDK, Version=6.14.2211.3016, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\MapoSDK.6.14.2211.3016\lib\MapoSDK.dll</HintPath>
<Reference Include="MapoSDK, Version=6.14.2304.1209, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\MapoSDK.6.14.2304.1209\lib\MapoSDK.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.6.0.0\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
@@ -88,13 +88,13 @@
<HintPath>..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="NLog, Version=5.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
<HintPath>..\packages\NLog.5.1.2\lib\net46\NLog.dll</HintPath>
<HintPath>..\packages\NLog.5.2.3\lib\net46\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.2\lib\net461\Pipelines.Sockets.Unofficial.dll</HintPath>
<HintPath>..\packages\Pipelines.Sockets.Unofficial.2.2.8\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.6.80\lib\net461\StackExchange.Redis.dll</HintPath>
<HintPath>..\packages\StackExchange.Redis.2.6.122\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">
@@ -102,17 +102,17 @@
</Reference>
<Reference Include="System.Configuration" />
<Reference Include="System.Core" />
<Reference Include="System.Diagnostics.PerformanceCounter, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Diagnostics.PerformanceCounter.6.0.0\lib\net461\System.Diagnostics.PerformanceCounter.dll</HintPath>
<Reference Include="System.Diagnostics.PerformanceCounter, Version=6.0.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Diagnostics.PerformanceCounter.6.0.1\lib\net461\System.Diagnostics.PerformanceCounter.dll</HintPath>
</Reference>
<Reference Include="System.IO.Compression, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<Reference Include="System.IO.Compression, Version=4.2.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=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.IO.Pipelines.6.0.0\lib\net461\System.IO.Pipelines.dll</HintPath>
<Reference Include="System.IO.Pipelines, Version=6.0.0.3, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.IO.Pipelines.6.0.3\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 Include="System.Memory, Version=4.0.1.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Memory.4.5.5\lib\net461\System.Memory.dll</HintPath>
</Reference>
<Reference Include="System.Net" />
<Reference Include="System.Numerics" />
@@ -141,6 +141,9 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="BitUtils.cs" />
<Compile Include="DataModel\Fimat.cs" />
<Compile Include="DataQueue.cs" />
<Compile Include="FileProcMan.cs" />
<Compile Include="IntConditionCheck.cs" />
<Compile Include="BitConditionCheck.cs" />
+9
View File
@@ -816,4 +816,13 @@ namespace IOB_UT_NEXT
#endregion Public Properties
}
/// <summary>
/// Generico evento log
/// </summary>
public class GenLogRow
{
public DateTime dtRif { get; set; } = DateTime.Now;
public string valString { get; set; } = "";
}
}
+84
View File
@@ -729,6 +729,60 @@ namespace IOB_UT_NEXT
return answ;
}
/// <summary>
/// Conteggio elementi in QUEUE (FIFO)
/// </summary>
/// <param name="queueName"></param>
/// <param name="value"></param>
public long redQueueCount(RedisKey queueName)
{
return cache.ListLength(queueName);
}
/// <summary>
/// Recupero valore in QUEUE (FIFO)
/// </summary>
/// <param name="queueName"></param>
/// <param name="value"></param>
public RedisValue redQueuePop(RedisKey queueName)
{
return cache.ListLeftPop(queueName);
}
/// <summary>
/// Scrittura valore in QUEUE (FIFO)
/// </summary>
/// <param name="queueName"></param>
/// <param name="value"></param>
public void redQueuePush(RedisKey queueName, RedisValue value)
{
cache.ListRightPush(queueName, value);
}
/// <summary>
/// RIMUOVE un singolo valore (riga) dalla hash
/// </summary>
/// <param name="hashKey"></param>
/// <param name="hashField"></param>
/// <returns></returns>
public string redRemoveHashField(string hashKey, string hashField)
{
string answ = "";
// cerco se ci sia valore in redis...
try
{
RedisKey chiave = hashKey;
RedisValue campo = hashField;
RedisValue valOut = cache.HashDelete(chiave, campo);
answ = valOut.ToString();
}
catch (Exception exc)
{
Logging.Instance.Error($"redRemoveHashField{Environment.NewLine}{exc}");
}
return answ;
}
/// <summary>
/// Salvataggio di una hash di valori
/// </summary>
@@ -907,6 +961,36 @@ namespace IOB_UT_NEXT
return answ;
}
/// <summary>
/// Conteggio elementi in QUEUE (LIFO)
/// </summary>
/// <param name="queueName"></param>
/// <param name="value"></param>
public long redStackCount(RedisKey queueName)
{
return cache.ListLength(queueName);
}
/// <summary>
/// Recupero valore in STACK (LIFO)
/// </summary>
/// <param name="stackName"></param>
/// <returns></returns>
public RedisValue redStackPop(RedisKey stackName)
{
return cache.ListRightPop(stackName);
}
/// <summary>
/// Scrittura valore in STACK (LIFO)
/// </summary>
/// <param name="stackName"></param>
/// <param name="value"></param>
public void redStackPush(RedisKey stackName, RedisValue value)
{
cache.ListRightPush(stackName, value);
}
/// <summary>
/// Resetta (elimina) un contatore in Redis
/// </summary>
+20 -16
View File
@@ -3,29 +3,17 @@
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.6.10.0" newVersion="2.6.10.0" />
<assemblyIdentity name="System.IO.Compression" publicKeyToken="b77a5c561934e089" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Threading.Tasks" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.6.10.0" newVersion="2.6.10.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-13.0.0.0" newVersion="13.0.0.0" />
<assemblyIdentity name="System.IO.Pipelines" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.3" newVersion="6.0.0.3" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.IO.Pipelines" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.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.Threading.Channels" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
@@ -34,6 +22,22 @@
<assemblyIdentity name="Microsoft.Bcl.AsyncInterfaces" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.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.Runtime.InteropServices.RuntimeInformation" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.2.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.1.2" newVersion="4.0.1.2" />
</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>
</assemblyBinding>
</runtime>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2" /></startup></configuration>
+56 -25
View File
@@ -8,6 +8,7 @@ using System.IO;
using System.Linq;
using System.Net;
using System.Net.NetworkInformation;
using System.Security.Cryptography;
using System.Threading.Tasks;
namespace IOB_UT_NEXT
@@ -66,27 +67,6 @@ namespace IOB_UT_NEXT
#region Public Methods
/// <summary>
/// Restituisce la prima cifra (a sx) da un numero (es x decodere quale memoria modbus sia)
/// </summary>
/// <param name="num">Numero di cui trovare la priam cifra</param>
/// <returns></returns>
public static int getFirstInt(int num)
{
if (num >= 100000000) num /= 100000000;
if (num >= 10000) num /= 10000;
if (num >= 100) num /= 100;
if (num >= 10) num /= 10;
#if false
// formulazione alternativa con ciclo...
while (num >= 10)
num /= 10;
#endif
return num;
}
/// <summary>
/// formatta un numero in forma binaria 0/1
/// </summary>
@@ -271,6 +251,20 @@ namespace IOB_UT_NEXT
return answ;
}
/// <summary>
/// Test esistenza/creazione directory
/// </summary>
/// <param name="dirPath"></param>
public static void checkDir(string dirPath)
{
if (!Directory.Exists(dirPath))
{
lg.Info($"Dir not found: {dirPath}");
Directory.CreateDirectory(dirPath);
lg.Info($"reated local dir {dirPath}");
}
}
/// <summary>
/// Conteggio valori true in un array di boolean
/// </summary>
@@ -349,6 +343,46 @@ namespace IOB_UT_NEXT
return answ;
}
/// <summary>
/// Calcolo MD5 del fine indicato
/// </summary>
/// <param name="fileName"></param>
/// <returns></returns>
public static string GetFileMd5(string fileName)
{
string answ = "";
using (var md5 = MD5.Create())
{
using (var stream = File.OpenRead(fileName))
{
var hash = md5.ComputeHash(stream);
answ = BitConverter.ToString(hash).Replace("-", "").ToLowerInvariant();
}
}
return answ;
}
/// <summary>
/// Restituisce la prima cifra (a sx) da un numero (es x decodere quale memoria modbus sia)
/// </summary>
/// <param name="num">Numero di cui trovare la priam cifra</param>
/// <returns></returns>
public static int getFirstInt(int num)
{
if (num >= 100000000) num /= 100000000;
if (num >= 10000) num /= 10000;
if (num >= 100) num /= 100;
if (num >= 10) num /= 10;
#if false
// formulazione alternativa con ciclo...
while (num >= 10)
num /= 10;
#endif
return num;
}
/// <summary>
/// IP della macchina
/// </summary>
@@ -720,10 +754,7 @@ namespace IOB_UT_NEXT
{
string dirPath = file.Substring(0, file.LastIndexOf('\\'));
// verifico directory
if (!Directory.Exists(dirPath))
{
Directory.CreateDirectory(dirPath);
}
checkDir(dirPath);
string[] lines = dictionary.OrderBy(i => i.Key).Select(kvp => kvp.Key + ":" + kvp.Value).ToArray();
try
{
+46 -11
View File
@@ -240,10 +240,7 @@ namespace IOB_UT_NEXT
else if (theEntry.IsDirectory)
{
string strNewDirectory = @"" + baseDirectory + @"\" + theEntry.Name;
if (!Directory.Exists(strNewDirectory))
{
Directory.CreateDirectory(strNewDirectory);
}
baseUtils.checkDir(strNewDirectory);
}
}
ZipStream.Close();
@@ -309,13 +306,8 @@ namespace IOB_UT_NEXT
}
else if (theEntry.IsDirectory)
{
string strNewDirectory = @"" + baseDirectory + @"\" +
theEntry.Name;
if (!Directory.Exists(strNewDirectory))
{
Directory.CreateDirectory(strNewDirectory);
}
string strNewDirectory = @"" + baseDirectory + @"\" + theEntry.Name;
baseUtils.checkDir(strNewDirectory);
}
}
ZipStream.Close();
@@ -911,6 +903,49 @@ namespace IOB_UT_NEXT
return fatto;
}
/// <summary>
/// Compressione zip x folder indicata
/// </summary>
/// <returns></returns>
public static bool zippaDirectory(string dirPath, string nomeZip)
{
bool fatto = false;
try
{
using (ZipOutputStream s = new ZipOutputStream(File.Create(nomeZip)))
{
s.SetLevel(5);
byte[] buffer = new byte[4096];
// processo x ogni file nella directory...
var file2zip = Directory.GetFiles(dirPath);
foreach (var currFile in file2zip)
{
ZipEntry entry = new ZipEntry(Path.GetFileName(currFile));
// Could also use the last write time or similar for the file.
entry.DateTime = DateTime.Now;
s.PutNextEntry(entry);
using (FileStream fs = File.OpenRead(currFile))
{
// Using a fixed size buffer here makes no noticeable difference for output
// but keeps a lid on memory usage.
int sourceBytes;
do
{
sourceBytes = fs.Read(buffer, 0, buffer.Length);
s.Write(buffer, 0, sourceBytes);
} while (sourceBytes > 0);
}
}
s.Finish();
s.Close();
}
fatto = true;
}
catch
{ }
return fatto;
}
#endregion Public Methods
#region Protected Fields
+8 -8
View File
@@ -1,17 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="MapoSDK" version="6.14.2211.3016" targetFramework="net462" />
<package id="MapoSDK" version="6.14.2304.1209" targetFramework="net462" />
<package id="Microsoft.Bcl.AsyncInterfaces" version="6.0.0" targetFramework="net462" />
<package id="Newtonsoft.Json" version="13.0.3" targetFramework="net462" />
<package id="NLog" version="5.1.2" targetFramework="net462" />
<package id="Pipelines.Sockets.Unofficial" version="2.2.2" targetFramework="net462" />
<package id="SharpZipLib" version="1.3.1" targetFramework="net462" />
<package id="StackExchange.Redis" version="2.6.80" targetFramework="net462" />
<package id="NLog" version="5.2.3" targetFramework="net462" />
<package id="Pipelines.Sockets.Unofficial" version="2.2.8" targetFramework="net462" />
<package id="SharpZipLib" version="1.4.2" targetFramework="net462" />
<package id="StackExchange.Redis" version="2.6.122" targetFramework="net462" />
<package id="System.Buffers" version="4.5.1" targetFramework="net462" />
<package id="System.Diagnostics.PerformanceCounter" version="6.0.0" targetFramework="net462" />
<package id="System.Diagnostics.PerformanceCounter" version="6.0.1" targetFramework="net462" />
<package id="System.IO.Compression" version="4.3.0" targetFramework="net462" />
<package id="System.IO.Pipelines" version="6.0.0" targetFramework="net462" />
<package id="System.Memory" version="4.5.4" targetFramework="net462" />
<package id="System.IO.Pipelines" version="6.0.3" targetFramework="net462" />
<package id="System.Memory" version="4.5.5" targetFramework="net462" />
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net462" />
<package id="System.Runtime.CompilerServices.Unsafe" version="6.0.0" targetFramework="net462" />
<package id="System.Runtime.InteropServices.RuntimeInformation" version="4.3.0" targetFramework="net462" />
+10 -1
View File
@@ -9,9 +9,18 @@ namespace IOB_UT_NEXT
{
public class plcMemMapExt : plcMemMap
{
/// <summary>
/// Dizionario parametri opzionali
/// </summary>
public Dictionary<string, string> optMemPar { get; set; } = new Dictionary<string, string>();
/// <summary>
/// Dizionario x decodifica file
/// </summary>
public Dictionary<string, int> fileDecod { get; set; } = new Dictionary<string, int>();
/// <summary>
/// Lista ulteriori configurazioni KeyValuePair
/// </summary>
public Dictionary<string, string> optKVP { get; set; } = new Dictionary<string, string>();
}
}
-14
View File
@@ -1,19 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.6.10.0" newVersion="2.6.10.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Threading.Tasks" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.6.10.0" newVersion="2.6.10.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-13.0.0.0" newVersion="13.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
+21 -21
View File
@@ -51,6 +51,8 @@
this.tabMes = new System.Windows.Forms.TabPage();
this.btnForceAutoOdl = new System.Windows.Forms.Button();
this.panel1 = new System.Windows.Forms.Panel();
this.label25 = new System.Windows.Forms.Label();
this.lblQueueRwTrLog = new System.Windows.Forms.Label();
this.label24 = new System.Windows.Forms.Label();
this.lblQueueULog = new System.Windows.Forms.Label();
this.label19 = new System.Windows.Forms.Label();
@@ -109,8 +111,6 @@
this.lblOutMessage3 = new System.Windows.Forms.Label();
this.lblOutMessage2 = new System.Windows.Forms.Label();
this.tabData = new System.Windows.Forms.TabControl();
this.label25 = new System.Windows.Forms.Label();
this.lblQueueRwTrLog = new System.Windows.Forms.Label();
this.statusStrip1.SuspendLayout();
this.tableLayoutPanel1.SuspendLayout();
this.tabMes.SuspendLayout();
@@ -391,6 +391,25 @@
this.panel1.Size = new System.Drawing.Size(343, 306);
this.panel1.TabIndex = 88;
//
// label25
//
this.label25.AutoSize = true;
this.label25.Location = new System.Drawing.Point(10, 213);
this.label25.Name = "label25";
this.label25.Size = new System.Drawing.Size(85, 13);
this.label25.TabIndex = 96;
this.label25.Text = "RwTr Queue len";
//
// lblQueueRwTrLog
//
this.lblQueueRwTrLog.AutoSize = true;
this.lblQueueRwTrLog.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.lblQueueRwTrLog.Location = new System.Drawing.Point(104, 213);
this.lblQueueRwTrLog.Name = "lblQueueRwTrLog";
this.lblQueueRwTrLog.Size = new System.Drawing.Size(31, 13);
this.lblQueueRwTrLog.TabIndex = 97;
this.lblQueueRwTrLog.Text = "###";
//
// label24
//
this.label24.AutoSize = true;
@@ -1047,25 +1066,6 @@
this.tabData.TabIndex = 71;
this.tabData.Selected += new System.Windows.Forms.TabControlEventHandler(this.TabData_Selected);
//
// label25
//
this.label25.AutoSize = true;
this.label25.Location = new System.Drawing.Point(10, 213);
this.label25.Name = "label25";
this.label25.Size = new System.Drawing.Size(85, 13);
this.label25.TabIndex = 96;
this.label25.Text = "RwTr Queue len";
//
// lblQueueRwTrLog
//
this.lblQueueRwTrLog.AutoSize = true;
this.lblQueueRwTrLog.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.lblQueueRwTrLog.Location = new System.Drawing.Point(104, 213);
this.lblQueueRwTrLog.Name = "lblQueueRwTrLog";
this.lblQueueRwTrLog.Size = new System.Drawing.Size(31, 13);
this.lblQueueRwTrLog.TabIndex = 97;
this.lblQueueRwTrLog.Text = "###";
//
// AdapterForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+248 -241
View File
@@ -41,7 +41,7 @@ namespace IOB_WIN_NEXT
/// <summary>
/// Oggetto x gestione dell'adapter GENERICO (x poter usare metodi di ognuno...)
/// </summary>
public IobGeneric iobObj;
public Iob.Generic iobObj;
/// <summary>
/// tipo di adapter prescelto...
@@ -50,6 +50,89 @@ namespace IOB_WIN_NEXT
#endregion Public Fields
#region Protected Fields
/// <summary>
/// contatore veloce
/// </summary>
protected int fastCount;
/// <summary>
/// Data-Ora prima apertura FORM...
/// </summary>
protected DateTime firstStart;
/// <summary>
/// Oggetto ultimo inviato stato IOB x REDIS
/// </summary>
protected IobWinStatus lastIobStatus = new IobWinStatus() { lastUpdate = DateTime.Now.AddHours(-1), lastDataOut = DateTime.Now.AddHours(-1) };
/// <summary>
/// Oggetto ultimo inviato stato MP-IO x REDIS
/// </summary>
protected ServerMpStatus lastSrvStatus = new ServerMpStatus();
/// <summary>
/// ultimo tentativo riavvio...
/// </summary>
protected DateTime lastStartTry;
/// <summary>
/// contatore normale
/// </summary>
protected int normCount;
/// <summary>
/// Oggetto connessioen REDIS
/// </summary>
protected RedisIobCache redisMan = new RedisIobCache();
/// <summary>
/// Generatore numeri random
/// </summary>
protected Random rndGen = new Random();
/// <summary>
/// Contatore campionamento memoria
/// </summary>
protected int sampleMemCount;
/// <summary>
/// Indica se inviare avvio adapter con FluxLog
/// </summary>
protected bool sendStartFLog = false;
/// <summary>
/// contatore lento
/// </summary>
protected int slowCount;
/// <summary>
/// contatore sync allarmi
/// </summary>
protected int verySlowCount;
/// <summary>
/// Temnpo attesa std in MS
/// </summary>
protected int waitRecMSec = 30000;
#endregion Protected Fields
#region Private Fields
/// <summary>
/// Dizionario dei valori bloccati x evitare log eccessivo
/// </summary>
private Dictionary<string, DateTime> vetoLogError = new Dictionary<string, DateTime>();
/// <summary>
/// Periodo di veto log in minuti
/// </summary>
private int vetoPeriodMin = 15;
#endregion Private Fields
#region Public Constructors
/// <summary>
@@ -149,7 +232,7 @@ namespace IOB_WIN_NEXT
if (needSend)
{
// segnalo reboot (programma)...
IobGeneric.callUrl(iobObj.urlReboot, true);
Iob.Generic.callUrl(iobObj.urlReboot, true);
}
}
else
@@ -167,6 +250,12 @@ namespace IOB_WIN_NEXT
#endregion Public Constructors
#region Private Delegates
private delegate void SafeCallDelegate(string text);
#endregion Private Delegates
#region Public Properties
public int alQueueLen
@@ -671,6 +760,99 @@ namespace IOB_WIN_NEXT
#endregion Public Properties
#region Protected Properties
/// <summary>
/// Valore protected comunicazione PLC
/// </summary>
protected bool _commPlcActive { get; set; } = false;
/// <summary>
/// Valore protetto stato comunicazione
/// </summary>
protected int _commSrvActive { get; set; } = 0;
/// <summary>
/// Valore protected semaforo IN
/// </summary>
protected Semaforo _sIN { get; set; } = Semaforo.ND;
/// <summary>
/// Valore protected semaforo OUT
/// </summary>
protected Semaforo _sOUT { get; set; } = Semaforo.ND;
/// <summary>
/// Codice IOB della macchina cui connettersi (x scegliere corretto file di conf...)
/// </summary>
protected string CurrIOB { get; set; }
protected int delayShowLogMs { get; set; } = utils.CRI("delayShowLogMs");
/// <summary>
/// Dictionary dei divieti del datamonitor
/// </summary>
protected Dictionary<int, DateTime> dMonDisplVetoVeto { get; set; } = new Dictionary<int, DateTime>();
/// <summary>
/// array degli oggetti datamonitor da mostrare
/// </summary>
protected Dictionary<int, List<string>> dMonValues { get; set; } = new Dictionary<int, List<string>>();
/// <summary>
/// Veto a NUOVE scritture in COUNTER...
/// </summary>
protected DateTime logCounterVeto { get; set; } = DateTime.Now;
/// <summary>
/// Lista String da mostrare quale TaskLog corrente...
/// </summary>
protected List<string> logTaskString { get; set; } = new List<string>();
/// <summary>
/// Lista String da mostrare quale WatchLog corrente...
/// </summary>
protected ConcurrentQueue<string> logWatchString { get; set; } = new ConcurrentQueue<string>();
/// <summary>
/// Veto a NUOVE scritture in logWatch...
/// </summary>
protected DateTime logWatchWriteVeto { get; set; } = DateTime.Now;
protected int maxAlQueue { get; set; }
protected int maxEvQueue { get; set; }
protected int maxFlQueue { get; set; }
protected int maxMsQueue { get; set; }
protected int maxRwTrQueue { get; set; }
protected int maxUlQueue { get; set; }
protected int qAlLen { get; set; }
protected int qEvLen { get; set; }
protected int qFlLen { get; set; }
protected int qMsLen { get; set; }
protected int qRTrLen { get; set; }
protected int qUlLen { get; set; }
protected int totQueue
{
get
{
return qEvLen + qFlLen + qAlLen + qMsLen + qUlLen;
}
}
#endregion Protected Properties
#region Public Methods
/// <summary>
@@ -913,168 +1095,6 @@ namespace IOB_WIN_NEXT
#endregion Public Methods
#region Protected Fields
/// <summary>
/// contatore veloce
/// </summary>
protected int fastCount;
/// <summary>
/// Data-Ora prima apertura FORM...
/// </summary>
protected DateTime firstStart;
/// <summary>
/// Oggetto ultimo inviato stato IOB x REDIS
/// </summary>
protected IobWinStatus lastIobStatus = new IobWinStatus() { lastUpdate = DateTime.Now.AddHours(-1), lastDataOut = DateTime.Now.AddHours(-1) };
/// <summary>
/// Oggetto ultimo inviato stato MP-IO x REDIS
/// </summary>
protected ServerMpStatus lastSrvStatus = new ServerMpStatus();
/// <summary>
/// ultimo tentativo riavvio...
/// </summary>
protected DateTime lastStartTry;
/// <summary>
/// contatore normale
/// </summary>
protected int normCount;
/// <summary>
/// Oggetto connessioen REDIS
/// </summary>
protected RedisIobCache redisMan = new RedisIobCache();
/// <summary>
/// Generatore numeri random
/// </summary>
protected Random rndGen = new Random();
/// <summary>
/// Contatore campionamento memoria
/// </summary>
protected int sampleMemCount;
/// <summary>
/// Indica se inviare avvio adapter con FluxLog
/// </summary>
protected bool sendStartFLog = false;
/// <summary>
/// contatore lento
/// </summary>
protected int slowCount;
/// <summary>
/// contatore sync allarmi
/// </summary>
protected int verySlowCount;
/// <summary>
/// Temnpo attesa std in MS
/// </summary>
protected int waitRecMSec = 30000;
#endregion Protected Fields
#region Protected Properties
/// <summary>
/// Valore protected comunicazione PLC
/// </summary>
protected bool _commPlcActive { get; set; } = false;
/// <summary>
/// Valore protetto stato comunicazione
/// </summary>
protected int _commSrvActive { get; set; } = 0;
/// <summary>
/// Valore protected semaforo IN
/// </summary>
protected Semaforo _sIN { get; set; } = Semaforo.ND;
/// <summary>
/// Valore protected semaforo OUT
/// </summary>
protected Semaforo _sOUT { get; set; } = Semaforo.ND;
/// <summary>
/// Codice IOB della macchina cui connettersi (x scegliere corretto file di conf...)
/// </summary>
protected string CurrIOB { get; set; }
protected int delayShowLogMs { get; set; } = utils.CRI("delayShowLogMs");
/// <summary>
/// Dictionary dei divieti del datamonitor
/// </summary>
protected Dictionary<int, DateTime> dMonDisplVetoVeto { get; set; } = new Dictionary<int, DateTime>();
/// <summary>
/// array degli oggetti datamonitor da mostrare
/// </summary>
protected Dictionary<int, List<string>> dMonValues { get; set; } = new Dictionary<int, List<string>>();
/// <summary>
/// Veto a NUOVE scritture in COUNTER...
/// </summary>
protected DateTime logCounterVeto { get; set; } = DateTime.Now;
/// <summary>
/// Lista String da mostrare quale TaskLog corrente...
/// </summary>
protected List<string> logTaskString { get; set; } = new List<string>();
/// <summary>
/// Lista String da mostrare quale WatchLog corrente...
/// </summary>
protected ConcurrentQueue<string> logWatchString { get; set; } = new ConcurrentQueue<string>();
/// <summary>
/// Veto a NUOVE scritture in logWatch...
/// </summary>
protected DateTime logWatchWriteVeto { get; set; } = DateTime.Now;
protected int maxAlQueue { get; set; }
protected int maxEvQueue { get; set; }
protected int maxFlQueue { get; set; }
protected int maxMsQueue { get; set; }
protected int maxRwTrQueue { get; set; }
protected int maxUlQueue { get; set; }
protected int qAlLen { get; set; }
protected int qEvLen { get; set; }
protected int qFlLen { get; set; }
protected int qMsLen { get; set; }
protected int qRTrLen { get; set; }
protected int qUlLen { get; set; }
protected int totQueue
{
get
{
return qEvLen + qFlLen + qAlLen + qMsLen + qUlLen;
}
}
#endregion Protected Properties
#region Protected Methods
protected override void Dispose(bool disposing)
@@ -1179,26 +1199,6 @@ namespace IOB_WIN_NEXT
#endregion Protected Methods
#region Private Fields
/// <summary>
/// Dizionario dei valori bloccati x evitare log eccessivo
/// </summary>
private Dictionary<string, DateTime> vetoLogError = new Dictionary<string, DateTime>();
/// <summary>
/// Periodo di veto log in minuti
/// </summary>
private int vetoPeriodMin = 15;
#endregion Private Fields
#region Private Delegates
private delegate void SafeCallDelegate(string text);
#endregion Private Delegates
#region Private Methods
private void btnForceAutoOdl_Click(object sender, EventArgs e)
@@ -1515,7 +1515,7 @@ namespace IOB_WIN_NEXT
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void IobObj_eh_refreshed(object sender, iobRefreshedEventArgs e)
private void IobObj_eh_refreshed(object sender, Iob.iobRefreshedEventArgs e)
{
// aggiorno!
updateFormDisplay(e.DisplayDataObject);
@@ -1576,11 +1576,13 @@ namespace IOB_WIN_NEXT
optPar = optParRead,
versIOB = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString(),
codIOB = fIni.ReadString("IOB", "IOB_NAME", CurrIOB),
EnableRedisQueue = bool.Parse(fIni.ReadString("IOB", "EnableRedisQueue", "false")),
disableExeTask = bool.Parse(fIni.ReadString("IOB", "DIS_EXE_TASK", "false")),
disableStateCh = bool.Parse(fIni.ReadString("IOB", "DIS_STATE_CH", "false")),
filenameIOB = CurrIOB,
minDeltaSec = fIni.ReadInteger("IOB", "MinDeltaSec", 6),
cncIpAddr = fIni.ReadString("CNC", "IP", "::1"),
cncPingAddr = fIni.ReadString("CNC", "PING_IP", fIni.ReadString("CNC", "IP", "::1")),
cncPort = fIni.ReadString("CNC", "PORT", "0"),
iniFileName = iniConfFile,
cpuType = fIni.ReadString("CNC", "CPUTYPE", ""),
@@ -1602,7 +1604,7 @@ namespace IOB_WIN_NEXT
string dirPath = $"{path}\\DATA\\{IOBConf.serverData.ClientInstall}";
string fullPath = $"{dirPath}\\{fileName}";
// verifica directory
Directory.CreateDirectory(dirPath);
baseUtils.checkDir(dirPath);
// salvataggio
File.WriteAllText(fullPath, confJson);
@@ -1627,179 +1629,184 @@ namespace IOB_WIN_NEXT
switch (tipoScelto)
{
case tipoAdapter.SIMULA:
iobObj = new IobSimula(this, IOBConf);
iobObj = new Iob.Simula(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.BECKHOFF:
case tipoAdapter.BECKHOFF_CPA:
iobObj = new IobBeckhoffCpa(this, IOBConf);
iobObj = new IobBeckhoff.BeckhoffCpa(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.FILE_GEN:
iobObj = new IobFile(this, IOBConf);
iobObj = new IobFile.FileGen(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.FILE_EUROM63:
iobObj = new IobFileEurom63(this, IOBConf);
iobObj = new IobFile.FileEurom63(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.FILE_SOITAAB:
iobObj = new IobFile.IobFileSoitaab(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.FANUC:
iobObj = new IobFanuc(this, IOBConf);
iobObj = new Iob.Fanuc(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.KAWASAKI:
iobObj = new IobKawasaki(this, IOBConf);
iobObj = new Iob.Kawasaki(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.IcoelDb:
iobObj = new IobIcoelDb(this, IOBConf);
iobObj = new IobSql.IcoelDb(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.IcoelSoap:
iobObj = new IobIcoelSoap(this, IOBConf);
iobObj = new IobNet.IcoelSoap(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.MODBUS_TCP:
iobObj = new IobModbusTCP(this, IOBConf);
iobObj = new IobModbusTCP.ModbusTCP(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.MODBUS_TCP_CEDAX:
iobObj = new IobModbusTCPCedax(this, IOBConf);
iobObj = new IobModbusTCP.ModbusTCPCedax(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.MODBUS_TCP_CENTERFRIGO:
iobObj = new IobModbusTCPCenterfrigo(this, IOBConf);
iobObj = new IobModbusTCP.ModbusTCPCenterfrigo(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.MODBUS_TCP_FIMAT:
iobObj = new IobModbusTCPFimat(this, IOBConf);
iobObj = new IobModbusTCP.ModbusTCPFimat(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.MODBUS_TCP_HAM:
iobObj = new IobModbusTCPHam(this, IOBConf);
iobObj = new IobModbusTCP.ModbusTCPHam(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.MODBUS_TCP_HELPI:
iobObj = new IobModbusTCPHelpi(this, IOBConf);
iobObj = new IobModbusTCP.ModbusTCPHelpi(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.MODBUS_TCP_IMAS_AEROMEC:
iobObj = new IobModbusTCPImaxAeromec(this, IOBConf);
iobObj = new IobModbusTCP.ModbusTCPImaxAeromec(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.MODBUS_TCP_RIMOR:
iobObj = new IobModbusTCPRimor(this, IOBConf);
iobObj = new IobModbusTCP.ModbusTCPRimor(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.MODBUS_TCP_SAIM:
iobObj = new IobModbusTCPSaim(this, IOBConf);
iobObj = new IobModbusTCP.ModbusTCPSaim(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.MODBUS_TCP_ZETAPACK:
iobObj = new IobModbusTCPZetapack(this, IOBConf);
iobObj = new IobModbusTCP.ModbusTCPZetapack(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.MTConnect:
iobObj = new IobMTC(this, IOBConf);
iobObj = new Iob.MTConnect(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.OMRON:
iobObj = new IobOmron(this, IOBConf);
iobObj = new Iob.Omron(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.OpcUa:
iobObj = new IobOpcUa(this, IOBConf);
iobObj = new IobOpc.OpcUa(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.OpcUaCMS:
case tipoAdapter.OpcUaSCM:
iobObj = new IobOpcUaCMS(this, IOBConf);
iobObj = new IobOpc.OpcUaCMS(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.OpcUaEwon:
iobObj = new IobOpcUaEwon(this, IOBConf);
iobObj = new IobOpc.OpcUaEwon(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.OpcUaEwonBLM:
iobObj = new IobOpcUaEwonBLM(this, IOBConf);
iobObj = new IobOpc.OpcUaEwonBLM(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.OpcUaEwonMonti:
iobObj = new IobOpcUaEwonMonti(this, IOBConf);
iobObj = new IobOpc.OpcUaEwonMonti(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.OpcUaEwonMecolpress:
iobObj = new IobOpcUaEwonMecolpress(this, IOBConf);
iobObj = new IobOpc.OpcUaEwonMecolpress(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.OpcUaImasAeromec:
iobObj = new IobOpcUaImas(this, IOBConf);
iobObj = new IobOpc.OpcUaImas(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.OpcUaMBH:
iobObj = new IobOpcUaMBH(this, IOBConf);
iobObj = new IobOpc.OpcUaMBH(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.OpcUaMBHCimolai:
iobObj = new IobOpcUaMBHCimolai(this, IOBConf);
iobObj = new IobOpc.OpcUaMBHCimolai(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.OpcUaOmron:
iobObj = new IobOpcUaOmron(this, IOBConf);
iobObj = new IobOpc.OpcUaOmron(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.OpcUaOmronIcoel:
iobObj = new IobOpcUaOmronIcoel(this, IOBConf);
iobObj = new IobOpc.OpcUaOmronIcoel(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.OpcUaSiemens:
iobObj = new IobOpcUaSiemens(this, IOBConf);
iobObj = new IobOpc.OpcUaSiemens(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.OpcUaSiemensOMP:
iobObj = new IobOpcUaSiemensOMP(this, IOBConf);
iobObj = new IobOpc.OpcUaSiemensOMP(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.OpcUaUlma:
iobObj = new IobOpcUaUlma(this, IOBConf);
iobObj = new IobOpc.OpcUaUlma(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.PingWatchdog:
iobObj = new IobPing(this, IOBConf);
iobObj = new IobNet.Ping(this, IOBConf);
start.Enabled = true;
break;
@@ -1807,103 +1814,103 @@ namespace IOB_WIN_NEXT
case tipoAdapter.OSAI_CNDEX:
case tipoAdapter.OSAI_VB6:
// versione EgwProxy.OsaiCncLib
iobObj = new IobOSAI(this, IOBConf);
iobObj = new Iob.OSAI(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.SIEMENS:
iobObj = new IobSiemens(this, IOBConf);
iobObj = new IobSiemens.Siemens(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.SIEMENS_APROCHIM:
iobObj = new IobSiemensAprochim(this, IOBConf);
iobObj = new IobSiemens.SiemensAprochim(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.SIEMENS_AT2001:
iobObj = new IobSiemensAt2001(this, IOBConf);
iobObj = new IobSiemens.SiemensAt2001(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.SIEMENS_COMECA:
iobObj = new IobSiemensComeca(this, IOBConf);
iobObj = new IobSiemens.SiemensComeca(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.SIEMENS_COMUR:
iobObj = new IobSiemensComur(this, IOBConf);
iobObj = new IobSiemens.SiemensComur(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.SIEMENS_COSMAP:
iobObj = new IobSiemensCosmap(this, IOBConf);
iobObj = new IobSiemens.SiemensCosmap(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.SIEMENS_FAPE:
iobObj = new IobSiemensFape(this, IOBConf);
iobObj = new IobSiemens.SiemensFape(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.SIEMENS_INGENIA:
iobObj = new IobSiemensIngenia(this, IOBConf);
iobObj = new IobSiemens.SiemensIngenia(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.SIEMENS_LASCO:
iobObj = new IobSiemensLasco(this, IOBConf);
iobObj = new IobSiemens.SiemensLasco(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.SIEMENS_NWSE:
iobObj = new IobSiemensNWSE(this, IOBConf);
iobObj = new IobSiemens.SiemensNWSE(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.SIEMENS_PRESSOIL_CEI:
iobObj = new IobSiemensPressoilCei(this, IOBConf);
iobObj = new IobSiemens.SiemensPressoilCei(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.SIEMENS_ROBOTSERVICE:
iobObj = new IobSiemensRobotService(this, IOBConf);
iobObj = new IobSiemens.SiemensRobotService(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.SIEMENS_SAET:
iobObj = new IobSiemensSaet(this, IOBConf);
iobObj = new IobSiemens.SiemensSaet(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.SIEMENS_SIMEC:
iobObj = new IobSiemensSimec(this, IOBConf);
iobObj = new IobSiemens.SiemensSimec(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.SIEMENS_TORRI:
iobObj = new IobSiemensTorri(this, IOBConf);
iobObj = new IobSiemens.SiemensTorri(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.SQLSERVER_LANTEK:
iobObj = new IobSqlServLantek(this, IOBConf);
iobObj = new IobSql.SqlServLantek(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.SQLSERVER_PAMA:
iobObj = new IobSqlServPama(this, IOBConf);
iobObj = new IobSql.SqlServPama(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.WPS:
iobObj = new IobWPS(this, IOBConf);
iobObj = new IobNet.WebPageScrap(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.ND:
default:
iobObj = new IobSimula(this, IOBConf);
iobObj = new Iob.Simula(this, IOBConf);
start.Enabled = false;
break;
}
+21 -7
View File
@@ -111,15 +111,21 @@
</appSettings>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="lib;libs" />
<probing privatePath="lib;libs" xmlns="" />
<dependentAssembly>
<assemblyIdentity name="NLog" publicKeyToken="5120e14c03d0593c" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.IO.Compression" publicKeyToken="b77a5c561934e089" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.IO.Pipelines" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.3" newVersion="6.0.0.3" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Threading.Channels" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
@@ -130,12 +136,20 @@
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.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" />
<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="NLog" publicKeyToken="5120e14c03d0593c" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
<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>
<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.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.1.2" newVersion="4.0.1.2" />
</dependentAssembly>
</assemblyBinding>
</runtime>
@@ -10,6 +10,7 @@ MODEL=Travel Lift
[CNC]
IP=192.168.60.234
PING_IP=192.168.60.235
PORT=48010
GETPRGNAME=true
@@ -45,8 +46,8 @@ MAX_COUNTER_BLINK = 30
BLINK_FILT=0
[OPTPAR]
AUTO_CHANGE_ODL=true
CHANGE_ODL_MODE=TIME
AUTO_CHANGE_ODL=TRUE
CHANGE_ODL_MODE=MACHINE
CHANGE_ODL_HOURS=24
CHANGE_ODL_IDLE_MIN=5
PZCOUNT_MODE=OPC
@@ -58,6 +59,7 @@ ENABLE_DYN_DATA=FALSE
FORCE_DYN_DATA=TRUE
ENABLE_DATA_FILTER=TRUE
ENABLE_CLI_RESTART=TRUE
MAX_ELAPSED_TIME_SEC=60
MAX_TRY_PING=3
DISABLE_SEND_WDST=TRUE
FTP_SERVER=192.168.60.234
@@ -68,16 +70,22 @@ FTP_SKIP=TRUE
FTP_LOC_DIR=temp\csv
FTP_REM_DIR=
CSV_ADD_HEADER=true
VETO_SEND_SNAPSHOT=3
;NO_PING=TRUE
;EXEMODE_CHECK_BYPASS=true
; conf aree allarme
ALARM_CONF=BAGLIETTO_CIMOLAI_01_alarm.json
;ALARM_CONF=CIMOLAI_01_alarm.json
; conf parametri memoria READ/WRITE
OPC_PARAM_CONF=BAGLIETTO_CIMOLAI_01.json
;OPC_PARAM_CONF=CIMOLAI_01.json
[BRANCH]
NAME=master
NAME=master
; Tags manuali
[TAGS]
Customer=Baglietto
HostOS=WIN
HostName=SRVBAG-TRAVEL
HostAddr=192.168.60.15
+2 -1
View File
@@ -67,7 +67,8 @@ FORCE_DYN_DATA=TRUE
DEM_FACT_DYN_DATA=5
ENABLE_DATA_FILTER=TRUE
ENABLE_CLI_RESTART=TRUE
SyncStateDb=localhost\sqlexpress
SyncStateServer=localhost\sqlexpress
SyncStateDb=MoonPro_ISF
SyncStateUser=egalware
SyncStatePwd=egalware2022
SyncStateCTout=
+5 -5
View File
@@ -5,11 +5,11 @@
"keyProgName": "Path_01_CurrProg",
"keyRunMode": "Path_01_RUN_MODE",
"pingAsPowerOn": true,
"condPowerOn":
{
"keyName": "POWER",
"targetValue": "OK"
},
"emergencyArmedTrue": false,
"condPowerOn": {
"keyName": "POWER",
"targetValue": "OK"
},
"condWork": [
{
"keyName": "Path_01_EXE_MODE",
+2
View File
@@ -72,6 +72,8 @@ SyncStateUser=steamware
SyncStatePwd=viadante16
SyncStateCTout=
VetoReadSec=2
VetoSyncSec=10
;FullPodlUrl=true
; clock base (da 10ms)
timerIntMs=20
+44 -43
View File
@@ -10,9 +10,37 @@
}
},
"mMapRead": {
"StatoLavorazione": {
"name": "01) StatoLavorazione",
"description": "Stato Lavorazione",
"memAddr": "421004",
"tipoMem": "Int",
"index": 21004,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 999999,
"unit": "#"
},
"DurataLavorazione": {
"name": "02) DurataLavorazione",
"description": "Durata Lavorazione",
"memAddr": "421002",
"tipoMem": "Int",
"index": 21002,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 999999,
"unit": "h/m"
},
"OreFunzFiltro1": {
"name": "OreFunzFiltro1",
"description": "Ore funzionamento filtro 1",
"description": "03) Filtro 1 Ore funzionamento",
"memAddr": "420201",
"tipoMem": "Int",
"index": 20201,
@@ -26,7 +54,7 @@
},
"MinFunzFiltro1": {
"name": "MinFunzFiltro1",
"description": "Minuti funzionamento filtro 1",
"description": "04) Filtro 1 Minuti funzionamento",
"memAddr": "420205",
"tipoMem": "Int",
"index": 20205,
@@ -40,7 +68,7 @@
},
"OreFunzFiltroPar1": {
"name": "OreFunzFiltroPar1",
"description": "Ore funzionamento filtro 1 (contatore parziale azzerabile)",
"description": "Filtro 1 (c) Ore funzionamento (contatore parziale azzerabile)",
"memAddr": "420203",
"tipoMem": "Int",
"index": 20203,
@@ -54,7 +82,7 @@
},
"MinFunzFiltroPar1": {
"name": "MinFunzFiltroPar1",
"description": "Minuti funzionamento filtro 1 (contatore parziale azzerabile)",
"description": "Filtro 1 (d) Minuti funzionamento (contatore parziale azzerabile)",
"memAddr": "420206",
"tipoMem": "Int",
"index": 20206,
@@ -68,7 +96,7 @@
},
"OreFunzFiltro2": {
"name": "OreFunzFiltro2",
"description": "Ore funzionamento filtro 2",
"description": "Filtro 2 (a) Ore funzionamento ",
"memAddr": "420301",
"tipoMem": "Int",
"index": 20301,
@@ -82,7 +110,7 @@
},
"MinFunzFiltro2": {
"name": "MinFunzFiltro2",
"description": "Minuti funzionamento filtro 2",
"description": "Filtro 2 (b) Minuti funzionamento",
"memAddr": "420305",
"tipoMem": "Int",
"index": 20305,
@@ -96,7 +124,7 @@
},
"OreFunzFiltroPar2": {
"name": "OreFunzFiltroPar2",
"description": "Ore funzionamento filtro 1 (contatore parziale azzerabile)",
"description": "Filtro 2 (c) Ore funzionamento (contatore parziale azzerabile)",
"memAddr": "420303",
"tipoMem": "Int",
"index": 20303,
@@ -110,7 +138,7 @@
},
"MinFunzFiltroPar2": {
"name": "MinFunzFiltroPar2",
"description": "Minuti funzionamento filtro 1 (contatore parziale azzerabile)",
"description": "Filtro 2 (d) Minuti funzionamento (contatore parziale azzerabile)",
"memAddr": "420306",
"tipoMem": "Int",
"index": 20306,
@@ -124,7 +152,7 @@
},
"OreFunzAspiratore": {
"name": "OreFunzAspiratore",
"description": "Ore funzionamento Aspiratore",
"description": "Aspiratore (a) Ore funzionamento",
"memAddr": "420401",
"tipoMem": "Int",
"index": 20401,
@@ -138,7 +166,7 @@
},
"MinFunzAspiratore": {
"name": "MinFunzAspiratore",
"description": "Minuti funzionamento Aspiratore",
"description": "Aspiratore (b) Minuti funzionamento",
"memAddr": "420405",
"tipoMem": "Int",
"index": 20405,
@@ -152,7 +180,7 @@
},
"OreFunzAspiratorePar": {
"name": "OreFunzAspiratorePar",
"description": "Ore funzionamento Aspiratore (contatore parziale azzerabile)",
"description": "Aspiratore (c) Ore funzionamento (contatore parziale azzerabile)",
"memAddr": "420403",
"tipoMem": "Int",
"index": 20403,
@@ -166,7 +194,7 @@
},
"MinFunzAspiratorePar": {
"name": "MinFunzAspiratorePar",
"description": "Minuti funzionamento Aspiratore (contatore parziale azzerabile)",
"description": "Aspiratore (d) Minuti funzionamento (contatore parziale azzerabile)",
"memAddr": "420406",
"tipoMem": "Int",
"index": 20406,
@@ -177,40 +205,13 @@
"minVal": 0,
"maxVal": 999999,
"unit": "m"
},
"DurataLavorazione": {
"name": "DurataLavorazione",
"description": "Durata Lavorazione",
"memAddr": "421002",
"tipoMem": "Int",
"index": 21002,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 999999,
"unit": "h/m"
},
"StatoLavorazione": {
"name": "StatoLavorazione",
"description": "Stato Lavorazione",
"memAddr": "421004",
"tipoMem": "Int",
"index": 21004,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 999999,
"unit": "#"
}
},
"optMemPar": {
"AlarmIntCond": "421004|0=1",
"ManualIntCond": "421004|0=3",
"EndOrdIntCond": "421002|1=1",
//"AlarmIntCond": "421002|1=1",
"ManualIntCond": "421002|1=3",
//"EStopBitCond": "100040.0=1",
"WorkIntCond": "421004|0=2,4"
"WorkIntCond": "421002|1=2,4"
}
}
+4 -3
View File
@@ -208,9 +208,10 @@
}
},
"optMemPar": {
"AlarmIntCond": "406200|0=1",
"ManualIntCond": "406200|0=3",
"EndOrdIntCond": "406198|1=1",
//"AlarmIntCond": "406200|0=1",
"ManualIntCond": "406198|1=3",
//"EStopBitCond": "100040.0=1",
"WorkIntCond": "406200|0=2,4"
"WorkIntCond": "406198|1=2,4"
}
}
@@ -0,0 +1,89 @@
;Configurazione IOB-WIN
[IOB]
;Accesso gestione sync DB x LANTEK --> MoonPro_IOB_ISF --> Chiamate REST
CNCTYPE=SQLSERVER_LANTEK
PING_MS_TIMEOUT=500
MinDeltaSec=5
IOB_NAME=IMI_SOITAAB_Z2342
DIS_EXE_TASK=FALSE
DIS_STATE_CH=TRUE
[MACHINE]
VENDOR=SOITAAB
MODEL=Ossitaglio Z2342 + sw nesting LANTEK
[CNC]
IP=127.0.0.1
PORT=1443
GETPRGNAME=false
[SERVER]
MPIP=http://192.168.0.110
MPURL=/MP/IO
CMDBASE=/IOB/input/
CMDFLOG=/IOB/flog/
CMDALIVE=/IOB
CMDENABLED=/IOB/enabled/
CMDADV1=?valore=
CMDREBO=/sendReboot.aspx?idxMacchina=
CMDRAWTRANSF=/IOB/rawTransfJson/
[MEMORY]
ADDR_READ=DB9999.DBB0
ADDR_WRITE=DB9999.DBB0
SIZE_READ=0
SIZE_WRITE=0
;BIT0=CONN
;BIT1=DB60.DBB1
;BIT2=PZCOUNT.STD.DB700.DBW22
;BIT3=DB60.DBB3
;BIT4=DB60.DBB4
[BLINK]
;MAX_COUNTER_BLINK = 30
MAX_COUNTER_BLINK = 15
;bit0 = 0
;bit1 = 0
;bit2 = 1
;bit3 = 1
;bit4 = 1
;bit5 = 0
;bit6 = 0
;bit7 = 0
BLINK_FILT=0
;BLINK_FILT=28
[OPTPAR]
AUTO_CHANGE_ODL=false
CHANGE_ODL_MODE=TIME
CHANGE_ODL_HOURS=24
CHANGE_ODL_IDLE_MIN=5
PZCOUNT_MODE=PAMA
DISABLE_PZCOUNT=FALSE
ENABLE_SEND_PZC_BLOCK=TRUE
MIN_SEND_PZC_BLOCK=0
MAX_SEND_PZC_BLOCK=100
ENABLE_DYN_DATA=TRUE
FORCE_DYN_DATA=TRUE
DEM_FACT_DYN_DATA=5
ENABLE_DATA_FILTER=TRUE
ENABLE_CLI_RESTART=TRUE
DISABLE_SEND_WDST=TRUE
SyncStateServer=308SERVER60\LANTEK
SyncStateDb=MoonPro_IOB_ISF_LANTEK
SyncStateUser=steamware
SyncStatePwd=viadante16
SyncStateCTout=
VetoReadSec=2
VetoSyncSec=10
FullPodlUrl=true
; clock base (da 10ms)
timerIntMs=20
; conf parametri memoria READ/WRITE
PARAM_CONF=IMI_SOITAAB_Z2342_01.json
[BRANCH]
NAME=master
@@ -0,0 +1,10 @@
{
"mMapWrite": {
},
"mMapRead": {
},
"optKVP": {
//"path-remBase": "C:\\Temp"
"path-remBase": "\\\\ecs900\\Logs"
}
}
@@ -0,0 +1,83 @@
;Configurazione IOB-WIN
[IOB]
;Accesso gestione sync con FILE SOITAAB
CNCTYPE=FILE_SOITAAB
PING_MS_TIMEOUT=500
MinDeltaSec=5
IOB_NAME=IMI_SOITAAB_Z2342
DIS_EXE_TASK=TRUE
DIS_STATE_CH=FALSE
[MACHINE]
VENDOR=SOITAAB
MODEL=Ossitaglio Z2342
[CNC]
;IP=ecs900
IP=172.28.30.53
PORT=0
GETPRGNAME=false
[SERVER]
MPIP=http://192.168.0.110
MPURL=/MP/IO
CMDBASE=/IOB/input/
CMDFLOG=/IOB/flog/
CMDALIVE=/IOB
CMDENABLED=/IOB/enabled/
CMDADV1=?valore=
CMDREBO=/sendReboot.aspx?idxMacchina=
CMDRAWTRANSF=/IOB/rawTransfJson/
[MEMORY]
ADDR_READ=DB9999.DBB0
ADDR_WRITE=DB9999.DBB0
SIZE_READ=0
SIZE_WRITE=0
;BIT0=CONN
;BIT1=DB60.DBB1
;BIT2=PZCOUNT.STD.DB700.DBW22
;BIT3=DB60.DBB3
;BIT4=DB60.DBB4
[BLINK]
;MAX_COUNTER_BLINK = 30
MAX_COUNTER_BLINK = 15
;bit0 = 0
;bit1 = 0
;bit2 = 1
;bit3 = 1
;bit4 = 1
;bit5 = 0
;bit6 = 0
;bit7 = 0
BLINK_FILT=0
;BLINK_FILT=28
[OPTPAR]
AUTO_CHANGE_ODL=false
CHANGE_ODL_MODE=TIME
CHANGE_ODL_HOURS=24
CHANGE_ODL_IDLE_MIN=5
PZCOUNT_MODE=SOITAAB
DISABLE_PZCOUNT=FALSE
ENABLE_SEND_PZC_BLOCK=TRUE
MIN_SEND_PZC_BLOCK=0
MAX_SEND_PZC_BLOCK=100
ENABLE_DYN_DATA=TRUE
FORCE_DYN_DATA=TRUE
DEM_FACT_DYN_DATA=5
ENABLE_DATA_FILTER=TRUE
ENABLE_CLI_RESTART=TRUE
DISABLE_SEND_WDST=TRUE
VetoReadSec=5
; clock base (da 10ms)
timerIntMs=20
; conf parametri memoria READ/WRITE
PARAM_CONF=IMI_SOITAAB_Z2342_02.json
[BRANCH]
NAME=master
@@ -0,0 +1,10 @@
{
"mMapWrite": {
},
"mMapRead": {
},
"optKVP": {
//"path-remBase": "C:\\Temp"
"path-remBase": "\\\\ecs900\\Logs"
}
}
+10 -3
View File
@@ -45,12 +45,19 @@ CLI_INST=SteamWareSim
;STARTLIST=BAGLIETTO_CIMOLAI_01
;STARTLIST=SIMUL_01
;STARTLIST=GIACO_SAIM_003
;STARTLIST=SIMUL_01
;STARTLIST=PIZ09
;STARTLIST=IMI_RIMOR_SAB_01
;STARTLIST=IMI_RIMOR_SAB_02
;STARTLIST=IMI_RIMOR_VER_01
;STARTLIST=IMI_RIMOR_VER_02
;STARTLIST=IMI_RIMOR_SAB_01
STARTLIST=IMI_RIMOR_VER_01
;STARTLIST=IMI_PAMA_392
;STARTLIST=Tend_FIMAT_01
;STARTLIST=PIZ10
;STARTLIST=IMI_SOITAAB_Z2342_02
;STARTLIST=SIMUL_02
;NB: mettere copy always ai file di conf x fare test...
;STARTLIST=SIMUL_01
STARTLIST=PING
MAXCNC=10
+4 -1
View File
@@ -2,13 +2,16 @@
[IOB]
CNCTYPE=PingWatchdog
PING_MS_TIMEOUT=500
;IOB_NAME=SIMUL_09
IOB_NAME=SIMUL_01
[MACHINE]
VENDOR=STEAMWARE
MODEL=WATCHDOG
[CNC]
IP=10.74.83.112
IP=10.74.83.183
;IP=10.74.82.253
PORT=0000
[SERVER]
+88
View File
@@ -0,0 +1,88 @@
;Configurazione IOB-WIN
[IOB]
;Impianto HAM Guardamiglio per Pizzaferri
CNCTYPE=MODBUS_TCP_HAM
PING_MS_TIMEOUT=1000
[MACHINE]
VENDOR=HAM
MODEL=HAM
[CNC]
IP=192.168.10.100
;IP=hamsantilario.dyndns.org
PORT=502
[SERVER]
;MPIP=https://localhost:44339
MPIP=https://gwms.egalware.com
MPURL=/pizzaferri/api
CMDBASE=/IOB/input/
CMDFLOG=/IOB/flog/
CMDALIVE=/IOB
CMDENABLED=/IOB/enabled/
CMDADV1=?valore=
CMDREBO=/IOB/sendReboot?idxMacchina=
[MEMORY]
ADDR_READ=40000
ADDR_WRITE=40400
SIZE_READ=64
SIZE_WRITE=358
HR_BASE_ADDR=40000
;DELTA_BASE=1
DELTA_BASE=0
INDEX_LUT_CORR=-1
[BLINK]
;MAX_COUNTER_BLINK = 30
MAX_COUNTER_BLINK = 15
;bit0 = 0
;bit1 = 0
;bit2 = 1
;bit3 = 1
;bit4 = 1
;bit5 = 0
;bit6 = 0
;bit7 = 0
BLINK_FILT=0
;BLINK_FILT=28
[OPTPAR]
;PZCOUNT_MODE=STD.[PAR/MEM].info|BIT.indice
PZCOUNT_MODE=STD.DB85.DBRE16
DISABLE_PZCOUNT=TRUE
ENABLE_SEND_PZC_BLOCK=TRUE
MIN_SEND_PZC_BLOCK=0
MAX_SEND_PZC_BLOCK=100
; GEST DATI DYN
ENABLE_DYN_DATA=TRUE
FORCE_DYN_DATA=TRUE
; gestione delta minimo accettabile tra min/MAX
DELTA_VAL=0.1
; clock base (da 10ms)
timerIntMs=50
MAX_ERROR_READ=10
; conf parametri memoria READ/WRITE
PARAM_CONF=PIZ10.json
NO_PING=FALSE
; conf blocchi memoria x READ
MEM_BLOCK=PIZ10_MBlock.json
; conf aree allarme
ALARM_CONF=PIZ10_alarm.json
[BRANCH]
NAME=master
; Tags manuali
[TAGS]
Customer=Pizzaferri
HostOS=WIN
HostName=PIZZAFERRI-IOB-WIN-03
HostAddr=192.168.10.50
+176
View File
@@ -0,0 +1,176 @@
{
"mMapWrite": {
"SetLowTempAmb01": {
"name": "SetLowTempAmb01",
"description": "Set point di avviso per bassa temperatura ambiente nell'impianto 01",
"memAddr": "40421",
"tipoMem": "Real",
"index": 421,
"size": 2,
"minVal": -200,
"maxVal": 200,
"unit": "C"
},
"SetHighTempAmb01": {
"name": "SetHighTempAmb01",
"description": "Set point di avviso per alta temperatura ambiente nell'impianto 01",
"memAddr": "40423",
"tipoMem": "Real",
"index": 423,
"size": 2,
"minVal": -200,
"maxVal": 200,
"unit": "C"
},
"SetLowTempAmb02": {
"name": "SetLowTempAmb02",
"description": "Set point di avviso per bassa temperatura ambiente nell'impianto 02",
"memAddr": "40425",
"tipoMem": "Real",
"index": 425,
"size": 2,
"minVal": -200,
"maxVal": 200,
"unit": "C"
},
"SetHighTempAmb02": {
"name": "SetHighTempAmb02",
"description": "Set point di avviso per alta temperatura ambiente nell'impianto 02",
"memAddr": "40427",
"tipoMem": "Real",
"index": 427,
"size": 2,
"minVal": -200,
"maxVal": 200,
"unit": "C"
}
},
"mMapRead": {
"Level": {
"name": "Level",
"description": "Livello Serbatoio",
"memAddr": "40001",
"tipoMem": "Real",
"index": 1,
"size": 2,
"func": "MEDIAN",
"period": 90,
"factor": 360,
"minVal": 0,
"maxVal": 100,
"unit": "Kg"
},
"MainPress": {
"name": "MainPress",
"description": "Pressione Serbatoio",
"memAddr": "40003",
"tipoMem": "Real",
"index": 3,
"size": 2,
"func": "MEDIAN",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 400,
"unit": "bar"
},
"TempSerb": {
"name": "TempSerb",
"description": "Temperatura prodotto all'interno del serbatoio",
"memAddr": "40049",
"tipoMem": "Real",
"index": 49,
"size": 2,
"func": "MEDIAN",
"period": 90,
"factor": 1,
"minVal": -200,
"maxVal": 200,
"unit": "C"
},
"SetLowTempAmb01": {
"name": "SetLowTempAmb01",
"description": "Set point di avviso per bassa temperatura ambiente nell'impianto 01",
"memAddr": "40421",
"tipoMem": "Real",
"index": 421,
"size": 2,
"func": "MEDIAN",
"period": 90,
"factor": 1,
"minVal": -200,
"maxVal": 200,
"unit": "C"
},
"SetHighTempAmb01": {
"name": "SetHighTempAmb01",
"description": "Set point di avviso per alta temperatura ambiente nell'impianto 01",
"memAddr": "40423",
"tipoMem": "Real",
"index": 423,
"size": 2,
"func": "MEDIAN",
"period": 90,
"factor": 1,
"minVal": -200,
"maxVal": 200,
"unit": "C"
},
"SetLowTempAmb02": {
"name": "SetLowTempAmb02",
"description": "Set point di avviso per bassa temperatura ambiente nell'impianto 02",
"memAddr": "40425",
"tipoMem": "Real",
"index": 425,
"size": 2,
"func": "MEDIAN",
"period": 90,
"factor": 1,
"minVal": -200,
"maxVal": 200,
"unit": "C"
},
"SetHighTempAmb02": {
"name": "SetHighTempAmb02",
"description": "Set point di avviso per alta temperatura ambiente nell'impianto 02",
"memAddr": "40427",
"tipoMem": "Real",
"index": 427,
"size": 2,
"func": "MEDIAN",
"period": 90,
"factor": 1,
"minVal": -200,
"maxVal": 200,
"unit": "C"
},
"PressBH": {
"name": "PressBH",
"description": "Pressione media all'interno dell'accumulo GNC (pacco bombole) di alta pressione",
"memAddr": "40019",
"tipoMem": "Real",
"index": 19,
"size": 2,
"func": "MEDIAN",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 400,
"unit": "bar"
},
"PressBL": {
"name": "PressBL",
"description": "Pressione media all'interno dell'accumulo GNC (pacco bombole) di media pressione",
"memAddr": "40021",
"tipoMem": "Real",
"index": 21,
"size": 2,
"func": "MEDIAN",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 400,
"unit": "bar"
}
}
}
+7
View File
@@ -0,0 +1,7 @@
{
"ReadBlocks": {
"40000": 64,
"40420": 64,
"40900": 8
}
}
+54
View File
@@ -0,0 +1,54 @@
[
{
"blinkVal": 100,
"description": "Allarmi Impianto",
"tipoMem": "DInt",
"memAddr": "40901",
"index": 901,
"size": 2,
"messages": [
"Basso livello serbatoio",
"Alto livello serbatoio",
"Errore trasmettitore livello",
"Bassa pressione serbatoio",
"Alta pressione serbatoio",
"##",
"##",
"Allarme rilevatore gas 1",
"##",
"##",
"Allarme rilevatore gas 2",
"##",
"##",
"Allarme rilevatore gas 3",
"##",
"##"
]
},
{
"blinkVal": 100,
"description": "Emergenza",
"tipoMem": "DInt",
"memAddr": "40907",
"index": 907,
"size": 2,
"messages": [
"##",
"Pulsante di Emergenza Premuto",
"##",
"##",
"##",
"##",
"##",
"##",
"##",
"##",
"##",
"##",
"##",
"##",
"##",
"##"
]
}
]
+9 -6
View File
@@ -3,6 +3,7 @@
CNCTYPE=SIMULA
PING_MS_TIMEOUT=500
MinDeltaSec=5
EnableRedisQueue=true
[MACHINE]
VENDOR=STEAMWARE
@@ -91,10 +92,12 @@ FTP_LOC_DIR=temp\csv
FTP_REM_DIR=
CSV_ADD_HEADER=true
; conf file import
FILE_IMPORT_FOLDER=c:\temp\import
FILE_IMPORT_TYPE=*.xlsx
FILE_ARCHIVE_FOLDER=c:\temp\import\archive
[BRANCH]
NAME=master
NAME=master
; Tags manuali
[TAGS]
Customer=Steamware
HostOS=WIN
HostName=IOB-WIN-SIMULA
HostAddr=10.74.82.76
+16 -11
View File
@@ -84,16 +84,21 @@
"maxVal": 1500
}
},
"fileDecod": {
"Product": 3,
"Variety": 9,
"Supplier": 8,
"ExtDoc": 2,
"DateRif": 14,
"QtyTot": 22,
"NumPack": 21,
"NumPed": 17,
"PackPed": 18,
"PesoPack": 20
"optKVP": {
"hasRecipe": true,
"maxPodlQty": 530,
"useLocalRecipe": true,
"path-locBase": "C:\\MesData\\",
"path-00-Arch": "ArchivioRicette\\FIMAT",
"path-01-Temp": "01-Temp\\FIMAT",
"path-02-Sent": "02-Inviate\\FIMAT",
"path-03-Recv": "03-Ricevute\\FIMAT",
"path-04-remReq": "Y:\\",
"path-05-remExe": "C:\\MesData\\Remote\\Dosed",
"path-06-remRec": "R:\\",
"path-outReport": "C:\\MesData\\Report",
"path-confSetup": "C:\\MesData\\Setup\\setupConsumi.json",
"replace-<Variant>": "<Variant>{{PODL}}",
"replace-<Info1>": "<Info1>Kg{{Qty}} | {{Note}}"
}
}
+9 -1
View File
@@ -3,6 +3,7 @@
CNCTYPE=SIMULA
PING_MS_TIMEOUT=500
MinDeltaSec=5
EnableRedisQueue=true
[MACHINE]
VENDOR=STEAMWARE
@@ -91,4 +92,11 @@ FTP_LOC_DIR=temp\csv
FTP_REM_DIR=
[BRANCH]
NAME=master
NAME=master
; Tags manuali
[TAGS]
Customer=Steamware
HostOS=WIN
HostName=IOB-WIN-SIMULA
HostAddr=10.74.82.76
-12
View File
@@ -83,17 +83,5 @@
"minVal": 0,
"maxVal": 1500
}
},
"fileDecod": {
"Product": 2,
"Variety": 3,
"Supplier": 4,
"ExtDoc": 0,
"DateRif": 1,
"QtyTot": 15,
"NumPack": 14,
"NumPed": 11,
"PackPed": 12,
"PesoPack": 13
}
}
+10 -2
View File
@@ -3,6 +3,7 @@
CNCTYPE=SIMULA
PING_MS_TIMEOUT=500
MinDeltaSec=5
EnableRedisQueue=true
[MACHINE]
VENDOR=STEAMWARE
@@ -34,7 +35,7 @@ BLINK_FILT=0
[OPTPAR]
AUTO_CHANGE_ODL=true
AUTO_SNAPSHOT_DOSSIER=true
AUTO_SNAPSHOT_DOSSIER=false
CHANGE_ODL_HOURS=24
CHANGE_ODL_IDLE_MIN=0
;PZCOUNT_MODE=STD.[PAR/MEM].info|BIT.indice
@@ -92,4 +93,11 @@ FTP_REM_DIR=
[BRANCH]
NAME=master
NAME=master
; Tags manuali
[TAGS]
Customer=Steamware
HostOS=WIN
HostName=IOB-WIN-SIMULA
HostAddr=10.74.82.76
+10 -2
View File
@@ -3,6 +3,7 @@
CNCTYPE=SIMULA
PING_MS_TIMEOUT=500
MinDeltaSec=5
EnableRedisQueue=true
[MACHINE]
VENDOR=STEAMWARE
@@ -33,7 +34,7 @@ BLINK_FILT=0
[OPTPAR]
AUTO_CHANGE_ODL=true
AUTO_SNAPSHOT_DOSSIER=true
AUTO_SNAPSHOT_DOSSIER=false
CHANGE_ODL_HOURS=24
CHANGE_ODL_IDLE_MIN=0
;PZCOUNT_MODE=STD.[PAR/MEM].info|BIT.indice
@@ -90,4 +91,11 @@ FTP_LOC_DIR=temp\csv
FTP_REM_DIR=
[BRANCH]
NAME=master
NAME=master
; Tags manuali
[TAGS]
Customer=Steamware
HostOS=WIN
HostName=IOB-WIN-SIMULA
HostAddr=10.74.82.76
+10 -2
View File
@@ -3,6 +3,7 @@
CNCTYPE=SIMULA
PING_MS_TIMEOUT=500
MinDeltaSec=5
EnableRedisQueue=true
[MACHINE]
VENDOR=STEAMWARE
@@ -33,7 +34,7 @@ BLINK_FILT=0
[OPTPAR]
AUTO_CHANGE_ODL=true
AUTO_SNAPSHOT_DOSSIER=true
AUTO_SNAPSHOT_DOSSIER=false
CHANGE_ODL_HOURS=24
CHANGE_ODL_IDLE_MIN=0
;PZCOUNT_MODE=STD.[PAR/MEM].info|BIT.indice
@@ -90,4 +91,11 @@ FTP_LOC_DIR=temp\csv
FTP_REM_DIR=
[BRANCH]
NAME=master
NAME=master
; Tags manuali
[TAGS]
Customer=Steamware
HostOS=WIN
HostName=IOB-WIN-SIMULA
HostAddr=10.74.82.76
+10 -2
View File
@@ -3,6 +3,7 @@
CNCTYPE=SIMULA
PING_MS_TIMEOUT=500
MinDeltaSec=5
EnableRedisQueue=true
[MACHINE]
VENDOR=STEAMWARE
@@ -33,7 +34,7 @@ BLINK_FILT=0
[OPTPAR]
AUTO_CHANGE_ODL=true
AUTO_SNAPSHOT_DOSSIER=true
AUTO_SNAPSHOT_DOSSIER=false
CHANGE_ODL_HOURS=24
CHANGE_ODL_IDLE_MIN=0
;PZCOUNT_MODE=STD.[PAR/MEM].info|BIT.indice
@@ -90,4 +91,11 @@ FTP_LOC_DIR=temp\csv
FTP_REM_DIR=
[BRANCH]
NAME=master
NAME=master
; Tags manuali
[TAGS]
Customer=Steamware
HostOS=WIN
HostName=IOB-WIN-SIMULA
HostAddr=10.74.82.76
+10 -2
View File
@@ -3,6 +3,7 @@
CNCTYPE=SIMULA
PING_MS_TIMEOUT=500
MinDeltaSec=5
EnableRedisQueue=true
[MACHINE]
VENDOR=STEAMWARE
@@ -33,7 +34,7 @@ BLINK_FILT=0
[OPTPAR]
AUTO_CHANGE_ODL=true
AUTO_SNAPSHOT_DOSSIER=true
AUTO_SNAPSHOT_DOSSIER=false
CHANGE_ODL_HOURS=24
CHANGE_ODL_IDLE_MIN=0
;PZCOUNT_MODE=STD.[PAR/MEM].info|BIT.indice
@@ -91,4 +92,11 @@ FTP_REM_DIR=
[BRANCH]
NAME=master
NAME=master
; Tags manuali
[TAGS]
Customer=Steamware
HostOS=WIN
HostName=IOB-WIN-SIMULA
HostAddr=10.74.82.76
+10 -2
View File
@@ -3,6 +3,7 @@
CNCTYPE=SIMULA
PING_MS_TIMEOUT=500
MinDeltaSec=5
EnableRedisQueue=true
[MACHINE]
VENDOR=STEAMWARE
@@ -33,7 +34,7 @@ BLINK_FILT=0
[OPTPAR]
AUTO_CHANGE_ODL=false
AUTO_SNAPSHOT_DOSSIER=true
AUTO_SNAPSHOT_DOSSIER=false
CHANGE_ODL_HOURS=48
CHANGE_ODL_IDLE_MIN=10
;PZCOUNT_MODE=STD.[PAR/MEM].info|BIT.indice
@@ -90,4 +91,11 @@ FTP_LOC_DIR=temp\csv
FTP_REM_DIR=
[BRANCH]
NAME=master
NAME=master
; Tags manuali
[TAGS]
Customer=Steamware
HostOS=WIN
HostName=IOB-WIN-SIMULA
HostAddr=10.74.82.76
+21 -3
View File
@@ -3,6 +3,7 @@
CNCTYPE=SIMULA
PING_MS_TIMEOUT=500
MinDeltaSec=5
EnableRedisQueue=true
[MACHINE]
VENDOR=STEAMWARE
@@ -50,7 +51,7 @@ PER_BASE=10500
SIM_PZCNT=10|3
SIM_ALARM=1000|20
SIM_MANU=50|6
; 1 = indica che la macchina è multi --> allo scadere del contapezzo gestisce ANCHE il giro tavola sui bit relativi
; 1 = indica che la macchina è multi --> allo scadere del contapezzo gestisce ANCHE il giro tavola sui bit relativi
IS_MULTI=1
; indica gestione e simulazione bit 5 --> slow/emergenza
SIM_SLOW=3500|20
@@ -58,7 +59,7 @@ SIM_SLOW=3500|20
SIM_WUCD=8000|20
; indica gestione e simulazione bit 7 --> emergenza
SIM_EMRG=4000|10
; indica simulazione delle funzionalità power ON/ OFF
; indica simulazione delle funzionalità power ON/ OFF
SIM_POW_ON_OFF=true
T_ON=6
T_OFF=22
@@ -74,5 +75,22 @@ SIM_MATR_OPR=1
; conf parametri memoria READ/WRITE
PARAM_CONF=SIM_DP_01.json
;conf test FTP
FTP_SERVER=ftp.steamware.net
FTP_USER=testftpuser
FTP_PWD=we4reFromB3rghem!
FTP_CERT=
FTP_SKIP=TRUE
FTP_LOC_DIR=temp\csv
FTP_REM_DIR=
CSV_ADD_HEADER=true
[BRANCH]
NAME=master
NAME=master
; Tags manuali
[TAGS]
Customer=Steamware
HostOS=WIN
HostName=IOB-WIN-SIMULA
HostAddr=10.74.82.76
+83 -95
View File
@@ -1,99 +1,87 @@
{
"mMapWrite": {
"setArt": {
"name": "setArt",
"description": "Articolo",
"memAddr": "DB150.DBB12",
"tipoMem": "String",
"index": 12,
"size": 20
"mMapWrite": {
"setArt": {
"name": "setArt",
"description": "Articolo",
"memAddr": "DB150.DBB12",
"tipoMem": "String",
"index": 12,
"size": 20
},
"setComm": {
"name": "setComm",
"description": "Commessa",
"memAddr": "DB150.DBB32",
"tipoMem": "String",
"index": 32,
"size": 20
},
"setPzComm": {
"name": "setPzComm",
"description": "Qta Richiesta",
"memAddr": "DB150.DBB8",
"tipoMem": "Int",
"index": 8,
"size": 4
},
"forceSetPzCount": {
"name": "forceSetPzCount",
"description": "Imposta Qta",
"memAddr": "DB150.DBB8",
"tipoMem": "Int",
"index": 8,
"size": 4
}
},
"setComm": {
"name": "setComm",
"description": "Commessa",
"memAddr": "DB150.DBB32",
"tipoMem": "String",
"index": 32,
"size": 20
},
"setPzComm": {
"name": "setPzComm",
"description": "Qta Richiesta",
"memAddr": "DB150.DBB8",
"tipoMem": "Int",
"index": 8,
"size": 4
},
"forceSetPzCount": {
"name": "forceSetPzCount",
"description": "Imposta Qta",
"memAddr": "DB150.DBB8",
"tipoMem": "Int",
"index": 8,
"size": 4
"mMapRead": {
"TEMP_01": {
"name": "TEMP_01",
"description": "Temperatura 01",
"tipoMem": "Real",
"minVal": 18,
"maxVal": 24
},
"POWER_01": {
"name": "POWER_01",
"description": "Potenza impianto",
"tipoMem": "Int",
"minVal": 40,
"maxVal": 80
},
"FEED_OVER": {
"name": "FEED_OVER",
"description": "FEED override",
"tipoMem": "Int",
"minVal": 0,
"maxVal": 100
},
"RAPID_OVER": {
"name": "RAPID_OVER",
"description": "RAPID override",
"tipoMem": "Int",
"minVal": 50,
"maxVal": 120
},
"POS_X": {
"name": "POS_X",
"description": "Asse X",
"tipoMem": "Int",
"minVal": -2000,
"maxVal": 2000
},
"POS_Y": {
"name": "POS_Y",
"description": "Asse Y",
"tipoMem": "Int",
"minVal": 0,
"maxVal": 2000
},
"POS_Z": {
"name": "POS_Z",
"description": "Asse Z",
"tipoMem": "Int",
"minVal": 0,
"maxVal": 1500
}
}
},
"mMapRead": {
"TEMP_01": {
"name": "TEMP_01",
"description": "Temperatura 01",
"tipoMem": "Real",
"minVal": 18,
"maxVal": 24
},
"POWER_01": {
"name": "POWER_01",
"description": "Potenza impianto",
"tipoMem": "Int",
"minVal": 40,
"maxVal": 80
},
"FEED_OVER": {
"name": "FEED_OVER",
"description": "FEED override",
"tipoMem": "Int",
"minVal": 0,
"maxVal": 100
},
"RAPID_OVER": {
"name": "RAPID_OVER",
"description": "RAPID override",
"tipoMem": "Int",
"minVal": 50,
"maxVal": 120
},
"POS_X": {
"name": "POS_X",
"description": "Asse X",
"tipoMem": "Int",
"minVal": -2000,
"maxVal": 2000
},
"POS_Y": {
"name": "POS_Y",
"description": "Asse Y",
"tipoMem": "Int",
"minVal": 0,
"maxVal": 2000
},
"POS_Z": {
"name": "POS_Z",
"description": "Asse Z",
"tipoMem": "Int",
"minVal": 0,
"maxVal": 1500
}
},
"fileDecod": {
"Product": 2,
"Variety": 3,
"Supplier": 4,
"ExtDoc": 0,
"DateRif": 1,
"QtyTot": 15,
"NumPack": 14,
"NumPed": 11,
"PackPed": 12,
"PesoPack": 13
}
}
+22 -4
View File
@@ -3,6 +3,7 @@
CNCTYPE=SIMULA
PING_MS_TIMEOUT=500
MinDeltaSec=5
EnableRedisQueue=true
[MACHINE]
VENDOR=STEAMWARE
@@ -50,7 +51,7 @@ PER_BASE=10400
SIM_PZCNT=10|2
SIM_ALARM=1000|20
SIM_MANU=50|6
; 1 = indica che la macchina è multi --> allo scadere del contapezzo gestisce ANCHE il giro tavola sui bit relativi
; 1 = indica che la macchina multi --> allo scadere del contapezzo gestisce ANCHE il giro tavola sui bit relativi
IS_MULTI=1
; indica gestione e simulazione bit 5 --> slow/emergenza
SIM_SLOW=6500|20
@@ -58,7 +59,7 @@ SIM_SLOW=6500|20
SIM_WUCD=8000|20
; indica gestione e simulazione bit 7 --> emergenza
SIM_EMRG=4000|10
; indica simulazione delle funzionalità power ON/ OFF
; indica simulazione delle funzionalit power ON/ OFF
SIM_POW_ON_OFF=false
T_ON=6
T_OFF=22
@@ -72,7 +73,24 @@ SIM_DICH=262|1
SIM_MATR_OPR=1
; conf parametri memoria READ/WRITE
PARAM_CONF=SIM_DP_01.json
PARAM_CONF=SIM_DP_02.json
;conf test FTP
FTP_SERVER=ftp.steamware.net
FTP_USER=testftpuser
FTP_PWD=we4reFromB3rghem!
FTP_CERT=
FTP_SKIP=TRUE
FTP_LOC_DIR=temp\csv
FTP_REM_DIR=
CSV_ADD_HEADER=true
[BRANCH]
NAME=master
NAME=master
; Tags manuali
[TAGS]
Customer=Steamware
HostOS=WIN
HostName=IOB-WIN-SIMULA
HostAddr=10.74.82.76
+83 -95
View File
@@ -1,99 +1,87 @@
{
"mMapWrite": {
"setArt": {
"name": "setArt",
"description": "Articolo",
"memAddr": "DB150.DBB12",
"tipoMem": "String",
"index": 12,
"size": 20
"mMapWrite": {
"setArt": {
"name": "setArt",
"description": "Articolo",
"memAddr": "DB150.DBB12",
"tipoMem": "String",
"index": 12,
"size": 20
},
"setComm": {
"name": "setComm",
"description": "Commessa",
"memAddr": "DB150.DBB32",
"tipoMem": "String",
"index": 32,
"size": 20
},
"setPzComm": {
"name": "setPzComm",
"description": "Qta Richiesta",
"memAddr": "DB150.DBB8",
"tipoMem": "Int",
"index": 8,
"size": 4
},
"forceSetPzCount": {
"name": "forceSetPzCount",
"description": "Imposta Qta",
"memAddr": "DB150.DBB8",
"tipoMem": "Int",
"index": 8,
"size": 4
}
},
"setComm": {
"name": "setComm",
"description": "Commessa",
"memAddr": "DB150.DBB32",
"tipoMem": "String",
"index": 32,
"size": 20
},
"setPzComm": {
"name": "setPzComm",
"description": "Qta Richiesta",
"memAddr": "DB150.DBB8",
"tipoMem": "Int",
"index": 8,
"size": 4
},
"forceSetPzCount": {
"name": "forceSetPzCount",
"description": "Imposta Qta",
"memAddr": "DB150.DBB8",
"tipoMem": "Int",
"index": 8,
"size": 4
"mMapRead": {
"TEMP_01": {
"name": "TEMP_01",
"description": "Temperatura 01",
"tipoMem": "Real",
"minVal": 18,
"maxVal": 24
},
"POWER_01": {
"name": "POWER_01",
"description": "Potenza impianto",
"tipoMem": "Int",
"minVal": 40,
"maxVal": 80
},
"FEED_OVER": {
"name": "FEED_OVER",
"description": "FEED override",
"tipoMem": "Int",
"minVal": 0,
"maxVal": 100
},
"RAPID_OVER": {
"name": "RAPID_OVER",
"description": "RAPID override",
"tipoMem": "Int",
"minVal": 50,
"maxVal": 120
},
"POS_X": {
"name": "POS_X",
"description": "Asse X",
"tipoMem": "Int",
"minVal": -2000,
"maxVal": 2000
},
"POS_Y": {
"name": "POS_Y",
"description": "Asse Y",
"tipoMem": "Int",
"minVal": 0,
"maxVal": 2000
},
"POS_Z": {
"name": "POS_Z",
"description": "Asse Z",
"tipoMem": "Int",
"minVal": 0,
"maxVal": 1500
}
}
},
"mMapRead": {
"TEMP_01": {
"name": "TEMP_01",
"description": "Temperatura 01",
"tipoMem": "Real",
"minVal": 18,
"maxVal": 24
},
"POWER_01": {
"name": "POWER_01",
"description": "Potenza impianto",
"tipoMem": "Int",
"minVal": 40,
"maxVal": 80
},
"FEED_OVER": {
"name": "FEED_OVER",
"description": "FEED override",
"tipoMem": "Int",
"minVal": 0,
"maxVal": 100
},
"RAPID_OVER": {
"name": "RAPID_OVER",
"description": "RAPID override",
"tipoMem": "Int",
"minVal": 50,
"maxVal": 120
},
"POS_X": {
"name": "POS_X",
"description": "Asse X",
"tipoMem": "Int",
"minVal": -2000,
"maxVal": 2000
},
"POS_Y": {
"name": "POS_Y",
"description": "Asse Y",
"tipoMem": "Int",
"minVal": 0,
"maxVal": 2000
},
"POS_Z": {
"name": "POS_Z",
"description": "Asse Z",
"tipoMem": "Int",
"minVal": 0,
"maxVal": 1500
}
},
"fileDecod": {
"Product": 2,
"Variety": 3,
"Supplier": 4,
"ExtDoc": 0,
"DateRif": 1,
"QtyTot": 15,
"NumPack": 14,
"NumPed": 11,
"PackPed": 12,
"PesoPack": 13
}
}
+8 -1
View File
@@ -72,4 +72,11 @@ MAX_PZ_INCR_PERC=1000
PARAM_CONF=SIM_PIZ00.json
[BRANCH]
NAME=master
NAME=master
; Tags manuali
[TAGS]
Customer=Steamware
HostOS=WIN
HostName=IOB-WIN-SIMULA
HostAddr=10.74.82.76
+8 -1
View File
@@ -72,4 +72,11 @@ MAX_PZ_INCR_PERC=1000
PARAM_CONF=SIM_PIZ00.json
[BRANCH]
NAME=master
NAME=master
; Tags manuali
[TAGS]
Customer=Steamware
HostOS=WIN
HostName=IOB-WIN-SIMULA
HostAddr=10.74.82.76
+8 -1
View File
@@ -72,4 +72,11 @@ MAX_PZ_INCR_PERC=1000
PARAM_CONF=SIM_PIZ00.json
[BRANCH]
NAME=master
NAME=master
; Tags manuali
[TAGS]
Customer=Steamware
HostOS=WIN
HostName=IOB-WIN-SIMULA
HostAddr=10.74.82.76
+8 -1
View File
@@ -72,4 +72,11 @@ MAX_PZ_INCR_PERC=1000
PARAM_CONF=SIM_PIZ00.json
[BRANCH]
NAME=master
NAME=master
; Tags manuali
[TAGS]
Customer=Steamware
HostOS=WIN
HostName=IOB-WIN-SIMULA
HostAddr=10.74.82.76
+165 -150
View File
@@ -1,153 +1,168 @@
{
"BrowseFullVal": "ns=4;i=5001",
"BrowseNSIndex": 4,
"BrowseValue": 5001,
"keyPartCount": "tomes_17_partial_prod",
"keyPartReq": "tomach_6_quantity",
"keyPartId": "",
"keyProgName": "",
"keyRunMode": "",
"pingAsPowerOn": false,
"condWork": [{
"keyName": "tomes_5_autom",
"targetValue": "True"
}],
"condPowerOn": {
"checkMode": "AND",
"checkList": [{
"keyName": "tomes_2_mach_on",
"targetValue": "True"
}]
},
"condReady": {
"checkMode": "AND",
"checkList": []
},
"condManual": {
"checkMode": "AND",
"checkList": [{
"keyName": "tomes_6_manual",
"targetValue": "True"
}]
},
"condEStop": {
"checkMode": "AND",
"checkList": []
},
"condError": {
"checkMode": "AND",
"checkList": [{
"keyName": "tomes_7_alarm",
"targetValue": "True"
}]
},
"condCountEnabled": {
"checkMode": "AND",
"checkList": []
},
"condWarmUpCoolDown": {
"checkMode": "OR",
"checkList": []
},
"condWarning": {
"checkMode": "AND",
"checkList": [{
"keyName": "tomes_8_warning",
"targetValue": "True"
}]
},
"condSetup": {
"checkMode": "AND",
"checkList": [{
"keyName": "tomes_3_setup",
"targetValue": "True"
}]
},
"fluxLogVeto": [
"tomes_1_Watchdog"
],
"itemTranslation": {
"avail": "Machine Available",
"rstat": "Execution Mode",
"mode": "Controller Mode",
"ncprog": "Program Name",
"tomes_13_good_prod": "Pezzi Prodotta",
"tomach_6_quantity": "Qta Richiesta",
"fdovrd": "PATH FEED OVERRIDE",
"rovrd": "PATH RAPID OVERRIDE"
},
"paramsEndThresh": {
"InvDDone": 50
},
"mMapWrite": {
"setPzComm": {
"name": "setPzComm",
"description": "Qty",
"tipoMem": "Int",
"memAddr": "ns=4;s=tomach_6_quantity",
"index": 0,
"size": 4
},
"setComm": {
"name": "setComm",
"description": "Commessa",
"tipoMem": "String",
"memAddr": "ns=4;s=tomach_4_prod_order",
"index": 0,
"size": 24
},
"setArt": {
"name": "setArt",
"description": "Articolo",
"tipoMem": "String",
"memAddr": "ns=4;s=tomach_3_code_die",
"index": 0,
"size": 24
}
},
"subscribedItems": [
"ns=4;s=tomes_1_Watchdog",
"ns=4;s=tomes_2_mach_on",
"ns=4;s=tomes_3_setup",
"ns=4;s=tomes_4_impulse",
"ns=4;s=tomes_5_autom",
"ns=4;s=tomes_6_manual",
"ns=4;s=tomes_7_alarm",
"ns=4;s=tomes_8_warning",
"ns=4;s=tomes_10_cycle_life",
"ns=4;s=tomes_11_ack_new_order",
"ns=4;s=tomes_13_good_prod",
"ns=4;s=tomes_14_bad_prod_calipso",
"ns=4;s=tomes_15_bad_prod_startup",
"ns=4;s=tomes_16_bad_prod_stop",
"ns=4;s=tomes_17_partial_prod",
"ns=4;s=tomes_18_total_prod",
"ns=4;s=tomes_20_code_die",
"ns=4;s=tomes_21_order",
"ns=4;s=tomach_1_watchdog",
"ns=4;s=tomach_2_new_prod",
"ns=4;s=tomach_3_code_die",
"ns=4;s=tomach_4_prod_order",
"ns=4;s=tomach_6_quantity"
],
"WatchDog": {
"IsEnabled": true,
"MemConfRead": "ns=4;s=tomes_1_Watchdog",
"MemConfWrite": "ns=4;s=tomach_1_watchdog",
"MaxVal": 9999
},
"SetupConf": {
"SetupMode": "MECOLPRESS",
"EnableAdvSetup": false,
"checkParList": {
"tomach_3_code_die": "tomes_20_code_die",
"tomach_4_prod_order": "tomes_21_order"
},
"writeParAction": [{
"TargetParam": "ns=4;s=tomach_2_new_prod",
"TargetValEqual": 0,
"TargetValNotEqual": 1,
"DisablePzCountNotEqual": true
}]
"BrowseFullVal": "ns=4;i=5001",
"BrowseNSIndex": 4,
"BrowseValue": 5001,
"keyPartCount": "tomes_17_partial_prod",
"keyPartReq": "tomach_6_quantity",
"keyPartId": "",
"keyProgName": "",
"keyRunMode": "",
"pingAsPowerOn": false,
"condWork": [
{
"keyName": "tomes_5_autom",
"targetValue": "True"
}
],
"condPowerOn": {
"checkMode": "AND",
"checkList": [
{
"keyName": "tomes_2_mach_on",
"targetValue": "True"
}
]
},
"condReady": {
"checkMode": "AND",
"checkList": []
},
"condManual": {
"checkMode": "AND",
"checkList": [
{
"keyName": "tomes_6_manual",
"targetValue": "True"
}
]
},
"condEStop": {
"checkMode": "AND",
"checkList": []
},
"condError": {
"checkMode": "AND",
"checkList": [
{
"keyName": "tomes_7_alarm",
"targetValue": "True"
}
]
},
"condCountEnabled": {
"checkMode": "AND",
"checkList": []
},
"condWarmUpCoolDown": {
"checkMode": "OR",
"checkList": [],
"negateValue": true
},
"condWarning": {
"checkMode": "AND",
"checkList": [
{
"keyName": "tomes_8_warning",
"targetValue": "True"
}
]
},
"condSetup": {
"checkMode": "AND",
"checkList": [
{
"keyName": "tomes_3_setup",
"targetValue": "True"
}
]
},
"fluxLogVeto": [
"tomes_1_Watchdog"
],
"itemTranslation": {
"avail": "Machine Available",
"rstat": "Execution Mode",
"mode": "Controller Mode",
"ncprog": "Program Name",
"tomes_13_good_prod": "Pezzi Prodotta",
"tomach_6_quantity": "Qta Richiesta",
"fdovrd": "PATH FEED OVERRIDE",
"rovrd": "PATH RAPID OVERRIDE"
},
"paramsEndThresh": {
"InvDDone": 50
},
"mMapWrite": {
"setPzComm": {
"name": "setPzComm",
"description": "Qty",
"tipoMem": "Int",
"memAddr": "ns=4;s=tomach_6_quantity",
"index": 0,
"size": 4
},
"setComm": {
"name": "setComm",
"description": "Commessa",
"tipoMem": "String",
"memAddr": "ns=4;s=tomach_4_prod_order",
"index": 0,
"size": 24
},
"setArt": {
"name": "setArt",
"description": "Articolo",
"tipoMem": "String",
"memAddr": "ns=4;s=tomach_3_code_die",
"index": 0,
"size": 24
}
},
"subscribedItems": [
"ns=4;s=tomes_1_Watchdog",
"ns=4;s=tomes_2_mach_on",
"ns=4;s=tomes_3_setup",
"ns=4;s=tomes_4_impulse",
"ns=4;s=tomes_5_autom",
"ns=4;s=tomes_6_manual",
"ns=4;s=tomes_7_alarm",
"ns=4;s=tomes_8_warning",
"ns=4;s=tomes_10_cycle_life",
"ns=4;s=tomes_11_ack_new_order",
"ns=4;s=tomes_13_good_prod",
"ns=4;s=tomes_14_bad_prod_calipso",
"ns=4;s=tomes_15_bad_prod_startup",
"ns=4;s=tomes_16_bad_prod_stop",
"ns=4;s=tomes_17_partial_prod",
"ns=4;s=tomes_18_total_prod",
"ns=4;s=tomes_20_code_die",
"ns=4;s=tomes_21_order",
"ns=4;s=tomach_1_watchdog",
"ns=4;s=tomach_2_new_prod",
"ns=4;s=tomach_3_code_die",
"ns=4;s=tomach_4_prod_order",
"ns=4;s=tomach_6_quantity"
],
"WatchDog": {
"IsEnabled": true,
"MemConfRead": "ns=4;s=tomes_1_Watchdog",
"MemConfWrite": "ns=4;s=tomach_1_watchdog",
"MaxVal": 9999
},
"SetupConf": {
"SetupMode": "MECOLPRESS",
"EnableAdvSetup": false,
"checkParList": {
"tomach_3_code_die": "tomes_20_code_die",
"tomach_4_prod_order": "tomes_21_order"
},
"writeParAction": [
{
"TargetParam": "ns=4;s=tomach_2_new_prod",
"TargetValEqual": 0,
"TargetValNotEqual": 1,
"DisablePzCountNotEqual": true
}
]
}
}
+1 -1
View File
@@ -13,7 +13,7 @@ IP=192.168.250.53
PORT=4840
GETPRGNAME=true
[SERVER]
[SERVER]
MPIP=http://192.168.10.7
MPURL=/MP/IO
CMDBASE=/IOB/input/
+80
View File
@@ -0,0 +1,80 @@
;Configurazione IOB-WIN
[IOB]
;Impianto Rimor verniciatura - IMI Remosa
CNCTYPE=MODBUS_TCP_FIMAT
PING_MS_TIMEOUT=1000
MinDeltaSec=5
;IOB_NAME=Tend_Fimat
DIS_EXE_TASK=FALSE
DIS_STATE_CH=FALSE
[MACHINE]
VENDOR=FIMAT
MODEL=Impianto mix colori - PLC
[CNC]
IP=192.168.10.49
PORT=502
[SERVER]
MPIP=http://192.168.10.7
MPURL=/MP/IO
CMDBASE=/IOB/input/
CMDFLOG=/IOB/flog/
CMDALIVE=/IOB
CMDENABLED=/IOB/enabled/
CMDADV1=?valore=
CMDREBO=/sendReboot.aspx?idxMacchina=
[MEMORY]
ADDR_READ=40000
ADDR_WRITE=40000
SIZE_READ=10
SIZE_WRITE=0
HR_BASE_ADDR=40000
DELTA_BASE=0
INDEX_LUT_CORR=0
MODBUS_EXT_REG=0
[BLINK]
;MAX_COUNTER_BLINK = 30
MAX_COUNTER_BLINK = 15
;bit0 = 0
;bit1 = 0
;bit2 = 1
;bit3 = 1
;bit4 = 1
;bit5 = 0
;bit6 = 0
;bit7 = 0
BLINK_FILT=0
;BLINK_FILT=28
[OPTPAR]
;PZCOUNT_MODE=STD.[PAR/MEM].info|BIT.indice
PZCOUNT_MODE=STD.DB85.DBRE16
DISABLE_PZCOUNT=TRUE
ENABLE_SEND_PZC_BLOCK=TRUE
MIN_SEND_PZC_BLOCK=0
MAX_SEND_PZC_BLOCK=100
; GEST DATI DYN
ENABLE_DYN_DATA=TRUE
FORCE_DYN_DATA=TRUE
; gestione delta minimo accettabile tra min/MAX
DELTA_VAL=0.1
; clock base (da 10ms)
timerIntMs=10
; conf parametri memoria READ/WRITE
PARAM_CONF=Tend_FIMAT_01.json
NO_PING=FALSE
; conf blocchi memoria x READ
MEM_BLOCK=Tend_FIMAT_01_MBlock.json
; conf aree allarme
ALARM_CONF=Tend_FIMAT_01_alarm.json
; rimozione check limiti min/max dynData
disDynDataRangeCheck=true
[BRANCH]
NAME=master
+342
View File
@@ -0,0 +1,342 @@
{
"mMapWrite": {},
"mMapRead": {
"StatoMacchina": {
"name": "StatoMacchina",
"description": "Stato della Macchina",
"memAddr": "40001",
"tipoMem": "Int",
"index": 1,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 10,
"unit": "#"
},
"ElencoAnomalie": {
"name": "ElencoAnomalie",
"description": "Elenco Anomalie",
"memAddr": "40002",
"tipoMem": "Int",
"index": 2,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 10,
"unit": "#"
},
"ElencoAttivita": {
"name": "ElencoAttivita",
"description": "Elenco Attivita",
"memAddr": "40003",
"tipoMem": "Int",
"index": 3,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 10,
"unit": "#"
},
"StatoRicircolo": {
"name": "StatoRicircolo",
"description": "Stato Ricircolo Serbatoi",
"memAddr": "40004",
"tipoMem": "Int",
"index": 4,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 10,
"unit": "#"
},
"NumAllarmi": {
"name": "NumAllarmi",
"description": "NUmero Allarmi Presenti",
"memAddr": "40005",
"tipoMem": "Int",
"index": 5,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 1000,
"unit": "#"
},
"NumAllarmiNR": {
"name": "NumAllarmiNR",
"description": "NUmero Allarmi Non Riconosciuti",
"memAddr": "40006",
"tipoMem": "Int",
"index": 6,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 1000,
"unit": "#"
},
"ModoPreparazione": {
"name": "ModoPreparazione",
"description": "Modo Preparazione Ricetta",
"memAddr": "40007",
"tipoMem": "Int",
"index": 7,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 10,
"unit": "#"
},
"NumRicette": {
"name": "NumRicette",
"description": "Numero Ricette in coda",
"memAddr": "40008",
"tipoMem": "Int",
"index": 8,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 1000,
"unit": "#"
},
"StatoImport": {
"name": "StatoImport",
"description": "Stato Importazione file ricette XML da esterno",
"memAddr": "40009",
"tipoMem": "Int",
"index": 9,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 10,
"unit": "#"
},
"LivSerb01": {
"name": "LivSerb01",
"description": "Livello Servatoio 01",
"memAddr": "40020",
"tipoMem": "Int",
"index": 20,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 1000,
"unit": "#"
},
"LivSerb02": {
"name": "LivSerb02",
"description": "Livello Servatoio 02",
"memAddr": "40021",
"tipoMem": "Int",
"index": 21,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 1000,
"unit": "#"
},
"LivSerb03": {
"name": "LivSerb03",
"description": "Livello Servatoio 03",
"memAddr": "40022",
"tipoMem": "Int",
"index": 22,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 1000,
"unit": "#"
},
"LivSerb04": {
"name": "LivSerb04",
"description": "Livello Servatoio 04",
"memAddr": "40023",
"tipoMem": "Int",
"index": 23,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 1000,
"unit": "#"
},
"LivSerb05": {
"name": "LivSerb05",
"description": "Livello Servatoio 05",
"memAddr": "40024",
"tipoMem": "Int",
"index": 24,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 1000,
"unit": "#"
},
"LivSerb06": {
"name": "LivSerb06",
"description": "Livello Servatoio 06",
"memAddr": "40025",
"tipoMem": "Int",
"index": 25,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 1000,
"unit": "#"
},
"LivSerb07": {
"name": "LivSerb07",
"description": "Livello Servatoio 07",
"memAddr": "40026",
"tipoMem": "Int",
"index": 26,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 1000,
"unit": "#"
},
"LivSerb08": {
"name": "LivSerb08",
"description": "Livello Servatoio 08",
"memAddr": "40027",
"tipoMem": "Int",
"index": 27,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 1000,
"unit": "#"
},
"LivSerb09": {
"name": "LivSerb09",
"description": "Livello Servatoio 09",
"memAddr": "40028",
"tipoMem": "Int",
"index": 28,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 1000,
"unit": "#"
},
"LivSerb10": {
"name": "LivSerb10",
"description": "Livello Servatoio 10",
"memAddr": "40029",
"tipoMem": "Int",
"index": 29,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 1000,
"unit": "#"
},
"LivSerb11": {
"name": "LivSerb11",
"description": "Livello Servatoio 11",
"memAddr": "40030",
"tipoMem": "Int",
"index": 30,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 1000,
"unit": "#"
},
"LivSerb12": {
"name": "LivSerb12",
"description": "Livello Servatoio 12",
"memAddr": "40031",
"tipoMem": "Int",
"index": 31,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 1000,
"unit": "#"
}
},
"optMemPar": {
"AlarmIntCond": "40000|1=2",
"ManualBitCond": "40002.1=1",
"EStopBitCond": "40002.0=1",
"WorkIntCond": "40000|1=3",
//"VarInt2Translate": "40001,40007",
//"VarBit2Translate": "40003"
},
"optKVP": {
"hasRecipe": true,
"maxPodlQty": 530,
"useLocalRecipe": true,
"path-locBase": "E:\\MesData\\",
"path-remBase": "C:\\MesData\\Remote",
"path-00-Arch": "ArchivioRicette\\FIMAT",
"path-01-Temp": "01-Temp\\FIMAT",
"path-02-Sent": "02-Inviate\\FIMAT",
"path-03-Recv": "03-Ricevute\\FIMAT",
"path-04-remReq": "Y:\\",
"path-05-remExe": "Z:\\",
"path-06-remRec": "R:\\",
"path-outReport": "C:\\MesData\\Report",
"path-confSetup": "E:\\MesData\\Setup\\setupConsumi.json",
"replace-<Variant>": "<Variant>{{PODL}}",
"replace-<Info1>": "<Info1>Kg{{Qty}} | {{Note}}"
},
"itemTranslation": {
"40001_0": "Stato non aggiornato per mancanza comunicazione da computer",
"40001_1": "Stato non aggiornato per mancanza comunicazione da PLC",
"40001_2": "Presenza di anomalie od attivita che limitano il funzionamento",
"40001_3": "Macchina impegnata per attivita normale in corso",
"40001_4": "Macchina libera e pronta al funzionamento",
"40003.0": "Posizione di dosaggio impegnata",
"40003.1": "Bidone con ricetta terminata od annullata da rimuovere da posizione di dosaggio",
"40003.2": "Ricetta in preparazione",
"40003.3": "Lavaggio valvole in corso",
"40003.4": "Avvio caricamento nuova ricetta in corso",
"40007_0": "Nessuno",
"40007_1": "Singola ricetta",
"40007_2": "Coda (modo non ancora avviato)",
"40007_3": "Coda (modo avviato)",
"40007_4": "Correzione"
}
}

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