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 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////