diff --git a/CMS_CORE_Library/Models/DataStructures.cs b/CMS_CORE_Library/Models/DataStructures.cs
index fec634e..723e4c2 100644
--- a/CMS_CORE_Library/Models/DataStructures.cs
+++ b/CMS_CORE_Library/Models/DataStructures.cs
@@ -671,9 +671,9 @@ namespace CMS_CORE_Library.Models
public class WarmerChannel
{
- public ushort IdChannel { get; set; } = 0;
- public byte SetpointThermoCam { get; set; } = 0;
- public byte SetpointPLC { get; set; } = 0;
+ public int IdChannel { get; set; } = 0;
+ public double SetpointThermoCam { get; set; } = 0;
+ public double SetpointPLC { get; set; } = 0;
public byte ChStatus { get; set; } = 0;
public byte PercAct { get; set; } = 0;
diff --git a/CMS_CORE_Library/NcThermo.cs b/CMS_CORE_Library/NcThermo.cs
index ffdb877..d9518e0 100644
--- a/CMS_CORE_Library/NcThermo.cs
+++ b/CMS_CORE_Library/NcThermo.cs
@@ -645,7 +645,7 @@ namespace CMS_CORE_Library
///
///
///
- public abstract CmsError PLC_RWarmerChannelList(ref Dictionary currWarmerChannelList);
+ public abstract CmsError PLC_RWarmerChannelList(ref Dictionary currWarmerChannelList);
///
/// Read power gauge data
///
diff --git a/CMS_CORE_Library/S7Net/Nc_S7Net.cs b/CMS_CORE_Library/S7Net/Nc_S7Net.cs
index 357780f..49749d4 100644
--- a/CMS_CORE_Library/S7Net/Nc_S7Net.cs
+++ b/CMS_CORE_Library/S7Net/Nc_S7Net.cs
@@ -1878,10 +1878,23 @@ namespace CMS_CORE_Library.S7Net
///
///
///
- public override CmsError PLC_RWarmerChannelList(ref Dictionary currWarmerChannelList)
+ public override CmsError PLC_RWarmerChannelList(ref Dictionary currWarmerChannelList)
{
+ // refresh stato canale
+ refreshRiscStatus();
+ // refresh % attuale
+ refreshRiscPerc();
+ // refresh setpoint PLC
+ refreshRiscSetpointPLC();
+ // refresh setpoint termocamera ???
+ refreshRiscSetpointTermoCam();
+
+ // copio lista act in output
+ currWarmerChannelList = ThermoWarmChannels;
+
return NO_ERROR;
}
+
///
/// Get gauge data
///
@@ -1923,6 +1936,7 @@ namespace CMS_CORE_Library.S7Net
{
return NO_ERROR;
}
+
///
/// Refresh recip parameters RT
///
@@ -2086,6 +2100,7 @@ namespace CMS_CORE_Library.S7Net
return answ;
}
}
+
///
/// Refresh ModuleBlock RT
///
@@ -2271,6 +2286,120 @@ namespace CMS_CORE_Library.S7Net
}
}
+ ///
+ /// Refresh Canali Riscaldi: SetPoint Termocamera
+ ///
+ private void refreshRiscSetpointTermoCam()
+ {
+ // FIXME TODO ???? da dove prendere info?
+ }
+ ///
+ /// Refresh Canali Riscaldi: SetPoint PLC
+ ///
+ private void refreshRiscSetpointPLC()
+ {
+ // leggo DB500 x area Ich
+ List currMem = new List();
+
+ // leggo da PLC a array di byte di appoggio...
+ CmsError cmsError = MEM_RWByteList(R, 0, RISC_ICH_DATA.MemType, RISC_ICH_DATA.Address, RISC_ICH_DATA.SubAddress, 0, RISC_ICH_DATA.Size, ref currMem);
+
+ // copio! controllo SE ho dati...
+ if (currMem.Count > 0)
+ {
+ // converto a blocchi di 8 byte...
+ byte[] memArray = currMem.ToArray();
+ double currVal = 0;
+ for (int i = 0; i < RISC_ICH_DATA.Size / 4; i++)
+ {
+ currVal = S7.Net.Types.Double.FromByteArray(memArray.Skip(4 * i).Take(4).ToArray());
+ // cerco id + 1 (su memoria è base 0)
+ if (ThermoWarmChannels.ContainsKey(i + 1))
+ {
+ ThermoWarmChannels[i + 1].SetpointPLC = currVal;
+ }
+ else
+ {
+ ThermoWarmChannels.Add(i + 1, new WarmerChannel()
+ {
+ IdChannel = i + 1,
+ SetpointPLC = currVal
+ });
+ }
+ }
+ }
+ }
+ ///
+ /// Refresh Canali Riscaldi: Percentuale Attuale
+ ///
+ private void refreshRiscPerc()
+ {
+ // leggo DB500 x area OVp
+ List currMem = new List();
+
+ // leggo da PLC a array di byte di appoggio...
+ CmsError cmsError = MEM_RWByteList(R, 0, RISC_OVP_DATA.MemType, RISC_OVP_DATA.Address, RISC_OVP_DATA.SubAddress, 0, RISC_OVP_DATA.Size, ref currMem);
+
+ // copio! controllo SE ho dati...
+ if (currMem.Count > 0)
+ {
+ // converto a blocchi di 8 byte...
+ byte[] memArray = currMem.ToArray();
+ for (int i = 0; i < RISC_OVP_DATA.Size; i++)
+ {
+ // cerco id + 1 (su memoria è base 0)
+ if (ThermoWarmChannels.ContainsKey(i + 1))
+ {
+ ThermoWarmChannels[i + 1].PercAct = memArray[i];
+ }
+ else
+ {
+ ThermoWarmChannels.Add(i + 1, new WarmerChannel()
+ {
+ IdChannel = i + 1,
+ PercAct = memArray[i]
+ });
+ }
+ }
+ }
+ }
+ ///
+ /// Refresh Canali Riscaldi: Status
+ ///
+ private void refreshRiscStatus()
+ {
+ // leggo DB500 x area ESP
+ List currMem = new List();
+
+ // leggo da PLC a array di byte di appoggio...
+ CmsError cmsError = MEM_RWByteList(R, 0, RISC_ESP_DATA.MemType, RISC_ESP_DATA.Address, RISC_ESP_DATA.SubAddress, 0, RISC_ESP_DATA.Size, ref currMem);
+
+ // copio! controllo SE ho dati...
+ if (currMem.Count > 0)
+ {
+ // converto a blocchi di 8 byte...
+ byte[] memArray = currMem.ToArray();
+ for (int i = 0; i < RISC_ESP_DATA.Size; i++)
+ {
+ // cerco id + 1 (su memoria è base 0)
+ if (ThermoWarmChannels.ContainsKey(i + 1))
+ {
+ ThermoWarmChannels[i + 1].ChStatus = memArray[i];
+ }
+ else
+ {
+ ThermoWarmChannels.Add(i + 1, new WarmerChannel()
+ {
+ IdChannel = i + 1,
+ ChStatus = memArray[i]
+ });
+ }
+ }
+ }
+ }
+
+
+
#endregion
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////