From 06c930a7afadf4e33b37f8a856a465233c624453 Mon Sep 17 00:00:00 2001 From: "S.E.Locatelli" Date: Wed, 29 Jun 2022 12:07:15 +0200 Subject: [PATCH 1/3] Update conf da produzione Giacovelli --- IOB-WIN-NEXT/DATA/CONF/GIACO_CEDAX_002.json | 116 +++++++++++++++++- .../DATA/CONF/GIACO_CEDAX_002_MBlock.json | 3 +- IOB-WIN-NEXT/DATA/CONF/GIACO_CEDAX_003.json | 84 +++++++++++++ .../DATA/CONF/GIACO_CEDAX_003_MBlock.json | 3 +- IOB-WIN-NEXT/DATA/CONF/GIACO_CENTERFRIGO.ini | 4 +- IOB-WIN-NEXT/DATA/CONF/GIACO_CENTERFRIGO.json | 32 ++++- .../DATA/CONF/GIACO_CENTERFRIGO_MBlock.json | 6 +- .../DATA/CONF/GIACO_CENTERFRIGO_alarm.json | 50 ++++---- IOB-WIN-NEXT/DATA/CONF/GIACO_ICOEL_001.ini | 1 - IOB-WIN-NEXT/DATA/CONF/GIACO_ICOEL_003.ini | 2 +- 10 files changed, 262 insertions(+), 39 deletions(-) diff --git a/IOB-WIN-NEXT/DATA/CONF/GIACO_CEDAX_002.json b/IOB-WIN-NEXT/DATA/CONF/GIACO_CEDAX_002.json index b3b6ccff..bef5f18f 100644 --- a/IOB-WIN-NEXT/DATA/CONF/GIACO_CEDAX_002.json +++ b/IOB-WIN-NEXT/DATA/CONF/GIACO_CEDAX_002.json @@ -1,5 +1,61 @@ { "mMapWrite": { + "Dose_Staz_1": { + "name": "Dose_Staz_1", + "description": "Dose Stazione 1", + "memAddr": "40024", + "tipoMem": "Int", + "index": 24, + "size": 1, + "func": "MEDIAN", + "period": 90, + "factor": 0.01, + "minVal": 0, + "maxVal": 999999999, + "unit": "%" + }, + "Dose_Staz_2": { + "name": "Dose_Staz_2", + "description": "Dose Stazione 2", + "memAddr": "40025", + "tipoMem": "Int", + "index": 25, + "size": 1, + "func": "MEDIAN", + "period": 90, + "factor": 0.01, + "minVal": 0, + "maxVal": 999999999, + "unit": "%" + }, + "Dose_Staz_3": { + "name": "Dose_Staz_3", + "description": "Dose Stazione 3", + "memAddr": "40026", + "tipoMem": "Int", + "index": 26, + "size": 1, + "func": "MEDIAN", + "period": 90, + "factor": 0.01, + "minVal": 0, + "maxVal": 999999999, + "unit": "%" + }, + "Dose_Staz_4": { + "name": "Dose_Staz_4", + "description": "Dose Stazione 4", + "memAddr": "40027", + "tipoMem": "Int", + "index": 27, + "size": 1, + "func": "MEDIAN", + "period": 90, + "factor": 0.01, + "minVal": 0, + "maxVal": 999999999, + "unit": "%" + } }, "mMapRead": { "A_Stag_H2O": { @@ -19,7 +75,7 @@ "A_Stag_Prod1": { "name": "A_Stag_Prod1", "description": "Linea A Totale Prodotto 1 Stagione", - "memAddr": "41003", + "memAddr": "40003", "tipoMem": "HLPInt", "index": 1003, "size": 2, @@ -33,7 +89,7 @@ "A_Stag_Prod2": { "name": "A_Stag_Prod2", "description": "Linea A Totale Prodotto 2 Stagione", - "memAddr": "41005", + "memAddr": "40005", "tipoMem": "HLPInt", "index": 1005, "size": 2, @@ -169,6 +225,62 @@ "minVal": 0, "maxVal": 999999999, "unit": "l" + }, + "Dose_Staz_1": { + "name": "Dose_Staz_1", + "description": "Dose Stazione 1", + "memAddr": "40024", + "tipoMem": "Int", + "index": 24, + "size": 1, + "func": "MEDIAN", + "period": 90, + "factor": 0.01, + "minVal": 0, + "maxVal": 999999999, + "unit": "%" + }, + "Dose_Staz_2": { + "name": "Dose_Staz_2", + "description": "Dose Stazione 2", + "memAddr": "40025", + "tipoMem": "Int", + "index": 25, + "size": 1, + "func": "MEDIAN", + "period": 90, + "factor": 0.01, + "minVal": 0, + "maxVal": 999999999, + "unit": "%" + }, + "Dose_Staz_3": { + "name": "Dose_Staz_3", + "description": "Dose Stazione 3", + "memAddr": "40026", + "tipoMem": "Int", + "index": 26, + "size": 1, + "func": "MEDIAN", + "period": 90, + "factor": 0.01, + "minVal": 0, + "maxVal": 999999999, + "unit": "%" + }, + "Dose_Staz_4": { + "name": "Dose_Staz_4", + "description": "Dose Stazione 4", + "memAddr": "40027", + "tipoMem": "Int", + "index": 27, + "size": 1, + "func": "MEDIAN", + "period": 90, + "factor": 0.01, + "minVal": 0, + "maxVal": 999999999, + "unit": "%" } } } \ No newline at end of file diff --git a/IOB-WIN-NEXT/DATA/CONF/GIACO_CEDAX_002_MBlock.json b/IOB-WIN-NEXT/DATA/CONF/GIACO_CEDAX_002_MBlock.json index b5e46ee5..6ce9d4fd 100644 --- a/IOB-WIN-NEXT/DATA/CONF/GIACO_CEDAX_002_MBlock.json +++ b/IOB-WIN-NEXT/DATA/CONF/GIACO_CEDAX_002_MBlock.json @@ -1,5 +1,6 @@ { "ReadBlocks": { - "40999": 30 + "40016": 16, + "40999": 32 } } \ No newline at end of file diff --git a/IOB-WIN-NEXT/DATA/CONF/GIACO_CEDAX_003.json b/IOB-WIN-NEXT/DATA/CONF/GIACO_CEDAX_003.json index 60d6a548..0635e72c 100644 --- a/IOB-WIN-NEXT/DATA/CONF/GIACO_CEDAX_003.json +++ b/IOB-WIN-NEXT/DATA/CONF/GIACO_CEDAX_003.json @@ -1,5 +1,47 @@ { "mMapWrite": { + "Dose_Staz_1": { + "name": "Dose_Staz_1", + "description": "Dose Stazione 1", + "memAddr": "40024", + "tipoMem": "Int", + "index": 24, + "size": 1, + "func": "MEDIAN", + "period": 90, + "factor": 0.01, + "minVal": 0, + "maxVal": 999999999, + "unit": "%" + }, + "Dose_Staz_2": { + "name": "Dose_Staz_2", + "description": "Dose Stazione 2", + "memAddr": "40025", + "tipoMem": "Int", + "index": 25, + "size": 1, + "func": "MEDIAN", + "period": 90, + "factor": 0.01, + "minVal": 0, + "maxVal": 999999999, + "unit": "%" + }, + "Dose_Staz_3": { + "name": "Dose_Staz_3", + "description": "Dose Stazione 3", + "memAddr": "40026", + "tipoMem": "Int", + "index": 26, + "size": 1, + "func": "MEDIAN", + "period": 90, + "factor": 0.01, + "minVal": 0, + "maxVal": 999999999, + "unit": "%" + } }, "mMapRead": { "Stag_H2O": { @@ -113,6 +155,48 @@ "minVal": 0, "maxVal": 999999999, "unit": "l" + }, + "Dose_Staz_1": { + "name": "Dose_Staz_1", + "description": "Dose Stazione 1", + "memAddr": "40024", + "tipoMem": "Int", + "index": 24, + "size": 1, + "func": "MEDIAN", + "period": 90, + "factor": 0.01, + "minVal": 0, + "maxVal": 999999999, + "unit": "%" + }, + "Dose_Staz_2": { + "name": "Dose_Staz_2", + "description": "Dose Stazione 2", + "memAddr": "40025", + "tipoMem": "Int", + "index": 25, + "size": 1, + "func": "MEDIAN", + "period": 90, + "factor": 0.01, + "minVal": 0, + "maxVal": 999999999, + "unit": "%" + }, + "Dose_Staz_3": { + "name": "Dose_Staz_3", + "description": "Dose Stazione 3", + "memAddr": "40026", + "tipoMem": "Int", + "index": 26, + "size": 1, + "func": "MEDIAN", + "period": 90, + "factor": 0.01, + "minVal": 0, + "maxVal": 999999999, + "unit": "%" } } } \ No newline at end of file diff --git a/IOB-WIN-NEXT/DATA/CONF/GIACO_CEDAX_003_MBlock.json b/IOB-WIN-NEXT/DATA/CONF/GIACO_CEDAX_003_MBlock.json index b5e46ee5..6ce9d4fd 100644 --- a/IOB-WIN-NEXT/DATA/CONF/GIACO_CEDAX_003_MBlock.json +++ b/IOB-WIN-NEXT/DATA/CONF/GIACO_CEDAX_003_MBlock.json @@ -1,5 +1,6 @@ { "ReadBlocks": { - "40999": 30 + "40016": 16, + "40999": 32 } } \ No newline at end of file diff --git a/IOB-WIN-NEXT/DATA/CONF/GIACO_CENTERFRIGO.ini b/IOB-WIN-NEXT/DATA/CONF/GIACO_CENTERFRIGO.ini index 6652c783..80cf0d15 100644 --- a/IOB-WIN-NEXT/DATA/CONF/GIACO_CENTERFRIGO.ini +++ b/IOB-WIN-NEXT/DATA/CONF/GIACO_CENTERFRIGO.ini @@ -27,7 +27,6 @@ ADDR_READ=40001 ADDR_WRITE=41000 SIZE_READ=2400 SIZE_WRITE=0 -;HR_BASE_ADDR=40000 HR_BASE_ADDR=40000 DELTA_BASE=0 @@ -63,10 +62,11 @@ timerIntMs=100 minWait=50 maxWait=150 + ; conf parametri memoria READ/WRITE PARAM_CONF=GIACO_CENTERFRIGO.json -NO_PING=TRUE +NO_PING=FALSE ; conf blocchi memoria x READ MEM_BLOCK=GIACO_CENTERFRIGO_MBlock.json ; conf aree allarme diff --git a/IOB-WIN-NEXT/DATA/CONF/GIACO_CENTERFRIGO.json b/IOB-WIN-NEXT/DATA/CONF/GIACO_CENTERFRIGO.json index be1a88d3..7b06ce3d 100644 --- a/IOB-WIN-NEXT/DATA/CONF/GIACO_CENTERFRIGO.json +++ b/IOB-WIN-NEXT/DATA/CONF/GIACO_CENTERFRIGO.json @@ -1,5 +1,33 @@ { "mMapWrite": { + "TestWrite": { + "name": "TestWrite", + "description": "Test Scrittura", + "memAddr": "41621", + "tipoMem": "Real", + "index": 1621, + "size": 2, + "func": "MEDIAN", + "period": 60, + "factor": 1, + "minVal": -100, + "maxVal": 100, + "unit": "°C" + }, + "SetPoint_Tunnel": { + "name": "SetPoint_Tunnel", + "description": "Setpoint Tunnel", + "memAddr": "41560", + "tipoMem": "Real", + "index": 1560, + "size": 2, + "func": "MEDIAN", + "period": 60, + "factor": 1, + "minVal": -100, + "maxVal": 100, + "unit": "°C" + } }, "mMapRead": { "Temp_Tunnel": { @@ -131,9 +159,9 @@ "SetPoint_Cella_04": { "name": "SetPoint_Cella_04", "description": "Setpoint Cella 04", - "memAddr": "42080", + "memAddr": "41840", "tipoMem": "Real", - "index": 2080, + "index": 1840, "size": 2, "func": "MEDIAN", "period": 60, diff --git a/IOB-WIN-NEXT/DATA/CONF/GIACO_CENTERFRIGO_MBlock.json b/IOB-WIN-NEXT/DATA/CONF/GIACO_CENTERFRIGO_MBlock.json index bced460b..da89c677 100644 --- a/IOB-WIN-NEXT/DATA/CONF/GIACO_CENTERFRIGO_MBlock.json +++ b/IOB-WIN-NEXT/DATA/CONF/GIACO_CENTERFRIGO_MBlock.json @@ -1,9 +1,8 @@ { "ReadBlocks": { - //"41060": 4, - //"41300": 4, "41500": 32, "41532": 32, + "41616": 32, "41650": 32, "41682": 32, "41800": 32, @@ -21,7 +20,6 @@ "42910": 44, "43040": 44, "43160": 44, - "43280": 44, - //"43400": 4 + "43280": 44 } } \ No newline at end of file diff --git a/IOB-WIN-NEXT/DATA/CONF/GIACO_CENTERFRIGO_alarm.json b/IOB-WIN-NEXT/DATA/CONF/GIACO_CENTERFRIGO_alarm.json index 092c7820..2220b2a4 100644 --- a/IOB-WIN-NEXT/DATA/CONF/GIACO_CENTERFRIGO_alarm.json +++ b/IOB-WIN-NEXT/DATA/CONF/GIACO_CENTERFRIGO_alarm.json @@ -124,31 +124,31 @@ "##" ] }, - //{ - // "description": "Allarmi Cella 04", - // "tipoMem": "DInt", - // "memAddr": "42164", - // "index": 2164, - // "size": 2, - // "messages": [ - // "ALLARME ALTA TEMPERATURA AMBIENTE CELLA 04", - // "##", - // "##", - // "##", - // "##", - // "##", - // "##", - // "##", - // "##", - // "##", - // "ALLARME CUMULATIVO CELLA 04", - // "##", - // "##", - // "##", - // "##", - // "##" - // ] - //}, +// { +// "description": "Allarmi Cella 04", +// "tipoMem": "DInt", +// "memAddr": "42164", +// "index": 2164, +// "size": 2, +// "messages": [ +// "ALLARME ALTA TEMPERATURA AMBIENTE CELLA 04", +// "##", +// "##", +// "##", +// "##", +// "##", +// "##", +// "##", +// "##", +// "##", +// "ALLARME CUMULATIVO CELLA 04", +// "##", +// "##", +// "##", +// "##", +// "##" +// ] +// }, { "description": "Allarmi Sala Bassa", "tipoMem": "DInt", diff --git a/IOB-WIN-NEXT/DATA/CONF/GIACO_ICOEL_001.ini b/IOB-WIN-NEXT/DATA/CONF/GIACO_ICOEL_001.ini index 7eee9efe..1e80902f 100644 --- a/IOB-WIN-NEXT/DATA/CONF/GIACO_ICOEL_001.ini +++ b/IOB-WIN-NEXT/DATA/CONF/GIACO_ICOEL_001.ini @@ -3,7 +3,6 @@ ;Centro di lavoro OpcUa CNCTYPE=OpcUaOmronIcoel PING_MS_TIMEOUT=500 -IOB_NAME=GIACO_ICOEL [MACHINE] VENDOR=ICOEL diff --git a/IOB-WIN-NEXT/DATA/CONF/GIACO_ICOEL_003.ini b/IOB-WIN-NEXT/DATA/CONF/GIACO_ICOEL_003.ini index 4210d3d7..249ff7e5 100644 --- a/IOB-WIN-NEXT/DATA/CONF/GIACO_ICOEL_003.ini +++ b/IOB-WIN-NEXT/DATA/CONF/GIACO_ICOEL_003.ini @@ -69,7 +69,7 @@ ENABLE_CLI_RESTART=TRUE SyncStateDb=localhost\sqlexpress SyncStateUser=egalware SyncStatePwd=egalware2022 -SyncStateCTout=300 +SyncStateCTout= ; clock base (da 10ms) timerIntMs=20 From 4d30ea9085782ba223be74bda067b4895dee1938 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Thu, 30 Jun 2022 11:29:59 +0200 Subject: [PATCH 2/3] Update SIM allarmi con invio --- IOB-WIN-NEXT/DATA/CONF/MAIN.ini | 2 +- IOB-WIN-NEXT/DATA/CONF/SIMUL_01.ini | 2 +- IOB-WIN-NEXT/IobSimula.cs | 28 ++++++++++++++++++++++++---- 3 files changed, 26 insertions(+), 6 deletions(-) diff --git a/IOB-WIN-NEXT/DATA/CONF/MAIN.ini b/IOB-WIN-NEXT/DATA/CONF/MAIN.ini index 69ef5324..8f35d76f 100644 --- a/IOB-WIN-NEXT/DATA/CONF/MAIN.ini +++ b/IOB-WIN-NEXT/DATA/CONF/MAIN.ini @@ -82,6 +82,6 @@ CLI_INST=SteamWareSim ;STARTLIST=GIACO_ICOEL_002 ;STARTLIST=GIACO_CENTERFRIGO ;STARTLIST=GIACO_NWSE -STARTLIST=GIACO_CEDAX_001 +STARTLIST=SIMUL_01 MAXCNC=10 \ No newline at end of file diff --git a/IOB-WIN-NEXT/DATA/CONF/SIMUL_01.ini b/IOB-WIN-NEXT/DATA/CONF/SIMUL_01.ini index 67eae433..96a4c89f 100644 --- a/IOB-WIN-NEXT/DATA/CONF/SIMUL_01.ini +++ b/IOB-WIN-NEXT/DATA/CONF/SIMUL_01.ini @@ -46,7 +46,7 @@ MIN_DURATA_ODL=240 ; per il simulatore: 50|1 = WAIT 50, DURATION 1 con riferimento al PERIODO base (PER_BASE in ms, default 1 secondo) PER_BASE=10100 SIM_PZCNT=5|1 -SIM_ALARM=1000|20 +SIM_ALARM=500|20 SIM_MANU=50|6 ; indica gestione e simulazione bit 5 --> slow SIM_SLOW=3600|20 diff --git a/IOB-WIN-NEXT/IobSimula.cs b/IOB-WIN-NEXT/IobSimula.cs index f3e9c599..7e41b6f9 100644 --- a/IOB-WIN-NEXT/IobSimula.cs +++ b/IOB-WIN-NEXT/IobSimula.cs @@ -139,6 +139,11 @@ namespace IOB_WIN_NEXT lastWarnODL = adesso; lastEvCheck = adesso; lastSimData = adesso; + // setup allarmi simulati + for (int i = 1; i <= 8; i++) + { + alarmMessages.Add($"Allarme {i:000}"); + } // sistemo parametri x simulazione... if (cIobConf.optPar.Count > 0) { @@ -198,6 +203,10 @@ namespace IOB_WIN_NEXT { } + private Random rnd = new Random(); + private int currSimAlarmCode = 0; + private List alarmMessages = new List(); + /// /// Effettua decodifica aree memoria alla bitmap usata x MAPO /// @@ -329,12 +338,24 @@ namespace IOB_WIN_NEXT { // segnalo BIT B_input += (1 << 3); + // se non ancora fatto, simulo insorgenza allarme + if (currSimAlarmCode == 0) + { + // simulo una bitmap di max 8 allarmi, 1..255 + currSimAlarmCode = rnd.Next(1, 255); + // invio allarme, 0 --> sim + sendAlarmVariations("SIM_BANK", 0, 0, (uint)currSimAlarmCode, alarmMessages); + } // decremento duration bit3.duration--; // controllo se sia scaduta la duration... in quel caso reset... if (bit3.duration <= 0) { bit3 = setupSimPar("SIM_ALARM"); + // invio fine allarme: sim --> 0 + sendAlarmVariations("SIM_BANK", 0, (uint)currSimAlarmCode, 0, alarmMessages); + // simulo terminazione allarme + currSimAlarmCode = 0; } } else if (bit6.wait <= 0) @@ -580,7 +601,6 @@ namespace IOB_WIN_NEXT int.TryParse(param[0], out answ.wait); int.TryParse(param[1], out answ.duration); // aggiongo noise, +/- 40%... - Random rnd = new Random(); int noise = rnd.Next(1, answ.wait * 40 / 100); answ.wait += noise - (answ.wait * 20 / 100); } @@ -892,13 +912,13 @@ namespace IOB_WIN_NEXT if (bit5 != null) bit5.wait--; - if (simDich != null) + if (simDich != null) simDich.wait--; - if (simRC != null) + if (simRC != null) simRC.wait--; - if (simRS != null) + if (simRS != null) simRS.wait--; } catch From 4b3ed4ce96df0d6e9c848c9c81c0807a6a32f879 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Thu, 30 Jun 2022 11:30:34 +0200 Subject: [PATCH 3/3] ModbusTCP: - Fix gestione scrittura modbus, considerando deltaBase value --- IOB-WIN-NEXT/IobModbusTCP.cs | 15 +++++---------- IOB-WIN-NEXT/IobModbusTCPCenterfrigo.cs | 6 ------ 2 files changed, 5 insertions(+), 16 deletions(-) diff --git a/IOB-WIN-NEXT/IobModbusTCP.cs b/IOB-WIN-NEXT/IobModbusTCP.cs index 23f59779..6f6de41f 100644 --- a/IOB-WIN-NEXT/IobModbusTCP.cs +++ b/IOB-WIN-NEXT/IobModbusTCP.cs @@ -548,7 +548,7 @@ namespace IOB_WIN_NEXT { try { - currPLC.WriteMultipleRegisters(startAddr, currRegVal); + currPLC.WriteMultipleRegisters(startAddr + deltaBase, currRegVal); answ = true; } catch @@ -1110,11 +1110,6 @@ namespace IOB_WIN_NEXT /// private double deltaVal = 0; - /// - /// Indirizzo di base x fare il calcolo di dove leggere in ModBus - /// - private int HoldRegBaseAddr = 40001; - #endregion Private Fields #region Private Properties @@ -1222,20 +1217,20 @@ namespace IOB_WIN_NEXT /// private static int getScaledInt(dataConf currMem, bool isWrite = false) { - int valInt=0; + int valInt = 0; double temp; // prima faccio eventuale fattore di scala... - double.TryParse(currMem.value.Replace(".",","), out temp); + double.TryParse(currMem.value.Replace(".", ","), out temp); //int.TryParse(currMem.value, out valInt); if (currMem.factor != 1) { if (isWrite) { - valInt = (int)(temp*10 / currMem.factor)/10; + valInt = (int)(temp * 10 / currMem.factor) / 10; } else { - valInt = (int)(temp*10 * currMem.factor)/10; + valInt = (int)(temp * 10 * currMem.factor) / 10; } } diff --git a/IOB-WIN-NEXT/IobModbusTCPCenterfrigo.cs b/IOB-WIN-NEXT/IobModbusTCPCenterfrigo.cs index 5ae72b4d..47302ac3 100644 --- a/IOB-WIN-NEXT/IobModbusTCPCenterfrigo.cs +++ b/IOB-WIN-NEXT/IobModbusTCPCenterfrigo.cs @@ -46,12 +46,6 @@ namespace IOB_WIN_NEXT { try { - -#if false - // test lettura da eliminare - testRead(); -#endif - processDynData(); } catch (Exception exc)