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());