diff --git a/CVCncLib/testSam.dll b/CVCncLib/testSam.dll index b4970795..4fa74bea 100644 Binary files a/CVCncLib/testSam.dll and b/CVCncLib/testSam.dll differ diff --git a/IOB-UT/baseUtils.cs b/IOB-UT/baseUtils.cs index ec1c390c..efcafa8c 100644 --- a/IOB-UT/baseUtils.cs +++ b/IOB-UT/baseUtils.cs @@ -1129,6 +1129,39 @@ namespace IOB_UT /// public string value { get; set; } } + /// + /// Struttura conf tipo dati + /// + public class dataConfTSVC: dataConf + { + /// + /// Tipo di funzione da applicare al dato + /// + [JsonConverter(typeof(StringEnumConverter))] + public VC_func func { get; set; } + /// + /// Periodo campionamento + /// + public int period { get; set; } + } + /// + /// Struttura conf memorie SIEMENS + /// + public class siemensMemMap + { + + /// + /// Parametri ammessi per IOB x scrittura + /// + public Dictionary mMapWrite = new Dictionary(); + + + /// + /// Parametri ammessi per IOB x lettura + /// + public Dictionary mMapRead = new Dictionary(); + } + /// /// Elenco task ammessi /// diff --git a/IOB-WIN/DATA/CONF/INTERCL_01.bck.json b/IOB-WIN/DATA/CONF/INTERCL_01.bck.json deleted file mode 100644 index 74b3b3d7..00000000 --- a/IOB-WIN/DATA/CONF/INTERCL_01.bck.json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "Parameters": [ - { - "TKey": "kgParz", - "TValue": { - "name": "kgParz", - "type": "Int", - "index": 66, - "size": 2, - "value": "0" - } - }, - //{ - // "key": "set_th", - // "value": { - // "name": "set_th", - // "type": "Int", - // "index": 72, - // "size": 2, - // "value": "0" - // } - //}, - //{ - // "key": "set_c", - // "value": { - // "name": "set_c", - // "type": "Real", - // "index": 74, - // "size": 4, - // "value": "0" - // } - //}, - //{ - // "key": "aria_1", - // "value": { - // "name": "aria_1", - // "type": "Int", - // "index": 78, - // "size": 2, - // "value": "0" - // } - //}, - //{ - // "key": "aria_2", - // "value": { - // "name": "aria_2", - // "type": "Int", - // "index": 80, - // "size": 2, - // "value": "0" - // } - //}, - //{ - // "key": "setMmH20", - // "value": { - // "name": "setMmH20", - // "type": "Real", - // "index": 82, - // "size": 4, - // "value": "0" - // } - //}, - { - "TKey": "rpmci", - "TValue": { - "name": "rpmci", - "type": "Int", - "index": 86, - "size": 2, - "value": "0" - } - } - ] -} \ No newline at end of file diff --git a/IOB-WIN/DATA/CONF/INTERCL_01.ini b/IOB-WIN/DATA/CONF/INTERCL_01.ini index bcf63e4d..516c6fd3 100644 --- a/IOB-WIN/DATA/CONF/INTERCL_01.ini +++ b/IOB-WIN/DATA/CONF/INTERCL_01.ini @@ -57,17 +57,6 @@ PZCOUNT_MODE=STD.DB1275.DBDW4 DISABLE_PZCOUNT=TRUE ENABLE_DYN_DATA=TRUE FORCE_DYN_DATA=TRUE -TSVC_T_Attuale_Cil=MAX:5 -TSVC_Bruc_0_100=MAX:5 -TSVC_Dep_Cil_mmH2O=MAX:5 -TSVC_Asp_0_100=MAX:5 -TSVC_Ampere_Asp=MAX:5 -TSVC_Temp_Filtro=MAX:5 -TSVC_Ampere_Cil=MAX:5 -TSVC_Flowrate=MAX:5 -TSVC_Ampere_Dosat=MAX:5 -TSVC_Tot_Parz_Dosatore=MAX:5 -TSVC_Tot_Dosatore=MAX:5 ; conf parametri x gestione invio dati "ricetta" PARAM_CONF=INTERCL_01.json diff --git a/IOB-WIN/DATA/CONF/INTERCL_01.json b/IOB-WIN/DATA/CONF/INTERCL_01.json index e72462bd..0254c249 100644 --- a/IOB-WIN/DATA/CONF/INTERCL_01.json +++ b/IOB-WIN/DATA/CONF/INTERCL_01.json @@ -1,51 +1,154 @@ { - "kgParz": { - "name": "kgParz", - "tipoMem": "Int", - "index": 66, - "size": 2, - "value": "0" + "mMapWrite": { + "kgParz": { + "name": "kgParz", + "tipoMem": "Int", + "index": 66, + "size": 2, + "value": "0" + }, + "set_th": { + "name": "set_th", + "tipoMem": "Int", + "index": 72, + "size": 2, + "value": "0" + }, + "set_c": { + "name": "set_c", + "tipoMem": "Real", + "index": 74, + "size": 4, + "value": "0" + }, + "aria_1": { + "name": "aria_1", + "tipoMem": "Int", + "index": 78, + "size": 2, + "value": "0" + }, + "aria_2": { + "name": "aria_2", + "tipoMem": "Int", + "index": 80, + "size": 2, + "value": "0" + }, + "setMmH20": { + "name": "setMmH20", + "tipoMem": "Real", + "index": 82, + "size": 4, + "value": "0" + }, + "rpmci": { + "name": "rpmci", + "tipoMem": "Int", + "index": 86, + "size": 2, + "value": "0" + } }, - "set_th": { - "name": "set_th", - "tipoMem": "Int", - "index": 72, - "size": 2, - "value": "0" - }, - "set_c": { - "name": "set_c", - "tipoMem": "Real", - "index": 74, - "size": 4, - "value": "0" - }, - "aria_1": { - "name": "aria_1", - "tipoMem": "Int", - "index": 78, - "size": 2, - "value": "0" - }, - "aria_2": { - "name": "aria_2", - "tipoMem": "Int", - "index": 80, - "size": 2, - "value": "0" - }, - "setMmH20": { - "name": "setMmH20", - "tipoMem": "Real", - "index": 82, - "size": 4, - "value": "0" - }, - "rpmci": { - "name": "rpmci", - "tipoMem": "Int", - "index": 86, - "size": 2, - "value": "0" + "mMapRead": { + "T_Attuale_Cil": { + "name": "T_Attuale_Cil", + "tipoMem": "Real", + "index": 16, + "size": 4, + "func": "MAX", + "period": 5, + "value": "0" + }, + "Bruc_0_100": { + "name": "Bruc_0_100", + "tipoMem": "Int", + "index": 28, + "size": 2, + "func": "MAX", + "period": 5, + "value": "0" + }, + "Dep_Cil_mmH2O": { + "name": "Dep_Cil_mmH2O", + "tipoMem": "Int", + "index": 30, + "size": 2, + "func": "MAX", + "period": 5, + "value": "0" + }, + "Asp_0_100": { + "name": "Asp_0_100", + "tipoMem": "Int", + "index": 32, + "size": 2, + "func": "MAX", + "period": 5, + "value": "0" + }, + "Ampere_Asp": { + "name": "Ampere_Asp", + "tipoMem": "Int", + "index": 34, + "size": 2, + "func": "MAX", + "period": 5, + "value": "0" + }, + "Temp_Filtro": { + "name": "Temp_Filtro", + "tipoMem": "Int", + "index": 36, + "size": 2, + "func": "MAX", + "period": 5, + "value": "0" + }, + "Ampere_Cil": { + "name": "Ampere_Cil", + "tipoMem": "Int", + "index": 38, + "size": 2, + "func": "MAX", + "period": 5, + "value": "0" + }, + "Flowrate": { + "name": "Flowrate", + "tipoMem": "Int", + "index": 40, + "size": 2, + "func": "MAX", + "period": 5, + "value": "0" + }, + "Ampere_Dosat": { + "name": "Ampere_Dosat", + "tipoMem": "Int", + "index": 42, + "size": 2, + "func": "MAX", + "period": 5, + "value": "0" + }, + "Tot_Parz_Dosatore": { + "name": "Tot_Parz_Dosatore", + "tipoMem": "DInt", + "index": 48, + "size": 4, + "func": "MAX", + "period": 5, + "value": "0" + }, + "Tot_Dosatore": { + "name": "Tot_Dosatore", + "tipoMem": "DInt", + "index": 52, + "size": 4, + "func": "MAX", + "period": 5, + "value": "0" + } } -} +} \ No newline at end of file diff --git a/IOB-WIN/IOB-WIN.csproj b/IOB-WIN/IOB-WIN.csproj index 825480ca..ac358569 100644 --- a/IOB-WIN/IOB-WIN.csproj +++ b/IOB-WIN/IOB-WIN.csproj @@ -234,9 +234,6 @@ Always - - Always - Always diff --git a/IOB-WIN/IobGeneric.cs b/IOB-WIN/IobGeneric.cs index dbe80bd4..0a276441 100644 --- a/IOB-WIN/IobGeneric.cs +++ b/IOB-WIN/IobGeneric.cs @@ -1986,11 +1986,11 @@ namespace IOB_WIN // se ORA sono online riporto... if (answ) { - lgInfo("IOB ONLINE"); + lgInfo("IOB ONLINE for server MP/IO"); } else { - lgInfo("IOB OFFLINE"); + lgInfo("IOB OFFLINE for server MP/IO"); } // salvo nuovo status... IobOnline = answ; diff --git a/IOB-WIN/IobSiemens.cs b/IOB-WIN/IobSiemens.cs index 3eecc98e..44030bc8 100644 --- a/IOB-WIN/IobSiemens.cs +++ b/IOB-WIN/IobSiemens.cs @@ -23,16 +23,6 @@ namespace IOB_WIN #region area componenti base -#if false - /// - /// Configurazione valori da LEGGERE dal PLC - /// - public otherData[] memMapR; - /// - /// Configurazione valori da SCRIVERE nel PLC - /// - public otherData[] memMapW; -#endif /// /// Byte dimensione buffer dati memoria (da file map) /// @@ -53,10 +43,11 @@ namespace IOB_WIN /// parametri di connessione /// protected connParamS7 parametri; + /// - /// Parametri ammessi epr IOB (opzionali da json) + /// Struttura memoria SIEMENS x lettura/scrittura da JSON file /// - public Dictionary iobParameters = new Dictionary(); + public siemensMemMap memMap = new siemensMemMap(); #endregion @@ -640,7 +631,38 @@ namespace IOB_WIN { try { - iobParameters = JsonConvert.DeserializeObject>(jsonData); + memMap = JsonConvert.DeserializeObject(jsonData); + // se ho variabili read --> genero dati TSVC... + if (memMap.mMapRead.Count > 0) + { + TSVC_Data.Clear(); + LastTSVC.Clear(); + lgInfo($"Trovate {memMap.mMapRead.Count} chiavi TSVC"); + VCData currConf; + int periodo = 0; + VC_func funz = VC_func.POINT; + // accodo nella conf... + foreach (var item in memMap.mMapRead) + { + funz = item.Value.func; + periodo = item.Value.period; + currConf = new VCData() + { + Funzione = funz, + Period = periodo, + DTStart = DateTime.Now.AddHours(-1), + dataArray = new List() + }; + TSVC_Data.Add(item.Key, currConf); + } + // documento... + foreach (var item in TSVC_Data) + { + lgInfo($"TSVC: {item.Key} | periodo: {item.Value.Period} | funz: {item.Value.Funzione}"); + // salvo i valori PREC... + LastTSVC.Add(item.Key, 0); + } + } } catch (Exception exc) { diff --git a/IOB-WIN/IobSiemensAt2001.cs b/IOB-WIN/IobSiemensAt2001.cs index 6b80cb1d..3be4ab16 100644 --- a/IOB-WIN/IobSiemensAt2001.cs +++ b/IOB-WIN/IobSiemensAt2001.cs @@ -33,6 +33,7 @@ namespace IOB_WIN { lgInfo("NEW IOB SIEMENS versione VIPA"); lastPLCWatchDog = DateTime.Now.AddMinutes(-1); +#if false // imposto i parametri speciali x calcolo... var chiaviTSVC = findOptPar("TSVC"); if (chiaviTSVC.Count > 0) @@ -64,7 +65,8 @@ namespace IOB_WIN // salvo i valori PREC... LastTSVC.Add(item.Key, 0); } - } + } +#endif } #region Metodi specifici (da verificare/completare in implementazione) @@ -208,7 +210,7 @@ namespace IOB_WIN try { // campi REAL - double T_Attuale_Cil = S7.Net.Types.DInt.FromByteArray(RawInput.Skip(16).Take(4).ToArray()); + double T_Attuale_Cil = S7.Net.Types.Double.FromByteArray(RawInput.Skip(16).Take(4).ToArray()); int Bruc_0_100 = S7.Net.Types.Int.FromByteArray(RawInput.Skip(28).Take(2).ToArray()); int Dep_Cil_mmH2O = S7.Net.Types.Int.FromByteArray(RawInput.Skip(30).Take(2).ToArray()); int Asp_0_100 = S7.Net.Types.Int.FromByteArray(RawInput.Skip(32).Take(2).ToArray()); @@ -216,7 +218,7 @@ namespace IOB_WIN int Temp_Filtro = S7.Net.Types.Int.FromByteArray(RawInput.Skip(36).Take(2).ToArray()); int Ampere_Cil = S7.Net.Types.Int.FromByteArray(RawInput.Skip(38).Take(2).ToArray()); int Flowrate = S7.Net.Types.Int.FromByteArray(RawInput.Skip(40).Take(2).ToArray()); - int Ampere_Dosat = S7.Net.Types.Int.FromByteArray(RawInput.Skip(38).Take(2).ToArray()); + int Ampere_Dosat = S7.Net.Types.Int.FromByteArray(RawInput.Skip(42).Take(2).ToArray()); int Tot_Parz_Dosatore = S7.Net.Types.DInt.FromByteArray(RawInput.Skip(48).Take(4).ToArray()); int Tot_Dosatore = S7.Net.Types.DInt.FromByteArray(RawInput.Skip(52).Take(4).ToArray());