385 Commits

Author SHA1 Message Date
Samuele E. Locatelli 6976ca959e Fix ModBus x RIMOR & co... 2023-03-01 10:04:02 +01:00
Samuele E. Locatelli ba6a9bc9ed Fix lettura modbus x registri estesi 2023-02-28 11:32:56 +01:00
Samuele E. Locatelli 98750aadbf Merge remote-tracking branch 'origin/develop' into FeatureTestRimor 2023-02-28 10:51:11 +01:00
Samuele Locatelli bbe1a1c20e Aggiunto parametro ext register x RIMOR 2023-02-28 10:49:09 +01:00
Samuele E. Locatelli 5770e7e15a Fix conf x test RImor 2023-02-27 18:59:59 +01:00
Samuele Locatelli 3d942836f3 modifica conf RIMOR 2 test 2023-02-27 17:48:15 +01:00
Samuele Locatelli 9fa9807bc5 Merge tag 'AddPodlCode' into develop
Aggiunta codice PODL
2023-02-22 12:44:40 +01:00
Samuele Locatelli ccef55e5e2 Merge branch 'release/AddPodlCode' 2023-02-22 12:44:32 +01:00
Samuele Locatelli a1d757cd94 Aggiunto check cod PODL 2023-02-22 12:44:11 +01:00
Samuele Locatelli ab00dea4bd Merge tag 'FixRunValCimolai' into develop
update x filtro stato RunValue x CIMOLAI
2023-02-22 11:59:34 +01:00
Samuele Locatelli 4cd7214cc6 Merge branch 'release/FixRunValCimolai' 2023-02-22 11:59:23 +01:00
Samuele Locatelli c52963cb21 update cimolai x evitare repliche stato runmode 1 2023-02-22 11:59:00 +01:00
Samuele Locatelli 6383a31b15 Merge tag 'UpdateCimolaiStartWork' into develop
update lavorazione cimolai come bool
2023-02-22 09:26:17 +01:00
Samuele Locatelli 0f7dd9901c Merge branch 'release/UpdateCimolaiStartWork' 2023-02-22 09:26:09 +01:00
Samuele Locatelli 2e3c6f2e12 update cimolai OPC-UA:
- lavorazione da int a bool
2023-02-22 09:25:46 +01:00
Samuele Locatelli 1ea6e5531a Merge tag 'FirstRimoradapter' into develop
Prima release adapter RIMOR
2023-02-17 17:00:10 +01:00
Samuele Locatelli 91e70da050 Merge branch 'release/FirstRimoradapter' 2023-02-17 17:00:02 +01:00
Samuele Locatelli b22bb8e0b8 Update RIMOR adapter + conf 2023-02-17 16:59:33 +01:00
Samuele Locatelli cd9f9a3cf4 Aggiunta preliminare dati x RIMOR 2023-02-16 19:00:47 +01:00
Samuele Locatelli aa1d796293 Inizio conf x RIMOR 2023-02-16 19:00:39 +01:00
Samuele Locatelli 691286e28b Merge branch 'develop' 2023-02-06 10:29:32 +01:00
Samuele Locatelli 3e14ec5392 Fix yaml 2023-02-06 10:29:26 +01:00
Samuele Locatelli 6d950d8593 Merge tag 'UpdateLogCimolaiBaglietto' into develop
Update log in avvio dell'adapter
2023-02-06 10:27:30 +01:00
Samuele Locatelli 987a758155 Merge branch 'release/UpdateLogCimolaiBaglietto' 2023-02-06 10:27:16 +01:00
Samuele Locatelli 3019abd841 Log esteso x gestione cimolai con auto odl --> invio setup 2023-02-06 10:25:18 +01:00
Samuele Locatelli 8dd12ead14 Merge tag 'FixModbusAlarmMaps' into develop
Fix gestione allarmi macchina
2023-01-26 15:21:28 +01:00
Samuele Locatelli 7c079c6e93 Merge branch 'release/FixModbusAlarmMaps' 2023-01-26 15:21:17 +01:00
Samuele Locatelli c93c171271 Fix lettura allarmi x ModBus HAM (Pizzaferri) 2023-01-26 15:20:53 +01:00
Samuele Locatelli 899ba0ec85 Merge tag 'fixLogQueue' into develop
fix coda da List<string> a ConcurrentQueue<string> x evitare problemi
sul log display
2023-01-25 08:52:13 +01:00
Samuele Locatelli eaf212a120 Merge branch 'release/fixLogQueue' 2023-01-25 08:50:13 +01:00
Samuele Locatelli 13ff7ab59f Fix scritture concorrenti messaggi:
- coda messaggi log (display) era List<string>
- trasformato come ConcurrentQueue<string>
2023-01-25 08:49:48 +01:00
Samuele Locatelli 7c80fb36c2 Merge tag 'LogTypoFix' into develop
Log typo fix
2023-01-17 12:20:16 +01:00
Samuele Locatelli 248b6561e9 Merge branch 'release/LogTypoFix' 2023-01-17 12:20:05 +01:00
Samuele Locatelli 23c8789e47 typo 2023-01-17 12:19:42 +01:00
Samuele Locatelli 54a288fe6a Merge tag 'AddLogStartStopSetupLasco' into develop
Aggiunto log verboso x start/stop setup x LASCO
2023-01-17 12:19:09 +01:00
Samuele Locatelli 04ebcea85c Merge branch 'release/AddLogStartStopSetupLasco' 2023-01-17 12:18:58 +01:00
Samuele Locatelli dc0a517579 Aggiunta log x start/stop setup su LASCO 2023-01-17 12:18:30 +01:00
Samuele Locatelli 958a8c7bef Merge tag 'FixSendRebootFlood' into develop
Gestione veto send reboot x 6h ogni volta che invia tramite redis cache
2022-12-30 15:23:49 +01:00
Samuele Locatelli ae85d06069 Merge branch 'release/FixSendRebootFlood' 2022-12-30 15:23:33 +01:00
Samuele Locatelli 0777cd6a52 Fix invio troppo frequente dei sendReboot 2022-12-30 15:23:06 +01:00
Samuele Locatelli b802e180df Merge tag 'UpdateRemoteSendUrl' into develop
Completamento configurazione x cambio URL upload remoto
2022-12-30 10:54:31 +01:00
Samuele Locatelli 5121a825a2 Merge branch 'release/UpdateRemoteSendUrl' 2022-12-30 10:54:06 +01:00
Samuele Locatelli 5bf295fce2 Update URL Send file
- invio a liman.egalware/MP/IO
2022-12-30 10:53:44 +01:00
Samuele Locatelli db6cdc8500 Merge tag 'ModSelFile2Send' into develop
Aggiunta mitigazione invio file conf tramite salvataggio MD5 in cache
2022-12-30 08:56:12 +01:00
Samuele Locatelli 8cb02d197f Merge branch 'release/ModSelFile2Send' 2022-12-30 08:55:57 +01:00
Samuele Locatelli 2ed1d9c7f4 IOB-WIN:
- aggiunta cache MD5 config in redis x mitigare invio file conf
2022-12-30 08:55:43 +01:00
Samuele Locatelli 447fa15443 IOB-WIN-NEXT, MainForm:
- Modifica modalità invio files (NON SOLO ini)
2022-12-29 18:10:35 +01:00
Samuele Locatelli edcfb09a3c Merge tag 'UpdateConfModbusTcpSaimWrite' into develop
Update conf scrittura SAIM
2022-12-27 16:59:02 +01:00
Samuele Locatelli d02d1ca6e4 Merge branch 'release/UpdateConfModbusTcpSaimWrite' 2022-12-27 16:58:49 +01:00
Samuele E. Locatelli d65667d390 update conf SAIM 002 2022-12-27 16:55:44 +01:00
Samuele E. Locatelli a9bbca262e SAIM:
- fix conf SAIM003
- fix conf remote debug saim 001
2022-12-27 16:18:49 +01:00
Samuele E. Locatelli f6695c7754 Correzione scrittura HoldingReg x SAIM 2022-12-27 16:17:57 +01:00
Samuele E. Locatelli 2f57349347 Correzione conf SAIM 01/02/03 2022-12-27 14:49:54 +01:00
Samuele Locatelli c3df26caad Merge tag 'UpdateSimImportFile' into develop
update gestione import file, eliminazione ExcelMan e nuget vari, testing
SIM
2022-12-22 15:39:23 +01:00
Samuele Locatelli 90839b0a7e Merge branch 'release/UpdateSimImportFile' 2022-12-22 15:39:06 +01:00
Samuele Locatelli ee85cc4b94 Cleanup codice 2022-12-22 15:38:40 +01:00
Samuele Locatelli 64255e7405 Eliminata classe gestione excel + nuget vari 2022-12-22 15:37:40 +01:00
Samuele Locatelli f50f277381 OK invio json giacenze!!! 2022-12-22 10:56:46 +01:00
Samuele Locatelli efca6d9a67 EgwCApp COnv:
modifica x caso nome sheet = data (non fisso)
2022-12-22 10:11:34 +01:00
Samuele Locatelli a738cf1df4 Primo test invio json 2022-12-22 09:32:01 +01:00
Samuele Locatelli d2b785593e OK fino a conversione (da testare invio json) 2022-12-22 08:36:54 +01:00
Samuele Locatelli e98c6d1cd1 Primi test conversione con IobGeneric (NON OK) 2022-12-21 19:32:10 +01:00
Samuele Locatelli 1104998906 Merge tag 'AddAutoSnapshotDossier' into develop
Prima release con AppCOnsole e gestione AutoSnapshotDossier
2022-12-21 15:32:43 +01:00
Samuele Locatelli 2cd3821f44 Merge branch 'release/AddAutoSnapshotDossier' 2022-12-21 15:32:26 +01:00
Samuele Locatelli 002d4558d3 Ok procedura gestione dossier x SIMULA 2022-12-21 15:31:34 +01:00
Samuele Locatelli cfc3fcc03d Aggiunta Console App + config base di riferimento 2022-12-21 11:51:32 +01:00
Samuele Locatelli 0a9749a3d6 Aggiunta chiamata gestione automatica dossiers 2022-12-21 11:38:28 +01:00
Samuele Locatelli f3b319afc6 Update conf SIM x gestione automatica creazione Dossiers 2022-12-21 11:38:17 +01:00
Samuele Locatelli 3dae7c7e14 OK step mass conversion + import... 2022-12-20 10:23:15 +01:00
Samuele Locatelli abe6aa24a4 Test debug OK, testing con directory 2022-12-20 10:00:28 +01:00
Samuele Locatelli f0cbb18246 Inizio bozza multioutput (ok file, inizio redis) 2022-12-19 20:11:15 +01:00
Samuele Locatelli 84ac2c365d Correzione classe CApp x excel 2022-12-19 19:50:05 +01:00
Samuele E. Locatelli 50aa9c27c3 Fix catena compile & test 2022-12-17 20:54:42 +01:00
Samuele E. Locatelli 28638544d1 Tentativi automazione (NON ok...) 2022-12-17 18:46:16 +01:00
Samuele E. Locatelli ef8c11de93 Ok doppio passaggio console app 2022-12-17 18:14:36 +01:00
Samuele E. Locatelli 5258088ad4 Fix catena compilazione con recupero exe 2022-12-17 16:14:32 +01:00
Samuele Locatelli a7a60f2839 Update x inserimento componenti excel import 2022-12-17 12:37:06 +01:00
Samuele Locatelli 235eacaad9 fix PIZ04/05 2022-12-17 11:36:57 +01:00
Samuele E. Locatelli 7064047f9a Cambio nome progetto 2022-12-16 20:34:23 +01:00
Samuele E. Locatelli 48fcce3c9b Aggiunta calcolo tempi esecuzione 2022-12-16 20:19:32 +01:00
Samuele E. Locatelli 3a0880e5a4 Merge branch 'develop' of https://gitlab.steamware.net/steamware/Mapo-IOB-WIN into develop 2022-12-16 20:14:07 +01:00
Samuele E. Locatelli 39e3a9f7fa EgwApp - Console:
- Impostato esempio call consol 2 console
- pronto x creare il vero excel importer (+ altre utils)
2022-12-16 20:14:04 +01:00
Samuele E. Locatelli 8a07a80599 modifica x test datasync excel: si pianta x lib compression 2022-12-16 18:05:19 +01:00
Samuele E. Locatelli 34ec183982 minor typo x ModBus read (ok saim 1) 2022-12-16 17:04:26 +01:00
Samuele E. Locatelli 46362b8bfb Merge tag 'FixDisplayLogDp01' into develop
fix modalità display log e trim linee x SIM_DP01
2022-12-16 10:06:53 +01:00
Samuele E. Locatelli 35c36cfe6c Merge branch 'release/FixDisplayLogDp01' 2022-12-16 10:06:32 +01:00
Samuele E. Locatelli 91a0366b3f Fix catena display log che pianta SIM_DP_01 2022-12-16 10:05:43 +01:00
Samuele E. Locatelli 55e3bbbba9 Merge tag 'UpdatePostImasOpcUa' into develop
update x gestione verbosità differente info --> debug
2022-12-15 17:02:43 +01:00
Samuele E. Locatelli 1be69aff97 Merge branch 'release/UpdatePostImasOpcUa' 2022-12-15 17:02:14 +01:00
Samuele E. Locatelli 2c40dfc38d update verbosità opc-ua x variazioni parametri 2022-12-15 17:01:37 +01:00
Samuele E. Locatelli cf19510bae ancora udpate 3026 2022-12-15 17:01:07 +01:00
Samuele E. Locatelli 11166ea024 update conf 3026 Jetco 2022-12-15 17:01:00 +01:00
Samuele E. Locatelli 71f19a8223 Merge tag 'AddInitialImasOpcUa' into develop
Aggiunta OpcUa IMAS
2022-12-15 13:18:08 +01:00
Samuele E. Locatelli 15ae12f813 Merge branch 'release/AddInitialImasOpcUa' 2022-12-15 13:17:46 +01:00
Samuele E. Locatelli 4bbd9ab770 Aggiunta adapter OPC-UA IMAS 2022-12-15 13:16:28 +01:00
Samuele E. Locatelli bba61d7331 Merge tag 'AddInputRegDecodingModbus' into develop
Aggiunta decoding InputRegister x modbus
2022-12-14 17:45:25 +01:00
Samuele E. Locatelli 4a42855062 Merge branch 'release/AddInputRegDecodingModbus' 2022-12-14 17:45:06 +01:00
Samuele E. Locatelli 91666cc680 Fix fattore scala SAIM 2022-12-14 17:44:10 +01:00
Samuele E. Locatelli 560c2a4dfb Aggiunta decodifica stati da InputRegister 2022-12-14 17:43:29 +01:00
Samuele E. Locatelli 2279732ab7 Merge tag 'FixInputRegLUT' into develop
Fix input register ModBus
2022-12-14 14:25:57 +01:00
Samuele E. Locatelli 656d0ed525 Merge branch 'release/FixInputRegLUT' 2022-12-14 14:25:37 +01:00
Samuele E. Locatelli 8231c0d3a0 Fix gestione InputReg x SAIM 2022-12-14 14:24:49 +01:00
Samuele E. Locatelli 05bf628d39 Merge tag 'AddLogVetoManagement' into develop
Aggiunta gestione veto log generalizzata
2022-12-14 13:28:16 +01:00
Samuele E. Locatelli 347c479fb0 Merge branch 'release/AddLogVetoManagement' 2022-12-14 13:28:04 +01:00
Samuele E. Locatelli 28bfd705a7 Update SAIM x conf memBlock 2022-12-14 13:27:05 +01:00
Samuele E. Locatelli 4fd1e39981 fix gestione log verbosi (con veto dictionary) 2022-12-14 13:26:49 +01:00
Samuele E. Locatelli 980c4387a7 Merge tag 'ModbusTcpErroreReadInTryCatch' into develop
Fix try/catch lettura registri modbus
2022-12-14 10:57:15 +01:00
Samuele E. Locatelli 779db5e1d4 Merge branch 'release/ModbusTcpErroreReadInTryCatch' 2022-12-14 10:54:43 +01:00
Samuele E. Locatelli a33d43bd0c inercetto errore lettura modbus 2022-12-14 10:53:33 +01:00
Samuele E. Locatelli 1eebf0f255 Merge branch 'develop' 2022-12-14 10:22:41 +01:00
Samuele E. Locatelli 9e37f01cfd Merge remote-tracking branch 'origin/develop' into develop 2022-12-14 10:16:50 +01:00
Samuele E. Locatelli d78c6a5a3c Merge tag 'FixmodBusTcpInputRegLut' into develop
Fix gestione LUT x input reg con correzione posizione valore acquisito
2022-12-14 10:15:41 +01:00
Samuele E. Locatelli 8c604a7c27 Merge branch 'release/FixmodBusTcpInputRegLut' 2022-12-14 10:15:25 +01:00
Samuele E. Locatelli 640c8275ed Fix ModBusTcp x lettura valori inputRegisters 2022-12-14 10:12:34 +01:00
Samuele E. Locatelli f316e26c23 Test (NON provato) x import excel, non possibile fix compression e catena relativa in portatile 2022-12-13 14:56:24 +01:00
Samuele E. Locatelli 37399b6ba7 Merge tag 'FixModbusTcpInt01' into develop
Fix gestione lettura 1 solo int x modbus TCP (SAIM)
2022-12-13 13:48:36 +01:00
Samuele E. Locatelli 5e444aa9e6 Merge branch 'release/FixModbusTcpInt01' 2022-12-13 13:48:16 +01:00
Samuele E. Locatelli b9e146ec9d Fix modbus x lettura campi 1 int (SAIM) 2022-12-13 13:47:01 +01:00
Samuele E. Locatelli 097a0bc80a fix saim01: fattore e min/max mancanti 2022-12-13 13:05:17 +01:00
Samuele E. Locatelli 1ee69596d1 Merge tag 'UpdateSimulaDP' into develop
Fix errori simula DP x FTP e aree memoria non configurate (aggiunta conf)
2022-12-13 09:52:05 +01:00
Samuele E. Locatelli cff43b76c4 Merge branch 'release/UpdateSimulaDP' 2022-12-13 09:51:35 +01:00
Samuele E. Locatelli 596b079055 Ancora fix errori simula DP 2022-12-13 09:51:07 +01:00
Samuele E. Locatelli 7667e00333 Merge tag 'UpdateSimulaLogVerb' into develop
Update gestione try/catch SyncDataDb
2022-12-13 09:21:36 +01:00
Samuele E. Locatelli 0d8776e0b4 Merge branch 'release/UpdateSimulaLogVerb' 2022-12-13 09:10:51 +01:00
Samuele E. Locatelli 5ed337b2f5 Merge remote-tracking branch 'gitlab.steamware/develop' into release/UpdateSimulaLogVerb 2022-12-13 09:10:25 +01:00
Samuele E. Locatelli 50a577ae01 try/catch x simula in processing SyncDataDb 2022-12-13 09:09:38 +01:00
Samuele Locatelli 6affc054a4 Merge tag 'UpdateHamPizzaferriNewModbus' into develop
Fix nuova conf x ModBus HAM di Pizzaferri
2022-12-10 15:43:18 +01:00
Samuele Locatelli 08261f80f7 Merge branch 'release/UpdateHamPizzaferriNewModbus' 2022-12-10 15:43:09 +01:00
Samuele Locatelli fa470f88e1 fix gestione ulteriore delta x pizzaferri 2022-12-10 15:42:24 +01:00
Samuele E. Locatelli a7dca4dfe7 Update conf pizzaferri 8da testare) 2022-12-10 12:58:43 +01:00
Samuele E. Locatelli 8df54c6212 Merge tag 'AddMaxErrModbus' into develop
Update modbus x indicare max errori prima della disconnessione
2022-12-10 11:22:28 +01:00
Samuele E. Locatelli 33481fa554 Merge branch 'release/AddMaxErrModbus' 2022-12-10 11:22:06 +01:00
Samuele E. Locatelli ca5f222d56 Fix errori lettura pizzaferri 2022-12-10 11:19:58 +01:00
Samuele E. Locatelli 9788302619 Fix disconnect num max errori x restart 2022-12-10 11:17:45 +01:00
Samuele Locatelli 2ed77d7fc2 Merge tag 'TestBypassExeMode04' into develop
bypass exe mode parametrico
2022-12-09 10:24:56 +01:00
Samuele Locatelli 3525f81d3b Merge branch 'release/TestBypassExeMode04' 2022-12-09 10:24:47 +01:00
Samuele Locatelli d0539e494d Aggiunta bypass exemode da conf + pulizia trace cimolai 2022-12-09 10:24:33 +01:00
Samuele Locatelli ce45a9e99a Merge tag 'TestBypassExeMode03' into develop
Aggiunto test ODL
2022-12-09 09:56:37 +01:00
Samuele Locatelli 7d43808b11 Merge branch 'release/TestBypassExeMode03' 2022-12-09 09:56:31 +01:00
Samuele Locatelli 91f785fe43 Ancora udpate x test ODL 2022-12-09 09:56:10 +01:00
Samuele Locatelli 9e4221a376 Merge tag 'TestBypassExeMode02' into develop
test con altro log
2022-12-09 09:48:41 +01:00
Samuele Locatelli d92edb0d18 Merge branch 'release/TestBypassExeMode02' 2022-12-09 09:48:35 +01:00
Samuele Locatelli 29e72e3be2 ancora test debug 2022-12-09 09:48:20 +01:00
Samuele Locatelli 7284803f8b Merge tag 'TestBypassExeMode' into develop
Aggiunto bypas exe mode cimolai x testing gest stati e suggerimento
chiusura
2022-12-09 09:41:03 +01:00
Samuele Locatelli 0ab2655947 Merge branch 'release/TestBypassExeMode' 2022-12-09 09:40:49 +01:00
Samuele Locatelli dee5cbefc8 Cimolai
- altro fix logging
- fix exe mode
- bypass x test stati
2022-12-09 09:40:30 +01:00
Samuele Locatelli 46415e0869 Merge tag 'UpdateLogCimolai' into develop
Aggiunta log x stati travel CIMOLAI
2022-12-09 09:20:26 +01:00
Samuele Locatelli 5e06f06a85 Merge branch 'release/UpdateLogCimolai' 2022-12-09 09:20:13 +01:00
Samuele Locatelli 746873624a update x log CIMOLAI 2022-12-09 09:19:42 +01:00
Samuele E. Locatelli 4a9fee6ce0 Merge tag 'AddCimolaiStatusMan' into develop
Aggiunta gestione CIMOLAI x status TravelLift, decodifica stati x richiesta chiusura ODL all'operatore
2022-12-08 18:50:55 +01:00
Samuele E. Locatelli 60c4c75723 Merge branch 'release/AddCimolaiStatusMan' 2022-12-08 18:50:25 +01:00
Samuele E. Locatelli b1120b574d Aumentato periodo attesa CIMOLAI 2022-12-08 18:49:42 +01:00
Samuele Locatelli eed4e4fff3 - reog codice x IobGeneric 2022-12-08 17:32:01 +01:00
Samuele Locatelli c74fbb9f57 BAGLIETTO:
- miglioramento condizioni checkStato cx travel
- reog codice x IOB CIMOLAI
2022-12-08 17:26:14 +01:00
Samuele Locatelli fef9c95c0c BAGLIETTO:
- preparate le (molte) modifiche x auto chiusura ODL
2022-12-08 17:16:46 +01:00
Samuele E. Locatelli 379157c767 Merge branch 'develop' of https://gitlab.steamware.net/steamware/Mapo-IOB-WIN into develop 2022-12-06 21:49:00 +01:00
Samuele E. Locatelli 674605ecf4 refresh conf memoria SAIM (in prod) 2022-12-06 21:48:31 +01:00
Samuele E. Locatelli f3d8f4f36f update conf zetapack 2022-12-06 21:47:13 +01:00
Samuele E. Locatelli 4cec875964 update conf saim & centerfrigo 2022-12-06 21:47:08 +01:00
Samuele E. Locatelli 3f58a52741 Merge tag 'TestSaimMemory' into develop
Fix versione check indice memoria SAIM
2022-12-02 20:09:23 +01:00
Samuele E. Locatelli db94dc3f31 Merge branch 'release/TestSaimMemory' 2022-12-02 20:09:06 +01:00
Samuele E. Locatelli dfde1cefd5 fix decode tipo memorie 2022-12-02 19:52:58 +01:00
Samuele E. Locatelli 45656fec10 ModBus TCO:
Correzione decodifica ma qualcosa ancora non va bene...
2022-12-02 19:52:42 +01:00
Samuele E. Locatelli 578620d1cd Update conf SAIM da testare 2022-12-02 19:39:27 +01:00
Samuele Locatelli 9d43293b35 Inizio update SAIM 2022-12-01 18:27:18 +01:00
Samuele Locatelli 5a6056d898 Merge tag 'AddImportFileAutoOdlDaily' into develop
Update gestione import file + autoOdlDaily
2022-12-01 15:22:44 +01:00
Samuele Locatelli 364ac36baa Merge branch 'release/AddImportFileAutoOdlDaily' 2022-12-01 15:20:56 +01:00
Samuele Locatelli 38abdae335 Aggiunta funzionalità importFile x SAIM/Centerfrigo 2022-12-01 15:20:11 +01:00
Samuele Locatelli f36fff0568 Update conf SAIM/Centerfrigo x Giacovelli 2022-12-01 15:19:41 +01:00
Samuele Locatelli 4f37dae021 OK bozza decodifica x TURI 2022-11-30 12:10:23 +01:00
Samuele Locatelli 2ed8cfe371 Fix compilazione con System.IO.Compession!!! 2022-11-30 10:21:59 +01:00
Samuele Locatelli 5c6a4416a9 Update nuget x FTP 2022-11-30 08:00:24 +01:00
Samuele Locatelli 8a2fa432d9 Update proxy ICOEL 2022-11-30 08:00:03 +01:00
Samuele E. Locatelli 36c3a9cb0d Completata lettura in blocchi memoria 2022-11-21 22:32:29 +01:00
Samuele E. Locatelli 67db15a5b3 update conf SAIM x testing 2022-11-21 21:40:59 +01:00
Samuele E. Locatelli bb652ad220 Update modalità lettura test 2022-11-21 21:40:47 +01:00
Samuele E. Locatelli f1786511ee MemBlock:Pulizia aree test LETTURA residuali (non usate) 2022-11-21 21:40:29 +01:00
Samuele E. Locatelli dd04ad966a test ok x SAIM 3!!! 2022-11-21 20:14:43 +01:00
Samuele E. Locatelli f1f8792d3a fix conf lettura test (DA PROVARE!!!) 2022-11-21 20:13:15 +01:00
Samuele E. Locatelli ed63f99045 fir readblock conf 2022-11-21 20:10:18 +01:00
Samuele E. Locatelli 45404f078e Update conf SAIM 2022-11-21 20:08:42 +01:00
Samuele Locatelli 2bc5177a40 SAIM
- Aggiunta gestione EnableTest
- step testing lettura memBlock all'avvio
2022-11-21 19:59:35 +01:00
Samuele E. Locatelli a552e77aa9 Merge branch 'master' into develop 2022-11-21 17:15:00 +01:00
Samuele E. Locatelli 00b9e0d8b4 Merge branch 'develop' 2022-11-21 17:12:44 +01:00
Samuele E. Locatelli 8f147516d3 update vers test 2022-11-21 17:07:25 +01:00
Samuele E. Locatelli 6a04ddb7c4 update conf json x SAIM 2022-11-21 17:05:46 +01:00
Samuele Locatelli e636ca721f Merge tag 'SaimUpdate' into develop
Update IOB x SAIM
2022-11-21 16:16:18 +01:00
Samuele Locatelli d74e017829 Merge branch 'release/SaimUpdate' 2022-11-21 16:16:12 +01:00
Samuele Locatelli 5966493251 aggiunta in proj del componente Saim 2022-11-21 16:15:11 +01:00
Samuele Locatelli ce2d91615f update conf 2 SAIM 2022-11-21 16:11:18 +01:00
Samuele Locatelli f8a92debb4 Merge tag 'FirstSaim' into develop
Release iniziale SAIM
2022-11-21 15:19:50 +01:00
Samuele Locatelli 452471eafe Merge branch 'release/FirstSaim' 2022-11-21 15:19:35 +01:00
Samuele Locatelli 22a670b881 BOzza SAIM da provare 2022-11-21 15:19:04 +01:00
Samuele Locatelli 7c91ffdaf4 Update conf ULMA con veto 2022-11-18 19:28:10 +01:00
Samuele Locatelli de84685b9b Update conf ULMA 2022-11-18 19:25:55 +01:00
Samuele Locatelli 9fa0baf1a1 Merge tag 'PrimaReleaseUlma' into develop
Prima release ULMA da testare
2022-11-18 18:31:34 +01:00
Samuele Locatelli 1f1a8b127d Merge branch 'release/PrimaReleaseUlma' 2022-11-18 18:31:23 +01:00
Samuele E. Locatelli f760186916 Completato conf ULMA iniziale 2022-11-18 18:30:28 +01:00
Samuele E. Locatelli 57ffe97878 Fix conf x ULMA 2022-11-18 11:54:22 +01:00
Samuele Locatelli 8881c6fc04 Prima bozza ULMA OPC-UA 2022-11-17 19:24:41 +01:00
Samuele Locatelli c65799b93d Merge tag 'UpdateStartLogTrace' into develop
Ancora pulizia info / trace all'avvio
2022-11-15 14:23:00 +01:00
Samuele Locatelli a69df23835 Merge branch 'release/UpdateStartLogTrace' 2022-11-15 14:22:49 +01:00
Samuele Locatelli ddc66cc5a0 Ancora fix logging 2022-11-15 13:16:03 +01:00
Samuele Locatelli 543126f467 Ancora riduzione verbosità logging 2022-11-15 13:16:01 +01:00
Samuele Locatelli 103e5bc46f Merge tag 'UpdateBagliettoCimolaiStartup' into develop
Fix gestione logfile
2022-11-15 12:35:21 +01:00
Samuele Locatelli 60c8b0384a Merge branch 'release/UpdateBagliettoCimolaiStartup' 2022-11-15 12:35:15 +01:00
Samuele Locatelli 66bc72f6ce refresh finali 2022-11-15 12:34:55 +01:00
Samuele Locatelli 6192a47ce6 Fix vari OpcUA e Cimolai 2022-11-15 12:34:51 +01:00
Samuele Locatelli 7856f90405 Fix verbosità avvio IOB 2022-11-15 12:34:41 +01:00
Samuele Locatelli 864eee46ee Merge tag 'UpdateBagliettoWork' into develop
update gestione condizione work
2022-11-15 11:32:59 +01:00
Samuele Locatelli 737979b264 Merge branch 'release/UpdateBagliettoWork' 2022-11-15 11:32:50 +01:00
Samuele Locatelli 7845dedfef Update conf baglietto + traduzione lavora fixed 2022-11-15 11:32:26 +01:00
Samuele Locatelli 3af8933678 update desciriozn assorbimenti motore zetapack 2022-11-14 15:27:21 +01:00
Samuele Locatelli ca26ba39d7 update conf decodifica motori 2022-11-14 15:22:09 +01:00
Samuele Locatelli e7fe61c394 Merge tag 'FixMultiIntCondition' into develop
Gestione multi condizione x INT val
2022-11-14 11:48:43 +01:00
Samuele Locatelli ef25994615 Merge branch 'release/FixMultiIntCondition' 2022-11-14 11:48:27 +01:00
Samuele Locatelli 7892366242 Fix conf zetapack 2022-11-14 11:48:07 +01:00
Samuele E. Locatelli f4e78055d4 Fix conf stato work 2022-11-14 11:46:39 +01:00
Samuele Locatelli 02a021cc0f Update x test multivalore INT 2022-11-14 11:28:07 +01:00
Samuele Locatelli 3e322c2dc9 update copnf fattore scala x zetapack 2022-11-12 12:15:49 +01:00
Samuele Locatelli a2e866540e Merge tag 'UpdateZetapackModbus' into develop
Versione zetapack (con conf) pronta da provare 4 PLC
2022-11-12 11:10:53 +01:00
Samuele Locatelli 8cae143f82 Merge branch 'release/UpdateZetapackModbus' 2022-11-12 11:10:38 +01:00
Samuele E. Locatelli 2f70720f4f fix include/copy files 2022-11-12 11:08:18 +01:00
Samuele E. Locatelli f5f973f410 ZetaPack:
- conf x primi 2 modbus linee 1 e 2 (calibratrice)
- conf banchi linea 1 e 2
2022-11-12 10:59:18 +01:00
Samuele E. Locatelli 015d0abd1c Fixed conf x Zetapack, primo PLC ModBUs 2022-11-11 19:30:10 +01:00
Samuele E. Locatelli cd28df8a1d Zetapack:
- aggiunto metodo test INT
- conf aggiornata
2022-11-11 19:13:44 +01:00
Samuele E. Locatelli df60390f62 Merge remote-tracking branch 'origin/develop' into develop 2022-11-11 11:24:48 +01:00
Samuele Locatelli c094e97920 UPdate x testing Zetapack PLC 2022-11-11 11:01:15 +01:00
Samuele Locatelli 3bd8ec6d04 Merge tag 'TypoReorgCode' into develop
Update x reorg codice (CodeMaid)
2022-11-10 17:24:39 +01:00
Samuele Locatelli 59764bbac3 Merge branch 'release/TypoReorgCode' 2022-11-10 17:24:26 +01:00
Samuele Locatelli cbfeb7ec38 typo refresh 2022-11-10 17:24:04 +01:00
Samuele Locatelli a92527e02d reorg codice 2022-11-10 17:21:18 +01:00
Samuele Locatelli 0a60cac585 Merge tag 'AddPArametricBitConditionsParams' into develop
Aggiunta gestione aprametrica bitconditions
2022-11-10 17:17:24 +01:00
Samuele Locatelli 7fbfa144a9 Merge branch 'release/AddPArametricBitConditionsParams' 2022-11-10 17:17:15 +01:00
Samuele Locatelli 95c4aca305 ModbusTcp:
- aggiunta gestione decodifica bitConditions
 - test x Imax Jetco
