diff --git a/ExtLibs/krcc.dll b/ExtLibs/krcc.dll
new file mode 100644
index 00000000..2986f93c
Binary files /dev/null and b/ExtLibs/krcc.dll differ
diff --git a/ExtLibs/krcc64.dll b/ExtLibs/krcc64.dll
new file mode 100644
index 00000000..77b91761
Binary files /dev/null and b/ExtLibs/krcc64.dll differ
diff --git a/IOB-WIN-KAVASAKI.sln b/IOB-WIN-KAVASAKI.sln
index a62eceed..abb3d0f5 100644
--- a/IOB-WIN-KAVASAKI.sln
+++ b/IOB-WIN-KAVASAKI.sln
@@ -14,7 +14,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IOB-UT-NEXT", "IOB-UT-NEXT\
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IOB-WIN-FORM", "IOB-WIN-FORM\IOB-WIN-FORM.csproj", "{9BA331BB-9BF1-40E0-AC03-74B43D73A097}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IOB-WIN-FTP", "IOB-WIN-FTP\IOB-WIN-FTP.csproj", "{3ED97EEA-9EAB-480D-8E53-EDB3662DCB79}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IOB-WIN-KAWASAKI", "IOB-WIN-KAWASAKI\IOB-WIN-KAWASAKI.csproj", "{02C086C5-492A-4D81-8E30-B4434703A5B3}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -61,18 +61,18 @@ Global
{9BA331BB-9BF1-40E0-AC03-74B43D73A097}.Remote_DEBUG|Any CPU.Build.0 = Debug|Any CPU
{9BA331BB-9BF1-40E0-AC03-74B43D73A097}.Remote_DEBUG|x86.ActiveCfg = Release|Any CPU
{9BA331BB-9BF1-40E0-AC03-74B43D73A097}.Remote_DEBUG|x86.Build.0 = Release|Any CPU
- {3ED97EEA-9EAB-480D-8E53-EDB3662DCB79}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {3ED97EEA-9EAB-480D-8E53-EDB3662DCB79}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {3ED97EEA-9EAB-480D-8E53-EDB3662DCB79}.Debug|x86.ActiveCfg = Debug|Any CPU
- {3ED97EEA-9EAB-480D-8E53-EDB3662DCB79}.Debug|x86.Build.0 = Debug|Any CPU
- {3ED97EEA-9EAB-480D-8E53-EDB3662DCB79}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {3ED97EEA-9EAB-480D-8E53-EDB3662DCB79}.Release|Any CPU.Build.0 = Release|Any CPU
- {3ED97EEA-9EAB-480D-8E53-EDB3662DCB79}.Release|x86.ActiveCfg = Release|Any CPU
- {3ED97EEA-9EAB-480D-8E53-EDB3662DCB79}.Release|x86.Build.0 = Release|Any CPU
- {3ED97EEA-9EAB-480D-8E53-EDB3662DCB79}.Remote_DEBUG|Any CPU.ActiveCfg = Release_DEBUG|Any CPU
- {3ED97EEA-9EAB-480D-8E53-EDB3662DCB79}.Remote_DEBUG|Any CPU.Build.0 = Release_DEBUG|Any CPU
- {3ED97EEA-9EAB-480D-8E53-EDB3662DCB79}.Remote_DEBUG|x86.ActiveCfg = Release|Any CPU
- {3ED97EEA-9EAB-480D-8E53-EDB3662DCB79}.Remote_DEBUG|x86.Build.0 = Release|Any CPU
+ {02C086C5-492A-4D81-8E30-B4434703A5B3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {02C086C5-492A-4D81-8E30-B4434703A5B3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {02C086C5-492A-4D81-8E30-B4434703A5B3}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {02C086C5-492A-4D81-8E30-B4434703A5B3}.Debug|x86.Build.0 = Debug|Any CPU
+ {02C086C5-492A-4D81-8E30-B4434703A5B3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {02C086C5-492A-4D81-8E30-B4434703A5B3}.Release|Any CPU.Build.0 = Release|Any CPU
+ {02C086C5-492A-4D81-8E30-B4434703A5B3}.Release|x86.ActiveCfg = Release|Any CPU
+ {02C086C5-492A-4D81-8E30-B4434703A5B3}.Release|x86.Build.0 = Release|Any CPU
+ {02C086C5-492A-4D81-8E30-B4434703A5B3}.Remote_DEBUG|Any CPU.ActiveCfg = Remote_DEBUG|Any CPU
+ {02C086C5-492A-4D81-8E30-B4434703A5B3}.Remote_DEBUG|Any CPU.Build.0 = Remote_DEBUG|Any CPU
+ {02C086C5-492A-4D81-8E30-B4434703A5B3}.Remote_DEBUG|x86.ActiveCfg = Release|Any CPU
+ {02C086C5-492A-4D81-8E30-B4434703A5B3}.Remote_DEBUG|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/IOB-WIN-KAWASAKI/AdapterFormNext.cs b/IOB-WIN-KAWASAKI/AdapterFormNext.cs
new file mode 100644
index 00000000..25804525
--- /dev/null
+++ b/IOB-WIN-KAWASAKI/AdapterFormNext.cs
@@ -0,0 +1,50 @@
+using IOB_UT_NEXT;
+
+namespace IOB_WIN_KAWASAKI
+{
+ public class AdapterFormNext: IOB_WIN_FORM.AdapterForm
+ {
+
+ ///
+ /// Avvio MainForm
+ ///
+ ///
+ public AdapterFormNext(string codIOB): base(codIOB)
+ {
+ }
+ ///
+ /// carica IOB richiesto
+ ///
+ protected override void loadIobType()
+ {
+ if (IOBConf != null)
+ {
+ switch (tipoScelto)
+ {
+
+ case tipoAdapter.KAWASAKI:
+ iobObj = new Iob.Kawasaki(this, IOBConf);
+ btnStart.Enabled = true;
+ break;
+
+ case tipoAdapter.SIMULA:
+ case tipoAdapter.ND:
+ default:
+ iobObj = new IOB_WIN_FORM.Iob.Simula(this, IOBConf);
+ btnStart.Enabled = false;
+ break;
+ }
+ lblCncText = $"CNC: {IOBConf.tipoIob} [{IOBConf.cncIpAddr}:{IOBConf.cncPort}]";
+ lblSrvUrlText = $"SRV: {IOBConf.serverData.MPIP} | URL: {IOBConf.serverData.MPURL}{IOBConf.serverData.CMDBASE}";
+
+ // aggancio evento refresh
+ iobObj.eh_refreshed += IobObj_eh_refreshed;
+
+ // carico i default values su interfaccia
+ setDefaults();
+
+ displayTaskAndLog($"Caricata conf per adapter {tipoScelto}");
+ }
+ }
+ }
+}
diff --git a/IOB-WIN-KAWASAKI/App.Debug.config b/IOB-WIN-KAWASAKI/App.Debug.config
new file mode 100644
index 00000000..42297ccc
--- /dev/null
+++ b/IOB-WIN-KAWASAKI/App.Debug.config
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/IOB-WIN-KAWASAKI/App.Release.config b/IOB-WIN-KAWASAKI/App.Release.config
new file mode 100644
index 00000000..0f80d173
--- /dev/null
+++ b/IOB-WIN-KAWASAKI/App.Release.config
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/IOB-WIN-KAWASAKI/App.config b/IOB-WIN-KAWASAKI/App.config
new file mode 100644
index 00000000..a1cc180b
--- /dev/null
+++ b/IOB-WIN-KAWASAKI/App.config
@@ -0,0 +1,186 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/IOB-WIN-KAWASAKI/DATA/CONF/FTP-PING.ini b/IOB-WIN-KAWASAKI/DATA/CONF/FTP-PING.ini
new file mode 100644
index 00000000..efe46cca
--- /dev/null
+++ b/IOB-WIN-KAWASAKI/DATA/CONF/FTP-PING.ini
@@ -0,0 +1,59 @@
+;Configurazione IOB-WIN
+[IOB]
+;Macchina TEST PING
+CNCTYPE=PingWatchdog
+PING_MS_TIMEOUT=500
+IOB_NAME=FTP_SONATEST
+
+[MACHINE]
+VENDOR=STEAMWARE
+MODEL=WATCHDOG
+
+[CNC]
+IP=10.74.82.204
+PORT=0000
+PING_IP=10.74.82.204
+GETPRGNAME=false
+
+[SERVER]
+MPIP=http://10.74.82.218
+MPURL=/MP/IO
+CMDBASE=/IOB/input/
+CMDFLOG=/IOB/flog/
+CMDALIVE=/IOB
+CMDENABLED=/IOB/enabled/
+CMDADV1=?valore=
+CMDREBO=/sendReboot.aspx?idxMacchina=
+CMD_ODL_STARTED=/IOB/getCurrOdlStart/
+CMD_FORCLE_SPLIT_ODL=/IOB/forceSplitOdlFull/
+CMD_IDLE_TIME=/IOB/getIdlePeriod/
+
+[MEMORY]
+
+[BLINK]
+;MAX_COUNTER_BLINK = 30
+MAX_COUNTER_BLINK = 30
+BLINK_FILT=0
+
+[OPTPAR]
+VETO_QUEUE_IN=15
+AUTO_CHANGE_ODL=false
+POWEROFF_TIMEOUT_SEC=60
+DISABLE_PZCOUNT=TRUE
+;; gestioni PING
+;MAX_TRY_PING=3
+;VETO_QUEUE_IN=4
+;VETO_PING_SEC=4
+;VETO_CHECKDIR_SEC=10
+;MAX_ELAPSED_TIME_SEC=60
+;VETO_SEND_SNAPSHOT=3
+
+[BRANCH]
+NAME=master
+
+; Tags manuali
+[TAGS]
+Customer=SteamWare
+HostOS=WIN
+HostName=IOB-WIN-SIMULA
+HostAddr=10.74.82.76
\ No newline at end of file
diff --git a/IOB-WIN-KAWASAKI/DATA/CONF/FTP_SONATEST.ini b/IOB-WIN-KAWASAKI/DATA/CONF/FTP_SONATEST.ini
new file mode 100644
index 00000000..9aa6c689
--- /dev/null
+++ b/IOB-WIN-KAWASAKI/DATA/CONF/FTP_SONATEST.ini
@@ -0,0 +1,79 @@
+;Configurazione IOB-WIN
+[IOB]
+;Macchina TEST FTP simile a ultrasuoni Sonatest x IMI Remosa
+CNCTYPE=FTP
+PING_MS_TIMEOUT=500
+
+[MACHINE]
+VENDOR=TEST_FTP
+MODEL=TRUESCALE_FTP
+
+[CNC]
+IP=10.74.82.204
+PORT=21
+PING_IP=10.74.82.204
+GETPRGNAME=false
+
+[SERVER]
+MPIP=http://10.74.82.218
+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 = 30
+BLINK_FILT=0
+
+[OPTPAR]
+; imposto breve sennò non riesce a partire...
+WAIT_REC_MSEC = 1000
+; indica gestione folder ritorno dati ODL
+ODL_FOLDER = TRUE
+; gestione contapezzi
+PZCOUNT_MODE=NONE
+DISABLE_PZCOUNT=TRUE
+ENABLE_SEND_PZC_BLOCK=FALSE
+MIN_SEND_PZC_BLOCK=0
+MAX_SEND_PZC_BLOCK=100
+;errori verifica folder FTP MAX
+MAX_ERR_CHECK=10
+; gestione DynData
+ENABLE_DYN_DATA=TRUE
+FORCE_DYN_DATA=TRUE
+DISABLE_DYN_DATA=TRUE
+DISABLE_SEND_WDST=TRUE
+
+; gestioni PING
+MAX_TRY_PING=3
+VETO_QUEUE_IN=4
+VETO_PING_SEC=4
+VETO_CHECKDIR_SEC=10
+MAX_ELAPSED_TIME_SEC=60
+
+;VETO_SEND_SNAPSHOT=3
+POWEROFF_TIMEOUT_SEC=60
+
+; conf parametri memoria READ/WRITE
+FTP_PARAM=FTP_SONATEST.json
+
+[BRANCH]
+NAME=master
+
+; Tags manuali
+[TAGS]
+Customer=SteamWare
+HostOS=WIN
+HostName=IOB-WIN-SIMULA
+HostAddr=10.74.82.76
\ No newline at end of file
diff --git a/IOB-WIN-KAWASAKI/DATA/CONF/FTP_SONATEST.json b/IOB-WIN-KAWASAKI/DATA/CONF/FTP_SONATEST.json
new file mode 100644
index 00000000..de2bdc0f
--- /dev/null
+++ b/IOB-WIN-KAWASAKI/DATA/CONF/FTP_SONATEST.json
@@ -0,0 +1,26 @@
+{
+ "ListTask": [
+ {
+ "ActionId": "FtpDownload",
+ "ServerAddr": "egw-tscale-04",
+ "ServerPort": 21,
+ "ConnUser": "testftpuser",
+ "ConnPasswd": "we4reFromB3rghem!",
+ "RawCert": "",
+ "SkipCert": true,
+ "ReExecVeto": 90,
+ "Note": "Sync periodico completo",
+ "StepsList": [
+ {
+ "Id": "01",
+ "Description": "Mirror Remote 2 Local Directory",
+ "Action": "mirrorDirR2L",
+ "ParamList": {
+ "RemoteDir": "ftpdata/syncfolder",
+ "LocalDir": "\\\\iis01\\W$\\Files"
+ }
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/IOB-WIN-KAWASAKI/DATA/CONF/IMI_SONATEST.ini b/IOB-WIN-KAWASAKI/DATA/CONF/IMI_SONATEST.ini
new file mode 100644
index 00000000..399dd54e
--- /dev/null
+++ b/IOB-WIN-KAWASAKI/DATA/CONF/IMI_SONATEST.ini
@@ -0,0 +1,79 @@
+;Configurazione IOB-WIN
+[IOB]
+;Macchina controllo ultrasuoni Sonatest x IMI Remosa
+CNCTYPE=FTP
+PING_MS_TIMEOUT=500
+
+[MACHINE]
+VENDOR=SONATEST
+MODEL=VEO
+
+[CNC]
+IP=172.28.30.208
+PORT=21
+PING_IP=172.28.30.208
+GETPRGNAME=false
+
+[SERVER]
+MPIP=http://192.168.0.110
+MPURL=/MP/IO
+CMDBASE=/IOB/input/
+CMDFLOG=/IOB/flog/
+CMDALIVE=/IOB
+CMDENABLED=/IOB/enabled/
+CMDADV1=?valore=
+CMDREBO=/sendReboot.aspx?idxMacchina=
+
+[MEMORY]
+ADDR_READ=DB9999.DBB0
+ADDR_WRITE=DB9999.DBB0
+SIZE_READ=0
+SIZE_WRITE=0
+
+
+[BLINK]
+;MAX_COUNTER_BLINK = 30
+MAX_COUNTER_BLINK = 30
+BLINK_FILT=0
+
+[OPTPAR]
+; imposto breve sennò non riesce a partire...
+WAIT_REC_MSEC = 1000
+; indica gestione folder ritorno dati ODL
+ODL_FOLDER = TRUE
+; gestione contapezzi
+PZCOUNT_MODE=NONE
+DISABLE_PZCOUNT=TRUE
+ENABLE_SEND_PZC_BLOCK=FALSE
+MIN_SEND_PZC_BLOCK=0
+MAX_SEND_PZC_BLOCK=100
+;errori verifica folder FTP MAX
+MAX_ERR_CHECK=10
+; gestione DynData
+ENABLE_DYN_DATA=TRUE
+FORCE_DYN_DATA=TRUE
+DISABLE_DYN_DATA=TRUE
+DISABLE_SEND_WDST=TRUE
+
+; gestioni PING
+MAX_TRY_PING=3
+VETO_QUEUE_IN=5
+VETO_PING_SEC=5
+VETO_CHECKDIR_SEC=10
+MAX_ELAPSED_TIME_SEC=60
+
+;VETO_SEND_SNAPSHOT=3
+POWEROFF_TIMEOUT_SEC=60
+
+; conf parametri memoria READ/WRITE
+FTP_PARAM=IMI_SONATEST.json
+
+[BRANCH]
+NAME=master
+
+; Tags manuali
+[TAGS]
+Customer=IMI-Remosa
+HostOS=WIN
+HostName=MAPO-SRV-60
+HostAddr=192.168.0.12
diff --git a/IOB-WIN-KAWASAKI/DATA/CONF/IMI_SONATEST.json b/IOB-WIN-KAWASAKI/DATA/CONF/IMI_SONATEST.json
new file mode 100644
index 00000000..c6ff3c6e
--- /dev/null
+++ b/IOB-WIN-KAWASAKI/DATA/CONF/IMI_SONATEST.json
@@ -0,0 +1,27 @@
+{
+ "ListTask": [
+ {
+ "ActionId": "FtpDownload",
+ "ServerAddr": "172.28.30.208",
+ "ServerPort": 21,
+ "ConnUser": "ftpuser",
+ "ConnPasswd": "SOnaTEst",
+ "RawCert": "",
+ "SkipCert": true,
+ "ReExecVeto": 90,
+ "Note": "Sync periodico completo",
+ "StepsList": [
+ {
+ "Id": "01",
+ "Description": "Mirror Remote 2 Local Directory",
+ "Action": "mirrorDirR2L",
+ "ParamList": {
+ "RemoteDir": "internal/MES",
+ "LocalDir": "\\\\308file\\shares\\QUAL\\Sonatest_Reports\\MES"
+ }
+ }
+
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/IOB-WIN-KAWASAKI/DATA/CONF/MAIN.ini b/IOB-WIN-KAWASAKI/DATA/CONF/MAIN.ini
new file mode 100644
index 00000000..5335f1c9
--- /dev/null
+++ b/IOB-WIN-KAWASAKI/DATA/CONF/MAIN.ini
@@ -0,0 +1,24 @@
+;Configurazione IOB-WIN GENERALE
+[BRANCH]
+NAME=master
+
+[SERVER]
+
+; Server Steamware
+MPIP=10.74.82.218
+MPURL=/MP/IO
+CMDREBO=/IOB/sendRebootGateway?GWIP=
+CMDIOB2CALL=/IOB/getIob2call?GWIP=
+
+;Client Install
+CLI_INST=SteamWareSim
+
+[IOB]
+;--- TEST sul campo
+; SIMULAZIONE verso server ufficio
+;STARTLIST=SIMUL_01,SIMUL_02,SIMUL_03,SIMUL_04
+;STARTLIST=IMI_SONATEST
+STARTLIST=FTP_SONATEST
+
+
+MAXCNC=10
\ No newline at end of file
diff --git a/IOB-WIN-KAWASAKI/DATA/CONF/SIMUL_01.ini b/IOB-WIN-KAWASAKI/DATA/CONF/SIMUL_01.ini
new file mode 100644
index 00000000..08975356
--- /dev/null
+++ b/IOB-WIN-KAWASAKI/DATA/CONF/SIMUL_01.ini
@@ -0,0 +1,120 @@
+;Configurazione IOB-WIN
+[IOB]
+CNCTYPE=SIMULA
+PING_MS_TIMEOUT=500
+MinDeltaSec=5
+EnableRedisQueue=true
+;IOB_NAME=TFT_RAMA_001
+
+[MACHINE]
+VENDOR=STEAMWARE
+MODEL=DEMO_SIMULATOR
+
+[CNC]
+IP=127.0.0.1
+PORT=0000
+
+[SERVER]
+MPIP=http://10.74.82.218
+MPURL=/MP/IO
+CMDBASE=/IOB/input/
+CMDFLOG=/IOB/flog/
+CMDALIVE=/IOB
+CMDENABLED=/IOB/enabled/
+CMDADV1=?valore=
+CMDREBO=/sendReboot.aspx?idxMacchina=
+CMD_ODL_STARTED=/IOB/getCurrOdlStart/
+CMD_FORCLE_SPLIT_ODL=/IOB/forceSplitOdlFull/
+CMD_IDLE_TIME=/IOB/getIdlePeriod/
+
+[MEMORY]
+
+[BLINK]
+MAX_COUNTER_BLINK = 15
+BLINK_FILT=0
+
+[OPTPAR]
+DISABLE_SEND_WDST=TRUE
+AUTO_CHANGE_ODL=true
+AUTO_SNAPSHOT_DOSSIER=true
+CHANGE_ODL_HOURS=24
+CHANGE_ODL_IDLE_MIN=0
+CHANGE_ODL_MODE=SIMUL
+; gestione custom timer
+timerIntMs=100
+;PZCOUNT_MODE=STD.[PAR/MEM].info|BIT.indice
+PZCOUNT_MODE=BIT
+ENABLE_PZ_RESET=TRUE
+;gestione invio pezzi in blocco
+ENABLE_SEND_PZC_BLOCK=TRUE
+MIN_SEND_PZC_BLOCK=0
+MAX_SEND_PZC_BLOCK=100
+; gestione cambio ODL automatico (minuti minimi durata)
+MIN_DURATA_ODL=960
+; per il simulatore: 50|1 = WAIT 50, DURATION 1 con riferimento al PERIODO base (PER_BASE in ms, default 10 secondi)
+PER_BASE=10100
+SIM_PZCNT=5|1
+SIM_ALARM=100|10
+SIM_MANU=50|6
+; indica gestione e simulazione bit 5 --> slow
+SIM_SLOW=3600|20
+; indica gestione e simulazione bit 6 --> warmup/cooldown
+SIM_WUCD=8000|20
+; indica gestione e simulazione bit 7 --> emergenza
+SIM_EMRG=4000|10
+; indica simulazione delle funzionalità power ON/ OFF
+SIM_POW_ON_OFF=true
+T_ON=7
+T_OFF=22
+; indica simulazione controlli utente
+SIM_RC=81|1
+; indica simulazione registro scarti
+SIM_RS=161|1
+; indica simulazione dichiarazioni (note) utente
+SIM_DICH=261|1
+; indica matricola opr simulata
+SIM_MATR_OPR=1
+
+; test x datasync...
+DATA_SYNC_AT_START=true
+; test sim dossiers tipo Kepware
+SIM_KWP=true
+
+; gestione DynData simulati
+ENABLE_DYN_DATA=TRUE
+FORCE_DYN_DATA=TRUE
+NEW_DYN_DATA=TRUE
+; indica parametri gestione TcMan
+TC_MAX_TC_FACTOR=3.9
+TC_LAMBDA=0.4
+TC_MAX_INCR=5
+MAX_PZ_INCR_PERC=1000
+; conf parametri memoria READ/WRITE
+PARAM_CONF=SIMUL_01.json
+ALARM_CONF=SIMUL_01_alarm.json
+;test gestione logfile (eg: soitaab)
+EnabelPodlManFull=true
+CodGruppoIob=STEAMWARE-SIM-FASE-01
+; invio flux alla lettura file
+sendFluxOnRead=true
+
+;conf test FTP
+FTP_SERVER=ftp.steamware.net
+FTP_USER=testftpuser
+FTP_PWD=we4reFromB3rghem!
+FTP_CERT=
+FTP_SKIP=TRUE
+FTP_LOC_DIR=temp\csv
+FTP_REM_DIR=
+CSV_ADD_HEADER=true
+
+
+[BRANCH]
+NAME=master
+
+; Tags manuali
+[TAGS]
+Customer=Steamware
+HostOS=WIN
+HostName=IOB-WIN-SIMULA
+HostAddr=10.74.82.76
diff --git a/IOB-WIN-KAWASAKI/DATA/CONF/SIMUL_01.json b/IOB-WIN-KAWASAKI/DATA/CONF/SIMUL_01.json
new file mode 100644
index 00000000..d2895eb1
--- /dev/null
+++ b/IOB-WIN-KAWASAKI/DATA/CONF/SIMUL_01.json
@@ -0,0 +1,410 @@
+{
+ "mMapWrite": {
+ "setArt": {
+ "name": "setArt",
+ "description": "Articolo",
+ "memAddr": "DB150.DBB12",
+ "tipoMem": "String",
+ "index": 12,
+ "size": 20,
+ "displOrdinal": 1
+ },
+ "setArtNum": {
+ "name": "setArtNum",
+ "description": "# Num Articolo",
+ "memAddr": "DB150.DBB112",
+ "tipoMem": "Int",
+ "index": 112,
+ "size": 4,
+ "displOrdinal": 1
+ },
+ "setComm": {
+ "name": "setComm",
+ "description": "Commessa",
+ "memAddr": "DB150.DBB32",
+ "tipoMem": "String",
+ "index": 32,
+ "size": 20,
+ "displOrdinal": 2
+ },
+ "setCommNum": {
+ "name": "setCommNum",
+ "description": "# NumCommessa",
+ "memAddr": "DB150.DBB132",
+ "tipoMem": "Int",
+ "index": 132,
+ "size": 4,
+ "displOrdinal": 2
+ },
+ "setPzComm": {
+ "name": "setPzComm",
+ "description": "Qta Richiesta",
+ "memAddr": "DB150.DBB8",
+ "tipoMem": "Int",
+ "index": 8,
+ "size": 4,
+ "displOrdinal": 3
+ },
+ "forceSetPzCount": {
+ "name": "forceSetPzCount",
+ "description": "Imposta Qta",
+ "memAddr": "DB150.DBB8",
+ "tipoMem": "Int",
+ "index": 8,
+ "size": 4,
+ "displOrdinal": 11
+ },
+ //"OPC_Set Point.Chain Spped": {
+ // "name": "OPC_Set Point.Chain Spped",
+ // "description": "Chain Spped",
+ // "tipoMem": "String",
+ // "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Chain Spped",
+ // "index": 0,
+ // "size": 0
+ //},
+ //"OPC_Set Point.Top Overfeeding": {
+ // "name": "OPC_Set Point.Top Overfeeding",
+ // "description": "Top Overfeeding",
+ // "tipoMem": "String",
+ // "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Top Overfeeding",
+ // "index": 0,
+ // "size": 0
+ //},
+ //"OPC_Set Point.Bottom Overfeeding": {
+ // "name": "OPC_Set Point.Bottom Overfeeding",
+ // "description": "Bottom Overfeeding",
+ // "tipoMem": "String",
+ // "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Bottom Overfeeding",
+ // "index": 0,
+ // "size": 0
+ //},
+ //"OPC_Set Point.Width Master": {
+ // "name": "OPC_Set Point.Width Master",
+ // "description": "Width Master",
+ // "tipoMem": "String",
+ // "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Width Master",
+ // "index": 0,
+ // "size": 0
+ //},
+ //"OPC_Set Point.Thermoset Time": {
+ // "name": "OPC_Set Point.Thermoset Time",
+ // "description": "Thermoset Time",
+ // "tipoMem": "String",
+ // "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Thermoset Time",
+ // "index": 0,
+ // "size": 0
+ //},
+ //"OPC_Set Point.Thermoset Temperature": {
+ // "name": "OPC_Set Point.Thermoset Temperature",
+ // "description": "Thermoset Temperature",
+ // "tipoMem": "String",
+ // "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Thermoset Temperature",
+ // "index": 0,
+ // "size": 0
+ //},
+ //"OPC_Set Point.Take Off Overfeeding": {
+ // "name": "OPC_Set Point.Take Off Overfeeding",
+ // "description": "Take Off Overfeeding",
+ // "tipoMem": "String",
+ // "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Take Off Overfeeding",
+ // "index": 0,
+ // "size": 0
+ //},
+ //"OPC_Set Point.Small Roller Overfeeding": {
+ // "name": "OPC_Set Point.Small Roller Overfeeding",
+ // "description": "Small Roller Overfeeding",
+ // "tipoMem": "String",
+ // "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Small Roller Overfeeding",
+ // "index": 0,
+ // "size": 0
+ //},
+ //"OPC_Set Point.Scroll Roller Overfeeding": {
+ // "name": "OPC_Set Point.Scroll Roller Overfeeding",
+ // "description": "Scroll Roller Overfeeding",
+ // "tipoMem": "String",
+ // "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Scroll Roller Overfeeding",
+ // "index": 0,
+ // "size": 0
+ //},
+ //"OPC_Set Point.Right Whell Overfeeding": {
+ // "name": "OPC_Set Point.Right Whell Overfeeding",
+ // "description": "Right Whell Overfeeding",
+ // "tipoMem": "String",
+ // "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Right Whell Overfeeding",
+ // "index": 0,
+ // "size": 0
+ //},
+ //"OPC_Set Point.Plaiter Overfeeding": {
+ // "name": "OPC_Set Point.Plaiter Overfeeding",
+ // "description": "Plaiter Overfeeding",
+ // "tipoMem": "String",
+ // "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Plaiter Overfeeding",
+ // "index": 0,
+ // "size": 0
+ //},
+ //"OPC_Set Point.Load cell Weight": {
+ // "name": "OPC_Set Point.Load cell Weight",
+ // "description": "Load cell Weight",
+ // "tipoMem": "String",
+ // "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Load cell Weight",
+ // "index": 0,
+ // "size": 0
+ //},
+ //"OPC_Set Point.Left Wheel Overfeeding": {
+ // "name": "OPC_Set Point.Left Wheel Overfeeding",
+ // "description": "Left Wheel Overfeeding",
+ // "tipoMem": "String",
+ // "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Left Wheel Overfeeding",
+ // "index": 0,
+ // "size": 0
+ //},
+ //"OPC_Set Point.Fan 105A Speed": {
+ // "name": "OPC_Set Point.Fan 105A Speed",
+ // "description": "Fan 105A Speed",
+ // "tipoMem": "String",
+ // "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Fan 105A Speed",
+ // "index": 0,
+ // "size": 0
+ //},
+ //"OPC_Set Point.Fan 105 Speed": {
+ // "name": "OPC_Set Point.Fan 105 Speed",
+ // "description": "Fan 105 Speed",
+ // "tipoMem": "String",
+ // "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Fan 105 Speed",
+ // "index": 0,
+ // "size": 0
+ //},
+ //"OPC_Set Point.Fan 103A Speed": {
+ // "name": "OPC_Set Point.Fan 103A Speed",
+ // "description": "Fan 103A Speed",
+ // "tipoMem": "String",
+ // "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Fan 103A Speed",
+ // "index": 0,
+ // "size": 0
+ //},
+ //"OPC_Set Point.Fan 103 Speed": {
+ // "name": "OPC_Set Point.Fan 103 Speed",
+ // "description": "Fan 103 Speed",
+ // "tipoMem": "String",
+ // "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Fan 103 Speed",
+ // "index": 0,
+ // "size": 0
+ //},
+ //"OPC_Set Point.Fan 101A Speed": {
+ // "name": "OPC_Set Point.Fan 101A Speed",
+ // "description": "Fan 101A Speed",
+ // "tipoMem": "String",
+ // "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Fan 101A Speed",
+ // "index": 0,
+ // "size": 0
+ //},
+ //"OPC_Set Point.Fan 101 Speed": {
+ // "name": "OPC_Set Point.Fan 101 Speed",
+ // "description": "Fan 101 Speed",
+ // "tipoMem": "String",
+ // "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Fan 101 Speed",
+ // "index": 0,
+ // "size": 0
+ //},
+ //"OPC_Set Point.Exhaust Fan 1 Speed": {
+ // "name": "OPC_Set Point.Exhaust Fan 1 Speed",
+ // "description": "Exhaust Fan 1 Speed",
+ // "tipoMem": "String",
+ // "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Exhaust Fan 1 Speed",
+ // "index": 0,
+ // "size": 0
+ //},
+ //"OPC_Set Point.Differentiation Spindle 5": {
+ // "name": "OPC_Set Point.Differentiation Spindle 5",
+ // "description": "Differentiation Spindle 5",
+ // "tipoMem": "String",
+ // "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Differentiation Spindle 5",
+ // "index": 0,
+ // "size": 0
+ //},
+ //"OPC_Set Point.Differentiation Spindle 4": {
+ // "name": "OPC_Set Point.Differentiation Spindle 4",
+ // "description": "Differentiation Spindle 4",
+ // "tipoMem": "String",
+ // "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Differentiation Spindle 4",
+ // "index": 0,
+ // "size": 0
+ //},
+ //"OPC_Set Point.Differentiation Spindle 3": {
+ // "name": "OPC_Set Point.Differentiation Spindle 3",
+ // "description": "Differentiation Spindle 3",
+ // "tipoMem": "String",
+ // "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Differentiation Spindle 3",
+ // "index": 0,
+ // "size": 0
+ //},
+ //"OPC_Set Point.Differentiation Spindle 2": {
+ // "name": "OPC_Set Point.Differentiation Spindle 2",
+ // "description": "Differentiation Spindle 2",
+ // "tipoMem": "String",
+ // "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Differentiation Spindle 2",
+ // "index": 0,
+ // "size": 0
+ //},
+ //"OPC_Set Point.Differentiation Spindle 1": {
+ // "name": "OPC_Set Point.Differentiation Spindle 1",
+ // "description": "Differentiation Spindle 1",
+ // "tipoMem": "String",
+ // "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Differentiation Spindle 1",
+ // "index": 0,
+ // "size": 0
+ //},
+ //"OPC_Set Point.Cooling Cell 1 Speed": {
+ // "name": "OPC_Set Point.Cooling Cell 1 Speed",
+ // "description": "Cooling Cell 1 Speed",
+ // "tipoMem": "String",
+ // "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Cooling Cell 1 Speed",
+ // "index": 0,
+ // "size": 0
+ //},
+ //"OPC_Set Point.Burner 6 Temperature": {
+ // "name": "OPC_Set Point.Burner 6 Temperature",
+ // "description": "Burner 6 Temperature",
+ // "tipoMem": "String",
+ // "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Burner 6 Temperature",
+ // "index": 0,
+ // "size": 0
+ //},
+ //"OPC_Set Point.Burner 5 Temperature": {
+ // "name": "OPC_Set Point.Burner 5 Temperature",
+ // "description": "Burner 5 Temperature",
+ // "tipoMem": "String",
+ // "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Burner 5 Temperature",
+ // "index": 0,
+ // "size": 0
+ //},
+ //"OPC_Set Point.Burner 4 Temperature": {
+ // "name": "OPC_Set Point.Burner 4 Temperature",
+ // "description": "Burner 4 Temperature",
+ // "tipoMem": "String",
+ // "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Burner 4 Temperature",
+ // "index": 0,
+ // "size": 0
+ //},
+ //"OPC_Set Point.Burner 3 Temperature": {
+ // "name": "OPC_Set Point.Burner 3 Temperature",
+ // "description": "Burner 3 Temperature",
+ // "tipoMem": "String",
+ // "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Burner 3 Temperature",
+ // "index": 0,
+ // "size": 0
+ //},
+ //"OPC_Set Point.Burner 2 Temperature": {
+ // "name": "OPC_Set Point.Burner 2 Temperature",
+ // "description": "Burner 2 Temperature",
+ // "tipoMem": "String",
+ // "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Burner 2 Temperature",
+ // "index": 0,
+ // "size": 0
+ //},
+ //"OPC_Set Point.Burner 1 Temperature": {
+ // "name": "OPC_Set Point.Burner 1 Temperature",
+ // "description": "Burner 1 Temperature",
+ // "tipoMem": "String",
+ // "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Burner 1 Temperature",
+ // "index": 0,
+ // "size": 0
+ //},
+ //"OPC_Set Point.Air Humidity Preset Esa 1": {
+ // "name": "OPC_Set Point.Air Humidity Preset Esa 1",
+ // "description": "Air Humidity Preset Esa 1",
+ // "tipoMem": "String",
+ // "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Air Humidity Preset Esa 1",
+ // "index": 0,
+ // "size": 0
+ //}
+ },
+ "mMapRead": {
+ "TEMP_01": {
+ "name": "TEMP_01",
+ "description": "Temperatura 01",
+ "tipoMem": "Real",
+ "minVal": 18,
+ "maxVal": 24,
+ "displOrdinal": 4
+ },
+ "POWER_01": {
+ "name": "POWER_01",
+ "description": "Potenza impianto",
+ "tipoMem": "Int",
+ "minVal": 40,
+ "maxVal": 80,
+ "displOrdinal": 5
+ },
+ "FEED_OVER": {
+ "name": "FEED_OVER",
+ "description": "FEED override",
+ "tipoMem": "Int",
+ "minVal": 0,
+ "maxVal": 100,
+ "displOrdinal": 6
+ },
+ "RAPID_OVER": {
+ "name": "RAPID_OVER",
+ "description": "RAPID override",
+ "tipoMem": "Int",
+ "minVal": 50,
+ "maxVal": 120,
+ "displOrdinal": 7
+ },
+ "POS_X": {
+ "name": "POS_X",
+ "description": "Asse X",
+ "tipoMem": "Int",
+ "minVal": -2000,
+ "maxVal": 2000,
+ "displOrdinal": 8
+ },
+ "POS_Y": {
+ "name": "POS_Y",
+ "description": "Asse Y",
+ "tipoMem": "Int",
+ "minVal": 0,
+ "maxVal": 2000,
+ "displOrdinal": 9
+ },
+ "POS_Z": {
+ "name": "POS_Z",
+ "description": "Asse Z",
+ "tipoMem": "Int",
+ "minVal": 0,
+ "maxVal": 1500,
+ "displOrdinal": 10
+ }
+ },
+ "optKVP": {
+ "fluxLogReduce": true,
+ "fluxLogRedDeadBand": 1.5,
+ "fluxLogResendPeriod": 15,
+ "hasRecipe": true,
+ "maxPodlQty": 530,
+ "useLocalRecipe": true,
+ "path-locBase": "C:\\MesData\\",
+ "path-00-Arch": "ArchivioRicette\\FIMAT",
+ "path-01-Temp": "01-Temp\\FIMAT",
+ "path-02-Sent": "02-Inviate\\FIMAT",
+ "path-03-Recv": "03-Ricevute\\FIMAT",
+ "path-04-remReq": "Y:\\",
+ "path-05-remExe": "C:\\MesData\\Remote\\Dosed",
+ "path-06-remRec": "R:\\",
+ "path-outReport": "C:\\MesData\\Report",
+ "path-confSetup": "C:\\MesData\\Setup\\setupConsumi.json",
+ "replace-": "{{PODL}}",
+ "replace-": "Kg{{Qty}} | {{Note}}"
+ }, //,
+ //"BaseKeyTranslate": "ns=2;s=RamosaETN21.RamosaCJ2",
+ //"RecipeKeyTranslate": {
+ // "Present Value.General Fan": "Recipe.Chain Spped",
+ // "Present Value.Bottom Overfeeding": "Recipe.Bottom Overfeeding",
+ // "Present Value.Top Overfeeding": "Recipe.Top Overfeeding"
+ //}
+ "mMapWriteLink": {
+ "setArt": "setArtNum",
+ "setComm": "setCommNum"
+ }
+}
\ No newline at end of file
diff --git a/IOB-WIN-KAWASAKI/DATA/CONF/SIMUL_01_WD.ini b/IOB-WIN-KAWASAKI/DATA/CONF/SIMUL_01_WD.ini
new file mode 100644
index 00000000..56bca173
--- /dev/null
+++ b/IOB-WIN-KAWASAKI/DATA/CONF/SIMUL_01_WD.ini
@@ -0,0 +1,51 @@
+;Configurazione IOB-WIN
+[IOB]
+CNCTYPE=PingWatchdog
+PING_MS_TIMEOUT=500
+; attenzione che alcuni eventi vengo scritti cmq nel log di SIMUL_01 invece di SIMUL_01_WD
+IOB_NAME=SIMUL_01
+
+[MACHINE]
+VENDOR=STEAMWARE
+MODEL=WATCHDOG
+
+[CNC]
+; ping vs WIN10-VPN-03 per test
+IP=10.74.83.203
+PORT=0000
+
+[SERVER]
+MPIP=http://10.74.82.218
+MPURL=/MP/IO
+CMDBASE=/IOB/input/
+CMDFLOG=/IOB/flog/
+CMDALIVE=/IOB
+CMDENABLED=/IOB/enabled/
+CMDADV1=?valore=
+CMDREBO=/sendReboot.aspx?idxMacchina=
+CMD_ODL_STARTED=/IOB/getCurrOdlStart/
+CMD_FORCLE_SPLIT_ODL=/IOB/forceSplitOdlFull/
+CMD_IDLE_TIME=/IOB/getIdlePeriod/
+
+[MEMORY]
+
+[BLINK]
+MAX_COUNTER_BLINK = 15
+BLINK_FILT=0
+
+[OPTPAR]
+AUTO_CHANGE_ODL=false
+POWEROFF_TIMEOUT_SEC=60
+ENABLE_SEND_PZC_BLOCK=TRUE
+MIN_SEND_PZC_BLOCK=0
+MAX_SEND_PZC_BLOCK=100
+
+[BRANCH]
+NAME=master
+
+; Tags manuali
+[TAGS]
+Customer=Steamware
+HostOS=WIN
+HostName=IOB-WIN-SIMULA
+HostAddr=10.74.82.76
diff --git a/IOB-WIN-KAWASAKI/DATA/CONF/SIMUL_01_alarm.json b/IOB-WIN-KAWASAKI/DATA/CONF/SIMUL_01_alarm.json
new file mode 100644
index 00000000..4f6ed310
--- /dev/null
+++ b/IOB-WIN-KAWASAKI/DATA/CONF/SIMUL_01_alarm.json
@@ -0,0 +1,859 @@
+[
+ {
+ "description": "Alarm Word 0 ",
+ "tipoMem": "Byte",
+ "memAddr": "Alarm Word 0",
+ "index": 0,
+ "size": 2,
+ "messages": [
+ "1,ALLARME INVERTER CATENA TRASP. TESSUTO",
+ "2,ALLARME INVERTER CILINDRO SOVRALIMENTAZIONE SUPERIORE",
+ "3,ALLARME INVERTER CILINDRO SOVRALIMENTAZIONE INFERIORE",
+ "4,ALLARME INVERTER RUOTA SOVRALIMENTAZIONE SINISTRA",
+ "5,ALLARME INVERTER RUOTA SOVRALIMENTAZIONE DESTRA",
+ "6,ALLARME INVERTER STACCAPEZZA",
+ "7,ALLARME INVERTER FALDAROTOLATORE",
+ "8,ALLARME INVERTER FALDERUOLE",
+ "9,ALLARME INVERTER ESAUSTORE 1 ",
+ "10,ALLARME FUNE SICUREZZA USCITA",
+ "11,ALLARME VENTILATORE 1 (BASSO)",
+ "12, ALLARME VENTILATORE 2 (BASSO)",
+ "13,ALLARME F.C. MINIMO CAMPO MASTER",
+ "14,ALLARME F.C. MASSIMO CAMPO MASTER",
+ "15,ALLARME PROTEZIONE TAPPETO INGRESSO",
+ "16,RIFERIMENTO POTENZIOMETRI CAMPI ASSENTE"
+ ]
+ },
+
+ {
+ "description": "Alarm Word 1 ",
+ "tipoMem": "Byte",
+ "memAddr": "Alarm Word 1",
+ "index": 1,
+ "size": 2,
+ "messages": [
+ "17,ALLARME CONDIZIONATORI",
+ "18,EMERGENZA IN CORSO !!!",
+ "19,ALLARME PROTEZIONE RECUPERO CALORE - GRUPPO 2 POMPA 1",
+ "20,ALLARME POMPA RECUPERO CALORE 3",
+ "21,CONTROLLO UMIDITA' : FUORI CAMPO",
+ "22,ALLARME RILEVATORE ALTEZZA TESSUTO",
+ "23,ALLARME NON RILASCIO TESSUTO SINISTRO",
+ "24,ALLARME NON RILASCIO TESSUTO DESTRO",
+ "25,ALLARME ALIMENTAZIONE 24VAC QUADRO",
+ "26,ALLARME APRICIMOSSE",
+ "27,ALLARME ASCIUGACIMOSSE A INFRAROSSI",
+ "28,ALLARME PROTEZIONE CELLA DI RAFFREDDAMENTO 1",
+ "29,CAMPO PARALLELO 2 ALLARME PROTEZIONE",
+ "30,ALLARME VENTILATORE 3 (BASSO)",
+ "31,ALLARME VENTILATORE 4 (BASSO)",
+ "32,CAMPO PARALLELO 1 ALLARME PROTEZIONE"
+ ]
+ },
+
+ {
+ "description": "Alarm Word 2 ",
+ "tipoMem": "Byte",
+ "memAddr": "Alarm Word 2",
+ "index": 2,
+ "size": 2,
+ "messages": [
+ "33,CAMPO PARALLELO 3 ALLARME PROTEZIONE",
+ "34,RAGGIUNTO MASSIMO CARICO CELLA DI CARICO TAPPETO",
+ "35,ALLARME FALLOPEZZA SINISTRO",
+ "36,ALLARME FALLOPEZZA DESTRO",
+ "37,PARATIE ANTERIORI APERTE",
+ "38,ALLARME AZIONAMENTO CAMPO CONICO",
+ "39,BLOCCO BRUCIATORE 9",
+ "40,CAMPO MASTER ALLARME PROTEZIONE ",
+ "41,ALLARME PRESSOSTATO TENDICATENA SINISTRO",
+ "42,ALLARME PRESSOSTATO TENDICATENA DESTRO",
+ "43,ALLARME MASSIMO ALLUNGAMENTO CATENA",
+ "44,ALLARME TIPO LAVORO USCITA NON SELEZIONATO",
+ "45,ALLARME RADDRIZZATRAMA",
+ "46,ALLARME SPREMITORE 1",
+ "47,BLOCCO BRUCIATORE 10",
+ "48,BLOCCO BRUCIATORE 11"
+ ]
+ },
+
+ {
+ "description": "Alarm Word 3 ",
+ "tipoMem": "Byte",
+ "memAddr": "Alarm Word 3",
+ "index": 3,
+ "size": 2,
+ "messages": [
+ "49,BLOCCO BRUCIATORE 12",
+ "50,BLOCCO BRUCIATORE 1",
+ "51,BLOCCO BRUCIATORE 2",
+ "52,BLOCCO BRUCIATORE 3",
+ "53,BLOCCO BRUCIATORE 4",
+ "54,BIELLE FUORI POSIZIONE",
+ "55,GRUPPO FALDATORE FUORI POSIZIONE",
+ "56,SERIE ARRESTI APERTA",
+ "57,MANCANZA LUBRIFICANTE CATENA TRASP. TESSUTO",
+ "58,ALLARME INVERTER PICCOLO ROTOLO",
+ "59,ALLARME PROTEZIONE ALLARGATORI",
+ "60,ALLARME PROTEZIONE ASPIRACIMOSSE",
+ "61,ALLARME TAGLIACIMOSSE SINISTRA",
+ "62,ALLARME TAGLIACIMOSSE DESTRA",
+ "63,ALLARME INVERTER VENTILATORI INV101",
+ "64,ALLARME INVERTER VENTILATORI INV103"
+ ]
+ },
+
+ {
+ "description": "Alarm Word 4 ",
+ "tipoMem": "Byte",
+ "memAddr": "Alarm Word 4",
+ "index": 4,
+ "size": 2,
+ "messages": [
+ "65,ALLARME TIMEOUT VITE CAMPO MASTER",
+ "66,ALLARME TIMEOUT VITE CAMPO PARALLELO 1",
+ "67,ALLARME TIMEOUT VITE CAMPO PARALLELO 2",
+ "68,ALLARME TIMEOUT VITE CAMPO PARALLELO 3",
+ "69,ALLARME TIMEOUT VITE CAMPO PARALLELO 4",
+ "70,ALLARME TIMEOUT VITE CAMPO PARALLELO 5",
+ "71,ALLARME TIMEOUT VITE CAMPO PARALLELO 6",
+ "72,ALLARME TIMEOUT VITE CAMPO PARALLELO 7",
+ "73,ALLARME TIMEOUT VITE CAMPO PARALLELO 8",
+ "74,ALLARME TIMEOUT VITE CAMPO PARALLELO 9",
+ "75,ALLARME DEVICE_NET ADDR. 32 DA BANCHETTO DI SPALMATURA",
+ "76,ALLARME INVERTER DOGAL ",
+ "77,ALLARME FOTOCELLULA TAPPETO USCITA PIENO",
+ "78,TEMPO DI CICLO PLC SOPRA MASSIMO IMPOSTATO",
+ "79,ERRORE INDIRIZZI SONDE BRUCIATORI",
+ "80,ALLARME VENTILATORE 4 (ALTO)"
+ ]
+ },
+
+ {
+ "description": "Alarm Word 5 ",
+ "tipoMem": "Byte",
+ "memAddr": "Alarm Word 5",
+ "index": 5,
+ "size": 2,
+ "messages": [
+ "81,ALLARME VENTILATORE 5 (ALTO)",
+ "82,ALLARME VENTILATORE 6 (ALTO)",
+ "83,ALLARME VENTILATORE 7 (ALTO)",
+ "84,SONDA BRUCIATORE 1 INTERROTTA",
+ "85,SONDA BRUCIATORE 2 INTERROTTA",
+ "86,SONDA BRUCIATORE 3 INTERROTTA",
+ "87,SONDA BRUCIATORE 4 INTERROTTA",
+ "88,ALLARME DEVICE_NET ADDR. 0",
+ "89,ALLARME DEVICE_NET ADDR. 1",
+ "90,ALLARME DEVICE_NET ADDR. 2",
+ "91,ALLARME DEVICE_NET ADDR. 3",
+ "92,ALLARME DEVICE_NET ADDR. 4",
+ "93,ALLARME DEVICE_NET ADDR. 5",
+ "94,ALLARME DEVICE_NET ADDR. 6",
+ "95,ALLARME DEVICE_NET ADDR. 7",
+ "96,ALLARME DEVICE_NET ADDR. 8"
+ ]
+ },
+
+ {
+ "description": "Alarm Word 6 ",
+ "tipoMem": "Byte",
+ "memAddr": "Alarm Word 6",
+ "index": 6,
+ "size": 2,
+ "messages": [
+ "97,ALLARME DEVICE_NET ADDR. 9",
+ "98,ALLARME DEVICE_NET ADDR. 10",
+ "99,ALLARME DEVICE_NET ADDR. 11",
+ "100,ALLARME DEVICE_NET ADDR. 12",
+ "101,ALLARME DEVICE_NET ADDR. 13",
+ "102,ALLARME DEVICE_NET ADDR. 14",
+ "103,ALLARME DEVICE_NET ADDR. 15",
+ "104,ALLARME DEVICE_NET ADDR. 16",
+ "105,ALLARME DEVICE_NET ADDR. 17",
+ "106,ALLARME DEVICE_NET ADDR. 18",
+ "107,ALLARME DEVICE_NET ADDR. 19",
+ "108,ALLARME DEVICE_NET ADDR. 20",
+ "109,ALLARME DEVICE_NET ADDR. 21",
+ "110,ALLARME DEVICE_NET ADDR. 22",
+ "111,ALLARME DEVICE_NET ADDR. 23",
+ "112,ALLARME DEVICE_NET ADDR. 24"
+ ]
+ },
+
+ {
+ "description": "Alarm Word 7 ",
+ "tipoMem": "Byte",
+ "memAddr": "Alarm Word 7",
+ "index": 7,
+ "size": 2,
+ "messages": [
+ "113,ALLARME DEVICE_NET ADDR. 25",
+ "114,ALLARME DEVICE_NET ADDR. 26",
+ "115,BLOCCO BRUCIATORE 5",
+ "116,BLOCCO BRUCIATORE 6",
+ "117,BLOCCO BRUCIATORE 7",
+ "118,BLOCCO BRUCIATORE 8",
+ "119,SOVRATEMPERATURA BRUCIATORE 1",
+ "120,SOVRATEMPERATURA BRUCIATORE 2",
+ "121,SOVRATEMPERATURA BRUCIATORE 3",
+ "122,SOVRATEMPERATURA BRUCIATORE 4",
+ "123,SOVRATEMPERATURA BRUCIATORE 5",
+ "124,SOVRATEMPERATURA BRUCIATORE 6",
+ "125,SOVRATEMPERATURA BRUCIATORE 7",
+ "126,SOVRATEMPERATURA BRUCIATORE 8",
+ "127,SONDA BRUCIATORE 5 INTERROTTA",
+ "128,SONDA BRUCIATORE 6 INTERROTTA"
+ ]
+ },
+
+ {
+ "description": "Alarm Word 8 ",
+ "tipoMem": "Byte",
+ "memAddr": "Alarm Word 8",
+ "index": 8,
+ "size": 2,
+ "messages": [
+ "129,SONDA BRUCIATORE 7 INTERROTTA",
+ "130,SONDA BRUCIATORE 8 INTERROTTA",
+ "131,SONDA BRUCIATORE 9 INTERROTTA",
+ "132,SONDA BRUCIATORE 10 INTERROTTA",
+ "133,SONDA BRUCIATORE 11 INTERROTTA",
+ "134,SONDA BRUCIATORE 12 INTERROTTA",
+ "135,SOVRATEMPERATURA BRUCIATORE 9",
+ "136,SOVRATEMPERATURA BRUCIATORE 10",
+ "137,SOVRATEMPERATURA BRUCIATORE 11",
+ "138,SOVRATEMPERATURA BRUCIATORE 12",
+ "139,ALLARME INVERTER VENTILATORI INV105",
+ "140,ALLARME INVERTER VENTILATORI INV107",
+ "141,ALLARME INVERTER VENTILATORI INV109",
+ "142,ALLARME INVERTER VENTILATORI INV111",
+ "143,ALLARME VENTILATORE 5 (BASSO)",
+ "144,ALLARME VENTILATORE 6 (BASSO)"
+ ]
+ },
+
+ {
+ "description": "Alarm Word 9 ",
+ "tipoMem": "Byte",
+ "memAddr": "Alarm Word 9",
+ "index": 9,
+ "size": 2,
+ "messages": [
+ "145,ALLARME VENTILATORE 7 (BASSO)",
+ "146,ALLARME VENTILATORE 8 (BASSO)",
+ "147,ALLARME VENTILATORE 9 (BASSO)",
+ "148,ALLARME VENTILATORE 10 (BASSO)",
+ "149,ALLARME VENTILATORE 11 (BASSO)",
+ "150,ALLARME VENTILATORE 12 (BASSO)",
+ "151,ALLARME INVERTER ESAUSTORE 2",
+ "152,CAMPO PARALLELO 4 ALLARME PROTEZIONE",
+ "153,CAMPO PARALLELO 5 ALLARME PROTEZIONE",
+ "154,CAMPO PARALLELO 6 ALLARME PROTEZIONE",
+ "155,CAMPO PARALLELO 7 ALLARME PROTEZIONE",
+ "156,CAMPO PARALLELO 8 ALLARME PROTEZIONE",
+ "157,ALLARME INSEGUIMENTO VITE MASTER AGGIUNTA",
+ "158,ALLARME INVERTER CILINDRO RAFFREDDAMENTO",
+ "159,ALLARME TEMPERATURA ESAUSTORI",
+ "160,ALLARME INVERTER RECUPERO CALORE GRUPPO 1 "
+ ]
+ },
+
+ {
+ "description": "Alarm Word 10 ",
+ "tipoMem": "Byte",
+ "memAddr": "Alarm Word 10",
+ "index": 10,
+ "size": 2,
+ "messages": [
+ "161,ALLARME FINECORSA SX TAPPETO USCITA",
+ "162,ALLARME FINECORSA DX TAPPETO USCITA",
+ "163,ALLARME INVERTER RECUPERO CALORE GRUPPO 2",
+ "164,ALLARME DEVICE_NET ADDR. 31",
+ "165,ALLARME CENTRATORE USCITA",
+ "166,COMPATTATORE NON PRONTO",
+ "167,ALLARME CONTROLLO PIROMETRI",
+ "168,ALLARME ALLARGATORE SU TAPPETO USCITA",
+ "169,ALLARME CONTROLLO FUMI",
+ "170,ALLARME FINECORSA BALLERINO ALTO",
+ "171,ALLARME FINECORSA BALLERINO BASSO",
+ "172,ALLARME PROTEZIONE ASPIRATORE VAPORIZZO INTENSIVO",
+ "173,ALLARME PROTEZIONE BRUCIATORE 1",
+ "174,ALLARME PROTEZIONE BRUCIATORE 2",
+ "175,ALLARME PROTEZIONE BRUCIATORE 3",
+ "176,ALLARME PROTEZIONE BRUCIATORE 4"
+ ]
+ },
+
+ {
+ "description": "Alarm Word 11 ",
+ "tipoMem": "Byte",
+ "memAddr": "Alarm Word 11",
+ "index": 11,
+ "size": 2,
+ "messages": [
+ "177,ALLARME PROTEZIONE BRUCIATORE 5",
+ "178,ALLARME PROTEZIONE BRUCIATORE 6",
+ "179,ALLARME PROTEZIONE BRUCIATORE 7",
+ "180,ALLARME PROTEZIONE BRUCIATORE 8",
+ "181,ALLARME PROTEZIONE BRUCIATORE 9",
+ "182,ALLARME PROTEZIONE BRUCIATORE 10",
+ "183,ALLARME PROTEZIONE BRUCIATORE 11",
+ "184,ALLARME PROTEZIONE BRUCIATORE 12",
+ "185,TERMOFISSAGGIO O ESSICCAZIONE: TEMPERATURA FUORI CAMPO",
+ "186,TERMOFISSAGGIO O ESSICCAZIONE: VELOCITA' FUORI CAMPO",
+ "187,TERMOFISSAGGIO O ESSICCAZIONE: TEMPO FUORI CAMPO",
+ "188,SISTEMA CAMPI PARALLELI NON TARATO",
+ "189,ALLARME PROTEZIONE VENTOLE BRUCIATORI",
+ "190,CAMPO CONICO SINISTRO SU LIMITE CHIUSURA",
+ "191,CAMPO CONICO SINISTRO SU LIMITE APERTURA",
+ "192,CAMPO CONICO DESTRO SU LIMITE APERTURA"
+ ]
+ },
+
+ {
+ "description": "Alarm Word 12 ",
+ "tipoMem": "Byte",
+ "memAddr": "Alarm Word 12",
+ "index": 12,
+ "size": 2,
+ "messages": [
+ "193,CAMPO CONICO DESTRO SU LIMITE CHIUSURA",
+ "194,FINECORSA CAMPO CONICO DESTRO SU TRAVERSA",
+ "195,FINECORSA CAMPO CONICO SINISTRO SU TRAVERSA",
+ "196,ALLARME PROTEZIONE INVERTER CAMPO CONICO SINISTRO",
+ "197,ALLARME PROTEZIONE INVERTER CAMPO CONICO DESTRO",
+ "198,ALLARME DEVICE_NET ADDR. 27",
+ "199,ALLARME VENTILATORE 8 (ALTO)",
+ "200,ALLARME VENTILATORE 9 (ALTO)",
+ "201,ALLARME VENTILATORE 10 (ALTO)",
+ "202,ALLARME VENTILATORE 11 (ALTO)",
+ "203,ALLARME VENTILATORE 12 (ALTO)",
+ "204,ALLARME VENTILATORE 1 (ALTO)",
+ "205,ALLARME VENTILATORE 2 (ALTO)",
+ "206,ALLARME VENTILATORE 3 (ALTO)",
+ "207,ALLARME PROTEZIONE CELLA DI RAFFREDDAMENTO 2",
+ "208,ALLARME FINECORSA TANDEM CONTROLLO ANSA TESSUTO"
+ ]
+ },
+
+ {
+ "description": "Alarm Word 13 ",
+ "tipoMem": "Byte",
+ "memAddr": "Alarm Word 13",
+ "index": 13,
+ "size": 2,
+ "messages": [
+ "209,ALLARME FUNE SICUREZZA / PROTEZIONE RIBALTABILE ANTERIORE",
+ "210,ALLARME INVERTER VENTILATORI INV101A",
+ "211,ALLARME INVERTER VENTILATORI INV103A",
+ "212,ALLARME INVERTER VENTILATORI INV105A",
+ "213,ALLARME INVERTER VENTILATORI INV107A",
+ "214,ALLARME INVERTER VENTILATORI INV109A",
+ "215,ALLARME INVERTER VENTILATORI INV111A",
+ "216,ALLARME DA BANCHETTO DI SPALMATURA",
+ "217,ALLARME DEVICE_NET ADDR. 28",
+ "218,STOP JOG USCITA PER PESO RAGGIUNTO SU CELLA DI CARICO",
+ "219,DOGAL NON PRONTO",
+ "220,ALLARME PROTEZIONE CELLA RAFFREDDAMENTO 91A",
+ "221,MALFUNZIONAMENTO RECUPERO CALORE GRUPPO 1",
+ "222,ALLARME PROTEZIONE SOSTEGNO TESSUTO",
+ "223,TARATURA CAMPI CONICI NON EFFETTUATA!",
+ "224,ALLARME TIMEOUT VITE CAMPO PARALLELO 10"
+ ]
+ },
+
+ {
+ "description": "Alarm Word 14 ",
+ "tipoMem": "Byte",
+ "memAddr": "Alarm Word 14",
+ "index": 14,
+ "size": 2,
+ "messages": [
+ "225,CAMPO PARALLELO 9 ALLARME PROTEZIONE",
+ "226,CAMPO PARALLELO 10 ALLARME PROTEZIONE",
+ "227,CAMPO PARALLELO 11 ALLARME PROTEZIONE",
+ "228,CAMPO PARALLELO 12 ALLARME PROTEZIONE",
+ "229,ALLARME FLUSSOSTATO RECUPERO CALORE 1",
+ "230,ALLARME FLUSSOSTATO RECUPERO CALORE 2",
+ "231,ALLARME FLUSSOSTATO RECUPERO CALORE 3",
+ "232,ALLARME PROTEZIONE VENTILATORE ASCIUGACIMOSSE",
+ "233,ALLARME PROTEZIONE RESISTENZE ASCIUGACIMOSSE",
+ "234,ALLARME PROTEZIONE RECUPERO CALORE - GRUPPO 1 POMPA 1 ",
+ "235,ALLARME INCENDIO",
+ "236,ATTENZIONE ! ALLARME PRESENTE SU BANCHETTO DI SPALMATURA",
+ "237,MALFUNZIONAMENTO RECUPERO CALORE GRUPPO 2",
+ "238,ALLARME PROTEZIONE CELLA RAFFREDDAMENTO 91B",
+ "239,ALLARME PROTEZIONE PULISCISPILLI",
+ "240,BATTERIA PLC - LIVELLO BASSO"
+ ]
+ },
+
+ {
+ "description": "Alarm Word 15 ",
+ "tipoMem": "Byte",
+ "memAddr": "Alarm Word 15",
+ "index": 15,
+ "size": 2,
+ "messages": [
+ "241,ALLARME CONTEMPORANEIT? TERMOSTATI SICUREZZA BRUCIATORI",
+ "242,BLOCCO VERSIONE SOFTWARE",
+ "243,SROTOLATORE NON PRONTO",
+ "244,ERRORE DI COMUNICAZIONE PROTOCOL MACRO",
+ "245,ALLARME TAGLIERINA URBAN",
+ "246,FINE TESSUTO IN INGRESSO",
+ "247,ALLARME PROTEZIONE SERVOVENTILAZIONI MOTORI",
+ "248,ALLARME INVERTER ARROTOLATORE TANGENZIALE",
+ "249,ALLARME SPREMITORE 2",
+ "250,ALLARME FS-91ER PLEVA",
+ "251,ALLARME LINEA EMERGENZA ARROTOLATORE",
+ "252,ALLARME FOTOCELLULE ARROTOLATORE",
+ "253,PORTA CASSETTA USCITA RAMOSA APERTA",
+ "254,ALLARME FINECORSA CILINDRO PROTEZIONE ARROTOLATORE ASSIALE",
+ "255,ALLARME PRESSOSTATI GRUPPO VALVOLE USCITA",
+ "256,ARROTOLATORE NON PRONTO"
+ ]
+ },
+
+ {
+ "description": "Alarm Word 16 ",
+ "tipoMem": "Byte",
+ "memAddr": "Alarm Word 16",
+ "index": 16,
+ "size": 2,
+ "messages": [
+ "257,FINECORSA GRUPPO FALDATORE AVANTI",
+ "258,FINECORSA GRUPPO FALDATORE INDIETRO",
+ "259,ALLARME BATTERIA ELETTRICA 1",
+ "260,SOVRATEMPERATURA BATTERIA ELETTRICA 5",
+ "261,ALLARME BATTERIA ELETTRICA 2",
+ "262,RISCALDAMENTO QUADRO SPENTO",
+ "263,SOVRATEMPERATURA BATTERIA ELETTRICA 1",
+ "264,SOVRATEMPERATURA BATTERIA ELETTRICA 2",
+ "265,ALLARME BATTERIA ELETTRICA 3",
+ "266,EMERGENZA DA SPALMATRICE",
+ "267,ALLARME BATTERIA ELETTRICA 4",
+ "268,ALLARME BATTERIA ELETTRICA 5",
+ "269,SOVRATEMPERATURA BATTERIA ELETTRICA 3",
+ "270,SOVRATEMPERATURA BATTERIA ELETTRICA 4",
+ "271,ALLARME IDROSTATO RECUPERO CALORE 1",
+ "272,ALLARME SENSORE LIVELLO RECUPERO CALORE 1 : AGGIUNGERE LIQUIDO !"
+ ]
+ },
+
+ {
+ "description": "Alarm Word 17 ",
+ "tipoMem": "Byte",
+ "memAddr": "Alarm Word 17",
+ "index": 17,
+ "size": 2,
+ "messages": [
+ "273,ALLARME RELE' CONTROLLO FASI",
+ "274,ALLARME DEVICE NET ADDR. 40 - MODULO GRT1-DRT USCITA RAMOSA",
+ "275,ALLARME PRESSOSTATO LINEA ENTRATA MACCHINA",
+ "276,ALLARME PRESSOSTATO LINEA USCITA MACCHINA",
+ "277,CAMPO CANNOCCHIALI 1 BLOCCATO",
+ "278,CAMPO CANNOCCHIALI 2 BLOCCATO",
+ "279,ALLARME DISCONTINUITA' CAMPI PARALLELI",
+ "280,ALLARME INSEGUIMENTO CAMPI PARALLELI - VITE LENTA",
+ "281,ALLARME LIMITE VITI",
+ "282,RAGGIUNTO MASSIMO CARICO SU CELLA DI CARICO",
+ "283,ALLARME PRESSOSTATO ESAUSTORE",
+ "284,EMERGENZA MOVIMENTO TESSUTO",
+ "285,EMERGENZA DA SPREMITORE 1",
+ "286,EMERGENZA DA RADDRIZZATRAMA",
+ "287,EMERGENZA DA SROTOLATORE",
+ "288,EMERGENZA DA ARROTOLATORE"
+ ]
+ },
+
+ {
+ "description": "Alarm Word 18 ",
+ "tipoMem": "Byte",
+ "memAddr": "Alarm Word 18",
+ "index": 18,
+ "size": 2,
+ "messages": [
+ "289,ALLARME SICUREZZA BRUCIATORE 1",
+ "290,ALLARME SICUREZZA BRUCIATORE 2",
+ "291,ALLARME SICUREZZA BRUCIATORE 3",
+ "292,ALLARME SICUREZZA BRUCIATORE 4",
+ "293,ALLARME SICUREZZA BRUCIATORE 5",
+ "294,ALLARME SICUREZZA BRUCIATORE 6",
+ "295,ALLARME SICUREZZA BRUCIATORE 7",
+ "296,ALLARME SICUREZZA BRUCIATORE 8",
+ "297,ALLARME SICUREZZA BRUCIATORE 9",
+ "298,ALLARME SICUREZZA BRUCIATORE 10",
+ "299,ALLARME SICUREZZA BRUCIATORE 11",
+ "300,ALLARME SICUREZZA BRUCIATORE 12",
+ "301,ALLARME BRUCIATORE 1 SPENTO",
+ "302,ALLARME BRUCIATORE 2 SPENTO",
+ "303,ALLARME BRUCIATORE 3 SPENTO",
+ "304,ALLARME BRUCIATORE 4 SPENTO"
+ ]
+ },
+
+ {
+ "description": "Alarm Word 19 ",
+ "tipoMem": "Byte",
+ "memAddr": "Alarm Word 19",
+ "index": 19,
+ "size": 2,
+ "messages": [
+ "305,ALLARME BRUCIATORE 5 SPENTO",
+ "306,ALLARME BRUCIATORE 6 SPENTO",
+ "307,ALLARME BRUCIATORE 7 SPENTO",
+ "308,ALLARME BRUCIATORE 8 SPENTO",
+ "309,ALLARME BRUCIATORE 9 SPENTO",
+ "310,ALLARME BRUCIATORE 10 SPENTO",
+ "311,ALLARME BRUCIATORE 11 SPENTO",
+ "312,ALLARME BRUCIATORE 12 SPENTO",
+ "313,ALLARME SENSORE LIVELLO RECUPERO CALORE 2 : AGGIUNGERE LIQUIDO !",
+ "314,ALLARME DA MIXER",
+ "315,ALLARME PRESSOSTATI LUBRIFICAZIONE",
+ "316,ALLARME ABBATTITORE FUMI",
+ "317,MACCHINA 1 NON IN LINEA",
+ "318,MACCHINA 2 NON IN LINEA",
+ "319,MACCHINA 3 NON IN LINEA",
+ "320,MACCHINA 4 NON IN LINEA"
+ ]
+ },
+
+ {
+ "description": "Alarm Word 20 ",
+ "tipoMem": "Byte",
+ "memAddr": "Alarm Word 20",
+ "index": 20,
+ "size": 2,
+ "messages": [
+ "321,MACCHINA 5 NON IN LINEA",
+ "322,MACCHINA 6 NON IN LINEA",
+ "323,MACCHINA 7 NON IN LINEA",
+ "324,MACCHINA 8 NON IN LINEA",
+ "325,NON STOP NON PRONTO",
+ "326,EMERGENZA DA NON STOP",
+ "327,ALLARME DISCONTINUITA' CAMPO MASTER",
+ "328,ALLARME DISCONTINUITA' CAMPO PARALLELO 1",
+ "329,ALLARME DISCONTINUITA' CAMPO PARALLELO 2",
+ "330,ALLARME DISCONTINUITA' CAMPO PARALLELO 3",
+ "331,ALLARME DISCONTINUITA' CAMPO PARALLELO 4",
+ "332,ALLARME DISCONTINUITA' CAMPO PARALLELO 5",
+ "333,ALLARME DISCONTINUITA' CAMPO PARALLELO 6",
+ "334,ALLARME DISCONTINUITA' CAMPO PARALLELO 7",
+ "335,ALLARME DISCONTINUITA' CAMPO PARALLELO 8",
+ "336,ALLARME DISCONTINUITA' CAMPO PARALLELO 9"
+ ]
+ },
+
+ {
+ "description": "Alarm Word 21 ",
+ "tipoMem": "Byte",
+ "memAddr": "Alarm Word 21",
+ "index": 21,
+ "size": 2,
+ "messages": [
+ "337,ALLARME DISCONTINUITA' CAMPO PARALLELO 10",
+ "338,PROTEZIONI INGRESSO APERTE",
+ "339,PROTEZIONI USCITA APERTE",
+ "340,ALLARME PROTEZIONE ESTRATTORE FUMI 1",
+ "341,ALLARME PROTEZIONE ESTRATTORE FUMI 2",
+ "342,MANCANZA PRESSOSTATO ESTRATTORE FUMI 1",
+ "343,MANCANZA PRESSOSTATO ESTRATTORE FUMI 2",
+ "344,EMERGENZA DA MIXER",
+ "345,EMERGENZA DA SPREMITORE 2",
+ "346,ALLARME PROTEZIONE VENTILATORE RECUPERO CALORE 1",
+ "347,ALLARME PROTEZIONE VENTILATORE RECUPERO CALORE 2",
+ "348,ALLARME MODULO VELOCITA? ZERO CATENA TRASP. TESSUTO",
+ "349,ALLARME RILEVAMENTO TESSUTO SINISTRO USCITA",
+ "350,ALLARME RILEVAMENTO TESSUTO DESTRO USCITA",
+ "351,ALLARME FINECORSA SOLLEVAMENTO CAMPI CONICI",
+ "352,ALLARME IDROSTATO RECUPERO CALORE 2"
+ ]
+ },
+
+ {
+ "description": "Alarm Word 22 ",
+ "tipoMem": "Byte",
+ "memAddr": "Alarm Word 22",
+ "index": 22,
+ "size": 2,
+ "messages": [
+ "353,ALLARME FUNE DI PROTEZIONE IN USCITA",
+ "354,ALLARME PROTEZIONE VENTOLA BRUCIATORE MAXON 1",
+ "355,ALLARME PROTEZIONE VENTOLA BRUCIATORE MAXON 2",
+ "356,ALLARME PROTEZIONE VENTOLA BRUCIATORE MAXON 3",
+ "357,ALLARME PROTEZIONE VENTOLA BRUCIATORE MAXON 4",
+ "358,ALLARME PROTEZIONE VENTOLA BRUCIATORE MAXON 5",
+ "359,ALLARME PROTEZIONE VENTOLA BRUCIATORE MAXON 6",
+ "360,ALLARME PROTEZIONE VENTOLA BRUCIATORE MAXON 7",
+ "361,ALLARME PROTEZIONE VENTOLA BRUCIATORE MAXON 8",
+ "362,ALLARME PROTEZIONE VENTOLA BRUCIATORE MAXON 9",
+ "363,ALLARME PROTEZIONE VENTOLA BRUCIATORE MAXON 10",
+ "364,ALLARME PROTEZIONE VENTOLA BRUCIATORE MAXON 11",
+ "365,ALLARME PROTEZIONE VENTOLA BRUCIATORE MAXON 12",
+ "366,OLIO CATENA - PRESSIONE MINIMA",
+ "367,POMPA OLIO CATENA - ALLARME PROTEZIONE",
+ "368,JBOX INGRESSO - BALLERINO BASSO"
+ ]
+ },
+
+ {
+ "description": "Alarm Word 23 ",
+ "tipoMem": "Byte",
+ "memAddr": "Alarm Word 23",
+ "index": 23,
+ "size": 2,
+ "messages": [
+ "369,JBOX INGRESSO - FINE TESSUTO",
+ "370,JBOX INGRESSO - PIENO",
+ "371,JBOX INGRESSO - BALLERINO ALTO",
+ "372,JBOX INGRESSO - VUOTO",
+ "373,JBOX USCITA - BALLERINO BASSO",
+ "374,JBOX USCITA - FINE TESSUTO",
+ "375,JBOX USCITA - PIENO",
+ "376,JBOX USCITA - BALLERINO ALTO",
+ "377,JBOX USCITA - VUOTO",
+ "378,JBOX USCITA - ALLARME PRESSOSTATO",
+ "379,JBOX ENTRATA - ALLARME PRESSOSTATO",
+ "380,ALLARME PROTEZIONE CARRELLO FALDATORE",
+ "381,RISCALDAMENTO INDIRETTO - ALLARME FEEDBACK SERRANDA BR. 1",
+ "382,RISCALDAMENTO INDIRETTO - ALLARME FEEDBACK SERRANDA BR. 2",
+ "383,RISCALDAMENTO INDIRETTO - ALLARME FEEDBACK SERRANDA BR. 3",
+ "384,RISCALDAMENTO INDIRETTO - ALLARME FEEDBACK SERRANDA BR. 4"
+ ]
+ },
+
+ {
+ "description": "Alarm Word 24 ",
+ "tipoMem": "Byte",
+ "memAddr": "Alarm Word 24",
+ "index": 24,
+ "size": 2,
+ "messages": [
+ "385,RISCALDAMENTO INDIRETTO - ALLARME FEEDBACK SERRANDA BR. 5",
+ "386,RISCALDAMENTO INDIRETTO - ALLARME FEEDBACK SERRANDA BR. 6",
+ "387,RISCALDAMENTO INDIRETTO - ALLARME FEEDBACK SERRANDA BR. 7",
+ "388,RISCALDAMENTO INDIRETTO - ALLARME FEEDBACK SERRANDA BR. 8",
+ "389,RISCALDAMENTO INDIRETTO - ALLARME FEEDBACK SERRANDA BR. 9",
+ "390,RISCALDAMENTO INDIRETTO - ALLARME FEEDBACK SERRANDA BR. 10",
+ "391,RISCALDAMENTO INDIRETTO - ALLARME FEEDBACK SERRANDA BR. 11",
+ "392,RISCALDAMENTO INDIRETTO - ALLARME FEEDBACK SERRANDA BR. 12",
+ "393,ESTRATTORE FUMI RISC. INDIRETTO 1 - ALLARME PROTEZIONE",
+ "394,ESTRATTORE FUMI RISC. INDIRETTO 2 - ALLARME PROTEZIONE",
+ "395,ESTRATTORE FUMI RISC. INDIRETTO 3 - ALLARME PROTEZIONE",
+ "396,ESTRATTORE FUMI RISC. INDIRETTO 4 - ALLARME PROTEZIONE",
+ "397,ESTRATTORE FUMI RISC. INDIRETTO 5 - ALLARME PROTEZIONE",
+ "398,ESTRATTORE FUMI RISC. INDIRETTO 6 - ALLARME PROTEZIONE",
+ "399,TAGLIERINA SINISTRA - FUORI POSIZIONE",
+ "400,TAGLIERINA DESTRA - FUORI POSIZIONE"
+ ]
+ },
+
+ {
+ "description": "Alarm Word 25 ",
+ "tipoMem": "Byte",
+ "memAddr": "Alarm Word 25",
+ "index": 25,
+ "size": 2,
+ "messages": [
+ "401,ALLARME PROTEZIONE CILINDRO CONTRASTO TAGLIERINE",
+ "402,JBOX INGRESSO - TESSUTO INCROCIATO",
+ "403,JBOX USCITA - TESSUTO INCROCIATO",
+ "404,ALLARME DEVICE_NET STAZIONE ADDR.38 - JBOX INGRESSO",
+ "405,ALLARME DEVICE_NET STAZIONE ADDR.39 - JBOX USCITA",
+ "406,JBOX INGRESSO - ALLARME INVERTER",
+ "407,JBOX USCITA - ALLARME INVERTER",
+ "408,ALLARGA/CENTRATORE A/B SU IMBARRAGGIO - ALLARME PROTEZIONE",
+ "409,ALLARME TIMEOUT VITE CAMPO PARALLELO 11",
+ "410,ALLARME TIMEOUT VITE CAMPO PARALLELO 12",
+ "411,FRENO JBOX INGRESSO - ALLARME PROTEZIONE",
+ "412,FRENO JBOX USCITA - ALLARME PROTEZIONE",
+ "413,ALLARME PROTEZIONE FRENO CAMPO CONICO SINISTRO",
+ "414,ALLARME PROTEZIONE FRENO CAMPO CONICO DESTRO",
+ "415,VERIFICA PRESSOSTATO 1 FALLITA",
+ "416,VERIFICA PRESSOSTATO 2 FALLITA"
+ ]
+ },
+
+ {
+ "description": "Alarm Word 26 ",
+ "tipoMem": "Byte",
+ "memAddr": "Alarm Word 26",
+ "index": 26,
+ "size": 2,
+ "messages": [
+ "417,ALLARME TERMOSTATO INTERNO QUADRO",
+ "418,ALLARME PROTEZIONE RECUPERO CALORE - GRUPPO 1 POMPA 2",
+ "419,ALLARME PROTEZIONE RECUPERO CALORE - GRUPPO 2 POMPA 2",
+ "420,PROTEZIONE RIBALTABILE INGRESSO",
+ "421,FUNE EMERGENZA INGRESSO",
+ "422,PARATIA SCORREVOLE INGRESSO SINISTRA",
+ "423,PARATIA SCORREVOLE INGRESSO DESTRA",
+ "424,CANCELLO SINISTRO ENTRATA ANTERIORE",
+ "425,CANCELLO SINISTRO ENTRATA POSTERIORE",
+ "426,CANCELLO DESTRO ENTRATA ANTERIORE",
+ "427,CANCELLO DESTRO ENTRATA POSTERIORE",
+ "428,CANCELLO SINISTRO USCITA",
+ "429,CANCELLO DESTRO USCITA",
+ "430,TENSIONATORE FUNE EMERGENZA SINISTRA ZONA FORNO",
+ "431,TENSIONATORE FUNE EMERGENZA DESTRA ZONA FORNO",
+ "432,FUNE EMERGENZA SINISTRA ZONA FORNO"
+ ]
+ },
+
+ {
+ "description": "Alarm Word 27 ",
+ "tipoMem": "Byte",
+ "memAddr": "Alarm Word 27",
+ "index": 27,
+ "size": 2,
+ "messages": [
+ "433,FUNE EMERGENZA DESTRA ZONA FORNO",
+ "434,ALLARME FEEDBACK SCARICO ARIA ENTRATA MACCHINA (1)",
+ "435,ALLARME FEEDBACK SCARICO ARIA ENTRATA MACCHINA (2)",
+ "436,ALLARME FEEDBACK SCARICO ARIA USCITA MACCHINA (1)",
+ "437,ALLARME FEEDBACK SCARICO ARIA USCITA MACCHINA (2)",
+ "438,ALLARME FEEDBACK EMERGENZA GENERALE DA SCARICO ARIA",
+ "439,BYPASS SPORTELLI ARMADIO ATTIVO",
+ "440,TIMEOUT ENCODER CAMPO CONICO SINISTRO",
+ "441,TIMEOUT ENCODER CAMPO CONICO DESTRO",
+ "442,ALLARME BALLERINO ALTO SPREMITORE 1",
+ "443,ALLARME BALLERINO ALTO SPREMITORE 2",
+ "444,",
+ "445,",
+ "446,",
+ "447,",
+ "448,"
+ ]
+ },
+
+ {
+ "description": "Alarm Word 28 ",
+ "tipoMem": "Byte",
+ "memAddr": "Alarm Word 28",
+ "index": 28,
+ "size": 2,
+ "messages": [
+ "449,",
+ "450,",
+ "451,",
+ "452,",
+ "453,",
+ "454,",
+ "455,",
+ "456,",
+ "457,",
+ "458,",
+ "459,",
+ "460,ALLARME PROTEZIONE BARRE ANTISTATICHE",
+ "461,ALLARME PROTEZIONE VENTILAZIONE INTERNO QUADRO",
+ "462,BORDO SENSIBILE ",
+ "463,FALDAROTOLATORE_SICUREZZA SX/DX ",
+ "464,FALDAROTOLATORE_EMERGENZA TESSUTO "
+ ]
+ },
+
+ {
+ "description": "Alarm Word 29 ",
+ "tipoMem": "Byte",
+ "memAddr": "Alarm Word 29",
+ "index": 29,
+ "size": 2,
+ "messages": [
+ "465,ALLARME DEPRESSIONE RISCALDAMENTO INDIRETTO BR.1",
+ "466,ALLARME DEPRESSIONE RISCALDAMENTO INDIRETTO BR.2",
+ "467,ALLARME DEPRESSIONE RISCALDAMENTO INDIRETTO BR.3",
+ "468,ALLARME DEPRESSIONE RISCALDAMENTO INDIRETTO BR.4",
+ "469,ALLARME DEPRESSIONE RISCALDAMENTO INDIRETTO BR.5",
+ "470,ALLARME DEPRESSIONE RISCALDAMENTO INDIRETTO BR.6",
+ "471,ALLARME DEPRESSIONE RISCALDAMENTO INDIRETTO BR.7",
+ "472,ALLARME DEPRESSIONE RISCALDAMENTO INDIRETTO BR.8",
+ "473,ALLARME DEPRESSIONE RISCALDAMENTO INDIRETTO BR.9",
+ "474,ALLARME DEPRESSIONE RISCALDAMENTO INDIRETTO BR.10",
+ "475,ALLARME DEPRESSIONE RISCALDAMENTO INDIRETTO BR.11",
+ "476,ALLARME DEPRESSIONE RISCALDAMENTO INDIRETTO BR.12",
+ "477,MALFUNZIONAMNETO PRESSOSTATO ESTRATTORE FUMI 1/2",
+ "478,MALFUNZIONAMNETO PRESSOSTATO ESTRATTORE FUMI 3/4",
+ "479,MALFUNZIONAMNETO PRESSOSTATO ESTRATTORE FUMI 5/6",
+ "480,MALFUNZIONAMNETO PRESSOSTATO ESTRATTORE FUMI 7/8"
+ ]
+ },
+
+ {
+ "description": "Alarm Word 30 ",
+ "tipoMem": "Byte",
+ "memAddr": "Alarm Word 30",
+ "index": 30,
+ "size": 2,
+ "messages": [
+ "481,MALFUNZIONAMNETO PRESSOSTATO ESTRATTORE FUMI 9/10",
+ "482,MALFUNZIONAMENTO PRESSOSTATO SICUREZZA BRUCIATORE 1",
+ "483,MALFUNZIONAMENTO PRESSOSTATO SICUREZZA BRUCIATORE 2",
+ "484,MALFUNZIONAMENTO PRESSOSTATO SICUREZZA BRUCIATORE 3",
+ "485,MALFUNZIONAMENTO PRESSOSTATO SICUREZZA BRUCIATORE 4",
+ "486,MALFUNZIONAMENTO PRESSOSTATO SICUREZZA BRUCIATORE 5",
+ "487,MALFUNZIONAMENTO PRESSOSTATO SICUREZZA BRUCIATORE 6",
+ "488,MALFUNZIONAMENTO PRESSOSTATO SICUREZZA BRUCIATORE 7",
+ "489,MALFUNZIONAMENTO PRESSOSTATO SICUREZZA BRUCIATORE 8",
+ "490,MALFUNZIONAMENTO PRESSOSTATO SICUREZZA BRUCIATORE 9",
+ "491,MALFUNZIONAMENTO PRESSOSTATO SICUREZZA BRUCIATORE 10",
+ "492,TRASDUTTORE PRESSIONE BR 1 INTERROTTO",
+ "493,TRASDUTTORE PRESSIONE BR 2 INTERROTTO",
+ "494,TRASDUTTORE PRESSIONE BR 3 INTERROTTO",
+ "495,TRASDUTTORE PRESSIONE BR 4 INTERROTTO",
+ "496,TRASDUTTORE PRESSIONE BR 5 INTERROTTO"
+ ]
+ },
+
+ {
+ "description": "Alarm Word 31 ",
+ "tipoMem": "Byte",
+ "memAddr": "Alarm Word 31",
+ "index": 31,
+ "size": 2,
+ "messages": [
+ "497,TRASDUTTORE PRESSIONE BR 6 INTERROTTO",
+ "498,TRASDUTTORE PRESSIONE BR 7 INTERROTTO",
+ "499,TRASDUTTORE PRESSIONE BR 8 INTERROTTO",
+ "500,TRASDUTTORE PRESSIONE BR 9 INTERROTTO",
+ "501,TRASDUTTORE PRESSIONE BR 10 INTERROTTO",
+ "502,TRASDUTTORE PRESSIONE BR 11 INTERROTTO",
+ "503,TRASDUTTORE PRESSIONE BR 12 INTERROTTO",
+ "504,ERRORE TRASDUTTORE DI PRESSIONE RC1",
+ "505,ERRORE TRASDUTTORE DI PRESSIONE RC2",
+ "506,ALLARME INVERTER RIPRISTINO PRESSIONE GRUPPO 1 RC",
+ "507,ALLARME INVERTER RIPRISTINO PRESSIONE GRUPPO 2 RC",
+ "508,MALFUNZIONAMENTO PRESSOSTATO SICUREZZA BRUCIATORE 11",
+ "509,MALFUNZIONAMENTO PRESSOSTATO SICUREZZA BRUCIATORE 12",
+ "510,ALLARME PRESSOSTATO TAGLIERINE",
+ "511,BALLERINO ALTO - SROTOLATORE - ALLARME",
+ "512,EMERGENZA DA LINEA ENTRATA RAMOSA"
+ ]
+ },
+
+ {
+ "description": "Alarm Word 32 ",
+ "tipoMem": "Byte",
+ "memAddr": "Alarm Word 32",
+ "index": 32,
+ "size": 2,
+ "messages": [
+ "513,LINEA ENTRATA RAMOSA NON PRONTA",
+ "514,EMERGENZA DA LINEA USCITA RAMOSA",
+ "515,LINEA USCITA RAMOSA NON PRONTA",
+ "516,TAGLIERINA CENTRALE FUORI POSIZIONE",
+ "517,TIRACIMOSSE NON PRONTO",
+ "518,JBOX INGRESSO IN EMERGENZA",
+ "519,JBOX INGRESSO NON PRONTO",
+ "520,JBOX USCITA IN EMERGENZA",
+ "521,JBOX USCITA NON PRONTO",
+ "522,ALLARME D-NET 41 RISCALDAMENTO INDIRETTO",
+ "523,SPAZZOLATRICE IN EMERGENZA",
+ "524,SPAZZOLATRICE NON PRONTA",
+ "525,ALLARME FUNE DI SICUREZZA USCITA STACCAPEZZA",
+ "526,ALLARME FUNE DI SICUREZZA USCITA FALDAROTOLATORE",
+ "527,ALLARME FUNE DI SICUREZZA CAMPO CONICO SINISTRO",
+ "528,ALLARME FUNE DI SICUREZZA CAMPO CONICO DESTRO"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/IOB-WIN-KAWASAKI/DATA/DAT/PersistData.dat b/IOB-WIN-KAWASAKI/DATA/DAT/PersistData.dat
new file mode 100644
index 00000000..5f282702
--- /dev/null
+++ b/IOB-WIN-KAWASAKI/DATA/DAT/PersistData.dat
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/IOB-WIN-KAWASAKI/DATA/DAT/SimData.dat b/IOB-WIN-KAWASAKI/DATA/DAT/SimData.dat
new file mode 100644
index 00000000..c59e4823
--- /dev/null
+++ b/IOB-WIN-KAWASAKI/DATA/DAT/SimData.dat
@@ -0,0 +1,959 @@
+;------------------------------------------------------------------------------------
+; filevalori simulati x provare sistema dati e filtraggio... commenti iniziano per ';', valori formato data#valore#counter
+; NOTE FILE:
+; - bit come macchine std IOB
+; B0 = POWERON
+; B1 = RUN
+; B2 = CONTAPEZZO
+; B3 = ALLARME
+; B4 = MANUALE
+; B5 = NA
+; B6 = NA
+; B7 = NA
+; - segnali alternanti su 00011100
+;------------------------------------------------------------------------------------
+;
+;----------------------------
+; inizio da spenta
+0
+0
+; indico accesa
+1
+1
+1
+; allarme (BLINK)
+9
+9
+9
+9
+9
+1
+1
+1
+1
+1
+1
+9
+9
+9
+9
+9
+1
+1
+1
+1
+1
+19
+9
+9
+9
+9
+1
+1
+1
+1
+1
+1
+; allarme manuale (2 blink, periodo diverso)
+25
+25
+17
+17
+9
+9
+1
+1
+25
+25
+17
+17
+9
+9
+1
+1
+25
+25
+17
+17
+9
+9
+1
+1
+25
+25
+17
+17
+9
+9
+1
+1
+25
+25
+17
+17
+9
+9
+1
+1
+; indico manuale
+17
+17
+17
+17
+17
+17
+17
+17
+17
+17
+1
+1
+1
+1
+1
+1
+1
+1
+17
+17
+17
+17
+17
+17
+17
+17
+17
+17
+1
+1
+1
+1
+1
+1
+1
+1
+17
+17
+17
+17
+17
+17
+17
+17
+17
+17
+1
+1
+1
+1
+1
+1
+1
+1
+; RUN!
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+; contapezzo
+7
+7
+7
+7
+7
+3
+3
+3
+3
+3
+3
+7
+7
+7
+7
+7
+3
+3
+3
+3
+3
+3
+7
+7
+7
+7
+7
+3
+3
+3
+3
+3
+3
+7
+7
+7
+7
+7
+3
+3
+3
+3
+3
+3
+; RUN
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+; contapezzo
+7
+7
+7
+7
+7
+3
+3
+3
+3
+3
+3
+7
+7
+7
+7
+7
+3
+3
+3
+3
+3
+3
+7
+7
+7
+7
+7
+3
+3
+3
+3
+3
+3
+7
+7
+7
+7
+7
+3
+3
+3
+3
+3
+3
+; RUN
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+; contapezzo
+7
+7
+7
+7
+7
+3
+3
+3
+3
+3
+3
+7
+7
+7
+7
+7
+3
+3
+3
+3
+3
+3
+7
+7
+7
+7
+7
+3
+3
+3
+3
+3
+3
+7
+7
+7
+7
+7
+3
+3
+3
+3
+3
+3
+; RUN
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+; allarme (BLINK)
+9
+9
+9
+9
+9
+1
+1
+1
+1
+1
+1
+9
+9
+9
+9
+9
+1
+1
+1
+1
+1
+19
+9
+9
+9
+9
+1
+1
+1
+1
+1
+1
+; allarme manuale (2 blink, periodo diverso)
+25
+25
+17
+17
+9
+9
+1
+1
+25
+25
+17
+17
+9
+9
+1
+1
+25
+25
+17
+17
+9
+9
+1
+1
+25
+25
+17
+17
+9
+9
+1
+1
+25
+25
+17
+17
+9
+9
+1
+1
+; indico manuale
+17
+17
+17
+17
+17
+17
+17
+17
+17
+17
+1
+1
+1
+1
+1
+1
+1
+1
+17
+17
+17
+17
+17
+17
+17
+17
+17
+17
+1
+1
+1
+1
+1
+1
+1
+1
+17
+17
+17
+17
+17
+17
+17
+17
+17
+17
+1
+1
+1
+1
+1
+1
+1
+1
+; RUN!
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+; contapezzo
+7
+7
+7
+7
+7
+3
+3
+3
+3
+3
+3
+7
+7
+7
+7
+7
+3
+3
+3
+3
+3
+3
+7
+7
+7
+7
+7
+3
+3
+3
+3
+3
+3
+7
+7
+7
+7
+7
+3
+3
+3
+3
+3
+3
+; RUN
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+; contapezzo
+7
+7
+7
+7
+7
+3
+3
+3
+3
+3
+3
+7
+7
+7
+7
+7
+3
+3
+3
+3
+3
+3
+7
+7
+7
+7
+7
+3
+3
+3
+3
+3
+3
+7
+7
+7
+7
+7
+3
+3
+3
+3
+3
+3
+; RUN
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
\ No newline at end of file
diff --git a/IOB-WIN-KAWASAKI/DATA/HIST/.placeholder b/IOB-WIN-KAWASAKI/DATA/HIST/.placeholder
new file mode 100644
index 00000000..5f282702
--- /dev/null
+++ b/IOB-WIN-KAWASAKI/DATA/HIST/.placeholder
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/IOB-WIN-KAWASAKI/IOB-WIN-KAWASAKI.csproj b/IOB-WIN-KAWASAKI/IOB-WIN-KAWASAKI.csproj
new file mode 100644
index 00000000..7f2d4eb8
--- /dev/null
+++ b/IOB-WIN-KAWASAKI/IOB-WIN-KAWASAKI.csproj
@@ -0,0 +1,147 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {02C086C5-492A-4D81-8E30-B4434703A5B3}
+ WinExe
+ IOB_WIN_KAWASAKI
+ IOB-WIN-KAWASAKI
+ v4.6.2
+ 512
+ true
+ true
+
+
+ AnyCPU
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ AnyCPU
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+ true
+ bin\Remote_DEBUG\
+ DEBUG;TRACE
+ full
+ AnyCPU
+ 7.3
+ prompt
+ true
+
+
+
+ False
+ ..\ExtLibs\krcc.dll
+
+
+ ..\packages\MapoSDK.6.14.2411.518\lib\MapoSDK.dll
+
+
+ ..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ VersGen.cs
+
+
+ Form
+
+
+
+
+ Form
+
+
+
+
+ ResXFileCodeGenerator
+ Resources.Designer.cs
+ Designer
+
+
+ True
+ Resources.resx
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SettingsSingleFileGenerator
+ Settings.Designer.cs
+
+
+ True
+ Settings.settings
+ True
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {90512e12-29fc-460d-94cc-648c2a072dbd}
+ IOB-UT-NEXT
+
+
+ {9ba331bb-9bf1-40e0-ac03-74b43d73a097}
+ IOB-WIN-FORM
+
+
+
+
\ No newline at end of file
diff --git a/IOB-WIN-KAWASAKI/Iob/GenericNext.cs b/IOB-WIN-KAWASAKI/Iob/GenericNext.cs
new file mode 100644
index 00000000..81c91c76
--- /dev/null
+++ b/IOB-WIN-KAWASAKI/Iob/GenericNext.cs
@@ -0,0 +1,17 @@
+using IOB_UT_NEXT;
+using System;
+using System.IO;
+using System.Linq;
+using System.Windows.Forms;
+
+namespace IOB_WIN_KAWASAKI.Iob
+{
+ public class GenericNext : IOB_WIN_FORM.Iob.Generic
+ {
+
+ public GenericNext(AdapterFormNext caller, IobConfiguration IOBConf): base((IOB_WIN_FORM.AdapterForm)caller, IOBConf)
+ {
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/IOB-WIN-KAWASAKI/Iob/Kawasaki.cs b/IOB-WIN-KAWASAKI/Iob/Kawasaki.cs
new file mode 100644
index 00000000..aee8810d
--- /dev/null
+++ b/IOB-WIN-KAWASAKI/Iob/Kawasaki.cs
@@ -0,0 +1,1103 @@
+using IOB_UT_NEXT;
+using MapoSDK;
+using System;
+using System.Collections.Generic;
+using System.Net.NetworkInformation;
+
+namespace IOB_WIN_KAWASAKI.Iob
+{
+ public class Kawasaki : Iob.GenericNext, IDisposable
+ {
+ #region Public Constructors
+
+ ///
+ /// estende l'init della classe base...
+ ///
+ ///
+ ///
+ public Kawasaki(AdapterFormNext caller, IobConfiguration IOBConf) : base(caller, IOBConf)
+ {
+ // gestione invio ritardato contapezzi
+ pzCountDelay = utils.CRI("pzCountDelay");
+ lastPzCountSend = DateTime.Now;
+ lastWarnODL = DateTime.Now;
+ // init connessione
+ setConnection();
+
+ // test completo funzionalità kawasaki, da TOGLIERE in prod...
+#if DEBUG
+ kawasakiFullTest();
+#endif
+ }
+
+ #endregion Public Constructors
+
+ #region Public Enums
+
+ ///
+ /// Enum segnali macchina ulteriori (ByteSignals)
+ ///
+ [Flags]
+ public enum bitSignals
+ {
+ NONE = 0,
+ TRANSF_AUTO = 1 << 0,
+ PUNZ_AUTO = 1 << 1,
+ BARR_TAV_RIPR = 1 << 2,
+ ARIA_OK = 1 << 3,
+ CONS_TRANS_OK = 1 << 4,
+ TAV_A = 1 << 5,
+ TAV_B = 1 << 6,
+ RICH_ACCESSO = 1 << 7
+ }
+
+ ///
+ /// Enum segnali status macchina (ByteStatus) come flag
+ ///
+ [Flags]
+ public enum bitStatus
+ {
+ NONE = 0,
+ POWER_ON = 1 << 0,
+ AUTO = 1 << 1,
+ RUN = 1 << 2,
+ ERROR = 1 << 3,
+ ALARM = 1 << 4,
+ EMERG_OK = 1 << 5,
+ DOOR_CLOSED = 1 << 6,
+ READY_LOAD = 1 << 7
+ }
+
+ #endregion Public Enums
+
+ #region Public Methods
+
+ ///
+ /// Metodo dispose x il currPLC contenuto
+ ///
+ public void Dispose()
+ {
+ KAWASAKI_ref.disconnect();
+ KAWASAKI_ref.Dispose();
+ }
+
+ ///
+ /// Processo i task richiesti e li elimino dalla coda 1:1
+ ///
+ ///
+ public override Dictionary executeTasks(Dictionary task2exe)
+ {
+ // Verificare il protocollo: dovrebbe togliere SOLO i task eseguiti...
+ Dictionary taskDone = new Dictionary();
+ bool taskOk = false;
+ string taskVal = "";
+
+ // cerco task specifici: se ho startSetup --> imposto bit DBB701.DBB0.4
+ foreach (var item in task2exe)
+ {
+ taskOk = false;
+ taskVal = "";
+ // converto richiesta in enum...
+ taskType tName = taskType.nihil;
+ Enum.TryParse(item.Key, out tName);
+ // controllo sulla KEY
+ switch (tName)
+ {
+ case taskType.nihil:
+ case taskType.fixStopSetup:
+ case taskType.setArt:
+ case taskType.setComm:
+ case taskType.setProg:
+ case taskType.sendWatchDogMes2Plc:
+ taskVal = $"taskReq: {tName} | key: {item.Key} | val: {item.Value} | SKIPPED | NO EXEC";
+ break;
+
+ case taskType.forceResetPzCount:
+ // reset contapezzi inizio setup
+ taskOk = resetContapezziPLC();
+ taskVal = taskOk ? "FORCE RESET PZ COUNT" : "FORCE RESET DISABLED | NO EXEC";
+ break;
+
+ case taskType.forceSetPzCount:
+ // reset contapezzi inizio setup
+ int newPzCount = 0;
+ int.TryParse(item.Value, out newPzCount);
+ if (newPzCount >= 0)
+ {
+ taskOk = setcontapezziPLC(newPzCount);
+ taskVal = taskOk ? $"FORCE SET PZ COUNT TO {newPzCount}" : $"FORCE SET PZ COUNT TO {newPzCount} | NO EXEC";
+ }
+ else
+ {
+ taskVal = $"ERROR IN FORCE SET PZ COUNT TO {newPzCount}";
+ }
+ break;
+
+ case taskType.startSetup:
+ // reset contapezzi inizio setup
+ taskOk = resetContapezziPLC();
+ taskVal = taskOk ? "RESET: SETUP START" : "PZ RESET DISABLED | NO EXEC";
+ break;
+
+ case taskType.stopSetup:
+ // reset contapezzi fine setup // reset contapezzi fine setup SE
+ // ESPLICITAMENTE IMPOSTATO
+ if (cIobConf.optPar.Count > 0 && getOptPar("ENABLE_PZ_RESET_stopSetup") == "TRUE")
+ {
+ resetContapezziPLC();
+ }
+ taskVal = taskOk ? "RESET: SETUP END" : "PZ RESET DISABLED | NO EXEC";
+ break;
+
+ default:
+ taskVal = "SKIPPED | NO EXEC";
+ break;
+ }
+ taskDone.Add(item.Key, taskVal);
+ }
+
+ return taskDone;
+ }
+
+ ///
+ /// Recupero dati dinamici...
+ ///
+ public override Dictionary getDynData()
+ {
+ // valore non presente in vers default... se gestito fare override
+ Dictionary outVal = new Dictionary();
+ outVal.Add("LAST_MISS", lastMissRobot);
+ outVal.Add("LAST_TC", lastTC.ToString());
+ outVal.Add("NUM_PZ_PREL", pzPrelevati.ToString());
+ outVal.Add("NUM_PZ_LAV", pzCounter.ToString());
+ outVal.Add("CURR_SIGNALS", currBitmapSignals.ToString());
+ return outVal;
+ }
+
+ ///
+ /// Recupero programma in lavorazione
+ ///
+ ///
+ public override string getPrgName()
+ {
+ // valore non presente in vers default... se gestito fare override
+ string prgName = "";
+ return prgName;
+ }
+
+ ///
+ /// Recupero info sistema generiche
+ ///
+ ///
+ public override Dictionary getSysInfo()
+ {
+ // valore non presente in vers default... se gestito fare override
+ Dictionary outVal = new Dictionary();
+ outVal.Add("MACHINE", machineName);
+ return outVal;
+ }
+
+ ///
+ /// Effettua vero processing contapezzi
+ ///
+ public override void processContapezzi()
+ {
+ if (utils.CRB("enableContapezzi"))
+ {
+ try
+ {
+ // hard coded... !!!FARE!!! rivedere megio conf
+ contapezziPLC = pzCounter;
+ // verifico quale modalità sia richiesta: STD (6711) oppure BIT (Custom, con
+ // indicazione area)
+ if (cIobConf.optPar.Count > 0 && !string.IsNullOrEmpty(getOptPar("PZCOUNT_MODE")))
+ {
+#if false
+ string memAddr = getOptPar("PZCOUNT_MODE");
+ if (memAddr.StartsWith("STD"))
+ {
+ // inizio verifica area memoria/parametro levando prima parte codice
+ memAddr = memAddr.Replace("STD.", "");
+ object outputVal = new object();
+ // verifico se si tratta di lettura area DB... formato tipo STD.DB700.DBB22.W
+ if (memAddr.StartsWith("DB"))
+ {
+ memAreaSiemens areaCounter = new memAreaSiemens(memAddr);
+
+ if (isVerboseLog)
+ {
+ lgInfo("[0] area memoria: {1}.{2}.{3}", memAddr, areaCounter.DbNum, areaCounter.indiceMem, areaCounter.tipoMem);
+ }
+ // copio da blocco già letto... con switch x tipo dati --> tipo lettura... e salvo
+ // ultimo conteggio rilevato
+ switch (areaCounter.tipoMem)
+ {
+ case "B":
+ byte valB = RawInput[areaCounter.indiceMem];
+ outputVal = valB;
+ break;
+
+ case "W":
+ ushort valW = S7.Net.Types.Word.FromByteArray(RawInput.Skip(areaCounter.indiceMem).Take(2).ToArray());
+ outputVal = valW;
+ break;
+
+ case "DW":
+ uint valDW = S7.Net.Types.Word.FromByteArray(RawInput.Skip(areaCounter.indiceMem).Take(4).ToArray());
+ outputVal = valDW;
+
+ break;
+
+ default:
+ break;
+ }
+ // salvo...
+ Int32.TryParse(outputVal.ToString(), out contapezziPLC);
+ if (isVerboseLog)
+ {
+ lgInfo("[2] outputVal contapezzi: {0}", outputVal);
+ lgInfo("[3] contapezziPLC contapezzi: {0}", contapezziPLC);
+ }
+ }
+ stopwatch.Stop();
+ }
+#endif
+ }
+ }
+ catch (Exception exc)
+ {
+ lgError(exc, "Errore in contapezzi KAWASAKI");
+ }
+ }
+ }
+
+ ///
+ /// Effettua processing del recupero delle OVERRIDE (spindle, feedrate, rapid)
+ ///
+ public override void processOverride()
+ {
+ }
+
+ ///
+ /// Effettua lettura semafori principale Parametri da
+ /// aggiornare x display in form
+ ///
+ public override void readSemafori(ref newDisplayData currDispData)
+ {
+ base.readSemafori(ref currDispData);
+ try
+ {
+ if (verboseLog)
+ {
+ lgInfo("inizio read semafori");
+ }
+ currDispData.semIn = Semaforo.SV;
+
+ // effettuo TUTTE le letture
+ threadOk = commThreadOk;
+ cStatus = currBitmapStatus;
+ cSignals = currBitmapSignals;
+ contapezziPLC = pzCounter;
+ // decodifica e gestione
+ decodeToBaseBitmap();
+ decodeOtherData();
+ reportRawInput(ref currDispData);
+ // se trova ok thread --> aggiorno ultima lettura
+ if (threadOk)
+ {
+ lastReadPLC = DateTime.Now;
+ }
+ }
+ catch
+ {
+ currDispData.semIn = Semaforo.SR;
+ }
+ }
+
+ ///
+ /// Effettua reset del contapezzi
+ ///
+ ///
+ public override bool resetContapezziPLC()
+ {
+ // impiego override metodo set...
+ bool answ = setcontapezziPLC(0);
+#if false
+ bool answ = false;
+ // ...SE abilitato da conf IOB
+ if (cIobConf.optPar.Count > 0 && getOptPar("ENABLE_PZ_RESET") == "TRUE")
+ {
+ // scrivo valore 0 x il contapezzi
+ try
+ {
+ pzCounter = 0;
+ }
+ catch (Exception exc)
+ {
+ lgError(exc, "Errore in RESET contapezzi KAWASAKI");
+ connectionOk = false;
+ }
+ answ = true;
+ }
+ else
+ {
+ lgError("Impossibile effettuare RESET contapezzi KAWASAKI, mancanza parametro OPT:ENABLE_PZ_RESET");
+ }
+#endif
+ return answ;
+ }
+
+ ///
+ /// Effettua IMPOSTAZIONE FORZATA del contapezzi
+ ///
+ ///
+ public override bool setcontapezziPLC(int newPzCount)
+ {
+ bool answ = false;
+ // ...SE abilitato da conf IOB
+ if (cIobConf.optPar.Count > 0 && getOptPar("ENABLE_PZ_RESET") == "TRUE")
+ {
+ // scrivo valore 0 x il contapezzi
+ try
+ {
+ pzCounter = newPzCount;
+ }
+ catch (Exception exc)
+ {
+ lgError(exc, "Errore in SET contapezzi KAWASAKI");
+ connectionOk = false;
+ }
+ answ = true;
+ }
+ else
+ {
+ lgError("Impossibile effettuare SET contapezzi KAWASAKI, mancanza parametro OPT:ENABLE_PZ_RESET");
+ }
+ return answ;
+ }
+
+ ///
+ /// Override connessione
+ ///
+ public override void tryConnect()
+ {
+ if (!connectionOk)
+ {
+ // controllo che il ping sia stato tentato almeno pingTestSec fa...
+ if (DateTime.Now.Subtract(lastPING).TotalSeconds > utils.CRI("pingTestSec"))
+ {
+ if (verboseLog || periodicLog)
+ {
+ lgInfo("KAWASAKI: ConnKO - tryConnect");
+ }
+ // in primis salvo data ping...
+ lastPING = DateTime.Now;
+ // se passa il ping faccio il resto...
+ if (testPingMachine == IPStatus.Success)
+ {
+ string szStatusConnection = "";
+ try
+ {
+ // ora provo connessione...
+ parentForm.commPlcActive = true;
+ string connPar = string.Format("TCP {0}", cIobConf.cncIpAddr);
+ KAWASAKI_ref.connect(connPar);
+ parentForm.commPlcActive = false;
+ lgInfo("szStatusConnection: " + KAWASAKI_ref.IsConnected);
+ connectionOk = true;
+ // verifico se sta girando
+ if (connectionOk)
+ {
+ queueInEnabCurr = true;
+ if (adpRunning)
+ {
+ lgInfo("Connessione OK");
+ }
+ }
+ else
+ {
+ lgError("Impossibile procedere, connessione mancante...");
+ }
+ }
+ catch (Exception exc)
+ {
+ lgFatal(string.Format("Errore nella connessione all'adapter KAWASAKI: {0}{1}{2}", szStatusConnection, Environment.NewLine, exc));
+ connectionOk = false;
+ lgInfo(string.Format("Eccezione in TryConnect, Adapter KAWASAKI NON running, pausa di {0} msec prima di ulteriori tentativi di riconnessione", utils.CRI("waitRecMSec")));
+ }
+ }
+ else
+ {
+ // loggo no risposta ping ...
+ connectionOk = false;
+ needRefresh = true;
+ if (verboseLog || periodicLog)
+ {
+ lgInfo(string.Format("Attenzione: KAWASAKI controllo PING fallito per IP {0}", cIobConf.cncPingAddr));
+ }
+ }
+ }
+ }
+ // se non è ancora connesso faccio processing memoria caso disconnesso...
+ if (!connectionOk)
+ {
+ // processo semafori ed invio...
+ processMemoryDiscon();
+ }
+ }
+
+ ///
+ /// Override disconnessione
+ ///
+ public override void tryDisconnect()
+ {
+ if (connectionOk)
+ {
+ connectionOk = false;
+ string szStatusConnection = "";
+ try
+ {
+ KAWASAKI_ref.disconnect();
+ lgInfo(szStatusConnection);
+ lgInfo("Effettuata disconnessione adapter KAWASAKI!");
+ }
+ catch (Exception exc)
+ {
+ lgFatal(exc, "Errore nella disconnessione dall'adapter KAWASAKI");
+ }
+ }
+ else
+ {
+ lgError("IMPOSSIBILE effettuare disconnessione KAWASAKI: Connessione non disponibile...");
+ }
+ queueInEnabCurr = false;
+ needRefresh = true;
+ }
+
+ #endregion Public Methods
+
+ #region Protected Fields
+
+ ///
+ /// Comando inviato al robot
+ ///
+ protected string comando;
+
+ ///
+ /// Variabile SIGNALS corrente (8bit INT)
+ ///
+ protected string cSignals;
+
+ ///
+ /// Variabile STATUS corrente (8bit INT)
+ ///
+ protected string cStatus;
+
+ ///
+ /// Oggetto MAIN x connessione KAWASAKI
+ ///
+ protected KRcc.Commu KAWASAKI_ref;
+
+ ///
+ /// Ultima missione svolta da robot
+ ///
+ protected string lastMissRobot;
+
+ ///
+ /// Ultimo TC registrato da robot
+ ///
+ protected decimal lastRecTC;
+
+ ///
+ /// Nome e seriale macchina
+ ///
+ protected string macName = "";
+
+ ///
+ /// Num pezzi prelevati
+ ///
+ protected int numPzPrel;
+
+ ///
+ /// Array delle risposte dal controllo KAWASAKI
+ ///
+ protected System.Collections.ArrayList resDataArray;
+
+ ///
+ /// Variabile verifica thread comunicazione
+ ///
+ protected bool threadOk = false;
+
+ #endregion Protected Fields
+
+ #region Protected Properties
+
+ ///
+ /// Verifica se il thread 4 di comm sia attivo
+ ///
+ protected bool commThreadOk
+ {
+ get
+ {
+ bool answ = false;
+ if (KAWASAKI_ref.IsConnected)
+ {
+ int retVal = 0;
+ resDataArray = KAWASAKI_ref.command("TYPE TASK (1004)", 3000); // thread 4 ok --> " 1\r\n"
+ int.TryParse(resDataArray[1].ToString().Replace("\n", "").Replace("\r", ""), out retVal);
+ answ = (retVal == 1);
+ }
+ return answ;
+ }
+ }
+
+ ///
+ /// Restituisce SEGNALI macchina nel formato:
+ /// B0: Transfer in auto
+ /// B1: Punzonatrice in AUTO
+ /// B2: Barriera tavola ripristinata
+ /// B3: Aria in linea OK
+ /// B4: Console Transfer in fuori ingombro
+ /// B5: TAV A
+ /// B6: TAV B
+ /// B7: Richiesta accesso attiva
+ ///
+ protected string currBitmapSignals
+ {
+ get
+ {
+ string answ = "";
+ if (KAWASAKI_ref.IsConnected)
+ {
+ resDataArray = KAWASAKI_ref.command("TYPE $signal", 3000); // segnali --> "1|0|1|1|1|0|0|0\r\n"
+ answ = resDataArray[1].ToString().Replace("\n", "").Replace("\r", "").Replace("|", "");
+#if false
+ // reverse stringa (B0 portato a sx)
+ szBitmap = utils.reverseStr(szBitmap);
+ // ora converto bitmap string in INT
+ answ = Convert.ToInt32(szBitmap, 2);
+#endif
+ }
+ return answ;
+ }
+ }
+
+ ///
+ /// Restituisce stato macchina nel formato (da sx a dx):
+ /// B0: POWER_ON
+ /// B1: AUTO
+ /// B2: RUN
+ /// B3: ERROR
+ /// B4: ALLARME
+ /// B5: EMERGENZA OK
+ /// B6: PORTA CHIUSA
+ /// B7: PRONTO AL LOAD
+ ///
+ protected string currBitmapStatus
+ {
+ get
+ {
+ string answ = "";
+ if (KAWASAKI_ref.IsConnected)
+ {
+ resDataArray = KAWASAKI_ref.command("TYPE $status", 3000); // status --> "0|0|1|0|0|1|0|0\r\n"
+ answ = resDataArray[1].ToString().Replace("\n", "").Replace("\r", "").Replace("|", "");
+#if false
+ // reverse stringa (B0 portato a sx)
+ szBitmap = utils.reverseStr(szBitmap);
+ // ora converto bitmap string in INT
+ answ = Convert.ToInt32(szBitmap, 2);
+#endif
+ }
+ return answ;
+ }
+ }
+
+ ///
+ /// Recupera ultima missione svolta
+ ///
+ protected string lastMission
+ {
+ get
+ {
+ string answ = "";
+ if (KAWASAKI_ref.IsConnected)
+ {
+ resDataArray = KAWASAKI_ref.command("TYPE $exe", 3000); // missione --> "\r\n" (vuoto, no missione)
+ answ = resDataArray[1].ToString().Replace("\n", "").Replace("\r", "");
+ }
+ return answ;
+ }
+ }
+
+ ///
+ /// Oggetto per lettura ULTIMO TC rilevato
+ ///
+ protected decimal lastTC
+ {
+ get
+ {
+ decimal answ = 0;
+ if (KAWASAKI_ref.IsConnected)
+ {
+ resDataArray = KAWASAKI_ref.command("TYPE r_tempo", 3000); // ultimo TCiclo rilevato --> " 349.19\r\n"
+ decimal.TryParse(resDataArray[1].ToString().Replace("\n", "").Replace("\r", "").Replace(".", ","), out answ);
+ }
+ return answ;
+ }
+ }
+
+ ///
+ /// Recupera nome e seriale macchina
+ ///
+ protected string machineName
+ {
+ get
+ {
+ string answ = "";
+ if (KAWASAKI_ref.IsConnected)
+ {
+ resDataArray = KAWASAKI_ref.command("TYPE $id_true", 3000); // id macchina --> "BX100N-B001 Sn. 2366\r\n"
+ answ = resDataArray[1].ToString().Replace("\n", "").Replace("\r", "");
+ }
+ return answ;
+ }
+ }
+
+ ///
+ /// Oggetto per lettura/scrittura counter pezzi robot
+ ///
+ protected int pzCounter
+ {
+ get
+ {
+ int answ = 0;
+ if (KAWASAKI_ref.IsConnected)
+ {
+ resDataArray = KAWASAKI_ref.command("TYPE i_cicli", 3000); // num cicli depositati/fatti --> " 0\r\n"
+ int.TryParse(resDataArray[1].ToString().Replace("\n", "").Replace("\r", ""), out answ);
+ }
+ return answ;
+ }
+ set
+ {
+ if (KAWASAKI_ref.IsConnected)
+ {
+ comando = string.Format("i_cicli={0}", value);
+ // scrivo valore cicli
+ resDataArray = KAWASAKI_ref.command(comando, 3000); // imposto cicli depositati/fatti --> " 0\r\n"
+ }
+ }
+ }
+
+ ///
+ /// Oggetto per lettura counter pezzi PRELEVATI
+ ///
+ protected int pzPrelevati
+ {
+ get
+ {
+ int answ = 0;
+ if (KAWASAKI_ref.IsConnected)
+ {
+ resDataArray = KAWASAKI_ref.command("TYPE i_prelevati", 3000); // num pz prelevati --> "0\r\n"
+ int.TryParse(resDataArray[1].ToString().Replace("\n", "").Replace("\r", ""), out answ);
+ }
+ return answ;
+ }
+ }
+
+ #endregion Protected Properties
+
+ #region Protected Methods
+
+ ///
+ /// Imposto connessione
+ ///
+ protected virtual void setConnection()
+ {
+ // Creo oggetto connessione NC
+ parentForm.commPlcActive = true;
+ lgInfoStartup("Start init Adapter KAWASAKI all'IP {0} | --> IOB {1}", cIobConf.cncIpAddr, cIobConf.codIOB);
+
+ // inizializzo correttamente aree memoria secondo CONF - iniFileName
+ IniFile fIni = new IniFile(cIobConf.iniFileName);
+ // fix enable prgName
+ enablePrgName = fIni.ReadBoolean("CNC", "GETPRGNAME", true);
+
+ // SE è necessario refresh...
+ if (needRefresh)
+ {
+ lgInfoStartup("Refreshing connection...");
+ // ora tento avvio PLC... SE PING OK...
+ if (testPingMachine == IPStatus.Success)
+ {
+ try
+ {
+ string connPar = string.Format("TCP {0}", cIobConf.cncIpAddr);
+ KAWASAKI_ref = new KRcc.Commu(connPar);
+ // disconnetto e connetto...
+ if (isVerboseLog)
+ {
+ lgInfo("KAWASAKI: tryDisconnect");
+ }
+
+ lgInfo("End init Adapter KAWASAKI");
+ if (isVerboseLog)
+ {
+ lgInfo("KAWASAKI CONNESSIONE AVVENUTA");
+ }
+ }
+ catch (Exception exc)
+ {
+ lgError(exc, "Errore in INIT KAWASAKI Commu");
+ }
+ needRefresh = false;
+ }
+ parentForm.commPlcActive = false;
+ // gestione pzCounter
+ if (utils.CRB("enableContapezzi"))
+ {
+ lgInfo("KAWASAKI: inizio gestione contapezzi");
+ try
+ {
+ // verifico quale modalità sia richiesta: STD (6711) oppure BIT (Custom, con
+ // indicazione area)
+ if (cIobConf.optPar.Count > 0 && !string.IsNullOrEmpty(getOptPar("PZCOUNT_MODE")))
+ {
+ if (getOptPar("PZCOUNT_MODE").StartsWith("STD"))
+ {
+ lgInfo("Init contapezzi KAWASAKI: pzCntReload(true)");
+ pzCntReload(true);
+ // refresh associazione Macchina - IOB
+ SendM2IOB();
+ // invio altri dati accessori...
+ SendMachineConf();
+ // per adesso imposto lettura fanuc == contapezzi (poi farà vera lettura...)
+ contapezziPLC = contapezziIOB;
+ }
+ else
+ {
+ contapezziIOB = 0;
+ lgInfo("Contapezzi STD disabilitato: modalità {0}", getOptPar("PZCOUNT_MODE"));
+ }
+ }
+ else
+ {
+ contapezziIOB = 0;
+ lgInfo("Parametro mancante PZCOUNT_MODE");
+ }
+ }
+ catch (Exception exc)
+ {
+ lgError(exc, "Errore in contapezzi KAWASAKI");
+ }
+ }
+ }
+ }
+
+ #endregion Protected Methods
+
+ #region Private Fields
+
+ ///
+ /// LookUpTable di decodifica da CNC a segnali tipo bitmap MAPO
+ ///
+ private Dictionary signLUT = new Dictionary();
+
+ #endregion Private Fields
+
+ #region Private Methods
+
+ ///
+ /// Decodifica il resto dell'area x i dati accessori (allarmi, ...)
+ ///
+ private void decodeOtherData()
+ {
+ if (verboseLog)
+ {
+ }
+ }
+
+ ///
+ /// Effettua decodifica aree memoria alla bitmap usata x MAPO
+ ///
+ private void decodeToBaseBitmap()
+ {
+ // init a zero...
+ B_input = 0;
+ /* -----------------------------------------------------
+ * bitmap MAPO
+ * B0: POWER_ON
+ * B1: RUN
+ * B2: pzCount
+ * B3: allarme
+ * B4: manuale
+ * B5: emergenza
+ * B6: error prog
+ * B7: auto mode
+ ----------------------------------------------------- */
+ // bit 0 (poweron) imposto a 1 SE connected...
+ B_input = KAWASAKI_ref.IsConnected ? 1 : 0;
+ // RUN
+ if (cStatus[2] == '1')
+ {
+ B_input += (1 << 1);
+ }
+ // ERROR prog/macchina
+ if (cStatus[3] == '1')
+ {
+ B_input += (1 << 6);
+ }
+ // allarme
+ if (cStatus[4] == '1')
+ {
+ B_input += (1 << 3);
+ }
+ // Automatico (porta chiusa)
+ if (cStatus[6] == '1' || cStatus[1] == '1')
+ {
+ B_input += (1 << 4);
+ }
+ // NON EMERGENZA (1=armed, 0=triggered)
+ if (cStatus[5] == '0')
+ {
+ B_input += (1 << 5);
+ }
+ // procedo SOLO SE è enabled IOB
+ if (IobOnline)
+ {
+ try
+ {
+ currODL = utils.callUrl(urlGetCurrODL);
+ // solo SE HO un ODL...
+ if (string.IsNullOrEmpty(currODL) || currODL == "0")
+ {
+ if (periodicLog)
+ {
+ lgInfo(string.Format("Kawasaki | Lettura ODL andata a vuoto: currODL: {0}", currODL));
+ }
+ }
+ else
+ { // se variato o scaduto timeout log...
+ if (periodicLog || (currIdxODL.ToString() != currODL))
+ {
+ lgInfo(string.Format("Kawasaki | Lettura ODL, currODL: {0} --> currIdxODL prec: {1}", currODL, currIdxODL));
+ }
+ // provo a salvare nuovo ODL
+ int.TryParse(currODL, out currIdxODL);
+ }
+ }
+ catch (Exception exc)
+ {
+ if (DateTime.Now.Subtract(lastWarnODL).TotalSeconds > 15)
+ {
+ lgError(exc, "Errore in fase di chiamata URL x ODL corrente | URL chiamato: {0}", urlGetCurrODL);
+ lastWarnODL = DateTime.Now;
+ }
+ }
+ }
+ else
+ {
+ // imposto currODL a vuoto!
+ currODL = "";
+ if (periodicLog)
+ {
+ lgInfo($"Kawasaki | Lettura ODL non effettuata: IobOnline: {IobOnline} | currODL impostato a vuoto");
+ }
+ }
+ if (!string.IsNullOrEmpty(currODL))
+ {
+ if (currODL != "0")
+ {
+ // ora processo il contapezzi... controllo se è passato intervallo minimo tra 2
+ // controlli/elaborazioni x distanziare invio e ridurre letture
+ if (DateTime.Now >= lastPzCountSend.AddMilliseconds(pzCountDelay))
+ {
+ // se sono differenti MOSTRO...
+ if (contapezziPLC != contapezziIOB)
+ {
+ // registro contapezzi
+ lgInfo($"Differenza Contapezzi CNC/IOB: contapezziPLC: {contapezziPLC} | contapezziIOB: {contapezziIOB}");
+ }
+ // verifico se variato contapezzi... e se passato ritardo minimo...
+ if (contapezziPLC > contapezziIOB)
+ {
+ // salvo nuovo contapezzi (incremento di 1...) + richiesta refresh conteggio
+ contapezziIOB++;
+ needRefreshPzCount = true;
+ // salvo in semaforo!
+ B_input += (1 << 2);
+ // registro contapezzi
+ lgInfo($"contapezziPLC KAWASAKI: {contapezziPLC} | contapezziIOB {contapezziIOB}");
+ }
+ else if (contapezziIOB > contapezziPLC)
+ {
+ lgInfo($"Contapezzi IOB > CNC --> NON INVIO (contapezziPLC: {contapezziPLC} < contapezziIOB: {contapezziIOB})");
+ }
+
+ // invio a server contapezzi (aggiornato)
+ string retVal = utils.callUrl(urlSetPzCount + contapezziIOB.ToString());
+ // verifica se tutto OK
+ if (retVal != contapezziIOB.ToString())
+ {
+ // errore salvataggio contapezzi
+ lgInfo($"Errore salvataggio Contapezzi KAWASAKI: contapezziPLC {contapezziPLC} | contapezziIOB {contapezziIOB} | risposta: {retVal}");
+ // rileggo il counter pezzi da server
+ pzCntReload(true);
+ }
+ // resetto timer...
+ lastPzCountSend = DateTime.Now;
+ }
+ }
+ else
+ {
+ lgError("Attenzione non trovato ODL --> currODL = 0");
+ }
+ }
+ else
+ {
+ if (DateTime.Now >= lastPzCountSend.AddMilliseconds(pzCountDelay))
+ {
+ lgError($"Attenzione: mancanza ODL non procedo con gestione contapezzi. contapezziPLC KAWASAKI {contapezziPLC} | contapezziIOB {contapezziIOB}");
+ // resetto timer...
+ lastPzCountSend = DateTime.Now;
+ }
+ }
+
+ // log opzionale!
+ if (verboseLog)
+ {
+ lgInfo($"Trasformazione B_input: {B_input}");
+ }
+ }
+
+ ///
+ /// Test completo funzioni kawasaki
+ ///
+ private void kawasakiFullTest()
+ {
+ // faccio un try-catch di test vari...
+ try
+ {
+ //string connPar = string.Format("TCP {0}", cIobConf.cncIpAddr);
+ //KAWASAKI_ref = new KRcc.Commu(connPar);
+ //KAWASAKI_ref = new KRcc.Commu("TCP 192.168.0.92");
+ if (KAWASAKI_ref.IsConnected)
+ {
+ // connect ok
+ resDataArray = KAWASAKI_ref.command("where", 3000);
+ // WHERE [RET] Console.WriteLine(resDataArray[1]); [0] = 0 [1] = JT1 JT2 JT3 JT4
+ // JT5 JT6
+ // -23.205 - 39.967 - 13.176 95.663 71.402 - 21.512 X[mm] Y[mm] Z[mm] O[deg]
+ // A[deg] T[deg]
+ // - 489.620 693.940 1564.733 92.612 131.285 7.482
+
+ threadOk = commThreadOk;
+ macName = machineName;
+ cStatus = currBitmapStatus;
+ cSignals = currBitmapSignals;
+ contapezziPLC = pzCounter;
+ numPzPrel = pzPrelevati;
+ lastRecTC = lastTC;
+ lastMissRobot = lastMission;
+ }
+ // test contapezzi
+#if false
+ // leggo i pezzi
+ int currCount = pzCounter;
+ // imposto a 100
+ pzCounter = 100;
+ // rileggo x verifica
+ int newCount = pzCounter;
+ // reimposto corretti
+ pzCounter = currCount;
+#endif
+ // test gest programmi
+#if true
+ //saveProgram("prog", "default");
+ sendProgram("prog", "default2");
+#endif
+ }
+ catch (Exception e)
+ { // e.Message = "can't connect TCP/IP" or // "can't login"
+ Console.WriteLine(e.Message);
+ }
+ }
+
+ ///
+ /// Effettua salvataggio del programma corrente
+ ///
+ /// Dir di riferimento
+ /// Nome Programma (se mancasse *.as lo aggiunge)
+ private void saveProgram(string progDir = "prog", string progName = "current.as")
+ {
+ // path completo
+ progName = progName.EndsWith(".as") ? progName : progName + ".as";
+ string prgPath = progName;// string.Format("{0}/{1}", progDir, progName);
+ if (KAWASAKI_ref.IsConnected)
+ {
+ // comandi x setup programma...
+ resDataArray = KAWASAKI_ref.command("ferma", 3000); // ferma processi (all) --> ""
+ resDataArray = KAWASAKI_ref.command("togli", 3000); // toglie processi da pronta esecuzione --> ""
+
+ //resp = com.command("SAVE nome_del_file", 3000); // salvataggio file... FORSE --> "\u0005\u0002Bnome_del_file.as\u0017" --> verificare DOVE salva...
+
+ int ret = KAWASAKI_ref.save(prgPath); // SAVE current.as[RET]
+ if (ret == 0)
+ {
+ // Success
+ }
+ if (ret == -1)
+ {
+ // Communication error
+ }
+ if (ret == -2)
+ {
+ // Robot Controller error
+ }
+ if (ret == -3)
+ {
+ // Internal error
+ }
+ }
+ }
+
+ ///
+ /// Effettua invio del programma di alvorazione al ROBOT Dir di
+ /// riferimentoNome Programma (se mancasse *.as lo aggiunge)
+ ///
+ private void sendProgram(string progDir = "prog", string progName = "default.as")
+ {
+ // path completo
+ progName = progName.EndsWith(".as") ? progName : progName + ".as";
+ string prgPath = progName;// string.Format("{0}/{1}", progDir, progName);
+
+ // comandi x setup programma...
+ resDataArray = KAWASAKI_ref.command("ferma", 3000); // ferma processi (all) --> ""
+ resDataArray = KAWASAKI_ref.command("togli", 3000); // toglie processi da pronta esecuzione --> ""
+
+ if (KAWASAKI_ref.IsConnected)
+ {
+ // carico...
+ KAWASAKI_ref.asInquiry = delegate (string as_msg)
+ {
+ Console.WriteLine(as_msg); if (as_msg.StartsWith("Are you sure ?"))
+ {
+ return "0\n"; // 0 [RET]
+ }
+
+ if (as_msg.StartsWith("Load data?"))
+ {
+ return "1\n"; // 1 [RET]
+ }
+
+ return null;
+ };
+ int retLoad = KAWASAKI_ref.load(prgPath, "/Q"); // LOAD/Q default.as[RET]
+ }
+ }
+
+ #endregion Private Methods
+ }
+}
\ No newline at end of file
diff --git a/IOB-WIN-KAWASAKI/MainFormNext.cs b/IOB-WIN-KAWASAKI/MainFormNext.cs
new file mode 100644
index 00000000..a694a1db
--- /dev/null
+++ b/IOB-WIN-KAWASAKI/MainFormNext.cs
@@ -0,0 +1,40 @@
+using IOB_UT_NEXT;
+using IOB_WIN_KAWASAKI.Iob;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IOB_WIN_KAWASAKI
+{
+ public class MainFormNext : IOB_WIN_FORM.MainForm
+ {
+
+ ///
+ /// Avvio MainForm
+ ///
+ ///
+ public MainFormNext(string[] args) : base(args)
+ {
+ }
+
+ ///
+ /// Apre la finestra child con conf
+ ///
+ protected override void openChild(string IOB)
+ {
+ if (IOB == null)
+ {
+ throw new ArgumentNullException(nameof(IOB));
+ }
+
+ AdapterFormNext child = new AdapterFormNext(IOB);
+ child.MdiParent = this;
+ child.Text = IOB;
+ child.Show();
+ child.Shown += Child_Shown;
+ child.FormClosed += Child_FormClosed;
+ }
+ }
+}
diff --git a/IOB-WIN-KAWASAKI/NLog.config b/IOB-WIN-KAWASAKI/NLog.config
new file mode 100644
index 00000000..cd1bcc98
--- /dev/null
+++ b/IOB-WIN-KAWASAKI/NLog.config
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/IOB-WIN-KAWASAKI/Program.cs b/IOB-WIN-KAWASAKI/Program.cs
new file mode 100644
index 00000000..511341d2
--- /dev/null
+++ b/IOB-WIN-KAWASAKI/Program.cs
@@ -0,0 +1,24 @@
+using System;
+using System.Windows.Forms;
+
+namespace IOB_WIN_KAWASAKI
+{
+ internal static class Program
+ {
+ #region Private Methods
+
+ ///
+ /// Punto di ingresso principale dell'applicazione.
+ /// Parametri di avvio
+ ///
+ [STAThread]
+ private static void Main(string[] args)
+ {
+ Application.EnableVisualStyles();
+ Application.SetCompatibleTextRenderingDefault(false);
+ Application.Run(new MainFormNext(args));
+ }
+
+ #endregion Private Methods
+ }
+}
\ No newline at end of file
diff --git a/IOB-WIN-KAWASAKI/Properties/AssemblyInfo.cs b/IOB-WIN-KAWASAKI/Properties/AssemblyInfo.cs
new file mode 100644
index 00000000..2288b500
--- /dev/null
+++ b/IOB-WIN-KAWASAKI/Properties/AssemblyInfo.cs
@@ -0,0 +1,18 @@
+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("IOB-WIN-KAWASAKI")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyProduct("IOB-WIN-KAWASAKI")]
+[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)]
diff --git a/IOB-WIN-KAWASAKI/Properties/Resources.Designer.cs b/IOB-WIN-KAWASAKI/Properties/Resources.Designer.cs
new file mode 100644
index 00000000..a04058ce
--- /dev/null
+++ b/IOB-WIN-KAWASAKI/Properties/Resources.Designer.cs
@@ -0,0 +1,71 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace IOB_WIN_KAWASAKI.Properties
+{
+
+
+ ///
+ /// A strongly-typed resource class, for looking up localized strings, etc.
+ ///
+ // This class was auto-generated by the StronglyTypedResourceBuilder
+ // class via a tool like ResGen or Visual Studio.
+ // To add or remove a member, edit your .ResX file then rerun ResGen
+ // with the /str option, or rebuild your VS project.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class Resources
+ {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Resources()
+ {
+ }
+
+ ///
+ /// Returns the cached ResourceManager instance used by this class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager
+ {
+ get
+ {
+ if ((resourceMan == null))
+ {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("IOB_WIN_KAWASAKI.Properties.Resources", typeof(Resources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// Overrides the current thread's CurrentUICulture property for all
+ /// resource lookups using this strongly typed resource class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture
+ {
+ get
+ {
+ return resourceCulture;
+ }
+ set
+ {
+ resourceCulture = value;
+ }
+ }
+ }
+}
diff --git a/IOB-WIN-KAWASAKI/Properties/Resources.resx b/IOB-WIN-KAWASAKI/Properties/Resources.resx
new file mode 100644
index 00000000..af7dbebb
--- /dev/null
+++ b/IOB-WIN-KAWASAKI/Properties/Resources.resx
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/IOB-WIN-KAWASAKI/Properties/Settings.Designer.cs b/IOB-WIN-KAWASAKI/Properties/Settings.Designer.cs
new file mode 100644
index 00000000..4633ded3
--- /dev/null
+++ b/IOB-WIN-KAWASAKI/Properties/Settings.Designer.cs
@@ -0,0 +1,30 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace IOB_WIN_KAWASAKI.Properties
+{
+
+
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
+ internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
+ {
+
+ private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+
+ public static Settings Default
+ {
+ get
+ {
+ return defaultInstance;
+ }
+ }
+ }
+}
diff --git a/IOB-WIN-KAWASAKI/Properties/Settings.settings b/IOB-WIN-KAWASAKI/Properties/Settings.settings
new file mode 100644
index 00000000..39645652
--- /dev/null
+++ b/IOB-WIN-KAWASAKI/Properties/Settings.settings
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/IOB-WIN-KAWASAKI/Resources/ChangeLog.html b/IOB-WIN-KAWASAKI/Resources/ChangeLog.html
new file mode 100644
index 00000000..7ab91d78
--- /dev/null
+++ b/IOB-WIN-KAWASAKI/Resources/ChangeLog.html
@@ -0,0 +1,120 @@
+
+ MAPO-IOB-WIN
+ v: {{CURRENT-REL}}
+
+ Acquisitore MAPO-IOB per sistemi Windows
+
+ Note di rilascio:
+
+ -
+ v.3.1.* → v.3.2.*
+
+ - Nuovi simulatori con gestione emergenza
+ - Fix gestione invio dati Redis
+ - Implementazione IOB Eurom63
+
+
+ -
+ v.2.6.* → v.3.0.*
+
+ - revisione sistema metodi invio in blocco
+ - Gestione invio contapezzi in step > 1
+ - Gestione eventi in blocco (indipendente e prioritario su EvBlock)
+ - Gestione limite eventi memorizzabili
+ - Integrazione REDIS
+ - Integrazione IOB-MAN
+
+
+ -
+ v.2.5.* → v.2.6.*
+
+ - revisione sistema timeout Ping
+ - Gestione AutoODL in prod generale (non solo SIM)
+
+
+ -
+ v.2.4.* → v.2.5.*
+
+ - Aggiunto adapter MTConnect
+ - Ottimizzazione gestione SIEMENS
+
+
+ -
+ v.2.3.* → v.2.4.*
+
+ - inserita gestione conf json x Flog acquisiti
+ - gestione invio Json blocchi dati FLog
+ - ottimizzazioni varie adapter Siemens
+ - ottimizzazione processo svuotamento code
+ - riduzione interferenza e interblocchi in fase di PLC assente
+
+
+ -
+ Ultime modifiche:
+
+
+ -
+ v.1.18.* → v.2.3.*
+
+ - inserimento WPS x acontrolli WebPage human readable
+ - fix gestione task2exe
+ - aggiunte varie versioni PLC siemens
+ - aggiunto PLC WPS x generiche web pages
+ - revisitazione LOG ODL e contapezzi
+ - modifica pagina presentazione dati (master) x resize
+ - Attivazione IOB SIMULATOR per test di carico (sostituito type DEMO)
+ - Aggiunto simulatore macchine MULTI pallet
+ - Ottimizzazione simulatore
+ - Ottimizzazioni PLC Siemens x riavvio post disconnessione (es spegnimento notturno)
+ - Ottimizzazione processo chiusura in update applicazione
+ - Aggiunta simulazione spegnimento con WU/CD
+
+
+ -
+ v.1.11.* → v.1.18.*
+
+ - Inserimento controller SIEMENS con S7+ library
+ - Inserimento nuove letture FANUC x programmi
+ - Inserimento nuove letture FANUC x SysEx (informazioni sistema)
+ - Inserimento invio FluxLog x parametri estesi (es SysEx, ProgName,...)
+ - FIX visualizzazione dati FluxLog e URL inviati
+ - FIX MAIN program da FANUC (non il current)
+ - Inserita modalita' DUMP memoria (iniziale full + periodica)
+ - Inserimento gestione contapezzi standard/checkBit in IOB.cfg
+ - Inserimento contapezzi da area memoria X
+ - NUOVA Gestione rami cliente e URL di update
+ - Gestione modi CNC
+ - Lettura dari dinamycs FANUC (feed, speed)
+ - aggiunta gestione aree G0..G30 (overrides?)
+ - fix errore disconnessione FANUC (allo spegnimento dl CNC) e memoria valori persistente a 1
+ - fix globali x gestione log IN / FLOG + ottimizzaizone check FANUC (PING)
+ - ottimizzazione fasi di restart in caso di assenza del server (evita reinvii inutili e migliora tempo ripartenza invio)
+ - review procedure controllo connessione x FANUC (es Tornos II)
+ - non richeide più privilegi admin x fare update
+ - gestione segnali inverted
+ - completata gestione configurabilità parametrica segnali (Tornos, CMZ, Biglia)
+ - revisitazione LOG x distinguere processi IOB
+
+
+ -
+ v.0.1.* → v.0.10.*
+
+ - Testato in produzione x update ad avvio e su richiesta
+ - Testato in produzione x lettura dati da Fanuc
+ - Inizio deploy con copia file su area IIS
+ - Prima versione con autoupdate
+ - Test PrettyBin x spostamento dll
+ - Base acquisitore FANUC
+ - Sistema base sw controllo in tray
+
+
+
+
+
+

+
+
+
+
\ No newline at end of file
diff --git a/IOB-WIN-KAWASAKI/Resources/Circuit.ico b/IOB-WIN-KAWASAKI/Resources/Circuit.ico
new file mode 100644
index 00000000..a05b27a6
Binary files /dev/null and b/IOB-WIN-KAWASAKI/Resources/Circuit.ico differ
diff --git a/IOB-WIN-KAWASAKI/Resources/Net.ico b/IOB-WIN-KAWASAKI/Resources/Net.ico
new file mode 100644
index 00000000..a33a9eca
Binary files /dev/null and b/IOB-WIN-KAWASAKI/Resources/Net.ico differ
diff --git a/IOB-WIN-KAWASAKI/Resources/STEAM-IOB-WIN.xml b/IOB-WIN-KAWASAKI/Resources/STEAM-IOB-WIN.xml
new file mode 100644
index 00000000..ba4e78f6
Binary files /dev/null and b/IOB-WIN-KAWASAKI/Resources/STEAM-IOB-WIN.xml differ
diff --git a/IOB-WIN-KAWASAKI/Resources/Start-IOB-WIN.bat b/IOB-WIN-KAWASAKI/Resources/Start-IOB-WIN.bat
new file mode 100644
index 00000000..3f8ecaa1
--- /dev/null
+++ b/IOB-WIN-KAWASAKI/Resources/Start-IOB-WIN.bat
@@ -0,0 +1,15 @@
+@ECHO OFF
+
+SET EXEName=IOB-WIN.exe
+SET EXEFullPath=C:\Steamware\IOB-WIN\IOB-WIN.exe
+
+TASKLIST | FINDSTR /I "%EXEName%"
+IF ERRORLEVEL 1 GOTO :StartIobWin
+
+REM "Programma ancora in run, nessuna azione necessaria"
+timeout /T 2
+GOTO :EOF
+
+:StartIobWin
+START "" "%EXEFullPath%"
+GOTO :EOF
diff --git a/IOB-WIN-KAWASAKI/Resources/SteamWare.ico b/IOB-WIN-KAWASAKI/Resources/SteamWare.ico
new file mode 100644
index 00000000..70ccadaf
Binary files /dev/null and b/IOB-WIN-KAWASAKI/Resources/SteamWare.ico differ
diff --git a/IOB-WIN-KAWASAKI/Resources/logoSteamware.png b/IOB-WIN-KAWASAKI/Resources/logoSteamware.png
new file mode 100644
index 00000000..0958b50a
Binary files /dev/null and b/IOB-WIN-KAWASAKI/Resources/logoSteamware.png differ
diff --git a/IOB-WIN-KAWASAKI/Resources/manifest.xml b/IOB-WIN-KAWASAKI/Resources/manifest.xml
new file mode 100644
index 00000000..f66a7e99
--- /dev/null
+++ b/IOB-WIN-KAWASAKI/Resources/manifest.xml
@@ -0,0 +1,7 @@
+
+-
+ 1.0.0.0
+ http://seriate.steamware.net:8083/SWS/MAPO/IOB-WIN/{{BRANCHNAME}}/MAPO-IOB-WIN.zip
+ http://seriate.steamware.net:8083/SWS/MAPO/IOB-WIN/{{BRANCHNAME}}/ChangeLog.html
+ false
+
\ No newline at end of file
diff --git a/IOB-WIN-KAWASAKI/docfx.json b/IOB-WIN-KAWASAKI/docfx.json
new file mode 100644
index 00000000..bacb80c9
--- /dev/null
+++ b/IOB-WIN-KAWASAKI/docfx.json
@@ -0,0 +1,68 @@
+{
+ "metadata": [
+ {
+ "src": [
+ {
+ "files": [
+ "*.csproj"
+ ],
+ "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"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/IOB-WIN-KAWASAKI/index.md b/IOB-WIN-KAWASAKI/index.md
new file mode 100644
index 00000000..fdb4be99
--- /dev/null
+++ b/IOB-WIN-KAWASAKI/index.md
@@ -0,0 +1,11 @@
+# IOB-WIN-PING
+
+Documentazione relativa all'applicativo IOB-WIN-PING
+
+## 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
\ No newline at end of file
diff --git a/IOB-WIN-KAWASAKI/logs/.placeholder.txt b/IOB-WIN-KAWASAKI/logs/.placeholder.txt
new file mode 100644
index 00000000..5f282702
--- /dev/null
+++ b/IOB-WIN-KAWASAKI/logs/.placeholder.txt
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/IOB-WIN-KAWASAKI/packages.config b/IOB-WIN-KAWASAKI/packages.config
new file mode 100644
index 00000000..1981bc6a
--- /dev/null
+++ b/IOB-WIN-KAWASAKI/packages.config
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/IOB-WIN-KAWASAKI/postBuildTgt.bat b/IOB-WIN-KAWASAKI/postBuildTgt.bat
new file mode 100644
index 00000000..fb0ec909
--- /dev/null
+++ b/IOB-WIN-KAWASAKI/postBuildTgt.bat
@@ -0,0 +1,52 @@
+@echo off
+echo Inizio processing After Build: configurazione %1 , directory %2
+
+if %1 == "Release" goto ReleaseExec
+if %1 == Release goto ReleaseExec
+if %1 == "Debug" goto DebugExec
+if %1 == Debug goto DebugExec
+if %1 == "Remote_DEBUG" goto RemoteDebugExec
+if %1 == Remote_DEBUG goto RemoteDebugExec
+
+:ReleaseExec
+echo Release processing...
+del /S %2"*.pdb""
+del /S %2"*.xml""
+del /S %2"lib/*.pdb""
+echo Release: eliminato pdb + xml!!!
+goto END
+
+:DebugExec
+echo Debug processing...
+
+goto END
+
+
+:RemoteDebugExec
+echo Remote_DEBUG processing, effettuo copia script verso server remoto (ROBOCOPY)
+REM copia script verso server remoto
+REM echo Debug remoto: effettuo robocopy sync (verificare remote per cliente)
+
+REM FINASSI
+REM ROBOCOPY %2 \\10.150.0.1\Steamware\IOB-WIN-KAWASAKI-DEB /MIR
+REM Baglietto
+REM ROBOCOPY %2 \\192.168.60.15\Steamware\IOB-WIN-KAWASAKI-DEB /MIR
+REM GIACOVELLI LOCOROTONDO
+REM ROBOCOPY %2 \\192.168.1.93\Steamware\IOB-WIN-KAWASAKI-DEB /MIR
+REM IMI Remosa
+REM ROBOCOPY %2 \\192.168.0.12\Steamware\IOB-WIN-KAWASAKI-DEB /MIR
+
+REM IOB-WIN-SIM
+REM ROBOCOPY %2 \\IOB-WIN-SIMULA\Steamware\IOB-WIN-KAWASAKI-DEB /MIR
+
+REM IOBVPN4MACHINE
+REM ROBOCOPY %2 \\10.51.90.5\Steamware\IOB-WIN-KAWASAKI-DEB /MIR
+REM ROBOCOPY %2 \\10.51.90.5\Steamware\IOB-WIN-KAWASAKI-DEB /MIR /log:RobocopyTransfer.log
+REM ROBOCOPY %2 Z:\IOB-WIN-KAWASAKI-DEB /MIR
+REM ROBOCOPY %2 \\10.51.90.10\Steamware\IOB-WIN-KAWASAKI-DEB /MIR
+ROBOCOPY %2 \\10.51.90.9\Steamware\IOB-WIN-KAWASAKI-DEB /MIR
+
+goto END
+
+:END
+echo Fatto!
\ No newline at end of file
diff --git a/IOB-WIN-KAWASAKI/setupTgt.bat b/IOB-WIN-KAWASAKI/setupTgt.bat
new file mode 100644
index 00000000..ba685c02
--- /dev/null
+++ b/IOB-WIN-KAWASAKI/setupTgt.bat
@@ -0,0 +1,25 @@
+@echo off
+echo Effettua setup dei file specifici per i vari ambienti pre build installer: verifica da nome configurazione %1
+
+
+if %1 == "Release" goto Release
+if %1 == "Debug" goto Debug
+if %1 == "Remote_DEBUG" goto RemoteDebug
+
+:Release
+echo Release: nulla da copiare
+goto END
+
+:Debug
+echo Debug: copia file ini x simulazione Debug
+REM del %2"DATA\CONF\EsaKvara.ini"
+REM copy %2"Resources\SCM\EsaKvara_SIM.ini" %2"DATA\CONF\EsaKvara.ini"
+goto END
+
+
+:RemoteDebug
+echo RemoteDebug: nulla da copiare
+goto END
+
+:END
+echo Fatto!
\ No newline at end of file
diff --git a/IOB-WIN-KAWASAKI/temp/.placeholder b/IOB-WIN-KAWASAKI/temp/.placeholder
new file mode 100644
index 00000000..5f282702
--- /dev/null
+++ b/IOB-WIN-KAWASAKI/temp/.placeholder
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/IOB-WIN-KAWASAKI/toc.yml b/IOB-WIN-KAWASAKI/toc.yml
new file mode 100644
index 00000000..7eee9ffb
--- /dev/null
+++ b/IOB-WIN-KAWASAKI/toc.yml
@@ -0,0 +1,6 @@
+
+- name: Articles
+ href: articles/
+- name: API Documentation
+ href: obj/api/
+ homepage: api/index.md
diff --git a/IOB-WIN-NEXT/AdapterFormNext.cs b/IOB-WIN-NEXT/AdapterFormNext.cs
index 22a0a86c..a5800813 100644
--- a/IOB-WIN-NEXT/AdapterFormNext.cs
+++ b/IOB-WIN-NEXT/AdapterFormNext.cs
@@ -59,14 +59,12 @@ namespace IOB_WIN_NEXT
iobObj = new IobFile.IobFileSoitaab(this, IOBConf);
btnStart.Enabled = true;
break;
-#endif
case tipoAdapter.KAWASAKI:
iobObj = new Iob.Kawasaki(this, IOBConf);
btnStart.Enabled = true;
break;
-#if false
case tipoAdapter.IcoelDb:
iobObj = new IobSql.IcoelDb(this, IOBConf);
btnStart.Enabled = true;