2022-11-10 17:16:35 +01:00
Samuele Locatelli f685d99442 Merge tag 'UpdateImaxAeromacDecoding' into develop
Update deconding area Jetco ImaxAeromec
2022-11-10 15:48:44 +01:00
Samuele Locatelli e1c8b84ff2 Merge branch 'release/UpdateImaxAeromacDecoding' 2022-11-10 15:48:02 +01:00
Samuele Locatelli 7066f25073 Update IOB x IMAX filtro Jetco 2022-11-10 15:46:56 +01:00
Samuele Locatelli 546b6715fb refresh conf VL22 da DB1001 2022-11-10 15:13:09 +01:00
Samuele Locatelli c333dab24f Merge tag 'UpdateLastResetAndCount' into develop
Update reset & count Lasco
2022-11-10 10:16:54 +01:00
Samuele Locatelli 137456b70f Merge branch 'release/UpdateLastResetAndCount' 2022-11-10 10:16:42 +01:00
Samuele Locatelli 0673e2aeb9 Update Lasco: gestione insert PzComm + reset contapezzi 2022-11-10 10:16:17 +01:00
Samuele Locatelli 8fb9dce7d0 Merge tag 'UpdateCimolaiStartPODL' into develop
Update per gestione avvio PODL CIMOLAI da macchina
2022-11-09 17:37:42 +01:00
Samuele Locatelli 26745bc696 Merge branch 'release/UpdateCimolaiStartPODL' 2022-11-09 17:37:29 +01:00
Samuele Locatelli c7ee3c7142 Correzione URL x MP-IO force start PODL 2022-11-09 17:37:03 +01:00
Samuele Locatelli 0345d996d6 Cleanup codice CIMOLAI 2022-11-09 17:12:53 +01:00
Samuele Locatelli 8af7eeccc6 Baglietto OPC-UA Cimolai:
- Modifiche per gesitone avvio/chiusura ODL da stato InCorso
2022-11-09 16:56:23 +01:00
Samuele Locatelli 451dcf5fff Merge tag 'AddImaxIob' into develop
Aggiunta preliminare adapter IMAX x filtri modbus in Jetco
2022-11-08 09:31:35 +01:00
Samuele Locatelli e3b3ac9221 Merge branch 'release/AddImaxIob' 2022-11-08 09:31:17 +01:00
Samuele Locatelli 11f5a0644a Merge branch 'develop' of https://gitlab.steamware.net/steamware/Mapo-IOB-WIN into develop 2022-11-08 09:30:35 +01:00
Samuele Locatelli da53277a58 Modifiche progetto demo VB x impiego con IOB-MAN 2022-11-08 09:30:16 +01:00
Samuele Locatelli 1287bdd5c7 Aggiunta nuova classe per gestione ImaxAeromec 2022-11-08 09:30:01 +01:00
Samuele Locatelli ab196be84b Aggiunta conf (da testare) x Jetco aspiratori IMAX 2022-11-08 09:29:33 +01:00
Samuele E. Locatelli 1a02397b31 Merge tag 'UpdateLognadLascoProgName' into develop
Update gestione lasco e ProgName
2022-10-31 10:51:23 +01:00
Samuele E. Locatelli 6d0b120860 Merge branch 'release/UpdateLognadLascoProgName' 2022-10-31 10:51:02 +01:00
Samuele E. Locatelli 2ee8526b2d Update x Lasco:
- log esteso
- gestione anche di setProg come task gestito
2022-10-31 10:50:21 +01:00
Samuele E. Locatelli 1f61ae33ce Riorganizzaizone codice 2022-10-31 10:49:47 +01:00
Samuele Locatelli 1f8cfc6fe7 IobManComm:
- modifica nome progetto
- nuget pack (manuale)
2022-10-27 17:10:12 +02:00
Samuele Locatelli 12b250089d Merge tag 'AddTestClientMan' into develop
Update x demo client app + dll x gestione da IOB-MAN di programmi
2022-10-26 16:48:00 +02:00
Samuele Locatelli 421f382c65 Merge branch 'release/AddTestClientMan' 2022-10-26 16:47:40 +02:00
Samuele Locatelli 66865195d5 cleanup + output su LIB 2022-10-26 16:46:03 +02:00
Samuele Locatelli 2e29127d19 Prima release TestClientMan 2022-10-26 15:04:55 +02:00
Samuele Locatelli 1f498b01d1 Merge tag 'UpdateLogCreazioneCSV' into develop
Aggiunta log info in fase creazione CSV
2022-10-21 15:37:15 +02:00
Samuele Locatelli e93aec990a Merge branch 'release/UpdateLogCreazioneCSV' 2022-10-21 15:37:00 +02:00
Samuele Locatelli 601f48ab8a update log fase creazione CSV 2022-10-21 15:36:38 +02:00
Samuele Locatelli 519b608870 Merge tag 'UpdateExportInt' into develop
update gestione export INT x CSV
2022-10-20 11:45:44 +02:00
Samuele Locatelli 557499592f Merge branch 'release/UpdateExportInt' 2022-10-20 11:45:36 +02:00
Samuele Locatelli 1248ba0cbf Test modifica x filtro RunModeVal 2022-10-20 11:45:13 +02:00
Samuele Locatelli b64df4682f Fix keyRunMode x OPC UA Cimolai 2022-10-20 11:42:03 +02:00
Samuele Locatelli b47882d0fc Merge tag 'UpdateBagliettoHeader' into develop
update x header e problema converisone stringhe da float con , --> .
2022-10-20 10:12:07 +02:00
Samuele Locatelli e741eaa88a Merge branch 'release/UpdateBagliettoHeader' 2022-10-20 10:11:50 +02:00
Samuele Locatelli d042c077bb Baglietto:
- update x header opzionale
- update valori string/decimal
2022-10-20 10:11:28 +02:00
Samuele Locatelli 9656a803aa Merge tag 'FixDownloadLocal' into develop
Fix download dir
2022-10-19 15:59:57 +02:00
Samuele Locatelli 412de6b7ed Merge branch 'release/FixDownloadLocal' 2022-10-19 15:59:13 +02:00
Samuele Locatelli 02cbc242d9 Fix local download path 2022-10-19 15:58:56 +02:00
Samuele Locatelli 98b9dd4397 Merge tag 'FixAppDir' into develop
Fix directory avvio (IOB-WIN e non IOB-MAN)
2022-10-19 15:45:56 +02:00
Samuele Locatelli cd4a8aef8f Merge branch 'release/FixAppDir' 2022-10-19 15:45:45 +02:00
Samuele Locatelli 9c1d3dabcf Fix dir eseguibile 2022-10-19 15:45:29 +02:00
Samuele Locatelli 29e082c265 Merge tag 'TestDir' into develop
Test directory
2022-10-19 15:37:39 +02:00
Samuele Locatelli a991542ff3 Merge branch 'release/TestDir' 2022-10-19 15:37:31 +02:00
Samuele Locatelli 5487eff9a0 Update test dir path 2022-10-19 15:37:17 +02:00
Samuele Locatelli b42f855ffa Merge tag 'UpdateFtpRemote' into develop
Update gestione FTP remote
2022-10-19 15:25:24 +02:00
Samuele Locatelli d830f65aa6 Merge branch 'release/UpdateFtpRemote' 2022-10-19 15:25:15 +02:00
Samuele Locatelli 29b640710a Update gestione FTP
- check cambaiti x test VSFTP
- fix gestione home dir
- fix download e spostamento locale
2022-10-19 15:24:55 +02:00
Samuele Locatelli 52eae095bb Merge tag 'LogMoveDir' into develop
Aggiunto lgo operazione move dir
2022-10-19 11:58:57 +02:00
Samuele Locatelli 29e4de3afa Merge branch 'release/LogMoveDir' 2022-10-19 11:58:44 +02:00
Samuele Locatelli 5460cf1f20 Update move path fase 2022-10-19 11:58:18 +02:00
Samuele Locatelli 915c2f4ff3 Merge tag 'UpdateSimFtp' into develop
Update sim ftp x parametri e gest folder locale
2022-10-19 11:46:59 +02:00
Samuele Locatelli 01311a846a Merge branch 'release/UpdateSimFtp' 2022-10-19 11:46:47 +02:00
Samuele Locatelli aa77100740 Update conf x gestione local/rem dir ogni SIM 2022-10-19 11:46:28 +02:00
Samuele Locatelli 248dc49254 Minor refresh 2022-10-19 11:00:57 +02:00
Samuele Locatelli 64284dd8dd Merge tag 'FixValoriEdit' into develop
Fix valori edit x CIMOLAI
2022-10-18 20:43:44 +02:00
Samuele Locatelli febdc131eb Merge branch 'release/FixValoriEdit' 2022-10-18 20:43:25 +02:00
Samuele Locatelli a8068f3841 Fix decodifica valori editati x parametri CIMOLAI 2022-10-18 20:43:07 +02:00
Samuele Locatelli 5990bbc385 Merge tag 'UpdateNugetPackDeps' into develop
Update deps nuget x EgwProxy
2022-10-18 15:54:57 +02:00
Samuele Locatelli ef1dc655d4 Merge branch 'release/UpdateNugetPackDeps' 2022-10-18 15:54:32 +02:00
Samuele Locatelli 568e65946a Update NugetPack EgwProxy
- ftp
- icoel
2022-10-18 15:54:07 +02:00
Samuele Locatelli de9b6fa3fb Update nuget Icoel con EntityFramework 6.4.4 2022-10-18 15:47:44 +02:00
Samuele Locatelli 89c964c3cd COmpleto update nuspec x Icoel proxy 2022-10-18 15:41:12 +02:00
Samuele Locatelli a3acb09a03 Ancora update nuget deps Icoel 2022-10-18 15:36:37 +02:00
Samuele Locatelli e0cb419f82 Update nuspec x Icoel package... inizio 2022-10-18 15:33:42 +02:00
Samuele Locatelli 414d5df6ee Update nuget/nuspec 2022-10-18 15:23:15 +02:00
Samuele Locatelli 962027e436 Update conf dipendenze nuget 2022-10-18 15:15:51 +02:00
Samuele Locatelli af2cbd6beb update nuget dep x FTP proxy 2022-10-18 15:13:21 +02:00
Samuele Locatelli ffc6e8be5e Merge tag 'UpdateWpsDrivers' into develop
Update dirvers x CHROME/FIREFOX/EDGE
2022-10-18 13:44:56 +02:00
Samuele Locatelli 7566a5c369 Merge branch 'release/UpdateWpsDrivers' 2022-10-18 13:44:45 +02:00
Samuele Locatelli cdad086744 Aggiunto driver EDGE + udpate selenium drivers 2022-10-18 13:44:24 +02:00
Samuele Locatelli 5b45e7ddfc Typo fix 2022-10-18 13:12:17 +02:00
Samuele Locatelli cb29265547 Update gestione FTP x remote dir 2022-10-18 12:49:07 +02:00
Samuele Locatelli 7aee0d92d9 Merge branch 'release/FixCimolaiVetoFLV' 2022-10-14 15:50:34 +02:00
Samuele E. Locatelli eadc2c6eb5 Merge remote-tracking branch 'origin/develop' into develop 2022-10-14 15:40:46 +02:00
Samuele Locatelli 93a8bc2315 Aggiunto filtro in procRunMode 2022-10-14 15:40:08 +02:00
Samuele Locatelli ad76b97930 Merge tag 'AddVetoFluxLogValueOpcUa' into develop
Update CIMOLAI/Baglietto x filtro OPC-UA x key/val singolo valore OPC-UA
2022-10-14 15:08:52 +02:00
Samuele Locatelli c8aa06098d Merge branch 'release/AddVetoFluxLogValueOpcUa' 2022-10-14 15:08:33 +02:00
Samuele Locatelli c812e82bf4 Update conf x escludere singoli key/val da invio 2022-10-14 15:08:00 +02:00
Samuele Locatelli 57b068bf02 Merge tag 'FIxCimolaiLavora45' into develop
Esclusi comandi ACT 4 e 5 di sterzatura
2022-10-10 17:15:46 +02:00
Samuele Locatelli 3a82500232 Merge branch 'release/FIxCimolaiLavora45' 2022-10-10 17:15:35 +02:00
Samuele Locatelli dd090d5adb Escluso attività 4-5 x stato lavora 2022-10-10 17:15:12 +02:00
Samuele Locatelli 8eadfce339 Merge tag 'UpdateCimolayActivity' into develop
Aggiornamento x cimolay gestione attività corrente
2022-10-10 16:10:44 +02:00
Samuele Locatelli ee286d0049 Merge branch 'release/UpdateCimolayActivity' 2022-10-10 16:10:33 +02:00
Samuele Locatelli b57104507f Update CIMOLAI da testare 2022-10-10 16:09:42 +02:00
Samuele Locatelli 32656645f7 update OPC cimolai 2022-10-10 12:40:07 +02:00
Samuele Locatelli 679388ef20 update OPC Cimolai: richiesta snapshot (da testare) 2022-10-10 12:40:01 +02:00
Samuele Locatelli fc806af86e refresh OPC UA e modifiche varie baglietto 2022-10-08 17:48:08 +02:00
Samuele Locatelli 95dbe07693 Update metodi get in SIM e CIMOLAI
- da ri-testare in sim
- da testare in prod
- DOVREBBE aver tutto x FTP
2022-10-07 20:02:44 +02:00
Samuele Locatelli 79b37db58f update test x SIMUL 01 2022-10-07 19:55:46 +02:00
Samuele Locatelli c7f640af1e Metodi get da IO:
- scarica e deserializza
- da rivedere il distinct lista articoli...
2022-10-06 19:23:23 +02:00
Samuele Locatelli 35637bb693 Update conf baglietto x FTP 2022-10-06 12:26:49 +02:00
Samuele Locatelli bf0ee03589 Test FTP x SIMUL_09 2022-10-06 12:26:39 +02:00
Samuele Locatelli 1a563e3865 Area CONF:
- review file da includere/escludere da setup CONF base
2022-10-06 12:25:53 +02:00
Samuele Locatelli bf2c780049 Completato setup/test x invio FTP 2022-10-06 12:19:47 +02:00
Samuele Locatelli 0778d44235 PRIMO export CSV ok... 2022-10-05 20:05:16 +02:00
Samuele Locatelli 5861298b91 Bozza test export csv
- esporta i file
- NON rispetta description
- no rispetta ordine
2022-10-05 18:26:40 +02:00
Samuele Locatelli e47ffe7b4e Merge tag 'FixMtcNoTask2exe' into develop
Fix gesitone tast2exe "vuota" per MTConnect
2022-10-05 09:34:01 +02:00
Samuele Locatelli fe39b23e74 Merge branch 'release/FixMtcNoTask2exe' 2022-10-05 09:33:48 +02:00
Samuele Locatelli 20a11f61e7 Update gestione Task2Exe x MTC:
- ad esempio biglia 438 jetco NON esegue task setup (MTC è readOnly)
2022-10-05 09:33:25 +02:00
Samuele Locatelli a97546920e Merge branch 'develop' 2022-10-04 18:47:16 +02:00
Samuele Locatelli bdeb60507c Merge branch 'SDK/Ftp' into develop 2022-10-04 18:47:03 +02:00
Samuele Locatelli d9711f5dd9 Merge tag 'AddSdkFtp' into develop
Aggiunta conf x nuovo SDK Ftp, sistemata parte NuGet e parte DocFx
2022-10-04 18:46:36 +02:00
Samuele Locatelli bfeda7ed6a Merge branch 'release/AddSdkFtp' 2022-10-04 18:46:03 +02:00
Samuele Locatelli 7a3e03c053 Fix conf x docfx 2022-10-04 18:44:36 +02:00
Samuele Locatelli b2e5f82de5 Merge branch 'develop' into SDK/Ftp 2022-10-04 18:41:18 +02:00
Samuele Locatelli e4db9763c4 Update x FTP
- conf x docFx
- conf x nuget send
2022-10-04 18:40:01 +02:00
Samuele Locatelli 21770cfa66 Merge branch 'SDK/Ftp' into develop 2022-10-04 18:30:49 +02:00
Samuele Locatelli d233c51364 Update progetto netFramework 4.6.2 x FTP 2022-10-04 18:27:59 +02:00
Samuele Locatelli be51449c62 Update YAML x nuovo SDK Ftp 2022-10-04 16:57:56 +02:00
Samuele Locatelli e9f5244b81 Fix metodo controllo upload file 2022-10-04 16:52:44 +02:00
Samuele Locatelli be6e838a36 Completata implementaizone test FTP
- errore post upl,oad file
- ok altri metodi
2022-10-04 16:49:42 +02:00
Samuele Locatelli 9c2fb93bad Ancor aupdate test FTP 2022-10-04 12:22:03 +02:00
Samuele Locatelli 5d8ac192ac OK primo test ftp
- crea directory
2022-10-04 11:05:34 +02:00
Samuele Locatelli fa7eb5ad13 bozza preliminare client FTP (da testare) 2022-10-03 19:23:50 +02:00
Samuele Locatelli f780f99705 minor cleanup 2022-10-03 11:20:23 +02:00
Samuele Locatelli ab2323bf3f Merge tag 'UpdateLascoString' into develop
Update stringhe siemens x LASCO
2022-09-30 16:08:14 +02:00
Samuele Locatelli 0829378d59 Merge branch 'release/UpdateLascoString' 2022-09-30 16:08:06 +02:00
Samuele Locatelli be6f944646 Fix calcolo lungh totale x stringhge siemens (errore LASCO) 2022-09-30 16:07:46 +02:00
Samuele Locatelli 36e6038de4 Merge tag 'UpdateSimec' into develop
Update gesitone salvataggio num pz richeisti x SIMEC
2022-09-30 13:05:42 +02:00
Samuele Locatelli e11b88ce62 Merge branch 'release/UpdateSimec' 2022-09-30 13:05:31 +02:00
Samuele Locatelli 5296b91f03 Update SIMEC x scrittura num pezzi 2022-09-30 13:05:11 +02:00
Samuele Locatelli e01fdc7d94 Merge tag 'UpdateLastWithMemMapR' into develop
Update LASCO x gestioen conf da json memorie/traduzioni
2022-09-29 16:09:30 +02:00
Samuele Locatelli c592f485ec Merge branch 'release/UpdateLastWithMemMapR' 2022-09-29 16:09:19 +02:00
Samuele Locatelli 36cdf993b8 Update LASCO x Valvital 2022-09-29 16:08:51 +02:00
Samuele Locatelli d474a5f75c Update sim ODL x 24h (1440) 2022-09-29 16:08:37 +02:00
Samuele Locatelli 0ce2852e9a Merge tag 'TestFixRestartTooFreq' into develop
Tentativo riduzione log in case di ri-connesisone notturna
2022-09-29 12:05:35 +02:00
Samuele Locatelli 45cecaa3cb Merge branch 'release/TestFixRestartTooFreq' 2022-09-29 12:05:10 +02:00
Samuele Locatelli 1cc9973a2f Gestione log con veto
TryFix condizioni reboot troppo rapido
2022-09-29 12:04:22 +02:00
Samuele Locatelli e201b3666d Merge tag 'FixFLuxLogVerbose' into develop
Update verbosità fluxLog (veto su 2 livelli)
2022-09-26 18:30:25 +02:00
Samuele Locatelli 067bc6ef47 Merge branch 'release/FixFLuxLogVerbose' 2022-09-26 18:30:13 +02:00
Samuele Locatelli 6b40ebfe9f FluxLog:
- check invio start IOB da AdapterForm/app.config
- aggiunto invio WDST da conf singolo *.ini (es Baglietto)
2022-09-26 18:29:05 +02:00
Samuele Locatelli 3e8418c8ab Merge tag 'updateSdkObjItemPar' into develop
Update adapter x nuova struttura parametri da aggiornare
2022-09-22 19:01:15 +02:00
Samuele Locatelli f56d389946 Merge branch 'release/updateSdkObjItemPar' 2022-09-22 19:00:46 +02:00
Samuele Locatelli da056d95a0 Fix x nuova gestione parametri da objItem SDK 2022-09-22 19:00:17 +02:00
Samuele Locatelli 18510afaf6 Update log.trace x individuare tryDisconnect 2022-09-22 17:24:17 +02:00
Samuele Locatelli 924944a425 Merge tag 'UpdateOmpVerboseLogResetContapezzi' into develop
Update x gestione log verboso contapezzi OMP
2022-09-21 18:30:50 +02:00
Samuele Locatelli d31eb46ec8 Merge branch 'release/UpdateOmpVerboseLogResetContapezzi' 2022-09-21 18:30:41 +02:00
Samuele Locatelli 0ac53b3219 Merge remote-tracking branch 'origin/develop' into develop 2022-09-21 18:30:10 +02:00
Samuele Locatelli 36170f369a Update x log verboso OMP x scrittura contapezzi 2022-09-21 18:29:36 +02:00
Samuele E. Locatelli 183c441430 Merge tag 'updateCheckAlarms' into develop
Fix gestione alalrmi 32 bit con mask x ModBus
2022-09-20 11:32:13 +02:00
Samuele E. Locatelli 6ad13b80b2 Merge branch 'release/updateCheckAlarms' 2022-09-20 11:31:46 +02:00
Samuele E. Locatelli b9578f4dab Fix gestione allarmi:
- update config finassi
- fix check allarmi 32 bit
2022-09-20 11:30:29 +02:00
Samuele E. Locatelli 57f13e31db Merge branch 'master' into develop 2022-09-19 18:26:05 +02:00
Samuele E. Locatelli 6d31362a9c Update IOB-WIN Helpi:
- status, il valore 2 come 4 è lavora
2022-09-19 18:25:50 +02:00
Samuele E. Locatelli 6a2c39e3cf Merge branch 'develop' 2022-09-16 18:00:43 +02:00
Samuele E. Locatelli 5c385bd58e Fix EStop (non era negato) 2022-09-16 18:00:34 +02:00
Samuele E. Locatelli 4c264dbfb5 Merge branch 'FeatureOpcUaBaglietto' into develop 2022-09-16 17:17:00 +02:00
Samuele E. Locatelli 3db4688e20 Merge branch 'FeatureOpcUaBaglietto' 2022-09-16 17:16:41 +02:00
206 changed files with 18735 additions and 2802 deletions
+83 -4
View File
@@ -35,9 +35,9 @@ variables:
# helper x fix version number
.version-fix: &version-fix
- |
$env:NEW_REL = $env:VERS_MAIN+"."+(get-date format yyMM)+"."+(get-date format ddHH)
$env:NUM_REL = $env:VERS_MAIN+"."+(get-date format yyMM)+"."+(get-date format dHH)
$env:NUM_DEB = $env:VERS_MAIN+"."+(get-date format yyMM)+"-beta."+(get-date format dHH)
$env:NEW_REL = $env:VERS_MAIN+"."+(get-date -format yyMM)+"."+(get-date -format ddHH)
$env:NUM_REL = $env:VERS_MAIN+"."+(get-date -format yyMM)+"."+(get-date -format dHH)
$env:NUM_DEB = $env:VERS_MAIN+"."+(get-date -format yyMM)+"-beta."+(get-date -format dHH)
$env:NEW_COPYRIGHT = "EgalWare @ 2006-" + (get-date -format yyyy)
$contenuto = Get-Content -path 'VersGen\VersGen.cs' -Raw
$newContenuto = $contenuto -replace '0.0.0.0', $env:NEW_REL
@@ -46,7 +46,7 @@ variables:
# display versioni generate
$resoconto = "Effettuato fix file VersGen | release v: " + $env:NUM_REL + " | debug v: " + $env:NUM_DEB;
Write-Output $resoconto;
echo "replace completati"
echo "Replace completati"
# helper x fix nuspec file
.nuspec-fix: &nuspec-fix
@@ -201,6 +201,23 @@ IOB-WIN-NEXT:build:
script:
- '& "$env:MSBUILD_PATH" "$env:APP_NAME\$env:APP_NAME.csproj" -target:Build /p:Configuration=Release /p:Platform="x86" /p:OutputPath=bin/ /nodeReuse:false /verbosity:minimal /m'
EgwProxy.Ftp:build:
stage: build
tags:
- win
variables:
APP_NAME: EgwProxy.Ftp
only:
refs:
- develop
- SDK/Ftp
before_script:
- *nuget-fix
- '& "$env:NUGET_PATH" restore "$env:APP_NAME.sln" -verbosity quiet'
- *version-fix
script:
- '& "$env:MSBUILD_PATH" "$env:APP_NAME\$env:APP_NAME.csproj" -target:Build /p:Configuration=Release /p:Platform="x86" /p:OutputPath=bin/ /nodeReuse:false /verbosity:minimal /m'
EgwProxy.Icoel:build:
stage: build
tags:
@@ -252,9 +269,33 @@ EgwProxy.OsaiCncLib:build:
script:
- '& "$env:MSBUILD_PATH" "$env:APP_NAME\$env:APP_NAME.vbproj" -target:Build /p:Configuration=Release /p:Platform="x86" /p:OutputPath=bin/ /nodeReuse:false /verbosity:minimal /m'
# --------------------------------
# STAGING: (nuget beta)
# --------------------------------
EgwProxy.Ftp:build:staging:
stage: staging
needs: ["EgwProxy.Ftp:build"]
tags:
- win
variables:
CONFIG: Debug
APP_NAME: EgwProxy.Ftp
only:
refs:
- develop
before_script:
- *nuget-fix
- '& "$env:NUGET_PATH" restore "$env:APP_NAME.sln" -verbosity quiet'
- *version-fix
- *nuspec-fix
script:
- '& "$env:MSBUILD_PATH" "$env:APP_NAME\$env:APP_NAME.csproj" -target:Build /p:Configuration=$env:CONFIG /p:Platform="Any CPU" /p:OutputPath=bin/$env:CONFIG /verbosity:minimal /m'
- '& Remove-Item *.nupkg'
- '& $env:NUGET_PATH pack "$env:APP_NAME.Debug.nuspec"'
- '& "$env:NUGET_PATH" setapikey fe387daa-d07c-3207-877e-96c8be1be91b -source http://nexus.steamware.net/repository/nuget-hosted'
- '& "$env:NUGET_PATH" push *$env:NUM_DEB.nupkg -Source http://nexus.steamware.net/repository/nuget-hosted'
EgwProxy.Icoel:build:staging:
stage: staging
needs: ["EgwProxy.Icoel:build"]
@@ -398,6 +439,30 @@ IOB-WIN-NEXT:release:
- *hashBuild
- *nexusUpload
EgwProxy.Ftp:build:release:
stage: release
needs: ["EgwProxy.Ftp:build"]
tags:
- win
variables:
CONFIG: Release
APP_NAME: EgwProxy.Ftp
only:
refs:
- SDK/Ftp
before_script:
- *nuget-fix
- '& "$env:NUGET_PATH" restore "$env:APP_NAME.sln" -verbosity quiet'
- *version-fix
- *nuspec-fix
script:
- '& "$env:MSBUILD_PATH" "$env:APP_NAME\$env:APP_NAME.csproj" -target:Build /p:Configuration=$env:CONFIG /p:Platform="Any CPU" /p:OutputPath=bin/$env:CONFIG /verbosity:minimal /m'
- '& Remove-Item *.nupkg'
- '& $env:NUGET_PATH pack "$env:APP_NAME.Release.nuspec"'
# - '& "$env:NUGET_PATH" pack "$env:APP_NAME\$env:APP_NAME.csproj" -properties Configuration=$env:CONFIG -Version $env:NUM_REL'
- '& "$env:NUGET_PATH" setapikey fe387daa-d07c-3207-877e-96c8be1be91b -source http://nexus.steamware.net/repository/nuget-hosted'
- '& "$env:NUGET_PATH" push *$env:NUM_REL.nupkg -Source http://nexus.steamware.net/repository/nuget-hosted'
EgwProxy.Icoel:build:release:
stage: release
needs: ["EgwProxy.Icoel:build"]
@@ -472,6 +537,20 @@ EgwProxy.OsaiCncLib:build:release:
# --------------------------------
# DocFx
# --------------------------------
EgwProxy.Ftp:docfx:
stage: docfx
needs: ["EgwProxy.Ftp:build"]
tags:
- win
variables:
APP_NAME: EgwProxy.Ftp
only:
- SDK/Ftp
script:
- docfx $env:APP_NAME/docfx.json
- mv $env:APP_NAME/_site "docfx"
- *DocReplica
EgwProxy.Icoel:docfx:
stage: docfx
needs: ["EgwProxy.Icoel:build"]
+72
View File
@@ -0,0 +1,72 @@
namespace EgwCApp.Core
{
/// <summary>
/// Implementazione di riferimento x un file di configurazione x esecuzione task tramite EgwCApp
/// </summary>
public class ConfigFile
{
#region Public Properties
/// <summary>
/// Path Archivio dove depositare file ORIGINALI processati (se !="" vanno archiviati)
/// </summary>
public string ArchiveDir { get; set; } = "";
/// <summary>
/// Path dove depositare file tradotti processati (se !="" vanno spostati li)
/// </summary>
public string ConvertDir { get; set; } = "";
/// <summary>
/// Path file da processare
/// </summary>
public string FileInPath { get; set; } = "demoIn.txt";
/// <summary>
/// Path file dove salvare
/// </summary>
public string FileOutPath { get; set; } = "";
/// <summary>
/// IdxODL da registrare
/// </summary>
public int IdxODL { get; set; } = 0;
/// <summary>
/// Parametri per processing file string --&gt; int
/// </summary>
public Dictionary<string, int> ProcessParamInt { get; set; } = new Dictionary<string, int>();
/// <summary>
/// Parametri per processing file string --&gt; string
/// </summary>
public Dictionary<string, string> ProcessParamStr { get; set; } = new Dictionary<string, string>();
/// <summary>
/// DB Redis dove salvare
/// </summary>
public int RedisDB { get; set; } = 0;
/// <summary>
/// Posizione Redis dove salvare (HashKey)
/// </summary>
public string RedisOut { get; set; } = "";
/// <summary>
/// Modalità ritorno risutlati
/// </summary>
public ReturnMode Return { get; set; } = ReturnMode.ND;
/// <summary>
/// Path file da processare
/// </summary>
public string TargetName { get; set; } = "";
/// <summary>
/// Tipologia di iport da condurre
/// </summary>
public ImportType Type { get; set; } = ImportType.ND;
#endregion Public Properties
}
}
+15
View File
@@ -0,0 +1,15 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="ExcelDataReader.DataSet" Version="3.6.0" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.2" />
<PackageReference Include="StackExchange.Redis" Version="2.6.86" />
</ItemGroup>
</Project>
+37
View File
@@ -0,0 +1,37 @@
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
namespace EgwCApp.Core
{
/// <summary>
/// Tipologia file da importare
/// </summary>
[JsonConverter(typeof(StringEnumConverter))]
public enum ImportType
{
ND = 0,
CSV,
Excel
}
[JsonConverter(typeof(StringEnumConverter))]
public enum rawTransfType
{
ND,
IcoelBatch,
IcoelVarInfo,
RegGiacenze
}
/// <summary>
/// Modalità ritorno risultati
/// </summary>
[JsonConverter(typeof(StringEnumConverter))]
public enum ReturnMode
{
ND = 0,
Console,
File,
Redis
}
}
+107
View File
@@ -0,0 +1,107 @@
using ExcelDataReader;
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EgwCApp.Core
{
/// <summary>
/// Gestione lettura excel:
/// https://github.com/ExcelDataReader/ExcelDataReader
/// </summary>
public class ExcelMan
{
protected string _path { get; set; } = "";
/// <summary>
/// Avvio componente x il file indicato
/// </summary>
/// <param name="filePath"></param>
public ExcelMan(string filePath)
{
// verifico esistenza file...
if (File.Exists(filePath))
{
_path = filePath;
}
}
public DataSet getDataSet()
{
DataSet result = new DataSet();
using (var stream = File.Open(_path, FileMode.Open, FileAccess.Read))
{
// Auto-detect format, supports:
// - Binary Excel files (2.0-2003 format; *.xls)
// - OpenXml Excel files (2007 format; *.xlsx, *.xlsb)
System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
using (var reader = ExcelReaderFactory.CreateReader(stream))
{
// 2. Use the AsDataSet extension method
//result = reader.AsDataSet();
// The result of each spreadsheet is in result.Tables
// modalità lettura con intestazione
result = reader.AsDataSet(new ExcelDataSetConfiguration()
{
ConfigureDataTable = (_) => new ExcelDataTableConfiguration()
{
UseHeaderRow = true
}
});
#if false
result = reader.AsDataSet();
#endif
}
}
return result;
}
public IExcelDataReader getExcelReader()
{
// ExcelDataReader works with the binary Excel file, so it needs a FileStream
// to get started. This is how we avoid dependencies on ACE or Interop:
FileStream stream = File.Open(_path, FileMode.Open, FileAccess.Read);
// We return the interface, so that
IExcelDataReader reader = null;
try
{
if (_path.EndsWith(".xls"))
{
reader = ExcelReaderFactory.CreateBinaryReader(stream);
}
if (_path.EndsWith(".xlsx"))
{
reader = ExcelReaderFactory.CreateOpenXmlReader(stream);
}
return reader;
}
catch (Exception)
{
throw;
}
}
public IEnumerable<string> getWorksheetNames()
{
var reader = this.getExcelReader();
var workbook = reader.AsDataSet();
var sheets = from DataTable sheet in workbook.Tables select sheet.TableName;
return sheets;
}
public IEnumerable<DataRow> getData(string sheet, bool firstRowIsColumnNames = true)
{
var reader = this.getExcelReader();
//reader.IsFirstRowAsColumnNames = firstRowIsColumnNames;
var workSheet = reader.AsDataSet().Tables[sheet];
var rows = from DataRow a in workSheet.Rows select a;
return rows;
}
}
}
+32
View File
@@ -0,0 +1,32 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EgwCApp.Core
{
public class RedisMan
{
protected string connString = "";
protected string servAddr = "";
protected int servPort = 0;
protected int redisDb = 0;
public RedisMan(string server, int port, int db)
{
servAddr = server;
servPort = port;
redisDb = db;
connString = $"{servAddr}:{servPort},db={redisDb},abortConnect=false,ssl=false";
}
public bool writeData(string redKey, string rawData)
{
return false;
}
public string getRSV(string redKey)
{
return "";
}
}
}
+28
View File
@@ -0,0 +1,28 @@
namespace EgwCApp.Core
{
public class WharehouseData
{
#region Public Classes
public class BatchRec
{
#region Public Properties
public DateTime DateRif { get; set; } = DateTime.Today;
public string ExtDoc { get; set; } = "Doc";
public string IdentRG { get; set; } = "NA";
public int IdxODL { get; set; } = 0;
public string Notes { get; set; } = "Notes";
public int NumPack { get; set; } = 0;
public string Product { get; set; } = "Prod";
public double QtyTot { get; set; } = 0.0;
public string Supplier { get; set; } = "Suppl";
public string Variety { get; set; } = "Var";
#endregion Public Properties
}
#endregion Public Classes
}
}
+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.Testing", "EgwCApp.Testing\EgwCApp.Testing.csproj", "{E37013B7-E5C6-48ED-8051-0BA5F29CB234}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EgwCApp.ExcImport", "EgwCApp.ExcImport\EgwCApp.ExcImport.csproj", "{D689CB4E-14DB-4CD4-B0D6-D2029219EF7E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EgwCApp.Core", "EgwCApp.Core\EgwCApp.Core.csproj", "{DF02D478-2309-48B8-BF0D-90B02327AF02}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{E37013B7-E5C6-48ED-8051-0BA5F29CB234}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E37013B7-E5C6-48ED-8051-0BA5F29CB234}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E37013B7-E5C6-48ED-8051-0BA5F29CB234}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E37013B7-E5C6-48ED-8051-0BA5F29CB234}.Release|Any CPU.Build.0 = Release|Any CPU
{D689CB4E-14DB-4CD4-B0D6-D2029219EF7E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D689CB4E-14DB-4CD4-B0D6-D2029219EF7E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D689CB4E-14DB-4CD4-B0D6-D2029219EF7E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D689CB4E-14DB-4CD4-B0D6-D2029219EF7E}.Release|Any CPU.Build.0 = Release|Any CPU
{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
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {2AF3181F-288A-47D5-8087-2AB660476D85}
EndGlobalSection
EndGlobal
@@ -0,0 +1,32 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<AssemblyName>ExcImport</AssemblyName>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="13.0.2" />
<PackageReference Include="StackExchange.Redis" Version="2.6.86" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\EgwCApp.Core\EgwCApp.Core.csproj" />
</ItemGroup>
<ItemGroup>
<None Update="testConfExcel.json">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</None>
<None Update="testConfCsv.json">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</None>
<None Update="testConf.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>
+373
View File
@@ -0,0 +1,373 @@
using EgwCApp.Core;
using Newtonsoft.Json;
using static EgwCApp.Core.WharehouseData;
namespace EgwCApp.ExcImport
{
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
}
}
+61
View File
@@ -0,0 +1,61 @@
// 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.ExcImport;
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!");
}
}
+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"
}
@@ -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,42 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<AssemblyName>$(MSBuildProjectName)</AssemblyName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<DebugType>embedded</DebugType>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
<DebugType>embedded</DebugType>
</PropertyGroup>
<ItemGroup>
<Folder Include="Tools\" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="13.0.2" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\EgwCApp.Core\EgwCApp.Core.csproj" />
<ProjectReference Include="..\EgwCApp.ExcImport\EgwCApp.ExcImport.csproj" />
</ItemGroup>
<ItemGroup>
<None Update="Tools\ExcImport.exe">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
<Target Name="PreBuild" BeforeTargets="PreBuildEvent">
<Exec Command="preBuild.bat $(SolutionDir)EgwCApp.ExcImport\bin\Release\net6.0\win-x64\publish\ $(ProjectDir)Tools" />
</Target>
</Project>
+114
View File
@@ -0,0 +1,114 @@
using EgwCApp.Core;
using Newtonsoft.Json;
using System.Diagnostics;
namespace EgwCApp.Testing
{
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.Testing;
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!
+31
View File
@@ -0,0 +1,31 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.32901.82
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EgwProxy.Ftp.Test", "EgwProxy.Ftp.Test\EgwProxy.Ftp.Test.csproj", "{A655A6AC-5997-46F9-9752-8C621B80516C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EgwProxy.Ftp", "EgwProxy.Ftp\EgwProxy.Ftp.csproj", "{35D95ED8-E48A-434D-A305-A83E48C8FC6F}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{A655A6AC-5997-46F9-9752-8C621B80516C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A655A6AC-5997-46F9-9752-8C621B80516C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A655A6AC-5997-46F9-9752-8C621B80516C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A655A6AC-5997-46F9-9752-8C621B80516C}.Release|Any CPU.Build.0 = Release|Any CPU
{35D95ED8-E48A-434D-A305-A83E48C8FC6F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{35D95ED8-E48A-434D-A305-A83E48C8FC6F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{35D95ED8-E48A-434D-A305-A83E48C8FC6F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{35D95ED8-E48A-434D-A305-A83E48C8FC6F}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {E2472E21-58D3-4EAD-BC4A-BC3915B18BEF}
EndGlobalSection
EndGlobal
+26
View File
@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>EgwProxy.Ftp</id>
<version>#version#</version>
<title>EgwProxy.Ftp</title>
<authors>Samuele E. Locatelli, EgalWare</authors>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<license type="expression">MIT</license>
<description>Libreria per comunicazione con server Ftp (IOB-WIN-NEXT) - beta/unstable</description>
<releaseNotes>#releaseNotes#</releaseNotes>
<copyright>#copyright#</copyright>
<tags>EgwProxy.Ftp EgwProxy Ftp</tags>
<dependencies>
<group>
<dependency id="FluentFTP" version="41.0.0" />
<dependency id="Microsoft.Extensions.Logging.Abstractions" version="2.1.0" />
</group>
</dependencies>
</metadata>
<files>
<file src="EgwProxy.Ftp\bin\Debug\EgwProxy*.dll" target="lib" />
<file src="EgwProxy.Ftp\bin\Debug\EgwProxy*.config" target="lib" />
<file src="EgwProxy.Ftp\bin\Debug\EgwProxy*.pdb" target="lib" />
</files>
</package>
+23
View File
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>EgwProxy.Ftp</id>
<version>#version#</version>
<title>EgwProxy.Ftp</title>
<authors>Samuele E. Locatelli, EgalWare</authors>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<license type="expression">MIT</license>
<description>Libreria per comunicazione con server Ftp (IOB-WIN-NEXT)</description>
<releaseNotes>#releaseNotes#</releaseNotes>
<copyright>#copyright#</copyright>
<tags>EgwProxy.Ftp EgwProxy Ftp</tags>
<dependencies>
<dependency id="FluentFTP" version="41.0.0" />
<dependency id="Microsoft.Extensions.Logging.Abstractions" version="2.1.0" />
</dependencies>
</metadata>
<files>
<file src="EgwProxy.Ftp\bin\Release\EgwProxy*.dll" target="lib" />
<file src="EgwProxy.Ftp\bin\Release\EgwProxy*.config" target="lib" />
</files>
</package>
+51
View File
@@ -0,0 +1,51 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2" />
</startup>
<appSettings>
<add key="testFile" value="conf/testSetup.json" />
<add key="server" value="ftp.steamware.net" />
<add key="userName" value="testftpuser" />
<add key="passwd" value="we4reFromB3rghem!" />
<add key="rawCert" value="" />
<add key="skipCert" value="true" />
<add key="ClientSettingsProvider.ServiceUri" value="" />
</appSettings>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.5.0" newVersion="4.0.5.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.1.1" newVersion="4.0.1.1" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.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.Text.Encodings.Web" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.5.1" newVersion="4.0.5.1" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.ValueTuple" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<system.web>
<membership defaultProvider="ClientAuthenticationMembershipProvider">
<providers>
<add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" />
</providers>
</membership>
<roleManager defaultProvider="ClientRoleProvider" enabled="true">
<providers>
<add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400" />
</providers>
</roleManager>
</system.web>
</configuration>
@@ -0,0 +1,84 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{A655A6AC-5997-46F9-9752-8C621B80516C}</ProjectGuid>
<OutputType>Exe</OutputType>
<RootNamespace>EgwProxy.Ftp.Test</RootNamespace>
<AssemblyName>EgwProxy.Ftp.Test</AssemblyName>
<TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="FluentFTP, Version=41.0.0.0, Culture=neutral, PublicKeyToken=f4af092b1d8df44f, processorArchitecture=MSIL">
<HintPath>..\packages\FluentFTP.41.0.0\lib\net462\FluentFTP.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Extensions.Logging.Abstractions, Version=2.1.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Extensions.Logging.Abstractions.2.1.0\lib\netstandard2.0\Microsoft.Extensions.Logging.Abstractions.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.13.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Configuration" />
<Reference Include="System.Core" />
<Reference Include="System.Web.Extensions" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="TestSetup.cs" />
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
<None Include="conf\testSetup.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="conf\.placeholder" />
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<Content Include="test\FileProva.txt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<Folder Include="temp\" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\EgwProxy.Ftp\EgwProxy.Ftp.csproj">
<Project>{35d95ed8-e48a-434d-a305-a83e48c8fc6f}</Project>
<Name>EgwProxy.Ftp</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
+374
View File
@@ -0,0 +1,374 @@
using Newtonsoft.Json;
using System;
using System.Configuration;
using System.IO;
using static System.Net.Mime.MediaTypeNames;
namespace EgwProxy.Ftp.Test
{
internal class Program
{
#region Protected Methods
/// <summary>
/// legge conf in formato stringa
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
protected static string ReadSetting(string key)
{
string answ = "";
try
{
answ = $"{ConfigurationManager.AppSettings[key]}" ?? "";
}
catch (Exception exc)
{
Console.Write("Eccezione in ReadSettings");
Console.Write(exc.Message);
}
return answ;
}
#endregion Protected Methods
#region Private Fields
/// <summary>
/// Helper separatore dash
/// </summary>
private const string separator = "------------------------";
#endregion Private Fields
#region Private Methods
/// <summary>
/// Programma principale
/// </summary>
/// <param name="args"></param>
private static void Main(string[] args)
{
Console.WriteLine(separator);
Console.WriteLine("Test FTP Client");
Console.WriteLine(separator);
Console.WriteLine();
string exePath = System.Reflection.Assembly.GetExecutingAssembly().Location;
string BaseDirectory = System.IO.Path.GetDirectoryName(exePath);
string testFile = Path.Combine(BaseDirectory, ReadSetting("testFile"));
Manager ftpClient = new Manager("", "", "", "", false);
if (!string.IsNullOrEmpty(testFile))
{
Console.WriteLine(separator);
Console.WriteLine($"Mode json ({testFile})");
Console.WriteLine(separator);
Console.WriteLine();
if (File.Exists(testFile))
{
var rawData = File.ReadAllText(testFile);
if (!string.IsNullOrEmpty(rawData))
{
TestSetup testConf = new TestSetup();
try
{
testConf = JsonConvert.DeserializeObject<TestSetup>(rawData);
}
catch
{ }
// setup server
ftpClient = new Manager(testConf.server, testConf.user, testConf.password, testConf.rawCert, testConf.skipCert);
serverTest(ftpClient);
// eseguo per ogni step
foreach (var item in testConf.steps)
{
Console.WriteLine($"------ Step {item.id} | {item.description} ------");
string esitoStep = "";
switch (item.action)
{
case stepType.checkDir:
if (item.paramList != null && item.paramList.Count > 0)
{
string dir2check = item.paramList[0];
var dirCheckExists = ftpClient.dirExists(dir2check);
esitoStep = dirCheckExists ? $"Directory {dir2check} found!" : $"Directory {dir2check} NOT found!";
}
else
{
esitoStep = "Error: missing parameter!";
}
break;
case stepType.checkFile:
if (item.paramList != null && item.paramList.Count > 0)
{
string file2check = item.paramList[0];
var dirCheckExists = ftpClient.fileExists(file2check);
esitoStep = dirCheckExists ? $"File {file2check} found!" : $"File {file2check} NOT found!";
}
else
{
esitoStep = "Error: missing parameter!";
}
break;
case stepType.createDir:
if (item.paramList != null && item.paramList.Count > 0)
{
string dir2check = item.paramList[0];
var preTest = ftpClient.dirExists(dir2check);
if (preTest)
{
esitoStep = "Error: Folder already exists!";
}
else
{
var dirCreate = ftpClient.createDir(dir2check);
esitoStep = dirCreate ? $"Directory {dir2check} created!" : $"Error: {dir2check} NOT created!";
}
}
else
{
esitoStep = "Error: missing parameter!";
}
break;
case stepType.delDir:
if (item.paramList != null && item.paramList.Count > 0)
{
string dir2check = item.paramList[0];
var preTest = ftpClient.dirExists(dir2check);
if (preTest)
{
var dirDelete = ftpClient.deleteDir(dir2check);
esitoStep = dirDelete ? $"Directory {dir2check} deleted!" : $"Error: {dir2check} NOT deleted!";
}
else
{
esitoStep = "Error: Folder doesn't exists, delete not possible!";
}
}
else
{
esitoStep = "Error: missing parameter!";
}
break;
case stepType.delFile:
if (item.paramList != null && item.paramList.Count > 0)
{
string file2check = item.paramList[0];
var preTest = ftpClient.fileExists(file2check);
if (preTest)
{
var dirDelete = ftpClient.deleteFile(file2check);
esitoStep = dirDelete ? $"File {file2check} deleted!" : $"Error: {file2check} NOT deleted!";
}
else
{
esitoStep = "Error: File doesn't exists, delete not possible!";
}
}
else
{
esitoStep = "Error: missing parameter!";
}
break;
case stepType.downloadDir:
if (item.paramList != null && item.paramList.Count > 1)
{
string dir2check = item.paramList[0];
string localDir = Path.Combine(BaseDirectory, item.paramList[1]);
var preTest = ftpClient.dirExists(dir2check);
if (preTest)
{
var dirDelete = ftpClient.getDir(localDir, dir2check);
esitoStep = dirDelete ? $"Directory {dir2check} downloaded!" : $"Error: {dir2check} NOT downloaded!";
}
else
{
esitoStep = "Error: Folder doesn't exists, download not possible!";
}
}
else
{
esitoStep = "Error: missing parameters!";
}
break;
case stepType.downloadFile:
if (item.paramList != null && item.paramList.Count > 1)
{
string dir2check = item.paramList[0];
string localDir = Path.Combine(BaseDirectory, item.paramList[1]);
var preTest = ftpClient.dirExists(dir2check);
if (preTest)
{
var dirDelete = ftpClient.getDir(localDir, dir2check);
esitoStep = dirDelete ? $"Directory {dir2check} downloaded!" : $"Error: {dir2check} NOT downloaded!";
}
else
{
esitoStep = "Error: Folder doesn't exists, download not possible!";
}
}
else
{
esitoStep = "Error: missing parameters!";
}
break;
case stepType.uploadDir:
if (item.paramList != null && item.paramList.Count > 1)
{
string remoteDir = item.paramList[0];
string localDir = Path.Combine(BaseDirectory, item.paramList[1]);
var dirUploaded = ftpClient.sendDir(localDir, remoteDir);
esitoStep = dirUploaded ? $"Directory {remoteDir} uploaded!" : $"Error: {remoteDir} NOT uploaded!";
}
else
{
esitoStep = "Error: missing parameters!";
}
break;
case stepType.uploadFile:
if (item.paramList != null && item.paramList.Count > 1)
{
string remotePath = item.paramList[0];
string localPath = Path.Combine(BaseDirectory, item.paramList[1]);
var fileUploaded = ftpClient.sendFile(localPath, remotePath);
esitoStep = fileUploaded ? $"File {remotePath} uploaded!" : $"Error: {remotePath} NOT uploaded!";
}
else
{
esitoStep = "Error: missing parameters!";
}
break;
case stepType.listContent:
if (item.paramList != null && item.paramList.Count > 0)
{
string remoteDir = item.paramList[0];
var preTest = ftpClient.dirExists(remoteDir);
if (preTest)
{
var listResult = ftpClient.listDir(remoteDir, false);
Console.WriteLine($"Content of dir {remoteDir}:");
foreach (var itemList in listResult)
{
Console.WriteLine(itemList);
}
}
else
{
esitoStep = "Error: Folder doesn't exists, list not possible!";
}
}
else
{
esitoStep = "Error: missing parameter!";
}
break;
default:
break;
}
Console.WriteLine(esitoStep);
Console.WriteLine($"------ Done Step {item.id} ------");
Console.WriteLine();
Console.WriteLine("Press a key to continue...");
Console.ReadKey();
}
}
}
}
// test base su server steamware
else
{
Console.WriteLine(separator);
Console.WriteLine("Mode: base");
Console.WriteLine(separator);
Console.WriteLine();
string sSkipCert = ReadSetting("skipCert");
bool skipCert = false;
bool.TryParse(sSkipCert, out skipCert);
ftpClient = new Manager(ReadSetting("server"), ReadSetting("userName"), ReadSetting("passwd"), ReadSetting("rawCert"), skipCert);
serverTest(ftpClient);
Console.WriteLine("--- Folder ---");
var testExists = ftpClient.dirExists($"data/test_folder");
if (testExists)
{
Console.WriteLine("Folder already exists!");
}
else
{
Console.WriteLine("--- Create folder ---");
var testCreate = ftpClient.createDir($"data/test_folder");
Console.WriteLine();
}
Console.WriteLine("Contenuto folder remota: ");
var folderContent = ftpClient.listDir("data/", true);
foreach (var item in folderContent)
{
Console.WriteLine(item);
}
Console.WriteLine();
Console.WriteLine("Premere un tasto x continuare...");
Console.ReadKey();
Console.WriteLine("--- Upload file ---");
ftpClient.sendFile("test/FileProva.txt", "data/test_folder/FileProva.txt");
Console.WriteLine("Contenuto folder remota: ");
folderContent = ftpClient.listDir("data/", true);
foreach (var item in folderContent)
{
Console.WriteLine(item);
}
Console.WriteLine();
Console.WriteLine("Premere un tasto x continuare...");
Console.ReadKey();
Console.WriteLine("--- Download File ---");
ftpClient.getFile("test/FileProva_02.txt", "data/test_folder/FileProva.txt");
Console.WriteLine("Contenuto folder remota: ");
folderContent = ftpClient.listDir("data/", true);
foreach (var item in folderContent)
{
Console.WriteLine(item);
}
Console.WriteLine();
Console.WriteLine("Premere un tasto x continuare...");
Console.ReadKey();
}
}
private static void serverTest(Manager ftpClient)
{
Console.WriteLine(separator);
var testServer = ftpClient.serverOk();
Console.WriteLine($"Test connessione: esito {testServer}");
var srvType = ftpClient.serverType();
Console.WriteLine($"Server: {srvType}");
Console.WriteLine(separator);
Console.WriteLine();
}
#endregion Private Methods
}
}
@@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("EgwProxy.Ftp.Test")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("EgwProxy.Ftp.Test")]
[assembly: AssemblyCopyright("Copyright © 2022")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("a655a6ac-5997-46f9-9752-8c621b80516c")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
+42
View File
@@ -0,0 +1,42 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EgwProxy.Ftp.Test
{
public class TestSetup
{
public string server { get; set; } = "";
public string user { get; set; } = "";
public string password { get; set; } = "";
public string rawCert { get; set; } = "";
public bool skipCert { get; set; } = false;
public List<singleStep> steps { get; set; }
}
public class singleStep
{
public string id { get; set; } = "00";
public string description { get; set; } = "00";
public stepType action { get; set; } = stepType.checkDir;
public List<string> paramList { get; set; } = new List<string>();
}
public enum stepType
{
checkDir,
checkFile,
createDir,
delDir,
delFile,
downloadDir,
downloadFile,
uploadDir,
uploadFile,
listContent
}
}
+1
View File
@@ -0,0 +1 @@

+76
View File
@@ -0,0 +1,76 @@
{
"server": "ftp.steamware.net",
"user": "testftpuser",
"password": "we4reFromB3rghem!",
"rawCert": "",
"skipCert": true,
"steps": [
{
"id": "01",
"description": "Test base directory",
"action": "checkDir",
"paramList": [
"data/"
]
},
{
"id": "02",
"description": "Create directory",
"action": "createDir",
"paramList": [
"data/test_directory"
]
},
{
"id": "03",
"description": "Upload File",
"action": "uploadFile",
"paramList": [
"data/test_directory/FileProva.txt",
"test/FileProva.txt"
]
},
{
"id": "04",
"description": "Browse Directory",
"action": "listContent",
"paramList": [
"data/test_directory/"
]
},
{
"id": "05",
"description": "Upload File",
"action": "uploadFile",
"paramList": [
"data/test_directory/FileProva_02.txt",
"test/FileProva.txt"
]
},
{
"id": "06",
"description": "Browse Directory",
"action": "listContent",
"paramList": [
"data/test_directory/"
]
},
{
"id": "07",
"description": "Download Directory",
"action": "downloadDir",
"paramList": [
"data/test_directory/",
"temp/mirror"
]
},
{
"id": "08",
"description": "Delete Remote Directory",
"action": "delDir",
"paramList": [
"data/test_directory/"
]
}
]
}
+6
View File
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="FluentFTP" version="41.0.0" targetFramework="net462" />
<package id="Microsoft.Extensions.Logging.Abstractions" version="2.1.0" targetFramework="net462" />
<package id="Newtonsoft.Json" version="13.0.1" targetFramework="net462" />
</packages>
+1
View File
@@ -0,0 +1 @@
File di prova
+57
View File
@@ -0,0 +1,57 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{35D95ED8-E48A-434D-A305-A83E48C8FC6F}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>EgwProxy.Ftp</RootNamespace>
<AssemblyName>EgwProxy.Ftp</AssemblyName>
<TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="FluentFTP, Version=41.0.0.0, Culture=neutral, PublicKeyToken=f4af092b1d8df44f, processorArchitecture=MSIL">
<HintPath>..\packages\FluentFTP.41.0.0\lib\net462\FluentFTP.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Extensions.Logging.Abstractions, Version=2.1.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Extensions.Logging.Abstractions.2.1.0\lib\netstandard2.0\Microsoft.Extensions.Logging.Abstractions.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Manager.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
+325
View File
@@ -0,0 +1,325 @@
using FluentFTP;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Security;
namespace EgwProxy.Ftp
{
/// <summary>
/// Client per operazioni FTP, basato su FluentFTP: https://github.com/robinrodricks/FluentFTP/wiki/Quick-Start-Example
/// </summary>
public class Manager
{
#region Public Constructors
/// <summary>
/// Inizializzazione di oggetto per comunicazione FTP
/// </summary>
/// <param name="server"></param>
/// <param name="userName"></param>
/// <param name="passwd"></param>
/// <param name="rawCert"></param>
/// <param name="skipCert"></param>
public Manager(string server, string userName, string passwd, string rawCert, bool skipCert)
{
_server = server;
_userName = userName;
_passwd = passwd;
_skipCert = skipCert;
_rawCert = rawCert;
if (!string.IsNullOrEmpty(server))
{
// se ho user/pwd è autenticato...
if (!string.IsNullOrEmpty(userName) && !string.IsNullOrEmpty(passwd))
{
client = new FtpClient(server, userName, passwd);
}
//.. altrimenti anonimo...
else
{
client = new FtpClient(server);
}
}
}
#endregion Public Constructors
#region Public Methods
/// <summary>
/// Creazione directory remota
/// </summary>
/// <param name="remoteDir">Nome directory remota da creare (ad es: @"/public_html/videos")</param>
public bool createDir(string remoteDir)
{
tryConnect();
// upload della folder + files, cancellazione extra files = mirroring
bool answ = client.CreateDirectory(remoteDir);
// chiudo!
client.Disconnect();
return answ;
}
/// <summary>
/// Eliminazionedirectory remota
/// </summary>
/// <param name="remoteDir">Nome directory remota da eliminare</param>
public bool deleteDir(string remoteDir)
{
tryConnect();
bool answ = false;
try
{
// Elimina folder
client.DeleteDirectory(remoteDir);
answ = true;
}
catch
{ }
// chiudo!
client.Disconnect();
return answ;
}
/// <summary>
/// Eliminazionedirectory remota
/// </summary>
/// <param name="remoteFile">Nome file remoto da eliminare</param>
public bool deleteFile(string remoteFile)
{
tryConnect();
bool answ = false;
try
{
// Elimina folder
client.DeleteFile(remoteFile);
answ = true;
}
catch
{ }
// chiudo!
client.Disconnect();
return answ;
}
/// <summary>
/// Verifica esistenza directory su server FTP remoto
/// </summary>
/// <param name="remotePath">Percorso remoto da testare (ad es "/htdocs/extras/")</param>
/// <returns></returns>
public bool dirExists(string remotePath)
{
tryConnect();
bool answ = client.DirectoryExists(remotePath);
// chiudo!
client.Disconnect();
return answ;
}
/// <summary>
/// Verifica esistenza file su server FTP remoto
/// </summary>
/// <param name="remotePath">Percorso remoto da testare (ad es "/htdocs/big2.txt")</param>
/// <returns></returns>
public bool fileExists(string remotePath)
{
tryConnect();
bool answ = client.FileExists(remotePath);
// chiudo!
client.Disconnect();
return answ;
}
/// <summary>
/// Scaricamento intera directory, modalità MIRROR
/// </summary>
/// <param name="dirPath">Path directory da inviare (ad es:@"C:\website\videos\")</param>
/// <param name="remoteDir">Nome remoto file per caricamento (ad es: @"/public_html/videos")</param>
public bool getDir(string dirPath, string remoteDir)
{
bool answ = false;
tryConnect();
try
{
// upload della folder + files, cancellazione extra files = mirroring
var result = client.DownloadDirectory(dirPath, remoteDir, FtpFolderSyncMode.Mirror);
answ = (result != null && result.Count > 0);
}
catch
{ }
// chiudo!
client.Disconnect();
return answ;
}
/// <summary>
/// Download singolo file
/// </summary>
/// <param name="fileName">Path locale del file da inviare (ad es: @"C:\MyVideo.mp4")</param>
/// <param name="remoteName">NOme remoto file per caricamento (ad es: "/htdocs/MyVideo.mp4")</param>
public bool getFile(string fileName, string remoteName)
{
bool answ = false;
tryConnect();
// effettuo caricamento puntuale
var result = client.DownloadFile(fileName, remoteName);
answ = result == FtpStatus.Success;
// chiudo!
client.Disconnect();
return answ;
}
/// <summary>
/// Mostra contenuto directory remota
/// </summary>
/// <param name="remoteDir">Nome directory remota da leggere (ad es: @"/public_html/videos")</param>
/// <param name="recurse">Indica se fare search ricorsivo</param>
public List<string> listDir(string remoteDir, bool recurse)
{
tryConnect();
// upload della folder + files, cancellazione extra files = mirroring
FtpListItem[] dirContent;
if (recurse)
{
dirContent = client.GetListing(remoteDir, FtpListOption.Recursive);
}
else
{
dirContent = client.GetListing(remoteDir);
}
client.Disconnect();
var answ = dirContent.Select(x => $"{x.Type} - {x.Name}").ToList();
// chiudo!
return answ;
}
/// <summary>
/// Caricamento intera directory, modalità MIRROR
/// </summary>
/// <param name="dirPath">Path directory da inviare (ad es:@"C:\website\videos\")</param>
/// <param name="remoteDir">Nome remoto file per caricamento (ad es: @"/public_html/videos")</param>
public bool sendDir(string dirPath, string remoteDir)
{
bool answ = false;
tryConnect();
// upload della folder + files, cancellazione extra files = mirroring
var result = client.UploadDirectory(dirPath, remoteDir, FtpFolderSyncMode.Mirror);
answ = (result != null && result.Count > 0);
// chiudo!
client.Disconnect();
return answ;
}
/// <summary>
/// Caricamento singolo file
/// </summary>
/// <param name="fileName">Path locale del file da inviare (ad es: @"C:\MyVideo.mp4")</param>
/// <param name="remoteName">NOme remoto file per caricamento (ad es: "/htdocs/MyVideo.mp4")</param>
public bool sendFile(string fileName, string remoteName)
{
bool answ = false;
tryConnect();
// effettuo caricamento puntuale
var result = client.UploadFile(fileName, remoteName);
answ = result == FtpStatus.Success;
// se insuccesso --> controllo se ci sia file...
if (!answ)
{
answ = fileExists(remoteName);
}
// chiudo!
client.Disconnect();
return answ;
}
/// <summary>
/// Verifica connessione con server FTP remoto
/// </summary>
/// <returns></returns>
public bool serverOk()
{
tryConnect();
bool answ = client.IsConnected;
// chiudo!
client.Disconnect();
return answ;
}
/// <summary>
/// Restituisce tipo server remoto
/// </summary>
/// <returns></returns>
public string serverType()
{
tryConnect();
FtpServer srvType = client.ServerType;
// chiudo!
client.Disconnect();
return $"{srvType}";
}
#endregion Public Methods
#region Protected Fields
protected bool _skipCert = false;
#endregion Protected Fields
#region Protected Properties
protected string _passwd { get; set; } = "";
protected string _rawCert { get; set; } = "";
protected string _server { get; set; } = "";
protected string _userName { get; set; } = "";
#endregion Protected Properties
#region Private Properties
private FtpClient client { get; set; }
#endregion Private Properties
#region Private Methods
private void Client_ValidateCertificate(FluentFTP.Client.BaseClient.BaseFtpClient control, FtpSslValidationEventArgs e)
{
if (e.PolicyErrors == SslPolicyErrors.None || _skipCert || e.Certificate.GetRawCertDataString() == _rawCert)
{
e.Accept = true;
}
else
{
Console.WriteLine($"{e.PolicyErrors}");
Console.WriteLine($"Cert:{Environment.NewLine}{e.Certificate}");
Console.WriteLine($"RawString:{Environment.NewLine}{e.Certificate.GetRawCertDataString()}");
throw new Exception($"{e.PolicyErrors}{Environment.NewLine}{e.Certificate.GetRawCertDataString()}");
}
}
private void tryConnect()
{
// connect to the server and automatically detect working FTP settings
if (!client.IsConnected)
{
var profiles = client.AutoDetect();
#if false
// if any profiles are found, print the code to the console
if (profiles.Count > 0)
{
var code = profiles[0].ToCode();
Console.WriteLine(code);
}
#endif
client.ValidateCertificate += Client_ValidateCertificate;
client.AutoConnect();
}
}
#endregion Private Methods
}
}
+36
View File
@@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("EgwProxy.Ftp")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("EgwProxy.Ftp")]
[assembly: AssemblyCopyright("Copyright © 2022")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("35d95ed8-e48a-434d-a305-a83e48c8fc6f")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
+69
View File
@@ -0,0 +1,69 @@
{
"metadata": [
{
"src": [
{
"files": [
"*.csproj",
"*.vbproj"
],
"cwd": ".",
"exclude": [
"**/obj/**",
"**/bin/**",
"_site/**"
]
}
],
"dest": "obj/api"
}
],
"build": {
"content": [
{
"files": [
"api/**.yml"
],
"cwd": "obj"
},
{
"files": [
"api/*.md",
"articles/**.md",
"toc.yml",
"*.md"
],
"exclude": [
"obj/**",
"_site/**"
]
}
],
"resource": [
{
"files": [
"images/**"
],
"exclude": [
"obj/**",
"_site/**"
]
}
],
"overwrite": [
{
"files": [
"apidoc/**.md"
],
"exclude": [
"obj/**",
"_site/**"
]
}
],
"dest": "_site",
"template": [
"default"
]
}
}
+17
View File
@@ -0,0 +1,17 @@
# EgwProxy.Ftp Library
Documentazione relativa alla libreria di interfaccia via FTP con server generici.
Disponibile in forma di pacchetto nuget sul repo aziendale nexus.steamware.net: i pacchetti sono disponibili all'indirizzo
https://nexus.steamware.net/#browse/browse:nuget-hosted
Vedere la sezione Articles per maggiori informazioni sulle definizioni, l'impiego ed esempi.
## Articles
Per maggiori dettagli, definizioni e demo funzionamento si rimanda alla sezione Articles
## Api
Per ogni dettaglio e riferimento alla libreria si rimanda alla sezione Api Documentation
+5
View File
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="FluentFTP" version="41.0.0" targetFramework="net462" />
<package id="Microsoft.Extensions.Logging.Abstractions" version="2.1.0" targetFramework="net462" />
</packages>
+6
View File
@@ -0,0 +1,6 @@
- name: Articles
href: articles/
- name: API Documentation
href: obj/api/
homepage: api/index.md
+19 -15
View File
@@ -1,20 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<entityFramework>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
<connectionStrings>
<add name="EntrataFrontiera" connectionString="data source=192.168.137.10\sqlexpress;initial catalog=frontiera;persist security info=True;user id=egalware;password=egalware2022;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
<add name="ExportIcoel" connectionString="data source=192.168.137.10\sqlexpress;initial catalog=IcoelExport;persist security info=True;user id=egalware;password=egalware2022;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
<add name="TrackerLotti" connectionString="data source=192.168.250.250\sqlexpress;initial catalog=TrackerLotti3;persist security info=True;user id=egalware;password=egalware2022;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
<add name="SyncState" connectionString="data source=localhost\sqlexpress;initial catalog=MoonPro_ISF;persist security info=True;user id=egalware;password=egalware2022;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
</connectionStrings>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<entityFramework>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
<connectionStrings>
<add name="EntrataFrontiera" connectionString="data source=192.168.137.10\sqlexpress;initial catalog=frontiera;persist security info=True;user id=egalware;password=egalware2022;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
<add name="ExportIcoel" connectionString="data source=192.168.137.10\sqlexpress;initial catalog=IcoelExport;persist security info=True;user id=egalware;password=egalware2022;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
<add name="TrackerLotti" connectionString="data source=192.168.250.250\sqlexpress;initial catalog=TrackerLotti3;persist security info=True;user id=egalware;password=egalware2022;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
<add name="SyncState" connectionString="data source=localhost\sqlexpress;initial catalog=MoonPro_ISF;persist security info=True;user id=egalware;password=egalware2022;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
</connectionStrings>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
@@ -37,6 +37,10 @@
<assemblyIdentity name="System.ValueTuple" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.IO.Compression" publicKeyToken="b77a5c561934e089" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.0.0" newVersion="4.1.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
@@ -51,7 +51,7 @@
<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.0\lib\net461\Microsoft.Data.SqlClient.dll</HintPath>
<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>
@@ -98,10 +98,10 @@
</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>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.IO.Compression" />
<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>
<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>
@@ -115,8 +115,6 @@
</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>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Runtime.Serialization" />
<Reference Include="System.Security" />
@@ -125,13 +123,9 @@
</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>
<Private>True</Private>
<Private>True</Private>
</Reference>
<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>
<Private>True</Private>
<Private>True</Private>
</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>
@@ -186,14 +180,13 @@
<None Include="packages.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="..\packages\EntityFramework.6.4.4\build\EntityFramework.targets" Condition="Exists('..\packages\EntityFramework.6.4.4\build\EntityFramework.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>Questo progetto fa riferimento a uno o più pacchetti NuGet che non sono presenti in questo computer. Usare lo strumento di ripristino dei pacchetti NuGet per scaricarli. Per altre informazioni, vedere http://go.microsoft.com/fwlink/?LinkID=322105. Il file mancante è {0}.</ErrorText>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\EntityFramework.6.4.4\build\EntityFramework.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\EntityFramework.6.4.4\build\EntityFramework.props'))" />
<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.0\build\net46\Microsoft.Data.SqlClient.SNI.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Data.SqlClient.SNI.4.0.0\build\net46\Microsoft.Data.SqlClient.SNI.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\EntityFramework.6.4.4\build\EntityFramework.targets" Condition="Exists('..\packages\EntityFramework.6.4.4\build\EntityFramework.targets')" />
<Import Project="..\packages\Microsoft.Data.SqlClient.SNI.4.0.0\build\net46\Microsoft.Data.SqlClient.SNI.targets" Condition="Exists('..\packages\Microsoft.Data.SqlClient.SNI.4.0.0\build\net46\Microsoft.Data.SqlClient.SNI.targets')" />
<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>
+3 -2
View File
@@ -4,8 +4,8 @@
<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.0" targetFramework="net462" />
<package id="Microsoft.Data.SqlClient.SNI" version="4.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" />
@@ -19,6 +19,7 @@
<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.Numerics.Vectors" version="4.5.0" targetFramework="net462" />
<package id="System.Runtime.CompilerServices.Unsafe" version="4.6.0" targetFramework="net462" />
+4
View File
@@ -11,6 +11,10 @@
<releaseNotes>#releaseNotes#</releaseNotes>
<copyright>#copyright#</copyright>
<tags>EgwProxy.Icoel EgwProxy Icoel</tags>
<dependencies>
<dependency id="NLog" version="4.7.9" />
<dependency id="EntityFramework" version="6.4.4" />
</dependencies>
</metadata>
<files>
<file src="EgwProxy.Icoel\bin\Debug\EgwProxy*.dll" target="lib" />
+4
View File
@@ -11,6 +11,10 @@
<releaseNotes>#releaseNotes#</releaseNotes>
<copyright>#copyright#</copyright>
<tags>EgwProxy.Icoel EgwProxy Icoel</tags>
<dependencies>
<dependency id="NLog" version="4.7.9" />
<dependency id="EntityFramework" version="6.4.4" />
</dependencies>
</metadata>
<files>
<file src="EgwProxy.Icoel\bin\Release\EgwProxy*.dll" target="lib" />
+4
View File
@@ -68,6 +68,10 @@
<assemblyIdentity name="System.ValueTuple" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.IO.Compression" publicKeyToken="b77a5c561934e089" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.0.0" newVersion="4.1.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
@@ -36,6 +36,9 @@
<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>
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
@@ -55,10 +58,14 @@
<None Include="conf.ini">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<Folder Include="INI\" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\EgwProxy.Icoel.DataLayer\EgwProxy.Icoel.DataLayer.csproj">
<Project>{E36544CB-D699-48D8-9F81-C2758E7C7D19}</Project>
<Project>{e36544cb-d699-48d8-9f81-c2758e7c7d19}</Project>
<Name>EgwProxy.Icoel.DataLayer</Name>
</ProjectReference>
<ProjectReference Include="..\EgwProxy.Icoel\EgwProxy.Icoel.csproj">
@@ -66,8 +73,5 @@
<Name>EgwProxy.Icoel</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Folder Include="INI\" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
+4
View File
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="System.IO.Compression" version="4.1.0" targetFramework="net462" />
</packages>
+4
View File
@@ -54,6 +54,10 @@
<assemblyIdentity name="System.ValueTuple" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.IO.Compression" publicKeyToken="b77a5c561934e089" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.0.0" newVersion="4.1.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
+3 -1
View File
@@ -46,7 +46,9 @@
<Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System.Configuration" />
<Reference Include="System.Core" />
<Reference Include="System.IO.Compression" />
<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>
<Reference Include="System.Runtime.Serialization" />
<Reference Include="System.ServiceModel" />
<Reference Include="System.Transactions" />
+1
View File
@@ -1,4 +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" />
</packages>
+113 -113
View File
@@ -1,116 +1,116 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2" />
</startup>
<appSettings>
<add key="appName" value="IOB-MAN" />
<add key="appNameExt" value="IOB-WIN-NEXT" />
<add key="uiPeriod" value="100" />
<add key="checkPeriod" value="3000" />
<add key="forceCheckPeriodMult" value="20" />
<add key="autoRestartTimeoutMin" value="15" />
<add key="autoStartProc" value="true" />
<add key="closeOnChildUpdate" value="true" />
<add key="targetExe" value="C:\Steamware\IOB-WIN-NEXT\IOB-WIN-NEXT.exe" />
<add key="TargetNLogConf" value="C:\Steamware\IOB-WIN-NEXT\NLog.config" />
<add key="TargetLogDir" value="C:\Steamware\IOB-WIN-NEXT\logs\" />
<add key="ApiUrl" value="https://liman.egalware.com/ELM.Api/" />
<!--<add key="ApiUrl" value="https://localhost:44351/" />-->
<add key="BaseArg" value="MODE=MAN IOB=" />
<!--<add key="ArgsList" value="SIMUL_00,SIMUL_00" />-->
<add key="ArgsConfFile" value="/CONF/process.json" />
<!--Gestione riavvio periodico: ora e min di avvio, periodo ripetizione in minuti -->
<add key="fullRestartHour" value="0" />
<add key="fullRestartMinute" value="30" />
<add key="fullRestartIntervMin" value="1440" />
<add key="waitForExitMsec" value="250" />
<!--gestione REDIS-->
<add key="RedisConn" value="localhost,abortConnect=false,ssl=false" />
<add key="RedisConnAdmin" value="localhost,abortConnect=false,ssl=false" />
<add key="redisDb" value="10" />
<add key="ClientSettingsProvider.ServiceUri" value="" />
</appSettings>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<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.Numerics.Vectors" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.4.0" newVersion="4.1.4.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.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.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="SharpCompress" publicKeyToken="afb0a02973931d96" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-0.31.0.0" newVersion="0.31.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.IO.Pipelines" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.2" newVersion="6.0.0.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.1.1" newVersion="4.0.1.1" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Threading.Channels" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
<probing privatePath="lib;libs" />
<probing privatePath="lib;libs" xmlns="" />
<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>
<dependentAssembly>
<assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.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="DnsClient" publicKeyToken="4574bb5573c51424" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.5.0.0" newVersion="1.5.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="ICSharpCode.SharpZipLib" publicKeyToken="1b03e6acf1164f73" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.3.3.11" newVersion="1.3.3.11" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="RestSharp" publicKeyToken="598062e77f915f75" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-106.15.0.0" newVersion="106.15.0.0" />
</dependentAssembly>
<dependentAssembly>
<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>
</assemblyBinding>
</runtime>
<system.web>
<membership defaultProvider="ClientAuthenticationMembershipProvider">
<providers>
<add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" />
</providers>
</membership>
<roleManager defaultProvider="ClientRoleProvider" enabled="true">
<providers>
<add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400" />
</providers>
</roleManager>
</system.web>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2" />
</startup>
<appSettings>
<add key="appName" value="IOB-MAN" />
<add key="appNameExt" value="IOB-WIN-NEXT" />
<add key="uiPeriod" value="100" />
<add key="checkPeriod" value="3000" />
<add key="forceCheckPeriodMult" value="20" />
<add key="autoRestartTimeoutMin" value="15" />
<add key="autoStartProc" value="true" />
<add key="closeOnChildUpdate" value="true" />
<add key="targetExe" value="C:\Steamware\IOB-WIN-NEXT\IOB-WIN-NEXT.exe" />
<add key="TargetNLogConf" value="C:\Steamware\IOB-WIN-NEXT\NLog.config" />
<add key="TargetLogDir" value="C:\Steamware\IOB-WIN-NEXT\logs\" />
<add key="ApiUrl" value="https://liman.egalware.com/ELM.Api/" />
<!--<add key="ApiUrl" value="https://localhost:44351/" />-->
<add key="BaseArg" value="MODE=MAN IOB=" />
<!--<add key="ArgsList" value="SIMUL_00,SIMUL_00" />-->
<add key="ArgsConfFile" value="/CONF/process.json" />
<!--Gestione riavvio periodico: ora e min di avvio, periodo ripetizione in minuti -->
<add key="fullRestartHour" value="0" />
<add key="fullRestartMinute" value="30" />
<add key="fullRestartIntervMin" value="1440" />
<add key="waitForExitMsec" value="250" />
<!--gestione REDIS-->
<add key="RedisConn" value="localhost,abortConnect=false,ssl=false" />
<add key="RedisConnAdmin" value="localhost,abortConnect=false,ssl=false" />
<add key="redisDb" value="10" />
<add key="ClientSettingsProvider.ServiceUri" value="" />
</appSettings>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<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.Numerics.Vectors" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.4.0" newVersion="4.1.4.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.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.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="SharpCompress" publicKeyToken="afb0a02973931d96" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-0.31.0.0" newVersion="0.31.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.IO.Pipelines" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.2" newVersion="6.0.0.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.1.1" newVersion="4.0.1.1" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Threading.Channels" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
<probing privatePath="lib;libs" />
<probing privatePath="lib;libs" xmlns="" />
<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>
<dependentAssembly>
<assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.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="DnsClient" publicKeyToken="4574bb5573c51424" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.5.0.0" newVersion="1.5.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="ICSharpCode.SharpZipLib" publicKeyToken="1b03e6acf1164f73" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.3.3.11" newVersion="1.3.3.11" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="RestSharp" publicKeyToken="598062e77f915f75" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-106.15.0.0" newVersion="106.15.0.0" />
</dependentAssembly>
<dependentAssembly>
<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>
</assemblyBinding>
</runtime>
<system.web>
<membership defaultProvider="ClientAuthenticationMembershipProvider">
<providers>
<add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" />
</providers>
</membership>
<roleManager defaultProvider="ClientRoleProvider" enabled="true">
<providers>
<add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400" />
</providers>
</roleManager>
</system.web>
</configuration>
-3
View File
@@ -1116,9 +1116,6 @@ namespace IOB_MAN
{
try
{
//Task result = checkProcessStatusAsync();
//result.Wait();
Task result = Task.Run(() => checkProcessStatusAsync().ConfigureAwait(false));
result.Wait();
}
+89
View File
@@ -0,0 +1,89 @@
namespace IOB_UT_NEXT
{
public class BitConditionCheck
{
#region Public Constructors
/// <summary>
/// Inizializza un oggetto da usare per testing bit condition
/// </summary>
/// <param name="keyName">Nome della chiave registrata</param>
/// <param name="rawConf">Configurazione nel formato BaseAddr.BitNum=ValOk</param>
public BitConditionCheck(string keyName, string rawConf)
{
Logging.Instance.Info($"Init BitConditionCheck | {keyName} | {rawConf}");
KeyName = keyName;
RawVal = rawConf;
string sVal = "";
int valDecoded = 0;
// check preliminare
if (rawConf.Contains(".") && rawConf.Contains("="))
{
// splitto per "="...
var splitCond = rawConf.Split('=');
sVal = splitCond[1];
int.TryParse(sVal, out valDecoded);
ValOk = valDecoded;
// il restante splitto per "."
var splitMem = splitCond[0].Split('.');
// BaseAddr
sVal = splitMem[0];
int.TryParse(sVal, out valDecoded);
BaseAddr = valDecoded;
// BitNum
sVal = splitMem[1];
int.TryParse(sVal, out valDecoded);
BitNum = valDecoded;
}
}
/// <summary>
/// Inizializza un oggetto fake/empty
/// </summary>
public BitConditionCheck()
{
Logging.Instance.Info("Init empty BitConditionCheck");
}
/// <summary>
/// Inizializza un oggetto solo per key
/// </summary>
/// <param name="keyName">Nome della chiave registrata</param>
public BitConditionCheck(string keyName)
{
Logging.Instance.Info($"Init BitConditionCheck | {keyName}");
KeyName = keyName;
}
#endregion Public Constructors
#region Public Properties
/// <summary>
/// Indirizzo base x memoria da testare come bit condition
/// </summary>
public int BaseAddr { get; set; } = 0;
/// <summary>
/// Numero bit da impiegare
/// </summary>
public int BitNum { get; set; } = 0;
/// <summary>
/// Valore chiave
/// </summary>
public string KeyName { get; set; } = "";
/// <summary>
/// Valore raw decodificato
/// </summary>
public string RawVal { get; set; } = "";
/// <summary>
/// Valore target che porta a condizione OK = true
/// </summary>
public int ValOk { get; set; } = 0;
#endregion Public Properties
}
}
+181
View File
@@ -0,0 +1,181 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static IOB_UT_NEXT.CustomObj;
namespace IOB_UT_NEXT
{
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
public class CustomObj
{
public class ArtRow
{
#region Public Properties
[Description("Matricola_articolo")]
public string Matricola { get; set; } = "";
[Description("Articolo")]
//[Display(Name = "Articolo", Order = 1)]
public string Articolo { get; set; } = "";
[Description("Identificazione")]
//[Display(Name = "Identificazione", Order = 2)]
public string Descrizione { get; set; } = "";
[Description("Peso_teorico_linea1[ton]")]
public int Peso_01 { get; set; } = 0;
[Description("Peso_teorico_linea2[ton]")]
public int Peso_02 { get; set; } = 0;
[Description("Peso_teorico_linea3[ton]")]
public int Peso_03 { get; set; } = 0;
[Description("Peso_teorico_linea4[ton]")]
public int Peso_04 { get; set; } = 0;
[Description("Pos. Carrello 1[mm]")]
public int PosizCarrello_01 { get; set; } = 0;
[Description("Pos. Carrello 2[mm]")]
public int PosizCarrello_02 { get; set; } = 0;
[Description("Pos. Carrello 3[mm]")]
public int PosizCarrello_03 { get; set; } = 0;
[Description("Pos. Carrello 4[mm]")]
public int PosizCarrello_04 { get; set; } = 0;
[Description("Limitazione_velocita_sollevamento[%]")]
//[Display(Name = "Limitazione_velocita_sollevamento[%]", Order = 3)]
public int LimiteVel { get; set; } = 100;
#endregion Public Properties
}
public class JobRow
{
#region Public Properties
[Description("Matricola")]
public string Matricola { get; set; } = "";
[Description("Commessa")]
public string Commessa { get; set; } = "";
[Description("Articolo")]
public string Articolo { get; set; } = "";
[Description("Identificazione")]
public string Descrizione { get; set; } = "";
[Description("Data inserimento")]
public string DataIns { get; set; } = "";
[Description("Ora inserimento")]
public string OraIns { get; set; } = "";
[Description("Lavorazione")]
public string Lavorazione { get; set; } = "";
#endregion Public Properties
}
public partial class AnagArticoli
{
public string CodArticolo { get; set; }
public string DescArticolo { get; set; }
public string Disegno { get; set; }
public string Tipo { get; set; }
public string Azienda { get; set; }
}
public class PODLModel
{
public int IdxPromessa { get; set; } = 0;
public string KeyRichiesta { get; set; } = "";
public string KeyBCode { get; set; } = "";
public bool Attivabile { get; set; } = false;
public int IdxOdl { get; set; } = 0;
public string CodArticolo { get; set; } = "";
public string CodGruppo { get; set; } = "";
public string IdxMacchina { get; set; }
public int NumPezzi { get; set; } = 1;
public decimal Tcassegnato { get; set; } = 1;
public DateTime? DueDate { get; set; }
public int Priorita { get; set; } = 1;
public int PzPallet { get; set; } = 1;
public string Note { get; set; } = "";
public string CodCli { get; set; } = "";
public DateTime InsertDate { get; set; } = DateTime.Now;
public string CodFase
{
get
{
string answ = "*";
var allData = KeyRichiesta.Split('_');
if (allData.Length > 0)
{
answ = allData[0];
}
return answ;
}
}
}
public class DossiersModel
{
public int IdxDossier { get; set; } = 0;
public string DataType { get; set; } = "";
public DateTime DtRif { get; set; } = DateTime.Now;
public string IdxMacchina { get; set; } = "";
public int IdxODL { get; set; } = 0;
public string CodArticolo { get; set; } = "";
public string Valore { get; set; } = "";
}
public class DossierFluxLogDTO
{
public List<FluxLog> ODL { get; set; } = new List<FluxLog>();
}
public class FluxLog
{
public string IdxMacchina { get; set; }
public DateTime dtEvento { get; set; }
public string CodFlux { get; set; }
public string Valore { get; set; } = "";
public string ValoreEdit { get; set; } = "";
public int Cnt { get; set; }
}
public partial class ListVal
{
public string value { get; set; }
public string label { get; set; }
}
}
}
+47
View File
@@ -0,0 +1,47 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
namespace IOB_UT_NEXT
{
public class DataExport
{
/// <summary>
/// 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="writeHeader">Indica se scrivere header ad inizio CSV</param>
/// <param name="separator">Separatore da impiegare (default ";")</param>
/// <returns></returns>
public static bool SaveToCsv<T>(List<T> reportData, string path, bool writeHeader, char separator = ';')
{
bool answ = false;
var lines = new List<string>();
try
{
IEnumerable<PropertyDescriptor> props = TypeDescriptor.GetProperties(typeof(T)).OfType<PropertyDescriptor>();
var elencoValori = props.ToList();
var header = string.Join($"{separator}", props.ToList().Select(x => !string.IsNullOrEmpty(x.Description) ? x.Description : x.Name));
var fieldList = string.Join($"{separator}", props.ToList().Select(x => x.Name));
if (writeHeader)
{
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;
}
catch
{ }
return answ;
}
}
}
+70 -2
View File
@@ -18,6 +18,27 @@ namespace IOB_UT_NEXT
OR
}
/// <summary>
/// Modalità di calcolo tra serie di valori
/// </summary>
public enum calcMode
{
/// <summary>
/// NEssun processing
/// </summary>
None = 0,
/// <summary>
/// somma dei valori
/// </summary>
sum,
/// <summary>
/// produttoria
/// </summary>
prod
}
/// <summary>
/// Elenco MODI CNC
/// </summary>
@@ -174,12 +195,25 @@ namespace IOB_UT_NEXT
public enum MachineSetupMode
{
ND = 0,
/// <summary>
/// Modalità Mecolpress (3 parametri IN, se variati --> porto a 1 la variabile di controllo)
/// Modalità Mecolpress (3 parametri IN, se variati --&gt; porto a 1 la variabile di controllo)
/// </summary>
MECOLPRESS = 1
}
/// <summary>
/// Tipo di memoria Modbus
/// </summary>
public enum modbusMemType
{
Coil = 0,
DiscreteInput = 1,
NotDefined = 2,
InputRegister = 3,
HoldingRegister = 4
}
/// <summary>
/// StFlag32: set di 32 bit (4 word) contente semaforo di variabili
/// </summary>
@@ -313,6 +347,11 @@ namespace IOB_UT_NEXT
/// </summary>
MODBUS_TCP_CENTERFRIGO,
/// <summary>
/// Adapter modbus (+ file) x FIMAT (Tenditalia)
/// </summary>
MODBUS_TCP_FIMAT,
/// <summary>
/// Adapter ModBus TCP versione HAM (Pizzaferri)
/// </summary>
@@ -323,6 +362,26 @@ namespace IOB_UT_NEXT
/// </summary>
MODBUS_TCP_HELPI,
/// <summary>
/// Adapter Modubus TCP versione IMAX Aeromacchine (Jetco)
/// </summary>
MODBUS_TCP_IMAS_AEROMEC,
/// <summary>
/// Adapter Modubus TCP versione Rimor (IMI Remosa)
/// </summary>
MODBUS_TCP_RIMOR,
/// <summary>
/// Adapter Modubus TCP versione Saim (Giacovelli)
/// </summary>
MODBUS_TCP_SAIM,
/// <summary>
/// Adapter Modubus TCP versione Zetapack (Giacovelli)
/// </summary>
MODBUS_TCP_ZETAPACK,
/// <summary>
/// Adapter MTConnect
/// </summary>
@@ -363,6 +422,11 @@ namespace IOB_UT_NEXT
/// </summary>
OpcUaEwonMecolpress,
/// <summary>
/// Adapter OPC-UA per IMAS Aeromec / Jetco
/// </summary>
OpcUaImasAeromec,
/// <summary>
/// Adapter MBH (es Cimolai)
/// </summary>
@@ -398,6 +462,11 @@ namespace IOB_UT_NEXT
/// </summary>
OpcUaSiemensOMP,
/// <summary>
/// Adapter OPC-UA Ulma (packaging, Giacovelli)
/// </summary>
OpcUaUlma,
/// <summary>
/// Adapter OSAI CNDEX (Cndex)
/// </summary>
@@ -524,5 +593,4 @@ namespace IOB_UT_NEXT
/// </summary>
ULog
}
}
+1 -1
View File
@@ -104,7 +104,7 @@ namespace IOB_UT_NEXT
#region Public Fields
/// <summary>
/// Array delel sessioni attive
/// Array delle sessioni attive
/// </summary>
public Dictionary<int, Session> ActiveSessions = new Dictionary<int, Session>();
+114
View File
@@ -0,0 +1,114 @@
using Newtonsoft.Json;
using System;
using System.Diagnostics;
using System.IO;
namespace IOB_UT_NEXT
{
public class FileProcMan
{
#region Public Constructors
public FileProcMan(string archiveDir, string convertDir, string toolDir, string exeFileName, string refConfFileName, string sheetName)
{
this.archDir = archiveDir;
this.convDir = convertDir;
this.confFileNameOut = "conf.json";
this.baseDir = toolDir;
this.exeName = exeFileName;
this.sheetName = sheetName;
appPath = Path.Combine(baseDir, exeName);
// leggo file di conf base
string refConfFile = Path.Combine(baseDir, refConfFileName);
this.refConf = File.ReadAllText(refConfFile);
}
#endregion Public Constructors
#region Public Methods
/// <summary>
/// Processa il singolo file e riporta tempo esecuzione
/// </summary>
/// <returns></returns>
public TimeSpan doProcess(string fPath, int idxODL)
{
TimeSpan outVal = new TimeSpan();
Stopwatch sw = new Stopwatch();
// preparo file conf
createConfFile(fPath, idxODL);
// avvio processing
Console.WriteLine("calling ext app with args:");
Console.WriteLine($"{appPath} {confFileNameOut}");
Console.WriteLine();
ProcessStartInfo psi = new ProcessStartInfo
{
FileName = appPath,
Arguments = $"{confFileNameOut}",
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 archDir = "";
protected string baseDir = "";
protected string confFileNameOut = "";
protected string convDir = "";
protected string exeName = "";
protected string refConf = "";
protected string sheetName = "";
#endregion Protected Fields
#region Private Methods
private void createConfFile(string item, int idxOdl)
{
string outFileName = Path.GetFileName(item).Replace("xlsx", "json");
string rawContent = String.Copy(refConf);
rawContent = rawContent.Replace("{{ArchiveDir}}", fixJsonDir(archDir));
rawContent = rawContent.Replace("{{ConvertDir}}", fixJsonDir(convDir));
rawContent = rawContent.Replace("{{FileInPath}}", fixJsonDir(item));
rawContent = rawContent.Replace("{{FileOutPath}}", outFileName);
rawContent = rawContent.Replace("{{TargetSheetName}}", sheetName);
rawContent = rawContent.Replace("987654321", $"{idxOdl}");
// calcolo nome file conf specifico
confFileNameOut = $"conf_{outFileName}";
File.WriteAllText(confFileNameOut, rawContent);
}
protected string fixJsonDir(string origPath)
{
string answ = JsonConvert.ToString(origPath);
answ = answ.Substring(1, answ.Length - 2);
return answ;
}
#endregion Private Methods
}
}
+10 -4
View File
@@ -78,8 +78,8 @@
<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>
<Reference Include="MapoSDK, Version=6.14.2209.916, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\MapoSDK.6.14.2209.916\lib\MapoSDK.dll</HintPath>
<Reference Include="MapoSDK, Version=6.14.2211.3016, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\MapoSDK.6.14.2211.3016\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>
@@ -91,10 +91,10 @@
<HintPath>..\packages\NLog.4.7.13\lib\net45\NLog.dll</HintPath>
</Reference>
<Reference Include="Pipelines.Sockets.Unofficial, Version=1.0.0.0, Culture=neutral, PublicKeyToken=42ea0a778e13fbe2, processorArchitecture=MSIL">
<HintPath>..\packages\Pipelines.Sockets.Unofficial.2.2.0\lib\net461\Pipelines.Sockets.Unofficial.dll</HintPath>
<HintPath>..\packages\Pipelines.Sockets.Unofficial.2.2.2\lib\net461\Pipelines.Sockets.Unofficial.dll</HintPath>
</Reference>
<Reference Include="StackExchange.Redis, Version=2.0.0.0, Culture=neutral, PublicKeyToken=c219ff1ca8c2ce46, processorArchitecture=MSIL">
<HintPath>..\packages\StackExchange.Redis.2.2.4\lib\net461\StackExchange.Redis.dll</HintPath>
<HintPath>..\packages\StackExchange.Redis.2.6.80\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">
@@ -141,8 +141,14 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="FileProcMan.cs" />
<Compile Include="IntConditionCheck.cs" />
<Compile Include="BitConditionCheck.cs" />
<Compile Include="CustomObj.cs" />
<Compile Include="DataExport.cs" />
<Compile Include="Eurom63.cs" />
<Compile Include="IobWinStatus.cs" />
<Compile Include="plcMemMapExt.cs" />
<Compile Include="TCMan.cs" />
<Compile Include="TimeUtils.cs" />
<Compile Include="ToMapo.cs" />
+97
View File
@@ -0,0 +1,97 @@
namespace IOB_UT_NEXT
{
public class IntConditionCheck
{
#region Public Constructors
/// <summary>
/// Inizializza un oggetto da usare per testing INT condition
/// </summary>
/// <param name="keyName">Nome della chiave registrata</param>
/// <param name="rawConf">Configurazione nel formato BaseAddr|IntIndex=ValOk</param>
public IntConditionCheck(string keyName, string rawConf)
{
Logging.Instance.Info($"Init IntConditionCheck | {keyName} | {rawConf}");
KeyName = keyName;
RawVal = rawConf;
string sVal = "";
int valDecoded = 0;
// check preliminare
if (rawConf.Contains("|") && rawConf.Contains("="))
{
// splitto per "="...
var splitCond = rawConf.Split('=');
sVal = splitCond[1];
// i valori INT sono "," separated
var splitValOk = sVal.Split(',');
ValOk = new int[splitValOk.Length];
int i = 0;
foreach (var item in splitValOk)
{
int.TryParse(item, out valDecoded);
ValOk[i] = valDecoded;
i++;
}
// il restante splitto per "."
var splitMem = splitCond[0].Split('|');
// BaseAddr
sVal = splitMem[0];
int.TryParse(sVal, out valDecoded);
BaseAddr = valDecoded;
// BitNum
sVal = splitMem[1];
int.TryParse(sVal, out valDecoded);
IntIndex = valDecoded;
}
}
/// <summary>
/// Inizializza un oggetto fake/empty
/// </summary>
public IntConditionCheck()
{
Logging.Instance.Info("Init empty IntConditionCheck");
}
/// <summary>
/// Inizializza un oggetto solo per key
/// </summary>
/// <param name="keyName">Nome della chiave registrata</param>
public IntConditionCheck(string keyName)
{
Logging.Instance.Info($"Init IntConditionCheck | {keyName}");
KeyName = keyName;
}
#endregion Public Constructors
#region Public Properties
/// <summary>
/// Indirizzo base x memoria da testare come iny condition
/// </summary>
public int BaseAddr { get; set; } = 0;
/// <summary>
/// Indirizzo base x memoria da testare come int condition (0/1) dell'int[], 2=DWord
/// </summary>
public int IntIndex { get; set; } = 0;
/// <summary>
/// Valore chiave
/// </summary>
public string KeyName { get; set; } = "";
/// <summary>
/// Valore raw decodificato
/// </summary>
public string RawVal { get; set; } = "";
/// <summary>
/// Valore target che porta a condizione OK = true
/// </summary>
public int[] ValOk { get; set; } = new int[1];
#endregion Public Properties
}
}
+1
View File
@@ -815,4 +815,5 @@ namespace IOB_UT_NEXT
#endregion Public Properties
}
}
+52 -3
View File
@@ -166,7 +166,6 @@ namespace IOB_UT_NEXT
/// </summary>
public void setupData()
{
// inizializzo vettore valore allarmi x banco int8 x iniziare
alarmsState = new uint[size];
alarmsMask = new uint[size];
@@ -260,6 +259,11 @@ namespace IOB_UT_NEXT
/// </summary>
public string keyEStop { get; set; } = "";
/// <summary>
/// Nome variabile x ExeMode
/// </summary>
public string keyExeMode { get; set; } = "";
/// <summary>
/// Nome variabile x pezzi FATTI
/// </summary>
@@ -285,6 +289,16 @@ namespace IOB_UT_NEXT
/// </summary>
public string keyRunMode { get; set; } = "";
/// <summary>
/// Aree di memoria lettura
/// </summary>
public Dictionary<string, dataConfTSVC> mMapRead { get; set; } = new Dictionary<string, dataConfTSVC>();
/// <summary>
/// Aree di memoria scrittura
/// </summary>
public Dictionary<string, dataConf> mMapWrite { get; set; } = new Dictionary<string, dataConf>();
/// <summary>
/// Dictionary dei nomi da cercare come "endsWith" a cui applicare la soglia indicata
/// </summary>
@@ -308,6 +322,19 @@ namespace IOB_UT_NEXT
#endregion Public Properties
}
/// <summary>
/// Oggetto x processing valori (elenco valori e modalità)
/// </summary>
public class calcConf
{
#region Public Properties
public calcMode calcMode { get; set; } = calcMode.None;
public List<string> listVal { get; set; } = new List<string>();
#endregion Public Properties
}
/// <summary>
/// Classe per rappresentare oggetti chiave/valore target x controlo condizioni multiple
/// </summary>
@@ -483,6 +510,22 @@ namespace IOB_UT_NEXT
/// </summary>
public uint BrowseValue { get; set; } = 5001;
/// <summary>
/// Lista valori calcolati/derivati da processare
/// </summary>
public Dictionary<string, calcConf> calcValues { get; set; } = new Dictionary<string, calcConf>();
/// <summary>
/// Numero minimo di secondi di durata di uno status
/// </summary>
public int minSecStatusDuration { get; set; } = 1;
/// <summary>
/// Numero minimo di secondi di attesa finale (es prima di chiedere chiusura ODL)
/// </summary>
public int minSecFinalWait { get; set; } = 30;
/// <summary>
/// Struttura dati x check condizione Contapezzi Abilitato (se vuoto = sempre abilitato)
/// </summary>
@@ -538,17 +581,23 @@ namespace IOB_UT_NEXT
/// </summary>
public List<string> filterItemsNodeId { get; set; } = new List<string>();
/// <summary>
/// Elenco item flux da FILTRARE per chiave tradotta/VALORE
/// es: Cimolai / Baglietto, RunModeVal NON VOGLIO inviare quando il valore è 0
/// </summary>
public Dictionary<string, List<string>> fluxLogKeyValVeto { get; set; } = new Dictionary<string, List<string>>();
public UserIdent Identity { get; set; } = new UserIdent();
/// <summary>
/// Aree di memoria lettura
/// </summary>
public Dictionary<string, dataConfTSVC> mMapRead { get; set; } = new Dictionary<string, dataConfTSVC>();
public new Dictionary<string, dataConfTSVC> mMapRead { get; set; } = new Dictionary<string, dataConfTSVC>();
/// <summary>
/// Aree di memoria scrittura
/// </summary>
public Dictionary<string, dataConf> mMapWrite { get; set; } = new Dictionary<string, dataConf>();
public new Dictionary<string, dataConf> mMapWrite { get; set; } = new Dictionary<string, dataConf>();
/// <summary>
/// Elenco item RAW sottoscritti e relative configurazioni di decodifica da byte[]
+90 -14
View File
@@ -43,13 +43,6 @@ namespace IOB_UT_NEXT
#endregion Public Fields
#if false
/// <summary>
/// Oggetto connessione REDIS
/// </summary>
public static RedisIobCache redisMan = new RedisIobCache();
#endif
#region Public Properties
/// <summary>
@@ -73,6 +66,27 @@ 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>
@@ -198,8 +212,11 @@ namespace IOB_UT_NEXT
int pauseSendMSec = nextPauseSendMSec;
dtVetoSend = DateTime.Now.AddMilliseconds(pauseSendMSec);
// log ogni
lg.Error($"Errore in callURL verso {URL}: impostato attesa di {pauseSendMSec} ms prima della prossima chiamata{Environment.NewLine}Eccezione:{Environment.NewLine}{exc}");
// controllo log permesso...
if (logValuePermit(URL))
{
lg.Error($"Errore in callURL verso {URL}: impostato attesa di {pauseSendMSec} ms prima della prossima chiamata{Environment.NewLine}Eccezione:{Environment.NewLine}{exc}");
}
}
// restituisco valore!
return answ;
@@ -232,7 +249,11 @@ namespace IOB_UT_NEXT
answ = clientPayload.UploadString(URL, payload);
if (answ != "OK")
{
lg.Error($"Invio dati fallito, ricevuto messaggio [{answ}]:{Environment.NewLine}- URL{Environment.NewLine}{URL}{Environment.NewLine}- payload{Environment.NewLine}{payload}");
// controllo log permesso...
if (logValuePermit($"{URL}|[{answ}]"))
{
lg.Error($"Invio dati fallito, ricevuto messaggio [{answ}]:{Environment.NewLine}- URL{Environment.NewLine}{URL}{Environment.NewLine}- payload{Environment.NewLine}{payload}");
}
}
}
catch (Exception exc)
@@ -240,8 +261,11 @@ namespace IOB_UT_NEXT
// imposto veto
int pauseSendMSec = nextPauseSendMSec;
dtVetoSend = DateTime.Now.AddMilliseconds(pauseSendMSec);
// log ogni
lg.Error($"Errore in callURL con PAYLOAD verso {URL}: impostato attesa di {pauseSendMSec} ms prima della prossima chiamata. Dump Payload:{Environment.NewLine}{payload}{Environment.NewLine}Eccezione:{Environment.NewLine}{exc}");
// controllo log permesso...
if (logValuePermit(URL))
{
lg.Error($"Errore in callURL con PAYLOAD verso {URL}: impostato attesa di {pauseSendMSec} ms prima della prossima chiamata. Dump Payload:{Environment.NewLine}{payload}{Environment.NewLine}Eccezione:{Environment.NewLine}{exc}");
}
}
// restituisco valore!
return answ;
@@ -352,7 +376,11 @@ namespace IOB_UT_NEXT
}
catch (Exception exc)
{
lg.Error(exc);
// controllo log permesso...
if (logValuePermit("GetIP"))
{
lg.Error(exc);
}
}
return sIpAddr;
}
@@ -437,7 +465,11 @@ namespace IOB_UT_NEXT
}
catch (Exception exc)
{
lg.Error(exc);
// controllo log permesso...
if (logValuePermit("pingAddr"))
{
lg.Error(exc);
}
}
return answ;
}
@@ -718,6 +750,50 @@ namespace IOB_UT_NEXT
protected static WebClientWT clientPayload { get; set; }
#endregion Protected Properties
#region Private Fields
/// <summary>
/// Dizionario dei valori bloccati x evitare log eccessivo
/// </summary>
private static Dictionary<string, DateTime> vetoLogError = new Dictionary<string, DateTime>();
/// <summary>
/// Periodo di veto log in minuti
/// </summary>
private static int vetoPeriodMin = 30;
#endregion Private Fields
#region Private Methods
/// <summary>
/// Verifica se il log di un dato errore sia permesso
/// </summary>
/// <param name="logKey">ID del valore log da loggare/verificare</param>
/// <returns></returns>
private static bool logValuePermit(string logKey)
{
bool doLog = false;
if (vetoLogError.ContainsKey(logKey))
{
// verifico se veto scaduto...
if (DateTime.Now > vetoLogError[logKey])
{
doLog = true;
vetoLogError[logKey] = DateTime.Now.AddMinutes(vetoPeriodMin);
}
}
else
{
doLog = true;
vetoLogError.Add(logKey, DateTime.Now.AddMinutes(vetoPeriodMin));
}
return doLog;
}
#endregion Private Methods
}
/// <summary>
+3 -3
View File
@@ -1,12 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="MapoSDK" version="6.14.2209.916" targetFramework="net462" />
<package id="MapoSDK" version="6.14.2211.3016" targetFramework="net462" />
<package id="Microsoft.Bcl.AsyncInterfaces" version="6.0.0" targetFramework="net462" />
<package id="Newtonsoft.Json" version="13.0.1" targetFramework="net462" />
<package id="NLog" version="4.7.13" targetFramework="net462" />
<package id="Pipelines.Sockets.Unofficial" version="2.2.0" 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.2.4" targetFramework="net462" />
<package id="StackExchange.Redis" version="2.6.80" 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.IO.Compression" version="4.3.0" targetFramework="net462" />
+17
View File
@@ -0,0 +1,17 @@
using MapoSDK;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace IOB_UT_NEXT
{
public class plcMemMapExt : plcMemMap
{
public Dictionary<string, string> optMemPar { get; set; } = new Dictionary<string, string>();
public Dictionary<string, int> fileDecod { get; set; } = new Dictionary<string, int>();
}
}
+244 -96
View File
@@ -3,10 +3,12 @@ using MapoSDK;
using Newtonsoft.Json;
using NLog;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Threading;
using System.Windows.Forms;
@@ -74,7 +76,7 @@ namespace IOB_WIN_NEXT
LogManager.ReconfigExistingLoggers();
lg = LogManager.GetCurrentClassLogger();
displayTaskAndLog("MainForm Starting");
displayTaskAndLog("AdapterForm Starting");
// se abilitato autoload conf leggo file corretto...
if (utils.CRB("autoLoadConf"))
@@ -116,24 +118,39 @@ namespace IOB_WIN_NEXT
// Start timer periodico comunicazione
gather.Interval = timerIntMs;
gather.Enabled = true;
displayTaskAndLog(string.Format("Main timer set: {0}ms", gather.Interval));
displayTaskAndLog($"Main timer set: {gather.Interval}ms", true);
// Start timer periodico interfaccia
displTimer.Interval = utils.CRI("timerIntMs");
displTimer.Enabled = true;
displayTaskAndLog("Program Running");
displayTaskAndLog("Program Running", true);
// check oggetto not null
if (iobObj != null)
{
//verifico sia da inviare, ovvero non ci sia veto redis (da 12h..)
bool needSend = false;
string redKey = redisMan.redHash($"IOB:SendReboot:{CurrIOB}");
var rawVal = redisMan.getRSV(redKey);
// verifico uguaglianza MD5...
if (string.IsNullOrEmpty(rawVal))
{
needSend = true;
// calcolo attesa con errore random -/+ 10%
int ttlSec = 60 * 60 * 6 * rndGen.Next(900, 1100) / 1000;
redisMan.setRSV(redKey, $"{DateTime.Now}", ttlSec);
}
try
{
// verifico server online...
if (iobObj.checkServerAlive)
{
// segnalo reboot (programma)...
IobGeneric.callUrl(iobObj.urlReboot, true);
if (needSend)
{
// segnalo reboot (programma)...
IobGeneric.callUrl(iobObj.urlReboot, true);
}
}
else
{
@@ -145,7 +162,7 @@ namespace IOB_WIN_NEXT
lgError(string.Format("AdapterForm: EXCEPTION in fase di chiamata URL di reboot:{0}{1}{2}", iobObj.urlReboot, Environment.NewLine, exc));
}
}
displayTaskAndLog("Main Form OK");
displayTaskAndLog("Main Form OK", true);
}
#endregion Public Constructors
@@ -257,19 +274,20 @@ namespace IOB_WIN_NEXT
/// </summary>
public string dataMonitor_0
{
get
{
return dMonValues[0];
}
set
{
DateTime adesso = DateTime.Now;
// salvo nell'array...
dMonValues[0] = value;
// salvo in cima alla lista...
dMonValues[0].Insert(0, value);
// se supero limite --> trim!
if (dMonValues[0].Count > nLine2show)
{
dMonValues[0] = dMonValues[0].Take(nLine2show).ToList();
}
if (dMonDisplVetoVeto[0] < adesso)
{
// se scaduto veto --> display!
lblRawData.Text = value;
lblRawData.Text = String.Join(Environment.NewLine, dMonValues[0]);
// update veto!
dMonDisplVetoVeto[0] = adesso.AddMilliseconds(delayShowLogMs);
}
@@ -281,19 +299,20 @@ namespace IOB_WIN_NEXT
/// </summary>
public string dataMonitor_1
{
get
{
return dMonValues[1];
}
set
{
DateTime adesso = DateTime.Now;
// salvo nell'array...
dMonValues[1] = value;
dMonValues[1].Insert(0, value);
// se supero limite --> trim!
if (dMonValues[1].Count > nLine2show)
{
dMonValues[1] = dMonValues[1].Take(nLine2show).ToList();
}
if (dMonDisplVetoVeto[1] < adesso)
{
// se scaduto veto --> display!
lblOutMessage.Text = value;
lblOutMessage.Text = String.Join(Environment.NewLine, dMonValues[1]);
// update veto!
dMonDisplVetoVeto[1] = adesso.AddMilliseconds(delayShowLogMs);
}
@@ -305,19 +324,20 @@ namespace IOB_WIN_NEXT
/// </summary>
public string dataMonitor_2
{
get
{
return dMonValues[2];
}
set
{
DateTime adesso = DateTime.Now;
// salvo nell'array...
dMonValues[2] = value;
dMonValues[2].Insert(0, value);
// se supero limite --> trim!
if (dMonValues[2].Count > nLine2show)
{
dMonValues[2] = dMonValues[2].Take(nLine2show).ToList();
}
if (dMonDisplVetoVeto[2] < adesso)
{
// se scaduto veto --> display!
lblOutMessage2.Text = value;
lblOutMessage2.Text = String.Join(Environment.NewLine, dMonValues[2]);
// update veto!
dMonDisplVetoVeto[2] = adesso.AddMilliseconds(delayShowLogMs);
}
@@ -329,19 +349,20 @@ namespace IOB_WIN_NEXT
/// </summary>
public string dataMonitor_3
{
get
{
return dMonValues[3];
}
set
{
DateTime adesso = DateTime.Now;
// salvo nell'array...
dMonValues[3] = value;
dMonValues[3].Insert(0, value);
// se supero limite --> trim!
if (dMonValues[3].Count > nLine2show)
{
dMonValues[3] = dMonValues[3].Take(nLine2show).ToList();
}
if (dMonDisplVetoVeto[3] < adesso)
{
// se scaduto veto --> display!
lblOutMessage3.Text = value;
lblOutMessage3.Text = String.Join(Environment.NewLine, dMonValues[3]);
// update veto!
dMonDisplVetoVeto[3] = adesso.AddMilliseconds(delayShowLogMs);
}
@@ -444,13 +465,21 @@ namespace IOB_WIN_NEXT
{
try
{
logWatchString = limitLine2show($"{value}{Environment.NewLine}{logWatchString}");
// aggiungo in testa la NUOVA stringa (eventualmente multiline)
logWatchString.Enqueue(value);
// se supero limite --> trim!
string sTemp = "";
while (logWatchString.Count > nLine2show)
{
logWatchString.TryDequeue(out sTemp);
//logWatchString = logWatchString.Take(nLine2show).ToList();
}
DateTime adesso = DateTime.Now;
if (logWatchWriteVeto < adesso)
{
this.UIThread(delegate
{
lblLogfile.Text = logWatchString;
lblLogfile.Text = string.Join(Environment.NewLine, logWatchString);
lblLogfile.Refresh();
});
@@ -595,7 +624,13 @@ namespace IOB_WIN_NEXT
{
try
{
lblTaskLog.Text = limitLine2show($"{value}{Environment.NewLine}{lblTaskLog.Text}");
logTaskString.Insert(0, value);
// se supero limite --> trim!
if (logTaskString.Count > nLine2show)
{
logTaskString = logTaskString.Take(nLine2show).ToList();
}
lblTaskLog.Text = string.Join(Environment.NewLine, logTaskString);
lblTaskLog.Refresh();
}
catch (Exception exc)
@@ -674,10 +709,10 @@ namespace IOB_WIN_NEXT
/// <summary>
/// Avvio l'adapter
/// </summary>
/// <param name="resetQueue">indica se sia richeisto di SVUOTARE le code delel info</param>
/// <param name="resetQueue">indica se sia richeisto di SVUOTARE le code delle info</param>
public void avviaAdapter(bool resetQueue)
{
displayTaskAndLog("Adapter starting");
displayTaskAndLog("Adapter starting", true);
// se NON sta girando...
if (!iobObj.adpRunning)
{
@@ -689,21 +724,25 @@ namespace IOB_WIN_NEXT
stop.Enabled = true;
restart.Enabled = true;
displayTaskAndLog("Start Timers");
displayTaskAndLog("Start Timers", true);
// inizializzo contatori fast/mid/slow
fastCount = utils.CRI("fastCount");
normCount = utils.CRI("normCount");
slowCount = utils.CRI("slowCount");
verySlowCount = utils.CRI("verySlowCount");
displayTaskAndLog("Adapter Running...");
sendStartFLog = utils.CRB("sendStartFLog");
displayTaskAndLog("Adapter Running...", true);
// init max queue
maxEvQueue = 1;
maxFlQueue = 1;
try
{
// segnalo reboot (programma)...
iobObj.QueueFLog.Enqueue(iobObj.qEncodeFLog("IOB-STATUS", "IOB Adapter Started"));
if (sendStartFLog)
{
// segnalo reboot (programma)...
iobObj.QueueFLog.Enqueue(iobObj.qEncodeFLog("IOB-STATUS", "IOB Adapter Started"));
}
}
catch (Exception exc)
{
@@ -712,7 +751,7 @@ namespace IOB_WIN_NEXT
}
else
{
displayTaskAndLog("Adapter STILL Running...");
displayTaskAndLog("Adapter STILL Running...", true);
}
}
@@ -720,11 +759,19 @@ namespace IOB_WIN_NEXT
/// mostra un testo sulla status bar + LOG
/// </summary>
/// <param name="txt2show"></param>
public void displayTaskAndLog(string txt2show)
/// <param name="forceDebug"></param>
public void displayTaskAndLog(string txt2show, bool forceDebug = false)
{
lblStatus.Text = txt2show;
lblStatus.Invalidate();
lgInfo(txt2show);
if (forceDebug)
{
lgDebug(txt2show);
}
else
{
lgInfo(txt2show);
}
}
/// <summary>
@@ -733,33 +780,14 @@ namespace IOB_WIN_NEXT
/// <param name="tryRestart">
/// determina se si debba tentare riavvio automatico (per caduta connessione)
/// </param>
/// <param name="forceDequeue">indica se sia richeisto di SVUOTARE le code delel info</param>
/// <param name="forceDequeue">indica se sia richeisto di SVUOTARE le code delle info</param>
/// <param name="updateForm">indica se aggiornare la form prima di fermare</param>
public void fermaAdapter(bool tryRestart, bool forceDequeue, bool updateForm)
{
lgInfo($"fermaAdapter | {tryRestart} | {forceDequeue} | {updateForm}");
fermaTutto(false, tryRestart, forceDequeue, updateForm);
}
/// <summary>
/// Effettua un trim della stringa al numero max di linee da mostrare a video
/// </summary>
/// <param name="newString"></param>
/// <returns></returns>
public string limitLine2show(string newString)
{
if (!string.IsNullOrEmpty(newString))
{
// se num righe superiore a limite trimmo...
if (newString.Split('\n').Length > nLine2show)
{
//int idx = newString.LastIndexOf('\r');
int idx = newString.LastIndexOf(Environment.NewLine);
newString = newString.Substring(0, idx);
}
}
return newString;
}
/// <summary>
/// Salva su file l'oggetto di persistenza dati
/// </summary>
@@ -785,7 +813,7 @@ namespace IOB_WIN_NEXT
}
else
{
lgInfo("persistenceLayer null, non salvato...");
lgDebug("persistenceLayer null, non salvato...");
}
// abbasso semaforo salvataggio
iobObj.adpSaving = false;
@@ -814,19 +842,23 @@ namespace IOB_WIN_NEXT
// RealTime display
if (!string.IsNullOrWhiteSpace(currDispData.newInData))
{
dataMonitor_0 = limitLine2show($"{currDispData.newInData}{Environment.NewLine}{dataMonitor_0}");
//dataMonitor_0 = limitLine2show($"{currDispData.newInData}{Environment.NewLine}{dataMonitor_0}");
dataMonitor_0 = currDispData.newInData;
}
if (!string.IsNullOrWhiteSpace(currDispData.newSignalData))
{
dataMonitor_1 = limitLine2show($"{currDispData.newSignalData}{Environment.NewLine}{dataMonitor_1}");
//dataMonitor_1 = limitLine2show($"{currDispData.newSignalData}{Environment.NewLine}{dataMonitor_1}");
dataMonitor_1 = currDispData.newSignalData;
}
if (!string.IsNullOrWhiteSpace(currDispData.newFLogData))
{
dataMonitor_3 = limitLine2show($"{currDispData.newFLogData}{Environment.NewLine}{dataMonitor_3}");
//dataMonitor_3 = limitLine2show($"{currDispData.newFLogData}{Environment.NewLine}{dataMonitor_3}");
dataMonitor_3 = currDispData.newFLogData;
}
if (!string.IsNullOrWhiteSpace(currDispData.newUrlCallData))
{
dataMonitor_2 = limitLine2show($"{currDispData.newUrlCallData}{Environment.NewLine}{dataMonitor_2}");
//dataMonitor_2 = limitLine2show($"{currDispData.newUrlCallData}{Environment.NewLine}{dataMonitor_2}");
dataMonitor_2 = currDispData.newUrlCallData;
}
// Bitmap lettura attuale
@@ -874,17 +906,9 @@ namespace IOB_WIN_NEXT
{
this.UIThread(delegate
{
lblOutMessage3.Text = text;
// accoda messaggio in gestione
dataMonitor_3 = text;
});
//if (lblOutMessage3.InvokeRequired)
//{
// var d = new SafeCallDelegate(WriteTextSafe);
// lblOutMessage3.Invoke(d, new object[] { text });
//}
//else
//{
//}
}
#endregion Public Methods
@@ -921,11 +945,26 @@ namespace IOB_WIN_NEXT
/// </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>
@@ -980,7 +1019,7 @@ namespace IOB_WIN_NEXT
/// <summary>
/// array degli oggetti datamonitor da mostrare
/// </summary>
protected Dictionary<int, string> dMonValues { get; set; } = new Dictionary<int, string>();
protected Dictionary<int, List<string>> dMonValues { get; set; } = new Dictionary<int, List<string>>();
/// <summary>
/// Veto a NUOVE scritture in COUNTER...
@@ -988,9 +1027,14 @@ namespace IOB_WIN_NEXT
protected DateTime logCounterVeto { get; set; } = DateTime.Now;
/// <summary>
/// Stringa corrente di log...
/// Lista String da mostrare quale TaskLog corrente...
/// </summary>
protected string logWatchString { get; set; } = "";
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...
@@ -1042,6 +1086,20 @@ namespace IOB_WIN_NEXT
base.Dispose(disposing);
}
/// <summary>
/// Effettua logging DEBUG corretto impostanto anche la variabile IOB prima di scrivere...
/// </summary>
/// <param name="txt2log"></param>
protected void lgDebug(string txt2log)
{
lg.Factory.Configuration.Variables["codIOB"] = this.CurrIOB;
lg.Debug(txt2log);
// salvo anche in logwatcher...
newDisplayData currDispData = new newDisplayData();
currDispData.newLiveLogData = $"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")} | INFO | {txt2log}";
updateFormDisplay(currDispData);
}
/// <summary>
/// Effettua logging ERROR corretto impostanto anche la variabile IOB prima di scrivere...
/// </summary>
@@ -1076,6 +1134,20 @@ namespace IOB_WIN_NEXT
updateFormDisplay(currDispData);
}
/// <summary>
/// Effettua logging TRACE corretto impostanto anche la variabile IOB prima di scrivere...
/// </summary>
/// <param name="txt2log"></param>
protected void lgTrace(string txt2log)
{
lg.Factory.Configuration.Variables["codIOB"] = this.CurrIOB;
lg.Trace(txt2log);
// salvo anche in logwatcher...
newDisplayData currDispData = new newDisplayData();
currDispData.newLiveLogData = $"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")} | TRACE | {txt2log}";
updateFormDisplay(currDispData);
}
/// <summary>
/// Init form (grafica) con helper x testi e varie
/// </summary>
@@ -1107,6 +1179,20 @@ 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);
@@ -1260,6 +1346,7 @@ namespace IOB_WIN_NEXT
/// </summary>
private void closeAdapter()
{
lgDebug("closeAdapter | true | false | true | false");
fermaTutto(true, false, true, false);
}
@@ -1274,7 +1361,7 @@ namespace IOB_WIN_NEXT
/// indica se fermare il timer (gather) principale (solo se non si chiude)
/// </param>
/// <param name="tryRestart">indica se tentare di riconnettersi</param>
/// <param name="forceDequeue">indica se sia richeisto di SVUOTARE le code delel info</param>
/// <param name="forceDequeue">indica se sia richeisto di SVUOTARE le code delle info</param>
/// <param name="updateForm">indica se si debba aggiornare la form (no se si sta chiudendo...)</param>
private void fermaTutto(bool stopTimer, bool tryRestart, bool forceDequeue, bool updateForm)
{
@@ -1290,7 +1377,6 @@ namespace IOB_WIN_NEXT
if (stopTimer)
{
gather.Enabled = false;
iobObj.tryDisconnect();
}
newDisplayData currDispData = new newDisplayData();
@@ -1322,7 +1408,7 @@ namespace IOB_WIN_NEXT
int oldIdx = cmbParamValues.SelectedIndex;
// riassegno e ri-seleziono
cmbParamValues.DataSource = parametri;
cmbParamValues.SelectedIndex = oldIdx >= 0 ? oldIdx : 0; ;
cmbParamValues.SelectedIndex = oldIdx >= 0 ? oldIdx : 0;
}
}
}
@@ -1420,7 +1506,7 @@ namespace IOB_WIN_NEXT
for (int i = 0; i < 4; i++)
{
dMonDisplVetoVeto.Add(i, DateTime.Now);
dMonValues.Add(i, "");
dMonValues.Add(i, new List<string>());
}
}
@@ -1473,7 +1559,7 @@ namespace IOB_WIN_NEXT
kvp = item.Split('=');
optParRead.Add(kvp[0], kvp[1]);
}
lgInfo($"Caricati {optParRead.Count} parametri opzionali da OPTPAR");
lgDebug($"Caricati {optParRead.Count} parametri opzionali da OPTPAR");
}
catch (Exception exc)
{
@@ -1504,7 +1590,7 @@ namespace IOB_WIN_NEXT
TCLambda = Convert.ToDouble(fIni.ReadString("OPTPAR", "TC_LAMBDA", "0.5").Replace(".", ",")),
TCMaxIncrPz = Convert.ToDouble(fIni.ReadString("OPTPAR", "TC_MAX_INCR", "5").Replace(".", ","))
};
lgInfo($"Creato IOBConf!");
lgDebug($"Creato IOBConf!");
// salvo serializzando json... nella folder x Cliente oppure Vendor_Model
string confJson = JsonConvert.SerializeObject(IOBConf, Formatting.Indented);
@@ -1521,10 +1607,10 @@ namespace IOB_WIN_NEXT
// avvio macchina con adapter specificato...
if (utils.CRB("autoStartOnLoad"))
{
displayTaskAndLog("Auto Starting...");
displayTaskAndLog("Auto Starting...", true);
// avvio!
avviaAdapter(chkForceDequeue.Checked);
displayTaskAndLog("Auto Started!");
displayTaskAndLog("Auto Started!", true);
}
}
@@ -1593,6 +1679,11 @@ namespace IOB_WIN_NEXT
start.Enabled = true;
break;
case tipoAdapter.MODBUS_TCP_FIMAT:
iobObj = new IobModbusTCPFimat(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.MODBUS_TCP_HAM:
iobObj = new IobModbusTCPHam(this, IOBConf);
start.Enabled = true;
@@ -1603,6 +1694,26 @@ namespace IOB_WIN_NEXT
start.Enabled = true;
break;
case tipoAdapter.MODBUS_TCP_IMAS_AEROMEC:
iobObj = new IobModbusTCPImaxAeromec(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.MODBUS_TCP_RIMOR:
iobObj = new IobModbusTCPRimor(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.MODBUS_TCP_SAIM:
iobObj = new IobModbusTCPSaim(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.MODBUS_TCP_ZETAPACK:
iobObj = new IobModbusTCPZetapack(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.MTConnect:
iobObj = new IobMTC(this, IOBConf);
start.Enabled = true;
@@ -1644,6 +1755,11 @@ namespace IOB_WIN_NEXT
start.Enabled = true;
break;
case tipoAdapter.OpcUaImasAeromec:
iobObj = new IobOpcUaImas(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.OpcUaMBH:
iobObj = new IobOpcUaMBH(this, IOBConf);
start.Enabled = true;
@@ -1674,6 +1790,11 @@ namespace IOB_WIN_NEXT
start.Enabled = true;
break;
case tipoAdapter.OpcUaUlma:
iobObj = new IobOpcUaUlma(this, IOBConf);
start.Enabled = true;
break;
case tipoAdapter.PingWatchdog:
iobObj = new IobPing(this, IOBConf);
start.Enabled = true;
@@ -1782,10 +1903,36 @@ namespace IOB_WIN_NEXT
// carico i default values su interfaccia
setDefaults();
displayTaskAndLog(string.Format("Caricata conf per adapter {0}", tipoScelto));
displayTaskAndLog($"Caricata conf per adapter {tipoScelto}");
}
}
/// <summary>
/// Verifica se il log di un dato errore sia permesso
/// </summary>
/// <param name="logKey">ID del valore log da loggare/verificare</param>
/// <returns></returns>
private bool logValuePermit(string logKey)
{
bool doLog = false;
if (vetoLogError.ContainsKey(logKey))
{
// verifico se veto scaduto...
if (DateTime.Now > vetoLogError[logKey])
{
doLog = true;
vetoLogError[logKey] = DateTime.Now.AddMinutes(vetoPeriodMin);
}
}
else
{
doLog = true;
vetoLogError.Add(logKey, DateTime.Now.AddMinutes(vetoPeriodMin));
}
return doLog;
}
/// <summary>
/// Fase chiusura Form
/// </summary>
@@ -1793,6 +1940,7 @@ namespace IOB_WIN_NEXT
/// <param name="e"></param>
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
lgTrace("MainForm_FormClosing");
closeAdapter();
}
@@ -1812,7 +1960,7 @@ namespace IOB_WIN_NEXT
/// <param name="e"></param>
private void MainForm_Shown(object sender, EventArgs e)
{
displayTaskAndLog("Main Form SHOWN (Adapter)");
displayTaskAndLog("Main Form SHOWN (Adapter)", true);
}
private void mLoadConf_Click(object sender, EventArgs e)
@@ -1917,13 +2065,13 @@ namespace IOB_WIN_NEXT
{
// faccio stop... SENZA inviare
fermaAdapter(false, false, true);
displayTaskAndLog("RESTARTING: Adapter Stopped");
displayTaskAndLog("RESTARTING: Adapter Stopped", true);
// rileggo INI
loadIniFile(defConfFilePath);
displayTaskAndLog("RESTARTING: Ini File Reloaded");
// faccio start... CON RESET delel code
displayTaskAndLog("RESTARTING: Ini File Reloaded", true);
// faccio start... CON RESET delle code
avviaAdapter(true);
displayTaskAndLog("RESTARTING: Adapter Started");
displayTaskAndLog("RESTARTING: Adapter Started", true);
// resetto i data monitor...
dataMonitor_0 = "";
dataMonitor_1 = "";
+174 -171
View File
@@ -1,174 +1,177 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2" />
</startup>
<appSettings>
<add key="appName" value="IOB-WIN-NEXT" />
<!--<add key="appVers" value="develop" />-->
<add key="enableTest" value="true" />
<add key="enableContapezzi" value="true" />
<add key="enableMode" value="true" />
<add key="enableOverrides" value="false" />
<add key="enableTSVC" value="true" />
<add key="enableDynData" value="false" />
<add key="enableSysInfo" value="false" />
<add key="enableAlarms" value="true" />
<add key="doStartMemDump" value="false" />
<add key="doSampleMemory" value="false" />
<add key="basePrgMemPath" value="CNCMEMUSER" />
<add key="pingMsTimeout" value="1500" />
<add key="serverPingDisabled" value="false" />
<add key="urlCallTOut" value="9999" />
<add key="urlRandWait" value="200" />
<!-- ciclo corto x invio a server: ms -->
<add key="timerIntMs" value="10" />
<add key="fastCount" value="20" />
<add key="normCount" value="200" />
<add key="slowCount" value="500" />
<add key="verySlowCount" value="3000" />
<add key="sampleMemCount" value="6000" />
<add key="waitEndCycle" value="0" />
<add key="comCheckTOut" value="10" />
<!-- watchdog, ping, check disconnesso -->
<add key="nMaxSend" value="10" />
<add key="pingTestSec" value="5" />
<add key="watchdogMaxSec" value="90" />
<add key="disconMaxSec" value="30" />
<add key="defIOB" value="2999" />
<add key="pauseSendMSec" value="2000" />
<!--gestione coda-->
<add key="maxQueueFLog" value="16384" />
<add key="maxQueueRawTransf" value="1024" />
<!--gestione max num errori-->
<add key="maxAliveErrors" value="1000" />
<add key="maxSendErrors" value="100" />
<add key="maxReadErrors" value="20" />
<!--parametri SIM-->
<add key="waitSimPar" value="30" />
<!--<add key="waitSimPar" value="45" />-->
<!--gestione REDIS-->
<add key="RedisConn" value="localhost,abortConnect=false,ssl=false" />
<add key="RedisConnAdmin" value="localhost,abortConnect=false,ssl=false" />
<add key="redisDb" value="10" />
<!--gestione invio dati in blocchi Json-->
<add key="minJsonData" value="2" />
<add key="maxJsonData" value="100" />
<add key="maxJsonDataEv" value="25" />
<!--gestione multithread-->
<add key="sendDataByThread" value="false" />
<!--Modalità DEMO: DemoOUT indica che NON invia davvero al server e DemoIN che simula e NON legge da PLC-->
<add key="DemoIn" value="false" />
<add key="DemoInSample" value="false" />
<add key="DemoOut" value="false" />
<!--definizione invio dati molto variabili-->
<add key="SendAxPos" value="false" />
<add key="SendFeedSpeed" value="false" />
<!--Definizione avvio Adapter-->
<add key="autoLoadConf" value="true" />
<add key="autoStartOnLoad" value="true" />
<add key="startMinimized" value="false" />
<add key="windowCanMax" value="true" />
<add key="trayClose" value="true" />
<add key="autoSaveSec" value="60" />
<add key="waitRecMSec" value="60000" />
<add key="testCharSep" value="|" />
<add key="delayShowLogMs" value="500" />
<add key="vetoSeconds" value="5" />
<!--conf file-->
<add key="dataPath" value="DATA" />
<add key="dataConfPath" value="DATA\CONF" />
<add key="dataDatPath" value="DATA\DAT" />
<add key="resxPath" value="Resources" />
<add key="mainConfFile" value="MAIN.ini" />
<add key="defaultPersLayerFile" value="PersistData.dat" />
<add key="simDataFile" value="SimData.dat" />
<add key="memDumpFile" value="MemoryDump.dat" />
<add key="numSim" value="1" />
<add key="MMapR" value="MMapR.map" />
<add key="MMapW" value="MMapW.map" />
<add key="AUpdAsAdm" value="true" />
<add key="ConfToCloud" value="true" />
<!--logging-->
<add key="recTime" value="true" />
<add key="verbose" value="false" />
<add key="logEvery" value="100" />
<add key="zipLogOldDay" value="1" />
<add key="maxLogDirSize" value="300" />
<add key="maxLogDays" value="400" />
<add key="numRowConsole" value="50" />
<add key="verboseLogTOut" value="60" />
<!--conf x FANUC-->
<add key="ClientSettingsProvider.ServiceUri" value="" />
<add key="pzCountDelay" value="2000" />
</appSettings>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="lib;libs" />
<probing privatePath="lib;libs" xmlns="" />
<dependentAssembly>
<assemblyIdentity name="System.IO.Compression" publicKeyToken="b77a5c561934e089" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.2.0" newVersion="4.1.2.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Runtime.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.Threading.Channels" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<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>
</assemblyBinding>
</runtime>
<system.web>
<membership defaultProvider="ClientAuthenticationMembershipProvider">
<providers>
<add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" />
</providers>
</membership>
<roleManager defaultProvider="ClientRoleProvider" enabled="true">
<providers>
<add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400" />
</providers>
</roleManager>
</system.web>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="OPENcontrol" />
</basicHttpBinding>
<netNamedPipeBinding>
<binding name="NetNamedPipeBinding_ISizerService">
<security mode="None" />
</binding>
</netNamedPipeBinding>
<wsHttpBinding>
<binding name="WSHttpBinding_ISizerService" maxReceivedMessageSize="2147483647">
<security mode="None" />
</binding>
</wsHttpBinding>
</bindings>
<client>
<endpoint address="http://192.168.20.2:8080" binding="basicHttpBinding" bindingConfiguration="OPENcontrol" contract="OpenControl.OPENcontrolPortType" name="OPENcontrol" />
<endpoint address="http://localhost:8001/SizerService/" binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_ISizerService" contract="SizerService.ISizerService" name="WSHttpBinding_ISizerService" />
<endpoint address="net.pipe://localhost/Compac/8001/SizerService" binding="netNamedPipeBinding" bindingConfiguration="NetNamedPipeBinding_ISizerService" contract="SizerService.ISizerService" name="NetNamedPipeBinding_ISizerService" />
</client>
</system.serviceModel>
<entityFramework>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2" />
</startup>
<appSettings>
<add key="appName" value="IOB-WIN-NEXT" />
<!--<add key="appVers" value="develop" />-->
<add key="enableTest" value="true" />
<add key="enableContapezzi" value="true" />
<add key="enableMode" value="true" />
<add key="enableOverrides" value="false" />
<add key="enableTSVC" value="true" />
<add key="enableDynData" value="false" />
<add key="enableSysInfo" value="false" />
<add key="enableAlarms" value="true" />
<add key="doStartMemDump" value="false" />
<add key="doSampleMemory" value="false" />
<add key="basePrgMemPath" value="CNCMEMUSER" />
<add key="pingMsTimeout" value="1500" />
<add key="serverPingDisabled" value="false" />
<add key="urlCallTOut" value="9999" />
<add key="urlRandWait" value="200" />
<!-- ciclo corto x invio a server: ms -->
<add key="timerIntMs" value="10" />
<add key="fastCount" value="20" />
<add key="normCount" value="200" />
<add key="slowCount" value="500" />
<add key="verySlowCount" value="3000" />
<add key="sampleMemCount" value="6000" />
<add key="waitEndCycle" value="0" />
<add key="comCheckTOut" value="10" />
<!-- watchdog, ping, check disconnesso -->
<add key="nMaxSend" value="10" />
<add key="pingTestSec" value="5" />
<add key="watchdogMaxSec" value="90" />
<add key="disconMaxSec" value="30" />
<add key="defIOB" value="2999" />
<add key="pauseSendMSec" value="2000" />
<add key="sendStartFLog" value="false" />
<!--gestione coda-->
<add key="maxQueueFLog" value="16384" />
<add key="maxQueueRawTransf" value="1024" />
<!--gestione max num errori-->
<add key="maxAliveErrors" value="1000" />
<add key="maxErroriCheck" value="200" />
<add key="maxSendErrors" value="100" />
<add key="maxReadErrors" value="20" />
<!--parametri SIM-->
<add key="waitSimPar" value="30" />
<!--<add key="waitSimPar" value="45" />-->
<!--gestione REDIS-->
<add key="RedisConn" value="localhost,abortConnect=false,ssl=false" />
<add key="RedisConnAdmin" value="localhost,abortConnect=false,ssl=false" />
<add key="redisDb" value="10" />
<!--gestione invio dati in blocchi Json-->
<add key="minJsonData" value="2" />
<add key="maxJsonData" value="100" />
<add key="maxJsonDataEv" value="25" />
<!--gestione multithread-->
<add key="sendDataByThread" value="false" />
<!--Modalità DEMO: DemoOUT indica che NON invia davvero al server e DemoIN che simula e NON legge da PLC-->
<add key="DemoIn" value="false" />
<add key="DemoInSample" value="false" />
<add key="DemoOut" value="false" />
<!--definizione invio dati molto variabili-->
<add key="SendAxPos" value="false" />
<add key="SendFeedSpeed" value="false" />
<!--Definizione avvio Adapter-->
<add key="autoLoadConf" value="true" />
<add key="autoStartOnLoad" value="true" />
<add key="startMinimized" value="false" />
<add key="windowCanMax" value="true" />
<add key="trayClose" value="true" />
<add key="autoSaveSec" value="60" />
<add key="waitRecMSec" value="60000" />
<add key="testCharSep" value="|" />
<add key="delayShowLogMs" value="500" />
<add key="vetoSeconds" value="5" />
<!--conf file-->
<add key="dataPath" value="DATA" />
<add key="dataConfPath" value="DATA\CONF" />
<add key="dataDatPath" value="DATA\DAT" />
<add key="resxPath" value="Resources" />
<add key="mainConfFile" value="MAIN.ini" />
<add key="defaultPersLayerFile" value="PersistData.dat" />
<add key="simDataFile" value="SimData.dat" />
<add key="memDumpFile" value="MemoryDump.dat" />
<add key="numSim" value="1" />
<add key="MMapR" value="MMapR.map" />
<add key="MMapW" value="MMapW.map" />
<add key="AUpdAsAdm" value="true" />
<add key="ConfToCloud" value="true" />
<add key="CacheConfToCloudDuratHour" value="24" />
<!--logging-->
<add key="recTime" value="true" />
<add key="verbose" value="false" />
<add key="logEvery" value="100" />
<add key="zipLogOldDay" value="1" />
<add key="maxLogDirSize" value="300" />
<add key="maxLogDays" value="400" />
<add key="numRowConsole" value="50" />
<add key="verboseLogTOut" value="60" />
<!--conf x FANUC-->
<add key="ClientSettingsProvider.ServiceUri" value="" />
<add key="pzCountDelay" value="2000" />
</appSettings>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="lib;libs" />
<probing privatePath="lib;libs" xmlns="" />
<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.Threading.Channels" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<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.IO.Compression" publicKeyToken="b77a5c561934e089" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.2.0" newVersion="4.1.2.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<system.web>
<membership defaultProvider="ClientAuthenticationMembershipProvider">
<providers>
<add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" />
</providers>
</membership>
<roleManager defaultProvider="ClientRoleProvider" enabled="true">
<providers>
<add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400" />
</providers>
</roleManager>
</system.web>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="OPENcontrol" />
</basicHttpBinding>
<netNamedPipeBinding>
<binding name="NetNamedPipeBinding_ISizerService">
<security mode="None" />
</binding>
</netNamedPipeBinding>
<wsHttpBinding>
<binding name="WSHttpBinding_ISizerService" maxReceivedMessageSize="2147483647">
<security mode="None" />
</binding>
</wsHttpBinding>
</bindings>
<client>
<endpoint address="http://192.168.20.2:8080" binding="basicHttpBinding" bindingConfiguration="OPENcontrol" contract="OpenControl.OPENcontrolPortType" name="OPENcontrol" />
<endpoint address="http://localhost:8001/SizerService/" binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_ISizerService" contract="SizerService.ISizerService" name="WSHttpBinding_ISizerService" />
<endpoint address="net.pipe://localhost/Compac/8001/SizerService" binding="netNamedPipeBinding" bindingConfiguration="NetNamedPipeBinding_ISizerService" contract="SizerService.ISizerService" name="NetNamedPipeBinding_ISizerService" />
</client>
</system.serviceModel>
<entityFramework>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
</configuration>
+4
View File
@@ -65,5 +65,9 @@
"PosAct": 50,
"PosTgt": 50,
"InvDDone": 50
},
"mMapWrite": {
},
"mMapRead": {
}
}
+78
View File
@@ -0,0 +1,78 @@
;Configurazione IOB-WIN
[IOB]
;Impianto IMAX Aeromec - Jetco (non va, sostituito con OPC-UA)
CNCTYPE=MODBUS_TCP_IMAX_AEROMEC
PING_MS_TIMEOUT=1000
MinDeltaSec=5
[MACHINE]
VENDOR=IMAX
MODEL=Filtro Aria
[CNC]
IP=192.168.0.80
PORT=502
[SERVER]
MPIP=http://192.168.1.7
MPURL=/MP/IO
CMDBASE=/IOB/input/
CMDFLOG=/IOB/flog/
CMDALIVE=/IOB
CMDENABLED=/IOB/enabled/
CMDADV1=?valore=
CMDREBO=/sendReboot.aspx?idxMacchina=
[MEMORY]
ADDR_READ=40001
ADDR_WRITE=40001
SIZE_READ=30
SIZE_WRITE=0
HR_BASE_ADDR=40000
DELTA_BASE=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=3026.json
NO_PING=FALSE
; conf blocchi memoria x READ
MEM_BLOCK=3026_MBlock.json
; conf aree allarme
ALARM_CONF=3026_alarm.json
; rimozione check limiti min/max dynData
disDynDataRangeCheck=true
[BRANCH]
NAME=master
+110
View File
@@ -0,0 +1,110 @@
{
"mMapWrite": {
},
"mMapRead": {
//"StatusWord": {
// "name": "StatusWord",
// "description": "Word di Status",
// "memAddr": "40002",
// "tipoMem": "Int",
// "index": 2,
// "size": 1,
// "func": "POINT",
// "period": 90,
// "factor": 1,
// "minVal": 0,
// "maxVal": 65536,
// "unit": "BMap"
//},
//"StatusDetWord": {
// "name": "StatusDetWord",
// "description": "Word di Status",
// "memAddr": "40005",
// "tipoMem": "Int",
// "index": 5,
// "size": 1,
// "func": "POINT",
// "period": 90,
// "factor": 1,
// "minVal": 0,
// "maxVal": 65536,
// "unit": "BMap"
//},
"FreqInverter": {
"name": "FreqInverter",
"description": "Frequenza Inverter",
"memAddr": "40011",
"tipoMem": "Real",
"index": 11,
"size": 2,
"func": "MEDIAN",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 999999999,
"unit": "Hz"
},
"CDOreManuten": {
"name": "CDOreManuten",
"description": "Residuo ore a prossimo service",
"memAddr": "40013",
"tipoMem": "Int",
"index": 13,
"size": 1,
"func": "MEDIAN",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 999999999,
"unit": "h"
},
"COreTAsp1": {
"name": "COreTAsp1",
"description": "Totale ore funzionamento impianto",
"memAddr": "40014",
"tipoMem": "Int",
"index": 14,
"size": 1,
"func": "MEDIAN",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 999999999,
"unit": "h"
},
"COrePAsp1": {
"name": "COrePAsp1",
"description": "Parziale ore funzionamento impianto da ultimo service",
"memAddr": "40015",
"tipoMem": "Int",
"index": 15,
"size": 1,
"func": "MEDIAN",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 999999999,
"unit": "h"
},
"AmpereReale": {
"name": "AmpereReale",
"description": "Assorbimento aspiratore 1",
"memAddr": "40016",
"tipoMem": "Real",
"index": 16,
"size": 2,
"func": "MEDIAN",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 999999999,
"unit": "A"
}
},
"optMemPar": {
"AutoBitCond": "40002.14=1",
"EStopBitCond": "40002.9=0",
"WorkBitCond": "40002.0=1"
}
}
@@ -0,0 +1,5 @@
{
"ReadBlocks": {
"40000": 30
}
}
@@ -0,0 +1,52 @@
[
{
"description": "Allarmi Impianto",
"tipoMem": "DInt",
"memAddr": "40003",
"index": 3,
"size": 2,
"messages": [
"ALLARME VENTILATORE 1",
"ALLARME VENTILATORE 2",
"WARNING FILTRI INTASATI",
"WARNING LIVELLO FILTRO",
"ALLARME LIVELLO FILTRO",
"ALLARME TAGLIAFUOCO 1 ASPIRAZIONE ",
"ALLARME TAGLIAFUOCO 2 ASPIRAZIONE ",
"CUMULATIVO ALLARMI ALIMENTAZIONI (24V AC-DC)",
"ALLARME FUORIUSCITA IQUINANTE ",
"ALLARME TERMOVELOCIMETRICO",
"ALLARME RILEVATORE SCINTILLE",
"ALLARME SPORTELLO APERTO",
"ALLARME MOTORE VALVOLA STELLARE FILTRO",
"ALLARME MOTORE COCLEA ",
"ALLARME MOTORE VALVOLA STELLARE CALDAIA",
"ALLARME MOTORE ESTRATTORE FILTRO"
]
},
{
"description": "Allarmi Impianto",
"tipoMem": "DInt",
"memAddr": "40004",
"index": 4,
"size": 2,
"messages": [
"ALLARME MOTORE ASPIRATORE TRAVASO",
"WARNING BY-PASS 1 ASPIRAZIONE",
"WARNING BY-PASS 2 ASPIRAZIONE",
"WARNING BY-PASS 3 ASPIRAZIONE",
"WARNING BY-PASS 4 ASPIRAZIONE",
"ALLARME TERMICO VIBRATORI",
"ALLARME INTASAMENTO ESTRATTORE",
"WARNING FILTRI INTASATI PLENUM",
"CUMULATIVO ALLARMI RECUPERATORE",
"WARNING SERRANDA 1 PARTENZA ASPIRAZIONE",
"WARNING SERRANDA 2 PARTENZA ASPIRAZIONE",
"WARNING SERRANDA 3 PARTENZA ASPIRAZIONE",
"ALLARME IMPLOSIONE TUBAZIONI",
"WARNING IMPLOSIONE TUBAZIONI",
"ALLARME VENTILATORE 3",
"ALLARME INTASAMENTO TASCHE"
]
}
]
+71
View File
@@ -0,0 +1,71 @@
;Configurazione IOB-WIN
[IOB]
;Impianto IMAS AEROMEC Jetco
CNCTYPE=OpcUaImasAeromec
PING_MS_TIMEOUT=500
MinDeltaSec=5
[MACHINE]
VENDOR=IMAX
MODEL=Filtro Aria
[CNC]
IP=192.168.0.80
PORT=4840
;GETPRGNAME=true
[SERVER]
MPIP=http://192.168.1.7
MPURL=/MP/IO
CMDBASE=/IOB/input/
CMDFLOG=/IOB/flog/
CMDALIVE=/IOB
CMDENABLED=/IOB/enabled/
CMDADV1=?valore=
CMDREBO=/sendReboot.aspx?idxMacchina=
[MEMORY]
ADDR_READ=40001
ADDR_WRITE=40001
SIZE_READ=30
SIZE_WRITE=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]
AUTO_CHANGE_ODL=TRUE
CHANGE_ODL_MODE=DAILY
;PZCOUNT_MODE=STD.[PAR/MEM].info|BIT.indice
PZCOUNT_MODE=OPC
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
ENABLE_DATA_FILTER=TRUE
ENABLE_CLI_RESTART=TRUE
; gestione delta minimo accettabile tra min/MAX
DELTA_VAL=0
; clock base (da 10ms)
timerIntMs=10
; conf parametri memoria READ/WRITE
OPC_PARAM_CONF=3026.json
[BRANCH]
NAME=master
+154
View File
@@ -0,0 +1,154 @@
{
"BrowseFullVal": "i=85",
"BrowseNSIndex": 4,
"BrowseValue": 5001,
"keyPartCount": "",
"keyPartReq": "",
"keyPartId": "",
"keyProgName": "",
"keyExeMode": "",
"keyRunMode": "",
"runModeSend": true,
"pingAsPowerOn": true,
"forcePingOk": false,
"translRunMode": true,
"Identity": {
"UserName": "IMAS",
"Passwd": "iM@s_1975"
},
"condWork": [],
"condWorkOpc": {
"checkMode": "OR",
"checkList": [
{
"keyName": "ASPIRATORE 1 IN FUNZIONE",
"targetValue": "True"
}
]
},
"condPowerOn": {
"checkMode": "OR",
"negateValue": false,
"checkList": []
},
"condReady": {
"checkMode": "OR",
"checkList": [
{
"keyName": "GENERICO RUN IMPIANTO",
"targetValue": "5"
}
]
},
"condManual": {
"checkMode": "OR",
"checkList": [
{
"keyName": "SCARICO DIRETTO ABILITATO",
"targetValue": "True"
},
{
"keyName": "SCARICO IN CALDAIA ABILITATO",
"targetValue": "True"
},
{
"keyName": "SCARICO IN CONTAINER ABILITATO",
"targetValue": "True"
}
]
},
"condEStop": {
"checkMode": "AND",
"checkList": [
{
"keyName": "PULSANTE DI EMERGENZA PREMUTO",
"targetValue": "False"
}
]
},
"condError": {
"checkMode": "OR",
"checkList": [
{
"keyName": "CUMULATIVO ALLARMI BLOCCANTI SICUREZZE",
"targetValue": "True"
},
{
"keyName": "CUMULATIVO ALLARMI IMPIANTO ASPIRAZIONE",
"targetValue": "True"
}
]
},
"condCountEnabled": {
"checkMode": "AND",
"checkList": []
},
"condWarmUpCoolDown": {
"checkMode": "OR",
"negateValue": true,
"checkList": []
},
"condWarning": {
"checkMode": "AND",
"checkList": []
},
"condSetup": {
"checkMode": "AND",
"checkList": []
},
"fluxLogVeto": [
"Auditing",
"EnabledFlag",
"RedundancySupport",
"LocaleIdArray",
"MaxBrowseContinuationPoints",
"MaxHistoryContinuationPoints",
"MaxMonitoredItemsPerCall",
"MaxNodesPerBrowse",
"MaxNodesPerMethodCall",
"MaxNodesPerNodeManagement",
"MaxNodesPerRegisterNodes",
"MaxNodesPerRead",
"MaxNodesPerTranslateBrowsePathsToNodeIds",
"MaxNodesPerWrite",
"MaxQueryContinuationPoints",
"MinSupportedSampleRate",
"NamespaceArray",
"NamingRule",
"Server",
"ServerArray",
"ServerDiagnostics",
"ServerDiagnosticsSummary",
"ServerProfileArray",
"ServerStatus",
"ServiceLevel",
"SoftwareCertificates"
],
"itemTranslation": {
"fdovrd": "PATH FEED OVERRIDE",
"rovrd": "PATH RAPID OVERRIDE",
"RunMode_0": "STOP",
"RunMode_1": "RUN",
"SCARICO DIRETTO ABILITATO": "SCARICO DIRETTO ABILITATO",
"rstat": "Execution Mode",
"mode": "Controller Mode",
"PartName(0)": "Program Name",
"PartDone(0)": "Pezzi Prodotti",
"PartToDo(0)": "Qta Richiesta",
"MachineStatus(0)": "Stato Macchina principale",
"MachineStatus(1)": "Stato Macchina secondario",
"EmergencyState": "Emergenza"
},
"mMapWrite": {
},
"subscribedItems": [
],
"WatchDog": {
"IsEnabled": false,
"MemConfRead": "ns=4;s=tomes_1_Watchdog",
"MemConfWrite": "ns=4;s=tomach_1_watchdog",
"MaxVal": 9999
},
"fluxLogKeyValVeto": {
}
}
@@ -32,20 +32,20 @@ SIZE_WRITE=0
[BLINK]
;MAX_COUNTER_BLINK = 30
MAX_COUNTER_BLINK = 15
;bit0 = 0
MAX_COUNTER_BLINK = 30
;bit0 = 1
;bit1 = 0
;bit2 = 1
;bit3 = 1
;bit2 = 0
;bit3 = 0
;bit4 = 1
;bit5 = 0
;bit6 = 0
;bit7 = 0
;BLINK_FILT=28
;BLINK_FILT=145
BLINK_FILT=0
[OPTPAR]
AUTO_CHANGE_ODL=false
AUTO_CHANGE_ODL=true
CHANGE_ODL_MODE=TIME
CHANGE_ODL_HOURS=24
CHANGE_ODL_IDLE_MIN=5
@@ -59,9 +59,20 @@ FORCE_DYN_DATA=TRUE
ENABLE_DATA_FILTER=TRUE
ENABLE_CLI_RESTART=TRUE
MAX_TRY_PING=3
DISABLE_SEND_WDST=TRUE
FTP_SERVER=192.168.60.234
FTP_USER=ftpaccess
FTP_PWD=ftpaccess
FTP_CERT=
FTP_SKIP=TRUE
FTP_LOC_DIR=temp\csv
FTP_REM_DIR=
CSV_ADD_HEADER=true
VETO_SEND_SNAPSHOT=3
;NO_PING=FALSE
;NO_PING=TRUE
;EXEMODE_CHECK_BYPASS=true
; conf aree allarme
ALARM_CONF=BAGLIETTO_CIMOLAI_01_alarm.json
@@ -5,8 +5,10 @@
"keyPartCount": "",
"keyPartReq": "",
"keyPartId": "",
"keyProgName": "",
"keyProgName": "Commessa",
"keyExeMode": "PLC/DB231/InCorso",
"keyRunMode": "PLC/DB231/Attivita",
"runModeSend": true,
"pingAsPowerOn": true,
"forcePingOk": false,
"translRunMode": true,
@@ -20,6 +22,19 @@
"targetValue": "1"
}
],
"condWorkOpc": {
"checkMode": "AND",
"checkList": [
{
"keyName": "PLC/DB13/Gen/Marcia_AUX",
"targetValue": "2"
},
{
"keyName": "PLC/DB231/InCorso",
"targetValue": "1"
}
]
},
"condPowerOn": {
"checkMode": "AND",
"checkList": []
@@ -28,18 +43,32 @@
"checkMode": "AND",
"checkList": [
{
"keyName": "PLC/DB13/Gen/Marcia_AUX",
"targetValue": "2"
"keyName": "PLC/DB231/InCorso",
"targetValue": "0"
}
]
},
"condManual": {
"checkMode": "AND",
"checkList": []
"checkList": [
{
"keyName": "PLC/DB13/Gen/Marcia_AUX",
"targetValue": "2"
},
{
"keyName": "PLC/DB231/InCorso",
"targetValue": "0"
}
]
},
"condEStop": {
"checkMode": "AND",
"checkList": []
"checkList": [
{
"keyName": "PLC/DB13/Gen/Marcia_AUX",
"targetValue": "2"
}
]
},
"condError": {
"checkMode": "OR",
@@ -57,8 +86,8 @@
"targetValue": "3"
},
{
"keyName": "PLC/DB13/Gen/Marcia_AUX",
"targetValue": "1"
"keyName": "PLC/DB13/Gen/ReserveDieselMessage",
"targetValue": "3"
},
{
"keyName": "PLC/DB13/Gen/Wheel_Fault",
@@ -89,6 +118,7 @@
"itemTranslation": {
"fdovrd": "PATH FEED OVERRIDE",
"rovrd": "PATH RAPID OVERRIDE",
"RunMode_0": "Wait action",
"RunMode_1": "Avvio Registrazione Ricetta",
"RunMode_2": "Inizio Comando Traslazione",
"RunMode_3": "Termine Comando Traslazione",
@@ -97,7 +127,26 @@
"RunMode_6": "Inizio Comando Movimento Carrelli",
"RunMode_7": "Termine Comando Movimento Carrelli",
"RunMode_8": "Inizio Comando Sollevamento",
"RunMode_9": "Termine Comando Sollevamento"
"RunMode_9": "Termine Comando Sollevamento",
"RunMode_10": "Invio Comando Snapshot Parametri",
"Marcia_AUX_0": "Macchina non pronta",
"Marcia_AUX_1": "Macchina non pronta",
"Marcia_AUX_2": "Macchina pronta",
"Wheel_Fault_2": "Ruote OK",
"Wheel_Fault_3": "Ruote NON OK",
"Wheel_Fault_4": "Ruote in bypass",
"Wheel_Fault_5": "Ruote in manutenzione",
"MotorMessage_1": "Motore 1 acceso",
"MotorMessage_2": "Motore 2 acceso",
"MotorMessage_3": "Entrambi i motori accesi",
"ReserveDieselMessage_1": "Riserva diesel motore 1",
"ReserveDieselMessage_2": "Riserva diesel motore 2",
"ReserveDieselMessage_3": "Spegnimento per minimo diesel",
"Hydraulic_Unit_2": "Centralina idraulica OK",
"Hydraulic_Unit_3": "Allarme grave idraulica",
"Hydraulic_Unit_4": "Warning su centralina idraulica",
"ComProfibusMessage_1": "Allarme rete Profinet",
"ComProfibusMessage_3": "Allarme rete CAN"
},
"paramsEndThresh": {
"InvDDone": 50
@@ -118,6 +167,14 @@
"memAddr": "ns=4;i=9",
"index": 0,
"size": 30
},
"syncDbData": {
"name": "syncDbData",
"description": "Sincronizzazione dati DB",
"tipoMem": "String",
"memAddr": "ns=4;i=0",
"index": 0,
"size": 30
}
},
"subscribedItems": [],
@@ -126,5 +183,28 @@
"MemConfRead": "ns=4;s=tomes_1_Watchdog",
"MemConfWrite": "ns=4;s=tomach_1_watchdog",
"MaxVal": 9999
},
"fluxLogKeyValVeto": {
"RunModeVal": [
"-1",
"0"
],
"OPC_PLC/DB231/Attivita": [
"-1",
"0"
]
},
"minSecStatusDuration": 20,
"minSecFinalWait": 60,
"calcValues": {
"PesoTot": {
"calcMode": "sum",
"listVal": [
"PLC/DB231/peso1",
"PLC/DB231/peso2",
"PLC/DB231/peso3",
"PLC/DB231/peso4"
]
}
}
}
@@ -18,8 +18,8 @@
"##",
"EMERGENZA FINECORSA GUIDA INGRESSO",
"ANOMALIA BARRA SALDATURA",
"TIMEOUT PROXIMITY SBOBINATORE INFERIORE",
"TIMEOUT PROXIMITY SBOBINATORE SUPERIORE",
"##TIMEOUT PROXIMITY SBOBINATORE INFERIORE",
"##TIMEOUT PROXIMITY SBOBINATORE SUPERIORE",
"ROTTURA FILM",
"ANOMALIA SONDA PT100 TUNNEL",
"ANOMALIA SONDA PT100 SALDATURA",
+7 -1
View File
@@ -62,7 +62,8 @@ DELTA_VAL=0.1
timerIntMs=100
minWait=50
maxWait=150
AUTO_CHANGE_ODL=TRUE
CHANGE_ODL_MODE=DAILY
; conf parametri memoria READ/WRITE
PARAM_CONF=GIACO_CENTERFRIGO.json
@@ -76,5 +77,10 @@ ALARM_CONF=GIACO_CENTERFRIGO_alarm.json
; rimozione check limiti min/max dynData
disDynDataRangeCheck=true
; conf file import
FILE_IMPORT_FOLDER=C:\GiacenzeTuri
FILE_IMPORT_TYPE=*.xlsx
FILE_ARCHIVE_FOLDER=C:\GiacenzeTuri\archivio
[BRANCH]
NAME=master
+88
View File
@@ -0,0 +1,88 @@
;Configurazione IOB-WIN
[IOB]
;Impianto SAIM 01 Locorotondo - Giacovelli
CNCTYPE=MODBUS_TCP_SAIM
PING_MS_TIMEOUT=1000
MinDeltaSec=5
[MACHINE]
VENDOR=SAIM
MODEL=Trattamento Ozono
[CNC]
IP=192.168.18.12
PORT=502
[SERVER]
MPIP=http://192.168.1.14
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=200
SIZE_WRITE=0
HR_BASE_ADDR=40000
;DELTA_BASE=1
DELTA_BASE=0
MODBUS_EXT_REG=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
; clock base (da 10ms)
timerIntMs=10
AUTO_CHANGE_ODL=TRUE
CHANGE_ODL_MODE=DAILY
; conf parametri memoria READ/WRITE
PARAM_CONF=GIACO_SAIM_001.json
NO_PING=FALSE
; conf blocchi memoria x READ
MEM_BLOCK=GIACO_SAIM_001_MBlock.json
; conf aree allarme
;ALARM_CONF=GIACO_SAIM_001_alarm.json
; rimozione check limiti min/max dynData
disDynDataRangeCheck=true
; conf file import
FILE_IMPORT_FOLDER=C:\GiacenzeLocorotondo
FILE_IMPORT_TYPE=*.xlsx
FILE_ARCHIVE_FOLDER=C:\GiacenzeLocorotondo\SAIM002
[BRANCH]
NAME=master
+590
View File
@@ -0,0 +1,590 @@
{
"mMapWrite": {
"PPM_min_C1": {
"name": "PPM_min_C1",
"description": "PPM min Camera 1",
"memAddr": "40031",
"tipoMem": "Int",
"index": 31,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_max_C1": {
"name": "PPM_max_C1",
"description": "PPM MAX Camera 1",
"memAddr": "40032",
"tipoMem": "Int",
"index": 32,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_min_C2": {
"name": "PPM_min_C2",
"description": "PPM min Camera 2",
"memAddr": "40033",
"tipoMem": "Int",
"index": 33,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_max_C2": {
"name": "PPM_max_C2",
"description": "PPM MAX Camera 2",
"memAddr": "40034",
"tipoMem": "Int",
"index": 34,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_min_C3": {
"name": "PPM_min_C3",
"description": "PPM min Camera 3",
"memAddr": "40035",
"tipoMem": "Int",
"index": 35,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_max_C3": {
"name": "PPM_max_C3",
"description": "PPM MAX Camera 3",
"memAddr": "40036",
"tipoMem": "Int",
"index": 36,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_min_C4": {
"name": "PPM_min_C4",
"description": "PPM min Camera 4",
"memAddr": "40037",
"tipoMem": "Int",
"index": 37,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_max_C4": {
"name": "PPM_max_C4",
"description": "PPM MAX Camera 4",
"memAddr": "40038",
"tipoMem": "Int",
"index": 38,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_min_C5": {
"name": "PPM_min_C5",
"description": "PPM min Camera 5",
"memAddr": "40039",
"tipoMem": "Int",
"index": 39,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_max_C5": {
"name": "PPM_max_C5",
"description": "PPM MAX Camera 5",
"memAddr": "40040",
"tipoMem": "Int",
"index": 40,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_min_C6": {
"name": "PPM_min_C6",
"description": "PPM min Camera 6",
"memAddr": "40041",
"tipoMem": "Int",
"index": 41,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_max_C6": {
"name": "PPM_max_C6",
"description": "PPM MAX Camera 6",
"memAddr": "40042",
"tipoMem": "Int",
"index": 42,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
}
},
"mMapRead": {
"PPM_min_C1": {
"name": "PPM_min_C1",
"description": "PPM min Camera 1",
"memAddr": "40031",
"tipoMem": "Int",
"index": 31,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_max_C1": {
"name": "PPM_max_C1",
"description": "PPM MAX Camera 1",
"memAddr": "40032",
"tipoMem": "Int",
"index": 32,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_min_C2": {
"name": "PPM_min_C2",
"description": "PPM min Camera 2",
"memAddr": "40033",
"tipoMem": "Int",
"index": 33,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_max_C2": {
"name": "PPM_max_C2",
"description": "PPM MAX Camera 2",
"memAddr": "40034",
"tipoMem": "Int",
"index": 34,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_min_C3": {
"name": "PPM_min_C3",
"description": "PPM min Camera 3",
"memAddr": "40035",
"tipoMem": "Int",
"index": 35,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_max_C3": {
"name": "PPM_max_C3",
"description": "PPM MAX Camera 3",
"memAddr": "40036",
"tipoMem": "Int",
"index": 36,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_min_C4": {
"name": "PPM_min_C4",
"description": "PPM min Camera 4",
"memAddr": "40037",
"tipoMem": "Int",
"index": 37,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_max_C4": {
"name": "PPM_max_C4",
"description": "PPM MAX Camera 4",
"memAddr": "40038",
"tipoMem": "Int",
"index": 38,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_min_C5": {
"name": "PPM_min_C5",
"description": "PPM min Camera 5",
"memAddr": "40039",
"tipoMem": "Int",
"index": 39,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_max_C5": {
"name": "PPM_max_C5",
"description": "PPM MAX Camera 5",
"memAddr": "40040",
"tipoMem": "Int",
"index": 40,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_min_C6": {
"name": "PPM_min_C6",
"description": "PPM min Camera 6",
"memAddr": "40041",
"tipoMem": "Int",
"index": 41,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_max_C6": {
"name": "PPM_max_C6",
"description": "PPM MAX Camera 6",
"memAddr": "40042",
"tipoMem": "Int",
"index": 42,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"Sonda01": {
"name": "Sonda01",
"description": "Sonda 01",
"memAddr": "30110",
"tipoMem": "Int",
"index": 110,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 0.01,
"minVal": 0,
"maxVal": 999999999,
"unit": "#"
},
"Sonda02": {
"name": "Sonda02",
"description": "Sonda 02",
"memAddr": "30120",
"tipoMem": "Int",
"index": 120,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 0.01,
"minVal": 0,
"maxVal": 999999999,
"unit": "#"
},
"Sonda03": {
"name": "Sonda03",
"description": "Sonda 03",
"memAddr": "30130",
"tipoMem": "Int",
"index": 130,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 0.01,
"minVal": 0,
"maxVal": 999999999,
"unit": "#"
},
"Sonda04": {
"name": "Sonda04",
"description": "Sonda 04",
"memAddr": "30140",
"tipoMem": "Int",
"index": 140,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 0.01,
"minVal": 0,
"maxVal": 999999999,
"unit": "#"
},
"Sonda05": {
"name": "Sonda05",
"description": "Sonda 05",
"memAddr": "30150",
"tipoMem": "Int",
"index": 150,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 0.01,
"minVal": 0,
"maxVal": 999999999,
"unit": "#"
},
"Sonda06": {
"name": "Sonda06",
"description": "Sonda 06",
"memAddr": "30160",
"tipoMem": "Int",
"index": 160,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 0.01,
"minVal": 0,
"maxVal": 999999999,
"unit": "#"
},
"Amper01": {
"name": "Amper01",
"description": "Amper 01",
"memAddr": "30010",
"tipoMem": "Int",
"index": 10,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 999999999,
"unit": "#"
},
"Amper02": {
"name": "Amper02",
"description": "Amper 02",
"memAddr": "30011",
"tipoMem": "Int",
"index": 11,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 999999999,
"unit": "#"
},
"Amper03": {
"name": "Amper03",
"description": "Amper 03",
"memAddr": "30012",
"tipoMem": "Int",
"index": 12,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 999999999,
"unit": "#"
},
"Amper04": {
"name": "Amper04",
"description": "Amper 04",
"memAddr": "30013",
"tipoMem": "Int",
"index": 13,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 999999999,
"unit": "#"
},
"Amper05": {
"name": "Amper05",
"description": "Amper 05",
"memAddr": "30014",
"tipoMem": "Int",
"index": 14,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 999999999,
"unit": "#"
},
"Amper06": {
"name": "Amper06",
"description": "Amper 06",
"memAddr": "30015",
"tipoMem": "Int",
"index": 15,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 999999999,
"unit": "#"
},
"Amper07": {
"name": "Amper07",
"description": "Amper 07",
"memAddr": "30016",
"tipoMem": "Int",
"index": 16,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 999999999,
"unit": "#"
},
"Amper08": {
"name": "Amper08",
"description": "Amper 08",
"memAddr": "30017",
"tipoMem": "Int",
"index": 17,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 999999999,
"unit": "#"
},
"ContCam01": {
"name": "ContCam01",
"description": "Cont Camera 01",
"memAddr": "30021",
"tipoMem": "Int",
"index": 21,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 999999999,
"unit": "#"
},
"ContCam02": {
"name": "ContCam02",
"description": "Cont Camera 02",
"memAddr": "30022",
"tipoMem": "Int",
"index": 22,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 999999999,
"unit": "#"
},
"ContCam03": {
"name": "ContCam03",
"description": "Cont Camera 03",
"memAddr": "30023",
"tipoMem": "Int",
"index": 23,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 999999999,
"unit": "#"
},
"ContCam04": {
"name": "ContCam04",
"description": "Cont Camera 04",
"memAddr": "30024",
"tipoMem": "Int",
"index": 24,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 999999999,
"unit": "#"
},
"ContCam05": {
"name": "ContCam05",
"description": "Cont Camera 05",
"memAddr": "30025",
"tipoMem": "Int",
"index": 25,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 999999999,
"unit": "#"
},
"ContCam06": {
"name": "ContCam06",
"description": "Cont Camera 06",
"memAddr": "30026",
"tipoMem": "Int",
"index": 26,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 999999999,
"unit": "#"
}
},
"optMemPar": {
"AlarmBitCond": "10002.0=1",
"WorkBitCond": "10001.0=1"
},
"fileDecod": {
"Product": 3,
"Variety": 9,
"Supplier": 8,
"ExtDoc": 2,
"DateRif": 14,
"QtyTot": 22,
"NumPack": 21,
"NumPed": 17,
"PackPed": 18,
"PesoPack": 20
}
}
@@ -0,0 +1,10 @@
{
"ReadBlocks": {
"10000": 10,
"10100": 10,
"30000": 50,
"30100": 40,
"30140": 30,
"40030": 20
}
}
+88
View File
@@ -0,0 +1,88 @@
;Configurazione IOB-WIN
[IOB]
;Impianto SAIM 02 Locorotondo - Giacovelli
CNCTYPE=MODBUS_TCP_SAIM
PING_MS_TIMEOUT=1000
MinDeltaSec=5
[MACHINE]
VENDOR=SAIM
MODEL=Trattamento Ozono
[CNC]
IP=192.168.18.13
PORT=502
[SERVER]
MPIP=http://192.168.1.14
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=200
SIZE_WRITE=0
HR_BASE_ADDR=40000
;DELTA_BASE=1
DELTA_BASE=0
MODBUS_EXT_REG=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
; clock base (da 10ms)
timerIntMs=10
AUTO_CHANGE_ODL=TRUE
CHANGE_ODL_MODE=DAILY
; conf parametri memoria READ/WRITE
PARAM_CONF=GIACO_SAIM_002.json
NO_PING=FALSE
; conf blocchi memoria x READ
MEM_BLOCK=GIACO_SAIM_002_MBlock.json
; conf aree allarme
;ALARM_CONF=GIACO_SAIM_002_alarm.json
; rimozione check limiti min/max dynData
disDynDataRangeCheck=true
; conf file import
FILE_IMPORT_FOLDER=C:\GiacenzeLocorotondo\SAIM002
FILE_IMPORT_TYPE=*.xlsx
FILE_ARCHIVE_FOLDER=C:\GiacenzeLocorotondo\archivio
[BRANCH]
NAME=master
+382
View File
@@ -0,0 +1,382 @@
{
"mMapWrite": {
"PPM_min_C1": {
"name": "PPM_min_C1",
"description": "PPM min Camera 1",
"memAddr": "40031",
"tipoMem": "Int",
"index": 31,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_max_C1": {
"name": "PPM_max_C1",
"description": "PPM MAX Camera 1",
"memAddr": "40032",
"tipoMem": "Int",
"index": 32,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_min_C2": {
"name": "PPM_min_C2",
"description": "PPM min Camera 2",
"memAddr": "40033",
"tipoMem": "Int",
"index": 33,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_max_C2": {
"name": "PPM_max_C2",
"description": "PPM MAX Camera 2",
"memAddr": "40034",
"tipoMem": "Int",
"index": 34,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_min_C3": {
"name": "PPM_min_C3",
"description": "PPM min Camera 3",
"memAddr": "40035",
"tipoMem": "Int",
"index": 35,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_max_C3": {
"name": "PPM_max_C3",
"description": "PPM MAX Camera 3",
"memAddr": "40036",
"tipoMem": "Int",
"index": 36,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_min_C4": {
"name": "PPM_min_C4",
"description": "PPM min Camera 4",
"memAddr": "40037",
"tipoMem": "Int",
"index": 37,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_max_C4": {
"name": "PPM_max_C4",
"description": "PPM MAX Camera 4",
"memAddr": "40038",
"tipoMem": "Int",
"index": 38,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
}
},
"mMapRead": {
"PPM_min_C1": {
"name": "PPM_min_C1",
"description": "PPM min Camera 1",
"memAddr": "40031",
"tipoMem": "Int",
"index": 31,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_max_C1": {
"name": "PPM_max_C1",
"description": "PPM MAX Camera 1",
"memAddr": "40032",
"tipoMem": "Int",
"index": 32,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_min_C2": {
"name": "PPM_min_C2",
"description": "PPM min Camera 2",
"memAddr": "40033",
"tipoMem": "Int",
"index": 33,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_max_C2": {
"name": "PPM_max_C2",
"description": "PPM MAX Camera 2",
"memAddr": "40034",
"tipoMem": "Int",
"index": 34,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_min_C3": {
"name": "PPM_min_C3",
"description": "PPM min Camera 3",
"memAddr": "40035",
"tipoMem": "Int",
"index": 35,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_max_C3": {
"name": "PPM_max_C3",
"description": "PPM MAX Camera 3",
"memAddr": "40036",
"tipoMem": "Int",
"index": 36,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_min_C4": {
"name": "PPM_min_C4",
"description": "PPM min Camera 4",
"memAddr": "40037",
"tipoMem": "Int",
"index": 37,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_max_C4": {
"name": "PPM_max_C4",
"description": "PPM MAX Camera 4",
"memAddr": "40038",
"tipoMem": "Int",
"index": 38,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"Sonda01": {
"name": "Sonda01",
"description": "Sonda 01",
"memAddr": "30110",
"tipoMem": "Int",
"index": 110,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 0.01,
"minVal": 0,
"maxVal": 999999999,
"unit": "#"
},
"Sonda02": {
"name": "Sonda02",
"description": "Sonda 02",
"memAddr": "30120",
"tipoMem": "Int",
"index": 120,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 0.01,
"minVal": 0,
"maxVal": 999999999,
"unit": "#"
},
"Sonda03": {
"name": "Sonda03",
"description": "Sonda 03",
"memAddr": "30130",
"tipoMem": "Int",
"index": 130,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 0.01,
"minVal": 0,
"maxVal": 999999999,
"unit": "#"
},
"Sonda04": {
"name": "Sonda04",
"description": "Sonda 04",
"memAddr": "30140",
"tipoMem": "Int",
"index": 140,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 0.01,
"minVal": 0,
"maxVal": 999999999,
"unit": "#"
},
"Amper01": {
"name": "Amper01",
"description": "Amper 01",
"memAddr": "30010",
"tipoMem": "Int",
"index": 10,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 999999999,
"unit": "#"
},
"Amper02": {
"name": "Amper02",
"description": "Amper 02",
"memAddr": "30011",
"tipoMem": "Int",
"index": 11,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 999999999,
"unit": "#"
},
"Amper03": {
"name": "Amper03",
"description": "Amper 03",
"memAddr": "30012",
"tipoMem": "Int",
"index": 12,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 999999999,
"unit": "#"
},
"Amper04": {
"name": "Amper04",
"description": "Amper 04",
"memAddr": "30013",
"tipoMem": "Int",
"index": 13,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 999999999,
"unit": "#"
},
"ContCam01": {
"name": "ContCam01",
"description": "Cont Camera 01",
"memAddr": "30021",
"tipoMem": "Int",
"index": 21,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 999999999,
"unit": "#"
},
"ContCam02": {
"name": "ContCam02",
"description": "Cont Camera 02",
"memAddr": "30022",
"tipoMem": "Int",
"index": 22,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 999999999,
"unit": "#"
},
"ContCam03": {
"name": "ContCam03",
"description": "Cont Camera 03",
"memAddr": "30023",
"tipoMem": "Int",
"index": 23,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 999999999,
"unit": "#"
},
"ContCam04": {
"name": "ContCam04",
"description": "Cont Camera 04",
"memAddr": "30024",
"tipoMem": "Int",
"index": 24,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 999999999,
"unit": "#"
}
},
"optMemPar": {
"AlarmBitCond": "10002.0=1",
"WorkBitCond": "10001.0=1"
},
"fileDecod": {
"Product": 3,
"Variety": 9,
"Supplier": 8,
"ExtDoc": 2,
"DateRif": 14,
"QtyTot": 22,
"NumPack": 21,
"NumPed": 17,
"PackPed": 18,
"PesoPack": 20
}
}
@@ -0,0 +1,9 @@
{
"ReadBlocks": {
"10000": 10,
"10100": 10,
"30000": 30,
"30100": 50,
"40030": 10
}
}
+88
View File
@@ -0,0 +1,88 @@
;Configurazione IOB-WIN
[IOB]
;Impianto SAIM 03 Locorotondo - Giacovelli
CNCTYPE=MODBUS_TCP_SAIM
PING_MS_TIMEOUT=1000
MinDeltaSec=5
[MACHINE]
VENDOR=SAIM
MODEL=Trattamento Ozono
[CNC]
IP=192.168.18.10
PORT=502
[SERVER]
MPIP=http://192.168.1.14
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=200
SIZE_WRITE=0
HR_BASE_ADDR=40000
;DELTA_BASE=1
DELTA_BASE=0
MODBUS_EXT_REG=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
; clock base (da 10ms)
timerIntMs=10
AUTO_CHANGE_ODL=TRUE
CHANGE_ODL_MODE=DAILY
; conf parametri memoria READ/WRITE
PARAM_CONF=GIACO_SAIM_003.json
NO_PING=FALSE
; conf blocchi memoria x READ
MEM_BLOCK=GIACO_SAIM_003_MBlock.json
; conf aree allarme
;ALARM_CONF=GIACO_SAIM_003_alarm.json
; rimozione check limiti min/max dynData
disDynDataRangeCheck=true
; conf file import
FILE_IMPORT_FOLDER=C:\GiacenzeLocorotondo
FILE_IMPORT_TYPE=*.xlsx
FILE_ARCHIVE_FOLDER=C:\GiacenzeLocorotondo\SAIM002
[BRANCH]
NAME=master
+590
View File
@@ -0,0 +1,590 @@
{
"mMapWrite": {
"PPM_min_C1": {
"name": "PPM_min_C1",
"description": "PPM min Camera 1",
"memAddr": "40031",
"tipoMem": "Int",
"index": 31,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_max_C1": {
"name": "PPM_max_C1",
"description": "PPM MAX Camera 1",
"memAddr": "40032",
"tipoMem": "Int",
"index": 32,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_min_C2": {
"name": "PPM_min_C2",
"description": "PPM min Camera 2",
"memAddr": "40033",
"tipoMem": "Int",
"index": 33,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_max_C2": {
"name": "PPM_max_C2",
"description": "PPM MAX Camera 2",
"memAddr": "40034",
"tipoMem": "Int",
"index": 34,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_min_C3": {
"name": "PPM_min_C3",
"description": "PPM min Camera 3",
"memAddr": "40035",
"tipoMem": "Int",
"index": 35,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_max_C3": {
"name": "PPM_max_C3",
"description": "PPM MAX Camera 3",
"memAddr": "40036",
"tipoMem": "Int",
"index": 36,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_min_C4": {
"name": "PPM_min_C4",
"description": "PPM min Camera 4",
"memAddr": "40037",
"tipoMem": "Int",
"index": 37,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_max_C4": {
"name": "PPM_max_C4",
"description": "PPM MAX Camera 4",
"memAddr": "40038",
"tipoMem": "Int",
"index": 38,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_min_C5": {
"name": "PPM_min_C5",
"description": "PPM min Camera 5",
"memAddr": "40039",
"tipoMem": "Int",
"index": 39,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_max_C5": {
"name": "PPM_max_C5",
"description": "PPM MAX Camera 5",
"memAddr": "40040",
"tipoMem": "Int",
"index": 40,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_min_C6": {
"name": "PPM_min_C6",
"description": "PPM min Camera 6",
"memAddr": "40041",
"tipoMem": "Int",
"index": 41,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_max_C6": {
"name": "PPM_max_C6",
"description": "PPM MAX Camera 6",
"memAddr": "40042",
"tipoMem": "Int",
"index": 42,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
}
},
"mMapRead": {
"PPM_min_C1": {
"name": "PPM_min_C1",
"description": "PPM min Camera 1",
"memAddr": "40031",
"tipoMem": "Int",
"index": 31,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_max_C1": {
"name": "PPM_max_C1",
"description": "PPM MAX Camera 1",
"memAddr": "40032",
"tipoMem": "Int",
"index": 32,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_min_C2": {
"name": "PPM_min_C2",
"description": "PPM min Camera 2",
"memAddr": "40033",
"tipoMem": "Int",
"index": 33,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_max_C2": {
"name": "PPM_max_C2",
"description": "PPM MAX Camera 2",
"memAddr": "40034",
"tipoMem": "Int",
"index": 34,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_min_C3": {
"name": "PPM_min_C3",
"description": "PPM min Camera 3",
"memAddr": "40035",
"tipoMem": "Int",
"index": 35,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_max_C3": {
"name": "PPM_max_C3",
"description": "PPM MAX Camera 3",
"memAddr": "40036",
"tipoMem": "Int",
"index": 36,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_min_C4": {
"name": "PPM_min_C4",
"description": "PPM min Camera 4",
"memAddr": "40037",
"tipoMem": "Int",
"index": 37,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_max_C4": {
"name": "PPM_max_C4",
"description": "PPM MAX Camera 4",
"memAddr": "40038",
"tipoMem": "Int",
"index": 38,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_min_C5": {
"name": "PPM_min_C5",
"description": "PPM min Camera 5",
"memAddr": "40039",
"tipoMem": "Int",
"index": 39,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_max_C5": {
"name": "PPM_max_C5",
"description": "PPM MAX Camera 5",
"memAddr": "40040",
"tipoMem": "Int",
"index": 40,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_min_C6": {
"name": "PPM_min_C6",
"description": "PPM min Camera 6",
"memAddr": "40041",
"tipoMem": "Int",
"index": 41,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"PPM_max_C6": {
"name": "PPM_max_C6",
"description": "PPM MAX Camera 6",
"memAddr": "40042",
"tipoMem": "Int",
"index": 42,
"size": 1,
"factor": 0.01,
"minVal": 0,
"maxVal": 1000,
"unit": "PPM"
},
"Sonda01": {
"name": "Sonda01",
"description": "Sonda 01",
"memAddr": "30110",
"tipoMem": "Int",
"index": 110,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 0.01,
"minVal": 0,
"maxVal": 999999999,
"unit": "#"
},
"Sonda02": {
"name": "Sonda02",
"description": "Sonda 02",
"memAddr": "30120",
"tipoMem": "Int",
"index": 120,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 0.01,
"minVal": 0,
"maxVal": 999999999,
"unit": "#"
},
"Sonda03": {
"name": "Sonda03",
"description": "Sonda 03",
"memAddr": "30130",
"tipoMem": "Int",
"index": 130,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 0.01,
"minVal": 0,
"maxVal": 999999999,
"unit": "#"
},
"Sonda04": {
"name": "Sonda04",
"description": "Sonda 04",
"memAddr": "30140",
"tipoMem": "Int",
"index": 140,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 0.01,
"minVal": 0,
"maxVal": 999999999,
"unit": "#"
},
"Sonda05": {
"name": "Sonda05",
"description": "Sonda 05",
"memAddr": "30150",
"tipoMem": "Int",
"index": 150,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 0.01,
"minVal": 0,
"maxVal": 999999999,
"unit": "#"
},
"Sonda06": {
"name": "Sonda06",
"description": "Sonda 06",
"memAddr": "30160",
"tipoMem": "Int",
"index": 160,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 0.01,
"minVal": 0,
"maxVal": 999999999,
"unit": "#"
},
"Amper01": {
"name": "Amper01",
"description": "Amper 01",
"memAddr": "30010",
"tipoMem": "Int",
"index": 10,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 999999999,
"unit": "#"
},
"Amper02": {
"name": "Amper02",
"description": "Amper 02",
"memAddr": "30011",
"tipoMem": "Int",
"index": 11,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 999999999,
"unit": "#"
},
"Amper03": {
"name": "Amper03",
"description": "Amper 03",
"memAddr": "30012",
"tipoMem": "Int",
"index": 12,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 999999999,
"unit": "#"
},
"Amper04": {
"name": "Amper04",
"description": "Amper 04",
"memAddr": "30013",
"tipoMem": "Int",
"index": 13,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 999999999,
"unit": "#"
},
"Amper05": {
"name": "Amper05",
"description": "Amper 05",
"memAddr": "30014",
"tipoMem": "Int",
"index": 14,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 999999999,
"unit": "#"
},
"Amper06": {
"name": "Amper06",
"description": "Amper 06",
"memAddr": "30015",
"tipoMem": "Int",
"index": 15,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 999999999,
"unit": "#"
},
"Amper07": {
"name": "Amper07",
"description": "Amper 07",
"memAddr": "30016",
"tipoMem": "Int",
"index": 16,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 999999999,
"unit": "#"
},
"Amper08": {
"name": "Amper08",
"description": "Amper 08",
"memAddr": "30017",
"tipoMem": "Int",
"index": 17,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 999999999,
"unit": "#"
},
"ContCam01": {
"name": "ContCam01",
"description": "Cont Camera 01",
"memAddr": "30021",
"tipoMem": "Int",
"index": 21,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 999999999,
"unit": "#"
},
"ContCam02": {
"name": "ContCam02",
"description": "Cont Camera 02",
"memAddr": "30022",
"tipoMem": "Int",
"index": 22,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 999999999,
"unit": "#"
},
"ContCam03": {
"name": "ContCam03",
"description": "Cont Camera 03",
"memAddr": "30023",
"tipoMem": "Int",
"index": 23,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 999999999,
"unit": "#"
},
"ContCam04": {
"name": "ContCam04",
"description": "Cont Camera 04",
"memAddr": "30024",
"tipoMem": "Int",
"index": 24,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 999999999,
"unit": "#"
},
"ContCam05": {
"name": "ContCam05",
"description": "Cont Camera 05",
"memAddr": "30025",
"tipoMem": "Int",
"index": 25,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 999999999,
"unit": "#"
},
"ContCam06": {
"name": "ContCam06",
"description": "Cont Camera 06",
"memAddr": "30026",
"tipoMem": "Int",
"index": 26,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 1,
"minVal": 0,
"maxVal": 999999999,
"unit": "#"
}
},
"optMemPar": {
"AlarmBitCond": "10002.0=0",
"WorkBitCond": "10001.0=1"
},
"fileDecod": {
"Product": 3,
"Variety": 9,
"Supplier": 8,
"ExtDoc": 2,
"DateRif": 14,
"QtyTot": 22,
"NumPack": 21,
"NumPed": 17,
"PackPed": 18,
"PesoPack": 20
}
}
@@ -0,0 +1,10 @@
{
"ReadBlocks": {
"10000": 10,
"10100": 10,
"30000": 50,
"30100": 40,
"30140": 30,
"40030": 20
}
}
+66
View File
@@ -0,0 +1,66 @@
;Configurazione IOB-WIN
[IOB]
;impianto ULMA Giacovelli
CNCTYPE=OpcUaUlma
PING_MS_TIMEOUT=500
MinDeltaSec=5
[MACHINE]
VENDOR=ULMA
MODEL=Confezionatrice ULMA UVA Locorotondo
[CNC]
IP=192.168.222.252
PORT=16664
GETPRGNAME=true
[SERVER]
MPIP=http://192.168.1.14
MPURL=/MP/IO
CMDBASE=/IOB/input/
CMDFLOG=/IOB/flog/
CMDALIVE=/IOB
CMDENABLED=/IOB/enabled/
CMDADV1=?valore=
CMDREBO=/sendReboot.aspx?idxMacchina=
[MEMORY]
ADDR_READ=DB9999.DBB0
ADDR_WRITE=DB9999.DBB0
SIZE_READ=0
SIZE_WRITE=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]
AUTO_CHANGE_ODL=false
CHANGE_ODL_MODE=TIME
CHANGE_ODL_HOURS=24
CHANGE_ODL_IDLE_MIN=5
PZCOUNT_MODE=OPC
DISABLE_PZCOUNT=FALSE
ENABLE_SEND_PZC_BLOCK=TRUE
MIN_SEND_PZC_BLOCK=0
MAX_SEND_PZC_BLOCK=100
ENABLE_DYN_DATA=FALSE
FORCE_DYN_DATA=TRUE
ENABLE_DATA_FILTER=TRUE
ENABLE_CLI_RESTART=TRUE
; conf parametri memoria READ/WRITE
OPC_PARAM_CONF=GIACO_ULMA_001.json
[BRANCH]
NAME=master
+609
View File
@@ -0,0 +1,609 @@
{
"BrowseFullVal": "i=85",
"BrowseNSIndex": 4,
"BrowseValue": 5001,
"keyPartCount": "",
"keyPartReq": "",
"keyPartId": "",
"keyProgName": "",
"keyExeMode": "",
"keyRunMode": "MyUlma.status",
"runModeSend": true,
"pingAsPowerOn": true,
"forcePingOk": false,
"translRunMode": true,
"Identity": {
"UserName": "opc",
"Passwd": "ulmaopc"
},
"condWork": [],
"condWorkOpc": {
"checkMode": "OR",
"checkList": [
{
"keyName": "MyUlma.status",
"targetValue": "8"
}
]
},
"condPowerOn": {
"checkMode": "OR",
"negateValue": false,
"checkList": []
},
"condReady": {
"checkMode": "OR",
"checkList": [
{
"keyName": "MyUlma.status",
"targetValue": "5"
},
{
"keyName": "MyUlma.status",
"targetValue": "6"
},
{
"keyName": "MyUlma.status",
"targetValue": "7"
}
]
},
"condManual": {
"checkMode": "OR",
"checkList": [
{
"keyName": "MyUlma.status",
"targetValue": "9"
},
{
"keyName": "MyUlma.status",
"targetValue": "10"
},
{
"keyName": "MyUlma.status",
"targetValue": "11"
},
{
"keyName": "MyUlma.status",
"targetValue": "12"
},
{
"keyName": "MyUlma.status",
"targetValue": "13"
},
{
"keyName": "MyUlma.status",
"targetValue": "14"
}
]
},
"condEStop": {
"checkMode": "AND",
"checkList": []
},
"condError": {
"checkMode": "OR",
"checkList": [
{
"keyName": "MyUlma.status",
"targetValue": "0"
},
{
"keyName": "MyUlma.status",
"targetValue": "1"
},
{
"keyName": "MyUlma.status",
"targetValue": "2"
},
{
"keyName": "MyUlma.status",
"targetValue": "3"
},
{
"keyName": "MyUlma.status",
"targetValue": "4"
}
]
},
"condCountEnabled": {
"checkMode": "AND",
"checkList": []
},
"condWarmUpCoolDown": {
"checkMode": "OR",
"negateValue": true,
"checkList": []
},
"condWarning": {
"checkMode": "AND",
"checkList": []
},
"condSetup": {
"checkMode": "AND",
"checkList": []
},
"fluxLogVeto": [
"OPC_OEE.remote",
"OPC_OEE.remote.shift",
"OPC_OEE.remote.shift.req_shift",
"OPC_OEE.remote.shift.cmd_BeginShift",
"OPC_OEE.remote.shift.cmd_BeginShift.exec",
"OPC_OEE.remote.shift.cmd_BeginShift.timeout",
"OPC_OEE.remote.shift.cmd_BeginShift.status",
"OPC_OEE.remote.shift.cmd_EndShift",
"OPC_OEE.remote.shift.cmd_EndShift.exec",
"OPC_OEE.remote.shift.cmd_EndShift.timeout",
"OPC_OEE.remote.shift.cmd_EndShift.status",
"OPC_OEE.remote.quality",
"OPC_OEE.remote.quality.reject_counters",
"OPC_OEE.remote.order",
"OPC_OEE.remote.order.req_order",
"OPC_OEE.remote.order.end_mode",
"OPC_OEE.remote.order.cmd_BeginOrder",
"OPC_OEE.remote.order.cmd_BeginOrder.exec",
"OPC_OEE.remote.order.cmd_BeginOrder.timeout",
"OPC_OEE.remote.order.cmd_BeginOrder.status",
"OPC_OEE.remote.order.cmd_EndOrder",
"OPC_OEE.remote.order.cmd_EndOrder.exec",
"OPC_OEE.remote.order.cmd_EndOrder.timeout",
"OPC_OEE.remote.order.cmd_EndOrder.status",
"OPC_OEE.remote.order.list",
"OPC_OEE.remote.order.list.0",
"OPC_OEE.remote.order.list.0.ref",
"OPC_OEE.remote.order.list.0.recipe",
"OPC_OEE.remote.order.list.0.nominal_speed",
"OPC_OEE.remote.order.list.0.preset_count",
"OPC_OEE.remote.order.list.0.stat",
"OPC_OEE.remote.order.list.0.stat.planned_prod",
"OPC_OEE.remote.order.list.0.stat.planned_prod.total_time",
"OPC_OEE.remote.order.list.0.stat.planned_prod.production_time",
"OPC_OEE.remote.order.list.0.stat.planned_prod.good_count",
"OPC_OEE.remote.order.list.0.stat.planned_prod.reject_count",
"OPC_OEE.remote.order.list.0.stat.planned_prod.target_count",
"OPC_OEE.remote.order.list.0.stat.planned_prod.oee",
"OPC_OEE.remote.order.list.0.stat.planned_prod.oee.total",
"OPC_OEE.remote.order.list.0.stat.planned_prod.oee.a",
"OPC_OEE.remote.order.list.0.stat.planned_prod.oee.p",
"OPC_OEE.remote.order.list.0.stat.planned_prod.oee.q",
"OPC_OEE.remote.order.list.0.stat.total_prod",
"OPC_OEE.remote.order.list.0.stat.total_prod.total_time",
"OPC_OEE.remote.order.list.0.stat.total_prod.production_time",
"OPC_OEE.remote.order.list.0.stat.total_prod.good_count",
"OPC_OEE.remote.order.list.0.stat.total_prod.reject_count",
"OPC_OEE.remote.order.list.0.stat.total_prod.target_count",
"OPC_OEE.remote.order.list.0.stat.total_prod.oee",
"OPC_OEE.remote.order.list.0.stat.total_prod.oee.total",
"OPC_OEE.remote.order.list.0.stat.total_prod.oee.a",
"OPC_OEE.remote.order.list.0.stat.total_prod.oee.p",
"OPC_OEE.remote.order.list.0.stat.total_prod.oee.q",
"OPC_OEE.remote.order.list.1",
"OPC_OEE.remote.order.list.1.ref",
"OPC_OEE.remote.order.list.1.recipe",
"OPC_OEE.remote.order.list.1.nominal_speed",
"OPC_OEE.remote.order.list.1.preset_count",
"OPC_OEE.remote.order.list.1.stat",
"OPC_OEE.remote.order.list.1.stat.planned_prod",
"OPC_OEE.remote.order.list.1.stat.planned_prod.total_time",
"OPC_OEE.remote.order.list.1.stat.planned_prod.production_time",
"OPC_OEE.remote.order.list.1.stat.planned_prod.good_count",
"OPC_OEE.remote.order.list.1.stat.planned_prod.reject_count",
"OPC_OEE.remote.order.list.1.stat.planned_prod.target_count",
"OPC_OEE.remote.order.list.1.stat.planned_prod.oee",
"OPC_OEE.remote.order.list.1.stat.planned_prod.oee.total",
"OPC_OEE.remote.order.list.1.stat.planned_prod.oee.a",
"OPC_OEE.remote.order.list.1.stat.planned_prod.oee.p",
"OPC_OEE.remote.order.list.1.stat.planned_prod.oee.q",
"OPC_OEE.remote.order.list.1.stat.total_prod",
"OPC_OEE.remote.order.list.1.stat.total_prod.total_time",
"OPC_OEE.remote.order.list.1.stat.total_prod.production_time",
"OPC_OEE.remote.order.list.1.stat.total_prod.good_count",
"OPC_OEE.remote.order.list.1.stat.total_prod.reject_count",
"OPC_OEE.remote.order.list.1.stat.total_prod.target_count",
"OPC_OEE.remote.order.list.1.stat.total_prod.oee",
"OPC_OEE.remote.order.list.1.stat.total_prod.oee.total",
"OPC_OEE.remote.order.list.1.stat.total_prod.oee.a",
"OPC_OEE.remote.order.list.1.stat.total_prod.oee.p",
"OPC_OEE.remote.order.list.1.stat.total_prod.oee.q",
"OPC_OEE.remote.order.list.2",
"OPC_OEE.remote.order.list.2.ref",
"OPC_OEE.remote.order.list.2.recipe",
"OPC_OEE.remote.order.list.2.nominal_speed",
"OPC_OEE.remote.order.list.2.preset_count",
"OPC_OEE.remote.order.list.2.stat",
"OPC_OEE.remote.order.list.2.stat.planned_prod",
"OPC_OEE.remote.order.list.2.stat.planned_prod.total_time",
"OPC_OEE.remote.order.list.2.stat.planned_prod.production_time",
"OPC_OEE.remote.order.list.2.stat.planned_prod.good_count",
"OPC_OEE.remote.order.list.2.stat.planned_prod.reject_count",
"OPC_OEE.remote.order.list.2.stat.planned_prod.target_count",
"OPC_OEE.remote.order.list.2.stat.planned_prod.oee",
"OPC_OEE.remote.order.list.2.stat.planned_prod.oee.total",
"OPC_OEE.remote.order.list.2.stat.planned_prod.oee.a",
"OPC_OEE.remote.order.list.2.stat.planned_prod.oee.p",
"OPC_OEE.remote.order.list.2.stat.planned_prod.oee.q",
"OPC_OEE.remote.order.list.2.stat.total_prod",
"OPC_OEE.remote.order.list.2.stat.total_prod.total_time",
"OPC_OEE.remote.order.list.2.stat.total_prod.production_time",
"OPC_OEE.remote.order.list.2.stat.total_prod.good_count",
"OPC_OEE.remote.order.list.2.stat.total_prod.reject_count",
"OPC_OEE.remote.order.list.2.stat.total_prod.target_count",
"OPC_OEE.remote.order.list.2.stat.total_prod.oee",
"OPC_OEE.remote.order.list.2.stat.total_prod.oee.total",
"OPC_OEE.remote.order.list.2.stat.total_prod.oee.a",
"OPC_OEE.remote.order.list.2.stat.total_prod.oee.p",
"OPC_OEE.remote.order.list.2.stat.total_prod.oee.q",
"OPC_OEE.remote.order.list.3",
"OPC_OEE.remote.order.list.3.ref",
"OPC_OEE.remote.order.list.3.recipe",
"OPC_OEE.remote.order.list.3.nominal_speed",
"OPC_OEE.remote.order.list.3.preset_count",
"OPC_OEE.remote.order.list.3.stat",
"OPC_OEE.remote.order.list.3.stat.planned_prod",
"OPC_OEE.remote.order.list.3.stat.planned_prod.total_time",
"OPC_OEE.remote.order.list.3.stat.planned_prod.production_time",
"OPC_OEE.remote.order.list.3.stat.planned_prod.good_count",
"OPC_OEE.remote.order.list.3.stat.planned_prod.reject_count",
"OPC_OEE.remote.order.list.3.stat.planned_prod.target_count",
"OPC_OEE.remote.order.list.3.stat.planned_prod.oee",
"OPC_OEE.remote.order.list.3.stat.planned_prod.oee.total",
"OPC_OEE.remote.order.list.3.stat.planned_prod.oee.a",
"OPC_OEE.remote.order.list.3.stat.planned_prod.oee.p",
"OPC_OEE.remote.order.list.3.stat.planned_prod.oee.q",
"OPC_OEE.remote.order.list.3.stat.total_prod",
"OPC_OEE.remote.order.list.3.stat.total_prod.total_time",
"OPC_OEE.remote.order.list.3.stat.total_prod.production_time",
"OPC_OEE.remote.order.list.3.stat.total_prod.good_count",
"OPC_OEE.remote.order.list.3.stat.total_prod.reject_count",
"OPC_OEE.remote.order.list.3.stat.total_prod.target_count",
"OPC_OEE.remote.order.list.3.stat.total_prod.oee",
"OPC_OEE.remote.order.list.3.stat.total_prod.oee.total",
"OPC_OEE.remote.order.list.3.stat.total_prod.oee.a",
"OPC_OEE.remote.order.list.3.stat.total_prod.oee.p",
"OPC_OEE.remote.order.list.3.stat.total_prod.oee.q",
"OPC_OEE.remote.order.list.4",
"OPC_OEE.remote.order.list.4.ref",
"OPC_OEE.remote.order.list.4.recipe",
"OPC_OEE.remote.order.list.4.nominal_speed",
"OPC_OEE.remote.order.list.4.preset_count",
"OPC_OEE.remote.order.list.4.stat",
"OPC_OEE.remote.order.list.4.stat.planned_prod",
"OPC_OEE.remote.order.list.4.stat.planned_prod.total_time",
"OPC_OEE.remote.order.list.4.stat.planned_prod.production_time",
"OPC_OEE.remote.order.list.4.stat.planned_prod.good_count",
"OPC_OEE.remote.order.list.4.stat.planned_prod.reject_count",
"OPC_OEE.remote.order.list.4.stat.planned_prod.target_count",
"OPC_OEE.remote.order.list.4.stat.planned_prod.oee",
"OPC_OEE.remote.order.list.4.stat.planned_prod.oee.total",
"OPC_OEE.remote.order.list.4.stat.planned_prod.oee.a",
"OPC_OEE.remote.order.list.4.stat.planned_prod.oee.p",
"OPC_OEE.remote.order.list.4.stat.planned_prod.oee.q",
"OPC_OEE.remote.order.list.4.stat.total_prod",
"OPC_OEE.remote.order.list.4.stat.total_prod.total_time",
"OPC_OEE.remote.order.list.4.stat.total_prod.production_time",
"OPC_OEE.remote.order.list.4.stat.total_prod.good_count",
"OPC_OEE.remote.order.list.4.stat.total_prod.reject_count",
"OPC_OEE.remote.order.list.4.stat.total_prod.target_count",
"OPC_OEE.remote.order.list.4.stat.total_prod.oee",
"OPC_OEE.remote.order.list.4.stat.total_prod.oee.total",
"OPC_OEE.remote.order.list.4.stat.total_prod.oee.a",
"OPC_OEE.remote.order.list.4.stat.total_prod.oee.p",
"OPC_OEE.remote.order.list.4.stat.total_prod.oee.q",
"OPC_OEE.remote.order.list.5",
"OPC_OEE.remote.order.list.5.ref",
"OPC_OEE.remote.order.list.5.recipe",
"OPC_OEE.remote.order.list.5.nominal_speed",
"OPC_OEE.remote.order.list.5.preset_count",
"OPC_OEE.remote.order.list.5.stat",
"OPC_OEE.remote.order.list.5.stat.planned_prod",
"OPC_OEE.remote.order.list.5.stat.planned_prod.total_time",
"OPC_OEE.remote.order.list.5.stat.planned_prod.production_time",
"OPC_OEE.remote.order.list.5.stat.planned_prod.good_count",
"OPC_OEE.remote.order.list.5.stat.planned_prod.reject_count",
"OPC_OEE.remote.order.list.5.stat.planned_prod.target_count",
"OPC_OEE.remote.order.list.5.stat.planned_prod.oee",
"OPC_OEE.remote.order.list.5.stat.planned_prod.oee.total",
"OPC_OEE.remote.order.list.5.stat.planned_prod.oee.a",
"OPC_OEE.remote.order.list.5.stat.planned_prod.oee.p",
"OPC_OEE.remote.order.list.5.stat.planned_prod.oee.q",
"OPC_OEE.remote.order.list.5.stat.total_prod",
"OPC_OEE.remote.order.list.5.stat.total_prod.total_time",
"OPC_OEE.remote.order.list.5.stat.total_prod.production_time",
"OPC_OEE.remote.order.list.5.stat.total_prod.good_count",
"OPC_OEE.remote.order.list.5.stat.total_prod.reject_count",
"OPC_OEE.remote.order.list.5.stat.total_prod.target_count",
"OPC_OEE.remote.order.list.5.stat.total_prod.oee",
"OPC_OEE.remote.order.list.5.stat.total_prod.oee.total",
"OPC_OEE.remote.order.list.5.stat.total_prod.oee.a",
"OPC_OEE.remote.order.list.5.stat.total_prod.oee.p",
"OPC_OEE.remote.order.list.5.stat.total_prod.oee.q",
"OPC_OEE.remote.order.list.6",
"OPC_OEE.remote.order.list.6.ref",
"OPC_OEE.remote.order.list.6.recipe",
"OPC_OEE.remote.order.list.6.nominal_speed",
"OPC_OEE.remote.order.list.6.preset_count",
"OPC_OEE.remote.order.list.6.stat",
"OPC_OEE.remote.order.list.6.stat.planned_prod",
"OPC_OEE.remote.order.list.6.stat.planned_prod.total_time",
"OPC_OEE.remote.order.list.6.stat.planned_prod.production_time",
"OPC_OEE.remote.order.list.6.stat.planned_prod.good_count",
"OPC_OEE.remote.order.list.6.stat.planned_prod.reject_count",
"OPC_OEE.remote.order.list.6.stat.planned_prod.target_count",
"OPC_OEE.remote.order.list.6.stat.planned_prod.oee",
"OPC_OEE.remote.order.list.6.stat.planned_prod.oee.total",
"OPC_OEE.remote.order.list.6.stat.planned_prod.oee.a",
"OPC_OEE.remote.order.list.6.stat.planned_prod.oee.p",
"OPC_OEE.remote.order.list.6.stat.planned_prod.oee.q",
"OPC_OEE.remote.order.list.6.stat.total_prod",
"OPC_OEE.remote.order.list.6.stat.total_prod.total_time",
"OPC_OEE.remote.order.list.6.stat.total_prod.production_time",
"OPC_OEE.remote.order.list.6.stat.total_prod.good_count",
"OPC_OEE.remote.order.list.6.stat.total_prod.reject_count",
"OPC_OEE.remote.order.list.6.stat.total_prod.target_count",
"OPC_OEE.remote.order.list.6.stat.total_prod.oee",
"OPC_OEE.remote.order.list.6.stat.total_prod.oee.total",
"OPC_OEE.remote.order.list.6.stat.total_prod.oee.a",
"OPC_OEE.remote.order.list.6.stat.total_prod.oee.p",
"OPC_OEE.remote.order.list.6.stat.total_prod.oee.q",
"OPC_OEE.remote.order.list.7",
"OPC_OEE.remote.order.list.7.ref",
"OPC_OEE.remote.order.list.7.recipe",
"OPC_OEE.remote.order.list.7.nominal_speed",
"OPC_OEE.remote.order.list.7.preset_count",
"OPC_OEE.remote.order.list.7.stat",
"OPC_OEE.remote.order.list.7.stat.planned_prod",
"OPC_OEE.remote.order.list.7.stat.planned_prod.total_time",
"OPC_OEE.remote.order.list.7.stat.planned_prod.production_time",
"OPC_OEE.remote.order.list.7.stat.planned_prod.good_count",
"OPC_OEE.remote.order.list.7.stat.planned_prod.reject_count",
"OPC_OEE.remote.order.list.7.stat.planned_prod.target_count",
"OPC_OEE.remote.order.list.7.stat.planned_prod.oee",
"OPC_OEE.remote.order.list.7.stat.planned_prod.oee.total",
"OPC_OEE.remote.order.list.7.stat.planned_prod.oee.a",
"OPC_OEE.remote.order.list.7.stat.planned_prod.oee.p",
"OPC_OEE.remote.order.list.7.stat.planned_prod.oee.q",
"OPC_OEE.remote.order.list.7.stat.total_prod",
"OPC_OEE.remote.order.list.7.stat.total_prod.total_time",
"OPC_OEE.remote.order.list.7.stat.total_prod.production_time",
"OPC_OEE.remote.order.list.7.stat.total_prod.good_count",
"OPC_OEE.remote.order.list.7.stat.total_prod.reject_count",
"OPC_OEE.remote.order.list.7.stat.total_prod.target_count",
"OPC_OEE.remote.order.list.7.stat.total_prod.oee",
"OPC_OEE.remote.order.list.7.stat.total_prod.oee.total",
"OPC_OEE.remote.order.list.7.stat.total_prod.oee.a",
"OPC_OEE.remote.order.list.7.stat.total_prod.oee.p",
"OPC_OEE.remote.order.list.7.stat.total_prod.oee.q",
"OPC_OEE.remote.order.list.8",
"OPC_OEE.remote.order.list.8.ref",
"OPC_OEE.remote.order.list.8.recipe",
"OPC_OEE.remote.order.list.8.nominal_speed",
"OPC_OEE.remote.order.list.8.preset_count",
"OPC_OEE.remote.order.list.8.stat",
"OPC_OEE.remote.order.list.8.stat.planned_prod",
"OPC_OEE.remote.order.list.8.stat.planned_prod.total_time",
"OPC_OEE.remote.order.list.8.stat.planned_prod.production_time",
"OPC_OEE.remote.order.list.8.stat.planned_prod.good_count",
"OPC_OEE.remote.order.list.8.stat.planned_prod.reject_count",
"OPC_OEE.remote.order.list.8.stat.planned_prod.target_count",
"OPC_OEE.remote.order.list.8.stat.planned_prod.oee",
"OPC_OEE.remote.order.list.8.stat.planned_prod.oee.total",
"OPC_OEE.remote.order.list.8.stat.planned_prod.oee.a",
"OPC_OEE.remote.order.list.8.stat.planned_prod.oee.p",
"OPC_OEE.remote.order.list.8.stat.planned_prod.oee.q",
"OPC_OEE.remote.order.list.8.stat.total_prod",
"OPC_OEE.remote.order.list.8.stat.total_prod.total_time",
"OPC_OEE.remote.order.list.8.stat.total_prod.production_time",
"OPC_OEE.remote.order.list.8.stat.total_prod.good_count",
"OPC_OEE.remote.order.list.8.stat.total_prod.reject_count",
"OPC_OEE.remote.order.list.8.stat.total_prod.target_count",
"OPC_OEE.remote.order.list.8.stat.total_prod.oee",
"OPC_OEE.remote.order.list.8.stat.total_prod.oee.total",
"OPC_OEE.remote.order.list.8.stat.total_prod.oee.a",
"OPC_OEE.remote.order.list.8.stat.total_prod.oee.p",
"OPC_OEE.remote.order.list.8.stat.total_prod.oee.q",
"OPC_OEE.remote.order.list.9",
"OPC_OEE.remote.order.list.9.ref",
"OPC_OEE.remote.order.list.9.recipe",
"OPC_OEE.remote.order.list.9.nominal_speed",
"OPC_OEE.remote.order.list.9.preset_count",
"OPC_OEE.remote.order.list.9.stat",
"OPC_OEE.remote.order.list.9.stat.planned_prod",
"OPC_OEE.remote.order.list.9.stat.planned_prod.total_time",
"OPC_OEE.remote.order.list.9.stat.planned_prod.production_time",
"OPC_OEE.remote.order.list.9.stat.planned_prod.good_count",
"OPC_OEE.remote.order.list.9.stat.planned_prod.reject_count",
"OPC_OEE.remote.order.list.9.stat.planned_prod.target_count",
"OPC_OEE.remote.order.list.9.stat.planned_prod.oee",
"OPC_OEE.remote.order.list.9.stat.planned_prod.oee.total",
"OPC_OEE.remote.order.list.9.stat.planned_prod.oee.a",
"OPC_OEE.remote.order.list.9.stat.planned_prod.oee.p",
"OPC_OEE.remote.order.list.9.stat.planned_prod.oee.q",
"OPC_OEE.remote.order.list.9.stat.total_prod",
"OPC_OEE.remote.order.list.9.stat.total_prod.total_time",
"OPC_OEE.remote.order.list.9.stat.total_prod.production_time",
"OPC_OEE.remote.order.list.9.stat.total_prod.good_count",
"OPC_OEE.remote.order.list.9.stat.total_prod.reject_count",
"OPC_OEE.remote.order.list.9.stat.total_prod.target_count",
"OPC_OEE.remote.order.list.9.stat.total_prod.oee",
"OPC_OEE.remote.order.list.9.stat.total_prod.oee.total",
"OPC_OEE.remote.order.list.9.stat.total_prod.oee.a",
"OPC_OEE.remote.order.list.9.stat.total_prod.oee.p",
"OPC_OEE.remote.order.list.9.stat.total_prod.oee.q"
],
"itemTranslation": {
"fdovrd": "PATH FEED OVERRIDE",
"rovrd": "PATH RAPID OVERRIDE",
"RunMode_0": "ABORTING",
"RunMode_1": "ABORTED",
"RunMode_2": "CLEANING",
"RunMode_3": "STOPPING",
"RunMode_4": "STOPPED",
"RunMode_5": "RESETTING",
"RunMode_6": "IDLE",
"RunMode_7": "STARTING",
"RunMode_8": "EXECUTE",
"RunMode_9": "HOLDING",
"RunMode_10": "HELD",
"RunMode_11": "UNHOLDING",
"RunMode_12": "HELD",
"RunMode_13": "SUSPENDING",
"RunMode_14": "SUSPENDED",
"Marcia_AUX_0": "Macchina non pronta",
"Marcia_AUX_1": "Macchina non pronta",
"Marcia_AUX_2": "Macchina pronta",
"Wheel_Fault_2": "Ruote OK",
"Wheel_Fault_3": "Ruote NON OK",
"Wheel_Fault_4": "Ruote in bypass",
"Wheel_Fault_5": "Ruote in manutenzione",
"MotorMessage_1": "Motore 1 acceso",
"MotorMessage_2": "Motore 2 acceso",
"MotorMessage_3": "Entrambi i motori accesi",
"ReserveDieselMessage_1": "Riserva diesel motore 1",
"ReserveDieselMessage_2": "Riserva diesel motore 2",
"ReserveDieselMessage_3": "Spegnimento per minimo diesel",
"Hydraulic_Unit_2": "Centralina idraulica OK",
"Hydraulic_Unit_3": "Allarme grave idraulica",
"Hydraulic_Unit_4": "Warning su centralina idraulica",
"ComProfibusMessage_1": "Allarme rete Profinet",
"ComProfibusMessage_3": "Allarme rete CAN",
"avail": "Machine Available",
"rstat": "Execution Mode",
"mode": "Controller Mode",
"PartName(0)": "Program Name",
"PartDone(0)": "Pezzi Prodotti",
"PartToDo(0)": "Qta Richiesta",
"MachineStatus(0)": "Stato Macchina principale",
"MachineStatus(1)": "Stato Macchina secondario",
"EmergencyState": "Emergenza"
},
"mMapWrite": {
"setPzComm": {
"name": "setPzComm",
"description": "Qty",
"tipoMem": "Int",
"memAddr": "ns=4;i=11",
"index": 0,
"size": 4
},
"setProg": {
"name": "setProg",
"description": "Programma",
"tipoMem": "String",
"memAddr": "ns=4;i=9",
"index": 0,
"size": 30
},
"syncDbData": {
"name": "syncDbData",
"description": "Sincronizzazione dati DB",
"tipoMem": "String",
"memAddr": "ns=4;i=0",
"index": 0,
"size": 30
}
},
"subscribedItems": [
"ns=1;s=MyUlma",
"ns=1;s=MyUlma.status",
"ns=1;s=MyUlma.machine_speed_preset",
"ns=1;s=MyUlma.machine_speed",
"ns=1;s=MyUlma.act_recipe_text",
"ns=1;s=MyUlma.message_text",
"ns=1;s=MyUlma.message",
"ns=1;s=MyUlma.act_recipe",
"ns=1;s=MyUlma.status",
"ns=1;s=OEE.version",
"ns=1;s=OEE.mode",
"ns=1;s=OEE.mode_text",
"ns=1;s=OEE.category",
"ns=1;s=OEE.category_text",
"ns=1;s=OEE.shift",
"ns=1;s=OEE.shift_text",
"ns=1;s=OEE.next_order",
"ns=1;s=OEE.next_order.ref",
"ns=1;s=OEE.next_order.recipe",
"ns=1;s=OEE.next_order.nominal_speed",
"ns=1;s=OEE.next_order.preset_count",
"ns=1;s=OEE.order",
"ns=1;s=OEE.order.ref",
"ns=1;s=OEE.order.recipe",
"ns=1;s=OEE.order.nominal_speed",
"ns=1;s=OEE.order.preset_count",
"ns=1;s=OEE.order.stat",
"ns=1;s=OEE.order.stat.planned_prod",
"ns=1;s=OEE.order.stat.planned_prod.total_time",
"ns=1;s=OEE.order.stat.planned_prod.production_time",
"ns=1;s=OEE.order.stat.planned_prod.good_count",
"ns=1;s=OEE.order.stat.planned_prod.reject_count",
"ns=1;s=OEE.order.stat.planned_prod.target_count",
"ns=1;s=OEE.order.stat.planned_prod.oee",
"ns=1;s=OEE.order.stat.planned_prod.oee.total",
"ns=1;s=OEE.order.stat.planned_prod.oee.a",
"ns=1;s=OEE.order.stat.planned_prod.oee.p",
"ns=1;s=OEE.order.stat.planned_prod.oee.q",
"ns=1;s=OEE.order.stat.total_prod",
"ns=1;s=OEE.order.stat.total_prod.total_time",
"ns=1;s=OEE.order.stat.total_prod.production_time",
"ns=1;s=OEE.order.stat.total_prod.good_count",
"ns=1;s=OEE.order.stat.total_prod.reject_count",
"ns=1;s=OEE.order.stat.total_prod.target_count",
"ns=1;s=OEE.order.stat.total_prod.oee",
"ns=1;s=OEE.order.stat.total_prod.oee.total",
"ns=1;s=OEE.order.stat.total_prod.oee.a",
"ns=1;s=OEE.order.stat.total_prod.oee.p",
"ns=1;s=OEE.order.stat.total_prod.oee.q",
"ns=1;s=Pkg_counters.reset_total_counter",
"ns=1;s=Pkg_counters.total_counter",
"ns=1;s=Pkg_counters.reset_reject_counter",
"ns=1;s=Pkg_counters.reject_counter",
"ns=1;s=Pkg_counters.machine_total_counter",
"ns=1;s=Pkg_counters.machine_reject_counter",
"ns=1;s=OMAC_timers.reset_OMAC_total_time",
"ns=1;s=OMAC_timers.aborting_time",
"ns=1;s=OMAC_timers.aborted_time",
"ns=1;s=OMAC_timers.clearing_time",
"ns=1;s=OMAC_timers.stopping_time",
"ns=1;s=OMAC_timers.stopped_time",
"ns=1;s=OMAC_timers.resetting_time",
"ns=1;s=OMAC_timers.idle_time",
"ns=1;s=OMAC_timers.starting_time",
"ns=1;s=OMAC_timers.execute_time",
"ns=1;s=OMAC_timers.holding_time",
"ns=1;s=OMAC_timers.held_time",
"ns=1;s=OMAC_timers.unholding_time",
"ns=1;s=OMAC_timers.suspending_time",
"ns=1;s=OMAC_timers.suspended_time",
"ns=1;s=OMAC_timers.unsuspending_time",
"ns=1;s=Process.sealing_pressure_setpoint",
"ns=1;s=Process.sealing_pressure_actual",
"ns=1;s=Process.sealing_time",
"ns=1;s=Process.vacuum_setpoint",
"ns=1;s=Process.vacuum_time",
"ns=1;s=Process.vacuum_actual",
"ns=1;s=Process.sealing_temperature_actual",
"ns=1;s=Process.sealing_temperature_setpoint",
"ns=1;s=Process.central_plate_temperature_actual",
"ns=1;s=Process.central_plate_temperature_setpoint",
"ns=1;s=Process.film_preheating_temperature_actual",
"ns=1;s=Process.film_preheating_temperature_setpoint",
"ns=1;s=Process.gas_time",
"ns=1;s=Process.gas_setpoint",
"ns=1;s=Process.gas_pressure"
],
"WatchDog": {
"IsEnabled": false,
"MemConfRead": "ns=4;s=tomes_1_Watchdog",
"MemConfWrite": "ns=4;s=tomach_1_watchdog",
"MaxVal": 9999
},
"fluxLogKeyValVeto": {
"RunModeVal": [
"-1",
"0"
],
"OPC_PLC/DB231/Attivita": [
"-1",
"0"
]
}
}
@@ -0,0 +1,608 @@
{
"BrowseFullVal": "ns=1;s=MyUlma",
"BrowseNSIndex": 4,
"BrowseValue": 5001,
"keyPartCount": "",
"keyPartReq": "",
"keyPartId": "",
"keyProgName": "",
"keyExeMode": "",
"keyRunMode": "MyUlma.status",
"runModeSend": true,
"pingAsPowerOn": true,
"forcePingOk": false,
"translRunMode": true,
"Identity": {
"UserName": "opc",
"Passwd": "ulmaopc"
},
"condWork": [],
"condWorkOpc": {
"checkMode": "OR",
"checkList": [
{
"keyName": "MyUlma.status",
"targetValue": "8"
}
]
},
"condPowerOn": {
"checkMode": "OR",
"negateValue": false,
"checkList": []
},
"condReady": {
"checkMode": "OR",
"checkList": [
{
"keyName": "MyUlma.status",
"targetValue": "5"
},
{
"keyName": "MyUlma.status",
"targetValue": "6"
},
{
"keyName": "MyUlma.status",
"targetValue": "7"
}
]
},
"condManual": {
"checkMode": "OR",
"checkList": [
{
"keyName": "MyUlma.status",
"targetValue": "9"
},
{
"keyName": "MyUlma.status",
"targetValue": "10"
},
{
"keyName": "MyUlma.status",
"targetValue": "11"
},
{
"keyName": "MyUlma.status",
"targetValue": "12"
},
{
"keyName": "MyUlma.status",
"targetValue": "13"
},
{
"keyName": "MyUlma.status",
"targetValue": "14"
}
]
},
"condEStop": {
"checkMode": "AND",
"checkList": []
},
"condError": {
"checkMode": "OR",
"checkList": [
{
"keyName": "MyUlma.status",
"targetValue": "0"
},
{
"keyName": "MyUlma.status",
"targetValue": "1"
},
{
"keyName": "MyUlma.status",
"targetValue": "2"
},
{
"keyName": "MyUlma.status",
"targetValue": "3"
},
{
"keyName": "MyUlma.status",
"targetValue": "4"
}
]
},
"condCountEnabled": {
"checkMode": "AND",
"checkList": []
},
"condWarmUpCoolDown": {
"checkMode": "OR",
"negateValue": true,
"checkList": []
},
"condWarning": {
"checkMode": "AND",
"checkList": []
},
"condSetup": {
"checkMode": "AND",
"checkList": []
},
"fluxLogVeto": [],
"itemTranslation": {
"fdovrd": "PATH FEED OVERRIDE",
"rovrd": "PATH RAPID OVERRIDE",
"RunMode_0": "ABORTING",
"RunMode_1": "ABORTED",
"RunMode_2": "CLEANING",
"RunMode_3": "STOPPING",
"RunMode_4": "STOPPED",
"RunMode_5": "RESETTING",
"RunMode_6": "IDLE",
"RunMode_7": "STARTING",
"RunMode_8": "EXECUTE",
"RunMode_9": "HOLDING",
"RunMode_10": "HELD",
"RunMode_11": "UNHOLDING",
"RunMode_12": "HELD",
"RunMode_13": "SUSPENDING",
"RunMode_14": "SUSPENDED",
"Marcia_AUX_0": "Macchina non pronta",
"Marcia_AUX_1": "Macchina non pronta",
"Marcia_AUX_2": "Macchina pronta",
"Wheel_Fault_2": "Ruote OK",
"Wheel_Fault_3": "Ruote NON OK",
"Wheel_Fault_4": "Ruote in bypass",
"Wheel_Fault_5": "Ruote in manutenzione",
"MotorMessage_1": "Motore 1 acceso",
"MotorMessage_2": "Motore 2 acceso",
"MotorMessage_3": "Entrambi i motori accesi",
"ReserveDieselMessage_1": "Riserva diesel motore 1",
"ReserveDieselMessage_2": "Riserva diesel motore 2",
"ReserveDieselMessage_3": "Spegnimento per minimo diesel",
"Hydraulic_Unit_2": "Centralina idraulica OK",
"Hydraulic_Unit_3": "Allarme grave idraulica",
"Hydraulic_Unit_4": "Warning su centralina idraulica",
"ComProfibusMessage_1": "Allarme rete Profinet",
"ComProfibusMessage_3": "Allarme rete CAN",
"avail": "Machine Available",
"rstat": "Execution Mode",
"mode": "Controller Mode",
"PartName(0)": "Program Name",
"PartDone(0)": "Pezzi Prodotti",
"PartToDo(0)": "Qta Richiesta",
"MachineStatus(0)": "Stato Macchina principale",
"MachineStatus(1)": "Stato Macchina secondario",
"EmergencyState": "Emergenza"
},
"mMapWrite": {
"setPzComm": {
"name": "setPzComm",
"description": "Qty",
"tipoMem": "Int",
"memAddr": "ns=4;i=11",
"index": 0,
"size": 4
},
"setProg": {
"name": "setProg",
"description": "Programma",
"tipoMem": "String",
"memAddr": "ns=4;i=9",
"index": 0,
"size": 30
},
"syncDbData": {
"name": "syncDbData",
"description": "Sincronizzazione dati DB",
"tipoMem": "String",
"memAddr": "ns=4;i=0",
"index": 0,
"size": 30
}
},
"subscribedItems": [
"ns=1;s=MyUlma",
"ns=1;s=MyUlma.status",
"ns=1;s=MyUlma.machine_speed_preset",
"ns=1;s=MyUlma.machine_speed",
"ns=1;s=MyUlma.act_recipe_text",
"ns=1;s=MyUlma.message_text",
"ns=1;s=MyUlma.message",
"ns=1;s=MyUlma.act_recipe",
"ns=1;s=MyUlma.status",
"ns=1;s=OEE.version",
"ns=1;s=OEE.mode",
"ns=1;s=OEE.mode_text",
"ns=1;s=OEE.category",
"ns=1;s=OEE.category_text",
"ns=1;s=OEE.shift",
"ns=1;s=OEE.shift_text",
"ns=1;s=OEE.next_order",
"ns=1;s=OEE.next_order.ref",
"ns=1;s=OEE.next_order.recipe",
"ns=1;s=OEE.next_order.nominal_speed",
"ns=1;s=OEE.next_order.preset_count",
"ns=1;s=OEE.order",
"ns=1;s=OEE.order.ref",
"ns=1;s=OEE.order.recipe",
"ns=1;s=OEE.order.nominal_speed",
"ns=1;s=OEE.order.preset_count",
"ns=1;s=OEE.order.stat",
"ns=1;s=OEE.order.stat.planned_prod",
"ns=1;s=OEE.order.stat.planned_prod.total_time",
"ns=1;s=OEE.order.stat.planned_prod.production_time",
"ns=1;s=OEE.order.stat.planned_prod.good_count",
"ns=1;s=OEE.order.stat.planned_prod.reject_count",
"ns=1;s=OEE.order.stat.planned_prod.target_count",
"ns=1;s=OEE.order.stat.planned_prod.oee",
"ns=1;s=OEE.order.stat.planned_prod.oee.total",
"ns=1;s=OEE.order.stat.planned_prod.oee.a",
"ns=1;s=OEE.order.stat.planned_prod.oee.p",
"ns=1;s=OEE.order.stat.planned_prod.oee.q",
"ns=1;s=OEE.order.stat.total_prod",
"ns=1;s=OEE.order.stat.total_prod.total_time",
"ns=1;s=OEE.order.stat.total_prod.production_time",
"ns=1;s=OEE.order.stat.total_prod.good_count",
"ns=1;s=OEE.order.stat.total_prod.reject_count",
"ns=1;s=OEE.order.stat.total_prod.target_count",
"ns=1;s=OEE.order.stat.total_prod.oee",
"ns=1;s=OEE.order.stat.total_prod.oee.total",
"ns=1;s=OEE.order.stat.total_prod.oee.a",
"ns=1;s=OEE.order.stat.total_prod.oee.p",
"ns=1;s=OEE.order.stat.total_prod.oee.q",
"ns=1;s=OEE.remote",
"ns=1;s=OEE.remote.shift",
"ns=1;s=OEE.remote.shift.req_shift",
"ns=1;s=OEE.remote.shift.cmd_BeginShift",
"ns=1;s=OEE.remote.shift.cmd_BeginShift.exec",
"ns=1;s=OEE.remote.shift.cmd_BeginShift.timeout",
"ns=1;s=OEE.remote.shift.cmd_BeginShift.status",
"ns=1;s=OEE.remote.shift.cmd_EndShift",
"ns=1;s=OEE.remote.shift.cmd_EndShift.exec",
"ns=1;s=OEE.remote.shift.cmd_EndShift.timeout",
"ns=1;s=OEE.remote.shift.cmd_EndShift.status",
"ns=1;s=OEE.remote.quality",
"ns=1;s=OEE.remote.quality.reject_counters",
"ns=1;s=OEE.remote.order",
"ns=1;s=OEE.remote.order.req_order",
"ns=1;s=OEE.remote.order.end_mode",
"ns=1;s=OEE.remote.order.cmd_BeginOrder",
"ns=1;s=OEE.remote.order.cmd_BeginOrder.exec",
"ns=1;s=OEE.remote.order.cmd_BeginOrder.timeout",
"ns=1;s=OEE.remote.order.cmd_BeginOrder.status",
"ns=1;s=OEE.remote.order.cmd_EndOrder",
"ns=1;s=OEE.remote.order.cmd_EndOrder.exec",
"ns=1;s=OEE.remote.order.cmd_EndOrder.timeout",
"ns=1;s=OEE.remote.order.cmd_EndOrder.status",
"ns=1;s=OEE.remote.order.list",
"ns=1;s=OEE.remote.order.list.0",
"ns=1;s=OEE.remote.order.list.0.ref",
"ns=1;s=OEE.remote.order.list.0.recipe",
"ns=1;s=OEE.remote.order.list.0.nominal_speed",
"ns=1;s=OEE.remote.order.list.0.preset_count",
"ns=1;s=OEE.remote.order.list.0.stat",
"ns=1;s=OEE.remote.order.list.0.stat.planned_prod",
"ns=1;s=OEE.remote.order.list.0.stat.planned_prod.total_time",
"ns=1;s=OEE.remote.order.list.0.stat.planned_prod.production_time",
"ns=1;s=OEE.remote.order.list.0.stat.planned_prod.good_count",
"ns=1;s=OEE.remote.order.list.0.stat.planned_prod.reject_count",
"ns=1;s=OEE.remote.order.list.0.stat.planned_prod.target_count",
"ns=1;s=OEE.remote.order.list.0.stat.planned_prod.oee",
"ns=1;s=OEE.remote.order.list.0.stat.planned_prod.oee.total",
"ns=1;s=OEE.remote.order.list.0.stat.planned_prod.oee.a",
"ns=1;s=OEE.remote.order.list.0.stat.planned_prod.oee.p",
"ns=1;s=OEE.remote.order.list.0.stat.planned_prod.oee.q",
"ns=1;s=OEE.remote.order.list.0.stat.total_prod",
"ns=1;s=OEE.remote.order.list.0.stat.total_prod.total_time",
"ns=1;s=OEE.remote.order.list.0.stat.total_prod.production_time",
"ns=1;s=OEE.remote.order.list.0.stat.total_prod.good_count",
"ns=1;s=OEE.remote.order.list.0.stat.total_prod.reject_count",
"ns=1;s=OEE.remote.order.list.0.stat.total_prod.target_count",
"ns=1;s=OEE.remote.order.list.0.stat.total_prod.oee",
"ns=1;s=OEE.remote.order.list.0.stat.total_prod.oee.total",
"ns=1;s=OEE.remote.order.list.0.stat.total_prod.oee.a",
"ns=1;s=OEE.remote.order.list.0.stat.total_prod.oee.p",
"ns=1;s=OEE.remote.order.list.0.stat.total_prod.oee.q",
"ns=1;s=OEE.remote.order.list.1",
"ns=1;s=OEE.remote.order.list.1.ref",
"ns=1;s=OEE.remote.order.list.1.recipe",
"ns=1;s=OEE.remote.order.list.1.nominal_speed",
"ns=1;s=OEE.remote.order.list.1.preset_count",
"ns=1;s=OEE.remote.order.list.1.stat",
"ns=1;s=OEE.remote.order.list.1.stat.planned_prod",
"ns=1;s=OEE.remote.order.list.1.stat.planned_prod.total_time",
"ns=1;s=OEE.remote.order.list.1.stat.planned_prod.production_time",
"ns=1;s=OEE.remote.order.list.1.stat.planned_prod.good_count",
"ns=1;s=OEE.remote.order.list.1.stat.planned_prod.reject_count",
"ns=1;s=OEE.remote.order.list.1.stat.planned_prod.target_count",
"ns=1;s=OEE.remote.order.list.1.stat.planned_prod.oee",
"ns=1;s=OEE.remote.order.list.1.stat.planned_prod.oee.total",
"ns=1;s=OEE.remote.order.list.1.stat.planned_prod.oee.a",
"ns=1;s=OEE.remote.order.list.1.stat.planned_prod.oee.p",
"ns=1;s=OEE.remote.order.list.1.stat.planned_prod.oee.q",
"ns=1;s=OEE.remote.order.list.1.stat.total_prod",
"ns=1;s=OEE.remote.order.list.1.stat.total_prod.total_time",
"ns=1;s=OEE.remote.order.list.1.stat.total_prod.production_time",
"ns=1;s=OEE.remote.order.list.1.stat.total_prod.good_count",
"ns=1;s=OEE.remote.order.list.1.stat.total_prod.reject_count",
"ns=1;s=OEE.remote.order.list.1.stat.total_prod.target_count",
"ns=1;s=OEE.remote.order.list.1.stat.total_prod.oee",
"ns=1;s=OEE.remote.order.list.1.stat.total_prod.oee.total",
"ns=1;s=OEE.remote.order.list.1.stat.total_prod.oee.a",
"ns=1;s=OEE.remote.order.list.1.stat.total_prod.oee.p",
"ns=1;s=OEE.remote.order.list.1.stat.total_prod.oee.q",
"ns=1;s=OEE.remote.order.list.2",
"ns=1;s=OEE.remote.order.list.2.ref",
"ns=1;s=OEE.remote.order.list.2.recipe",
"ns=1;s=OEE.remote.order.list.2.nominal_speed",
"ns=1;s=OEE.remote.order.list.2.preset_count",
"ns=1;s=OEE.remote.order.list.2.stat",
"ns=1;s=OEE.remote.order.list.2.stat.planned_prod",
"ns=1;s=OEE.remote.order.list.2.stat.planned_prod.total_time",
"ns=1;s=OEE.remote.order.list.2.stat.planned_prod.production_time",
"ns=1;s=OEE.remote.order.list.2.stat.planned_prod.good_count",
"ns=1;s=OEE.remote.order.list.2.stat.planned_prod.reject_count",
"ns=1;s=OEE.remote.order.list.2.stat.planned_prod.target_count",
"ns=1;s=OEE.remote.order.list.2.stat.planned_prod.oee",
"ns=1;s=OEE.remote.order.list.2.stat.planned_prod.oee.total",
"ns=1;s=OEE.remote.order.list.2.stat.planned_prod.oee.a",
"ns=1;s=OEE.remote.order.list.2.stat.planned_prod.oee.p",
"ns=1;s=OEE.remote.order.list.2.stat.planned_prod.oee.q",
"ns=1;s=OEE.remote.order.list.2.stat.total_prod",
"ns=1;s=OEE.remote.order.list.2.stat.total_prod.total_time",
"ns=1;s=OEE.remote.order.list.2.stat.total_prod.production_time",
"ns=1;s=OEE.remote.order.list.2.stat.total_prod.good_count",
"ns=1;s=OEE.remote.order.list.2.stat.total_prod.reject_count",
"ns=1;s=OEE.remote.order.list.2.stat.total_prod.target_count",
"ns=1;s=OEE.remote.order.list.2.stat.total_prod.oee",
"ns=1;s=OEE.remote.order.list.2.stat.total_prod.oee.total",
"ns=1;s=OEE.remote.order.list.2.stat.total_prod.oee.a",
"ns=1;s=OEE.remote.order.list.2.stat.total_prod.oee.p",
"ns=1;s=OEE.remote.order.list.2.stat.total_prod.oee.q",
"ns=1;s=OEE.remote.order.list.3",
"ns=1;s=OEE.remote.order.list.3.ref",
"ns=1;s=OEE.remote.order.list.3.recipe",
"ns=1;s=OEE.remote.order.list.3.nominal_speed",
"ns=1;s=OEE.remote.order.list.3.preset_count",
"ns=1;s=OEE.remote.order.list.3.stat",
"ns=1;s=OEE.remote.order.list.3.stat.planned_prod",
"ns=1;s=OEE.remote.order.list.3.stat.planned_prod.total_time",
"ns=1;s=OEE.remote.order.list.3.stat.planned_prod.production_time",
"ns=1;s=OEE.remote.order.list.3.stat.planned_prod.good_count",
"ns=1;s=OEE.remote.order.list.3.stat.planned_prod.reject_count",
"ns=1;s=OEE.remote.order.list.3.stat.planned_prod.target_count",
"ns=1;s=OEE.remote.order.list.3.stat.planned_prod.oee",
"ns=1;s=OEE.remote.order.list.3.stat.planned_prod.oee.total",
"ns=1;s=OEE.remote.order.list.3.stat.planned_prod.oee.a",
"ns=1;s=OEE.remote.order.list.3.stat.planned_prod.oee.p",
"ns=1;s=OEE.remote.order.list.3.stat.planned_prod.oee.q",
"ns=1;s=OEE.remote.order.list.3.stat.total_prod",
"ns=1;s=OEE.remote.order.list.3.stat.total_prod.total_time",
"ns=1;s=OEE.remote.order.list.3.stat.total_prod.production_time",
"ns=1;s=OEE.remote.order.list.3.stat.total_prod.good_count",
"ns=1;s=OEE.remote.order.list.3.stat.total_prod.reject_count",
"ns=1;s=OEE.remote.order.list.3.stat.total_prod.target_count",
"ns=1;s=OEE.remote.order.list.3.stat.total_prod.oee",
"ns=1;s=OEE.remote.order.list.3.stat.total_prod.oee.total",
"ns=1;s=OEE.remote.order.list.3.stat.total_prod.oee.a",
"ns=1;s=OEE.remote.order.list.3.stat.total_prod.oee.p",
"ns=1;s=OEE.remote.order.list.3.stat.total_prod.oee.q",
"ns=1;s=OEE.remote.order.list.4",
"ns=1;s=OEE.remote.order.list.4.ref",
"ns=1;s=OEE.remote.order.list.4.recipe",
"ns=1;s=OEE.remote.order.list.4.nominal_speed",
"ns=1;s=OEE.remote.order.list.4.preset_count",
"ns=1;s=OEE.remote.order.list.4.stat",
"ns=1;s=OEE.remote.order.list.4.stat.planned_prod",
"ns=1;s=OEE.remote.order.list.4.stat.planned_prod.total_time",
"ns=1;s=OEE.remote.order.list.4.stat.planned_prod.production_time",
"ns=1;s=OEE.remote.order.list.4.stat.planned_prod.good_count",
"ns=1;s=OEE.remote.order.list.4.stat.planned_prod.reject_count",
"ns=1;s=OEE.remote.order.list.4.stat.planned_prod.target_count",
"ns=1;s=OEE.remote.order.list.4.stat.planned_prod.oee",
"ns=1;s=OEE.remote.order.list.4.stat.planned_prod.oee.total",
"ns=1;s=OEE.remote.order.list.4.stat.planned_prod.oee.a",
"ns=1;s=OEE.remote.order.list.4.stat.planned_prod.oee.p",
"ns=1;s=OEE.remote.order.list.4.stat.planned_prod.oee.q",
"ns=1;s=OEE.remote.order.list.4.stat.total_prod",
"ns=1;s=OEE.remote.order.list.4.stat.total_prod.total_time",
"ns=1;s=OEE.remote.order.list.4.stat.total_prod.production_time",
"ns=1;s=OEE.remote.order.list.4.stat.total_prod.good_count",
"ns=1;s=OEE.remote.order.list.4.stat.total_prod.reject_count",
"ns=1;s=OEE.remote.order.list.4.stat.total_prod.target_count",
"ns=1;s=OEE.remote.order.list.4.stat.total_prod.oee",
"ns=1;s=OEE.remote.order.list.4.stat.total_prod.oee.total",
"ns=1;s=OEE.remote.order.list.4.stat.total_prod.oee.a",
"ns=1;s=OEE.remote.order.list.4.stat.total_prod.oee.p",
"ns=1;s=OEE.remote.order.list.4.stat.total_prod.oee.q",
"ns=1;s=OEE.remote.order.list.5",
"ns=1;s=OEE.remote.order.list.5.ref",
"ns=1;s=OEE.remote.order.list.5.recipe",
"ns=1;s=OEE.remote.order.list.5.nominal_speed",
"ns=1;s=OEE.remote.order.list.5.preset_count",
"ns=1;s=OEE.remote.order.list.5.stat",
"ns=1;s=OEE.remote.order.list.5.stat.planned_prod",
"ns=1;s=OEE.remote.order.list.5.stat.planned_prod.total_time",
"ns=1;s=OEE.remote.order.list.5.stat.planned_prod.production_time",
"ns=1;s=OEE.remote.order.list.5.stat.planned_prod.good_count",
"ns=1;s=OEE.remote.order.list.5.stat.planned_prod.reject_count",
"ns=1;s=OEE.remote.order.list.5.stat.planned_prod.target_count",
"ns=1;s=OEE.remote.order.list.5.stat.planned_prod.oee",
"ns=1;s=OEE.remote.order.list.5.stat.planned_prod.oee.total",
"ns=1;s=OEE.remote.order.list.5.stat.planned_prod.oee.a",
"ns=1;s=OEE.remote.order.list.5.stat.planned_prod.oee.p",
"ns=1;s=OEE.remote.order.list.5.stat.planned_prod.oee.q",
"ns=1;s=OEE.remote.order.list.5.stat.total_prod",
"ns=1;s=OEE.remote.order.list.5.stat.total_prod.total_time",
"ns=1;s=OEE.remote.order.list.5.stat.total_prod.production_time",
"ns=1;s=OEE.remote.order.list.5.stat.total_prod.good_count",
"ns=1;s=OEE.remote.order.list.5.stat.total_prod.reject_count",
"ns=1;s=OEE.remote.order.list.5.stat.total_prod.target_count",
"ns=1;s=OEE.remote.order.list.5.stat.total_prod.oee",
"ns=1;s=OEE.remote.order.list.5.stat.total_prod.oee.total",
"ns=1;s=OEE.remote.order.list.5.stat.total_prod.oee.a",
"ns=1;s=OEE.remote.order.list.5.stat.total_prod.oee.p",
"ns=1;s=OEE.remote.order.list.5.stat.total_prod.oee.q",
"ns=1;s=OEE.remote.order.list.6",
"ns=1;s=OEE.remote.order.list.6.ref",
"ns=1;s=OEE.remote.order.list.6.recipe",
"ns=1;s=OEE.remote.order.list.6.nominal_speed",
"ns=1;s=OEE.remote.order.list.6.preset_count",
"ns=1;s=OEE.remote.order.list.6.stat",
"ns=1;s=OEE.remote.order.list.6.stat.planned_prod",
"ns=1;s=OEE.remote.order.list.6.stat.planned_prod.total_time",
"ns=1;s=OEE.remote.order.list.6.stat.planned_prod.production_time",
"ns=1;s=OEE.remote.order.list.6.stat.planned_prod.good_count",
"ns=1;s=OEE.remote.order.list.6.stat.planned_prod.reject_count",
"ns=1;s=OEE.remote.order.list.6.stat.planned_prod.target_count",
"ns=1;s=OEE.remote.order.list.6.stat.planned_prod.oee",
"ns=1;s=OEE.remote.order.list.6.stat.planned_prod.oee.total",
"ns=1;s=OEE.remote.order.list.6.stat.planned_prod.oee.a",
"ns=1;s=OEE.remote.order.list.6.stat.planned_prod.oee.p",
"ns=1;s=OEE.remote.order.list.6.stat.planned_prod.oee.q",
"ns=1;s=OEE.remote.order.list.6.stat.total_prod",
"ns=1;s=OEE.remote.order.list.6.stat.total_prod.total_time",
"ns=1;s=OEE.remote.order.list.6.stat.total_prod.production_time",
"ns=1;s=OEE.remote.order.list.6.stat.total_prod.good_count",
"ns=1;s=OEE.remote.order.list.6.stat.total_prod.reject_count",
"ns=1;s=OEE.remote.order.list.6.stat.total_prod.target_count",
"ns=1;s=OEE.remote.order.list.6.stat.total_prod.oee",
"ns=1;s=OEE.remote.order.list.6.stat.total_prod.oee.total",
"ns=1;s=OEE.remote.order.list.6.stat.total_prod.oee.a",
"ns=1;s=OEE.remote.order.list.6.stat.total_prod.oee.p",
"ns=1;s=OEE.remote.order.list.6.stat.total_prod.oee.q",
"ns=1;s=OEE.remote.order.list.7",
"ns=1;s=OEE.remote.order.list.7.ref",
"ns=1;s=OEE.remote.order.list.7.recipe",
"ns=1;s=OEE.remote.order.list.7.nominal_speed",
"ns=1;s=OEE.remote.order.list.7.preset_count",
"ns=1;s=OEE.remote.order.list.7.stat",
"ns=1;s=OEE.remote.order.list.7.stat.planned_prod",
"ns=1;s=OEE.remote.order.list.7.stat.planned_prod.total_time",
"ns=1;s=OEE.remote.order.list.7.stat.planned_prod.production_time",
"ns=1;s=OEE.remote.order.list.7.stat.planned_prod.good_count",
"ns=1;s=OEE.remote.order.list.7.stat.planned_prod.reject_count",
"ns=1;s=OEE.remote.order.list.7.stat.planned_prod.target_count",
"ns=1;s=OEE.remote.order.list.7.stat.planned_prod.oee",
"ns=1;s=OEE.remote.order.list.7.stat.planned_prod.oee.total",
"ns=1;s=OEE.remote.order.list.7.stat.planned_prod.oee.a",
"ns=1;s=OEE.remote.order.list.7.stat.planned_prod.oee.p",
"ns=1;s=OEE.remote.order.list.7.stat.planned_prod.oee.q",
"ns=1;s=OEE.remote.order.list.7.stat.total_prod",
"ns=1;s=OEE.remote.order.list.7.stat.total_prod.total_time",
"ns=1;s=OEE.remote.order.list.7.stat.total_prod.production_time",
"ns=1;s=OEE.remote.order.list.7.stat.total_prod.good_count",
"ns=1;s=OEE.remote.order.list.7.stat.total_prod.reject_count",
"ns=1;s=OEE.remote.order.list.7.stat.total_prod.target_count",
"ns=1;s=OEE.remote.order.list.7.stat.total_prod.oee",
"ns=1;s=OEE.remote.order.list.7.stat.total_prod.oee.total",
"ns=1;s=OEE.remote.order.list.7.stat.total_prod.oee.a",
"ns=1;s=OEE.remote.order.list.7.stat.total_prod.oee.p",
"ns=1;s=OEE.remote.order.list.7.stat.total_prod.oee.q",
"ns=1;s=OEE.remote.order.list.8",
"ns=1;s=OEE.remote.order.list.8.ref",
"ns=1;s=OEE.remote.order.list.8.recipe",
"ns=1;s=OEE.remote.order.list.8.nominal_speed",
"ns=1;s=OEE.remote.order.list.8.preset_count",
"ns=1;s=OEE.remote.order.list.8.stat",
"ns=1;s=OEE.remote.order.list.8.stat.planned_prod",
"ns=1;s=OEE.remote.order.list.8.stat.planned_prod.total_time",
"ns=1;s=OEE.remote.order.list.8.stat.planned_prod.production_time",
"ns=1;s=OEE.remote.order.list.8.stat.planned_prod.good_count",
"ns=1;s=OEE.remote.order.list.8.stat.planned_prod.reject_count",
"ns=1;s=OEE.remote.order.list.8.stat.planned_prod.target_count",
"ns=1;s=OEE.remote.order.list.8.stat.planned_prod.oee",
"ns=1;s=OEE.remote.order.list.8.stat.planned_prod.oee.total",
"ns=1;s=OEE.remote.order.list.8.stat.planned_prod.oee.a",
"ns=1;s=OEE.remote.order.list.8.stat.planned_prod.oee.p",
"ns=1;s=OEE.remote.order.list.8.stat.planned_prod.oee.q",
"ns=1;s=OEE.remote.order.list.8.stat.total_prod",
"ns=1;s=OEE.remote.order.list.8.stat.total_prod.total_time",
"ns=1;s=OEE.remote.order.list.8.stat.total_prod.production_time",
"ns=1;s=OEE.remote.order.list.8.stat.total_prod.good_count",
"ns=1;s=OEE.remote.order.list.8.stat.total_prod.reject_count",
"ns=1;s=OEE.remote.order.list.8.stat.total_prod.target_count",
"ns=1;s=OEE.remote.order.list.8.stat.total_prod.oee",
"ns=1;s=OEE.remote.order.list.8.stat.total_prod.oee.total",
"ns=1;s=OEE.remote.order.list.8.stat.total_prod.oee.a",
"ns=1;s=OEE.remote.order.list.8.stat.total_prod.oee.p",
"ns=1;s=OEE.remote.order.list.8.stat.total_prod.oee.q",
"ns=1;s=OEE.remote.order.list.9",
"ns=1;s=OEE.remote.order.list.9.ref",
"ns=1;s=OEE.remote.order.list.9.recipe",
"ns=1;s=OEE.remote.order.list.9.nominal_speed",
"ns=1;s=OEE.remote.order.list.9.preset_count",
"ns=1;s=OEE.remote.order.list.9.stat",
"ns=1;s=OEE.remote.order.list.9.stat.planned_prod",
"ns=1;s=OEE.remote.order.list.9.stat.planned_prod.total_time",
"ns=1;s=OEE.remote.order.list.9.stat.planned_prod.production_time",
"ns=1;s=OEE.remote.order.list.9.stat.planned_prod.good_count",
"ns=1;s=OEE.remote.order.list.9.stat.planned_prod.reject_count",
"ns=1;s=OEE.remote.order.list.9.stat.planned_prod.target_count",
"ns=1;s=OEE.remote.order.list.9.stat.planned_prod.oee",
"ns=1;s=OEE.remote.order.list.9.stat.planned_prod.oee.total",
"ns=1;s=OEE.remote.order.list.9.stat.planned_prod.oee.a",
"ns=1;s=OEE.remote.order.list.9.stat.planned_prod.oee.p",
"ns=1;s=OEE.remote.order.list.9.stat.planned_prod.oee.q",
"ns=1;s=OEE.remote.order.list.9.stat.total_prod",
"ns=1;s=OEE.remote.order.list.9.stat.total_prod.total_time",
"ns=1;s=OEE.remote.order.list.9.stat.total_prod.production_time",
"ns=1;s=OEE.remote.order.list.9.stat.total_prod.good_count",
"ns=1;s=OEE.remote.order.list.9.stat.total_prod.reject_count",
"ns=1;s=OEE.remote.order.list.9.stat.total_prod.target_count",
"ns=1;s=OEE.remote.order.list.9.stat.total_prod.oee",
"ns=1;s=OEE.remote.order.list.9.stat.total_prod.oee.total",
"ns=1;s=OEE.remote.order.list.9.stat.total_prod.oee.a",
"ns=1;s=OEE.remote.order.list.9.stat.total_prod.oee.p",
"ns=1;s=OEE.remote.order.list.9.stat.total_prod.oee.q",
"ns=1;s=Pkg_counters.reset_total_counter",
"ns=1;s=Pkg_counters.total_counter",
"ns=1;s=Pkg_counters.reset_reject_counter",
"ns=1;s=Pkg_counters.reject_counter",
"ns=1;s=Pkg_counters.machine_total_counter",
"ns=1;s=Pkg_counters.machine_reject_counter",
"ns=1;s=OMAC_timers.reset_OMAC_total_time",
"ns=1;s=OMAC_timers.aborting_time",
"ns=1;s=OMAC_timers.aborted_time",
"ns=1;s=OMAC_timers.clearing_time",
"ns=1;s=OMAC_timers.stopping_time",
"ns=1;s=OMAC_timers.stopped_time",
"ns=1;s=OMAC_timers.resetting_time",
"ns=1;s=OMAC_timers.idle_time",
"ns=1;s=OMAC_timers.starting_time",
"ns=1;s=OMAC_timers.execute_time",
"ns=1;s=OMAC_timers.holding_time",
"ns=1;s=OMAC_timers.held_time",
"ns=1;s=OMAC_timers.unholding_time",
"ns=1;s=OMAC_timers.suspending_time",
"ns=1;s=OMAC_timers.suspended_time",
"ns=1;s=OMAC_timers.unsuspending_time",
"ns=1;s=Process.sealing_pressure_setpoint",
"ns=1;s=Process.sealing_pressure_actual",
"ns=1;s=Process.sealing_time",
"ns=1;s=Process.vacuum_setpoint",
"ns=1;s=Process.vacuum_time",
"ns=1;s=Process.vacuum_actual",
"ns=1;s=Process.sealing_temperature_actual",
"ns=1;s=Process.sealing_temperature_setpoint",
"ns=1;s=Process.central_plate_temperature_actual",
"ns=1;s=Process.central_plate_temperature_setpoint",
"ns=1;s=Process.film_preheating_temperature_actual",
"ns=1;s=Process.film_preheating_temperature_setpoint",
"ns=1;s=Process.gas_time",
"ns=1;s=Process.gas_setpoint",
"ns=1;s=Process.gas_pressure"
],
"WatchDog": {
"IsEnabled": false,
"MemConfRead": "ns=4;s=tomes_1_Watchdog",
"MemConfWrite": "ns=4;s=tomach_1_watchdog",
"MaxVal": 9999
},
"fluxLogKeyValVeto": {
"RunModeVal": [
"-1",
"0"
],
"OPC_PLC/DB231/Attivita": [
"-1",
"0"
]
}
}
@@ -0,0 +1,78 @@
;Configurazione IOB-WIN
[IOB]
;Impianto Zetapack di Locorotondo (test) - Giacovelli
CNCTYPE=MODBUS_TCP_ZETAPACK
PING_MS_TIMEOUT=1000
MinDeltaSec=5
[MACHINE]
VENDOR=Zetapack
MODEL=Calibratrice Linea 1
[CNC]
IP=192.168.16.11
PORT=8000
[SERVER]
MPIP=http://192.168.1.14
MPURL=/MP/IO
CMDBASE=/IOB/input/
CMDFLOG=/IOB/flog/
CMDALIVE=/IOB
CMDENABLED=/IOB/enabled/
CMDADV1=?valore=
CMDREBO=/sendReboot.aspx?idxMacchina=
[MEMORY]
ADDR_READ=40001
ADDR_WRITE=40001
SIZE_READ=10
SIZE_WRITE=0
HR_BASE_ADDR=40000
DELTA_BASE=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=GIACO_ZPACK_L1_P1.json
NO_PING=FALSE
; conf blocchi memoria x READ
MEM_BLOCK=GIACO_ZPACK_L1_P1_MBlock.json
; conf aree allarme
ALARM_CONF=GIACO_ZPACK_L1_P1_alarm.json
; rimozione check limiti min/max dynData
disDynDataRangeCheck=true
[BRANCH]
NAME=master
@@ -0,0 +1,62 @@
{
"mMapWrite": {
"setComm": {
"name": "setComm",
"description": "Commessa",
"memAddr": "40050",
"tipoMem": "String",
"index": 50,
"size": 20
}
},
"mMapRead": {
"AmpMot1": {
"name": "AmpMot1",
"description": "Assorbimento (MAX) motore 1 - calibratrice",
"memAddr": "40003",
"tipoMem": "Int",
"index": 3,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 0.01,
"minVal": 0,
"maxVal": 999,
"unit": "%"
},
"AmpMot2": {
"name": "AmpMot2",
"description": "Assorbimento (MAX) Motore 2 - nastro dosi",
"memAddr": "40004",
"tipoMem": "Int",
"index": 4,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 0.01,
"minVal": 0,
"maxVal": 999,
"unit": "%"
},
"AmpMot3": {
"name": "AmpMot3",
"description": "Assorbimento (MAX) motore 3 - curva ingresso",
"memAddr": "40005",
"tipoMem": "Int",
"index": 5,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 0.01,
"minVal": 0,
"maxVal": 999,
"unit": "%"
}
},
"optMemPar": {
"AlarmIntCond": "40000|0=0",
"ManualIntCond": "40000|0=1",
"EStopBitCond": "40001.0=1",
"WorkIntCond": "40000|0=2,4,5"
}
}
@@ -0,0 +1,5 @@
{
"ReadBlocks": {
"40000": 10
}
}
@@ -0,0 +1,52 @@
[
{
"description": "Allarmi Impianto",
"tipoMem": "DInt",
"memAddr": "40000",
"index": 0,
"size": 2,
"messages": [
"##",
"##",
"##",
"##",
"##",
"##",
"##",
"##",
"EMERGENZA GENERALE",
"TERMICO SCATTATO",
"FAULT INVERTER",
"FAULT STEPPER",
"CARTER APERTI",
"PORTA SX APERTA",
"PORTA DX APERTA",
"CARTER APERTI"
]
},
{
"description": "Allarmi Impianto",
"tipoMem": "DInt",
"memAddr": "40002",
"index": 2,
"size": 2,
"messages": [
"TOUT BF NASTRO 1",
"TOUT BF NASTRO 2",
"TOUT BF NASTRO 3",
"TOUT BF NASTRO 4",
"TOUT BF NASTRO 5",
"TOUT BF NASTRO 6",
"ALL MOTORULLO 1",
"ALL MOTORULLO 2",
"ALL MOTORULLO 3",
"ALL MOTORULLO 4",
"ALL MOTORULLO 5",
"ALL MOTORULLO 6",
"",
"",
"",
""
]
}
]
@@ -0,0 +1,78 @@
;Configurazione IOB-WIN
[IOB]
;Impianto Zetapack di Locorotondo (test) - Giacovelli
CNCTYPE=MODBUS_TCP_ZETAPACK
PING_MS_TIMEOUT=1000
MinDeltaSec=5
[MACHINE]
VENDOR=Zetapack
MODEL=Banco Linea 1
[CNC]
IP=192.168.16.12
PORT=502
[SERVER]
MPIP=http://192.168.1.14
MPURL=/MP/IO
CMDBASE=/IOB/input/
CMDFLOG=/IOB/flog/
CMDALIVE=/IOB
CMDENABLED=/IOB/enabled/
CMDADV1=?valore=
CMDREBO=/sendReboot.aspx?idxMacchina=
[MEMORY]
ADDR_READ=40001
ADDR_WRITE=40001
SIZE_READ=10
SIZE_WRITE=0
HR_BASE_ADDR=40000
DELTA_BASE=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=GIACO_ZPACK_L1_P2.json
NO_PING=FALSE
; conf blocchi memoria x READ
MEM_BLOCK=GIACO_ZPACK_L1_P2_MBlock.json
; conf aree allarme
ALARM_CONF=GIACO_ZPACK_L1_P2_alarm.json
; rimozione check limiti min/max dynData
disDynDataRangeCheck=true
[BRANCH]
NAME=master
@@ -0,0 +1,90 @@
{
"mMapWrite": {
"setComm": {
"name": "setComm",
"description": "Commessa",
"memAddr": "40050",
"tipoMem": "String",
"index": 50,
"size": 20
}
},
"mMapRead": {
"AmpMot1": {
"name": "AmpMot1",
"description": "Assorbimento (MAX) motore 1 - catena linea1 motore 1 tazze A4.2",
"memAddr": "40003",
"tipoMem": "Int",
"index": 3,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 0.01,
"minVal": 0,
"maxVal": 999,
"unit": "%"
},
"AmpMot2": {
"name": "AmpMot2",
"description": "Assorbimento (MAX) motore 2 - catena linea2 motore 2 tazze A4.2",
"memAddr": "40004",
"tipoMem": "Int",
"index": 4,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 0.01,
"minVal": 0,
"maxVal": 999,
"unit": "%"
},
"AmpMot3": {
"name": "AmpMot3",
"description": "Assorbimento (MAX) motore 3 - nastro uscita cesti motore 3 A2.4",
"memAddr": "40005",
"tipoMem": "Int",
"index": 5,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 0.01,
"minVal": 0,
"maxVal": 999,
"unit": "%"
},
"AmpMot4": {
"name": "AmpMot4",
"description": "Assorbimento (MAX) motore 4 - curva uscita cesti motore 4 A2.4",
"memAddr": "40006",
"tipoMem": "Int",
"index": 6,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 0.01,
"minVal": 0,
"maxVal": 999,
"unit": "%"
},
"AmpMot5": {
"name": "AmpMot5",
"description": "Assorbimento (MAX) motore 5 - nastro ingresso casse vuote motore 5 A2.4",
"memAddr": "40007",
"tipoMem": "Int",
"index": 7,
"size": 1,
"func": "MAX",
"period": 90,
"factor": 0.01,
"minVal": 0,
"maxVal": 999,
"unit": "%"
}
},
"optMemPar": {
"AlarmIntCond": "40000|0=0",
"ManualIntCond": "40000|0=1",
"EStopBitCond": "40001.0=1",
"WorkIntCond": "40000|0=2,4"
}
}
@@ -0,0 +1,5 @@
{
"ReadBlocks": {
"40000": 10
}
}
@@ -0,0 +1,52 @@
[
{
"description": "Allarmi Impianto",
"tipoMem": "DInt",
"memAddr": "40000",
"index": 0,
"size": 2,
"messages": [
"##",
"##",
"##",
"##",
"##",
"##",
"##",
"##",
"EMERGENZA GENERALE",
"TERMICO SCATTATO",
"FAULT INVERTER",
"FAULT STEPPER",
"CARTER APERTI",
"PORTA SX APERTA",
"PORTA DX APERTA",
"CARTER APERTI"
]
},
{
"description": "Allarmi Impianto",
"tipoMem": "DInt",
"memAddr": "40002",
"index": 2,
"size": 2,
"messages": [
"TOUT BF NASTRO 1",
"TOUT BF NASTRO 2",
"TOUT BF NASTRO 3",
"TOUT BF NASTRO 4",
"TOUT BF NASTRO 5",
"TOUT BF NASTRO 6",
"ALL MOTORULLO 1",
"ALL MOTORULLO 2",
"ALL MOTORULLO 3",
"ALL MOTORULLO 4",
"ALL MOTORULLO 5",
"ALL MOTORULLO 6",
"",
"",
"",
""
]
}
]
@@ -0,0 +1,78 @@
;Configurazione IOB-WIN
[IOB]
;Impianto Zetapack di Locorotondo (test) - Giacovelli
CNCTYPE=MODBUS_TCP_ZETAPACK
PING_MS_TIMEOUT=1000
MinDeltaSec=5
[MACHINE]
VENDOR=Zetapack
MODEL=Calibratrice Linea 2
[CNC]
IP=192.168.16.21
PORT=8000
[SERVER]
MPIP=http://192.168.1.14
MPURL=/MP/IO
CMDBASE=/IOB/input/
CMDFLOG=/IOB/flog/
CMDALIVE=/IOB
CMDENABLED=/IOB/enabled/
CMDADV1=?valore=
CMDREBO=/sendReboot.aspx?idxMacchina=
[MEMORY]
ADDR_READ=40001
ADDR_WRITE=40001
SIZE_READ=10
SIZE_WRITE=0
HR_BASE_ADDR=40000
DELTA_BASE=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=GIACO_ZPACK_L2_P1.json
NO_PING=FALSE
; conf blocchi memoria x READ
MEM_BLOCK=GIACO_ZPACK_L2_P1_MBlock.json
; conf aree allarme
ALARM_CONF=GIACO_ZPACK_L2_P1_alarm.json
; rimozione check limiti min/max dynData
disDynDataRangeCheck=true
[BRANCH]
NAME=master

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