diff --git a/CMS_CORE_Library/Models/ThermoModels.cs b/CMS_CORE_Library/Models/ThermoModels.cs index e696472..2d89427 100644 --- a/CMS_CORE_Library/Models/ThermoModels.cs +++ b/CMS_CORE_Library/Models/ThermoModels.cs @@ -498,17 +498,17 @@ namespace CMS_CORE_Library.Models /// /// Define if camera is active for channel /// - public bool ThermocamActive { get; set; } = false; + public bool TCamActive { get; set; } = false; /// - /// Actual value from last ThermoCam image acquisition (° Celsius) + /// Actual value from last ThermoCam image acquisition (1/10 ° Celsius) /// - public double ThermocamActualTemp { get; set; } = 0; + public short TCamTempActual { get; set; } = 0; /// - /// Setpoint from HMI (° Celsius) + /// Setpoint from HMI (1/10 ° Celsius) /// - public byte ThermocamSetpoint { get; set; } = 0; + public short TCamTempSet { get; set; } = 0; #endregion Properties @@ -537,11 +537,11 @@ namespace CMS_CORE_Library.Models return false; if (SetpointPLC != item.SetpointPLC) return false; - if (ThermocamActive != item.ThermocamActive) + if (TCamActive != item.TCamActive) return false; - if (ThermocamActualTemp != item.ThermocamActualTemp) + if (TCamTempActual != item.TCamTempActual) return false; - if (ThermocamSetpoint != item.ThermocamSetpoint) + if (TCamTempSet != item.TCamTempSet) return false; return true; diff --git a/CMS_CORE_Library/NcThermo.cs b/CMS_CORE_Library/NcThermo.cs index 2614fd9..bb125ad 100644 --- a/CMS_CORE_Library/NcThermo.cs +++ b/CMS_CORE_Library/NcThermo.cs @@ -674,9 +674,10 @@ namespace CMS_CORE_Library /// /// Get current Warmers Channels list /// + /// updates only READ parameters (false = update all data) /// /// - public abstract CmsError PLC_RWarmerChannelList(ref Dictionary currWarmerChannelList); + public abstract CmsError PLC_RWarmerChannelList(bool useCache, ref Dictionary currWarmerChannelList); /// /// Set current Warmers Channels setpoints /// diff --git a/CMS_CORE_Library/S7Net/Nc_S7Net.cs b/CMS_CORE_Library/S7Net/Nc_S7Net.cs index 154c964..cba105c 100644 --- a/CMS_CORE_Library/S7Net/Nc_S7Net.cs +++ b/CMS_CORE_Library/S7Net/Nc_S7Net.cs @@ -2345,26 +2345,34 @@ namespace CMS_CORE_Library.S7Net /// /// Get current Warmers Channels list /// + /// updates only READ parameters (false = update all data) /// /// - public override CmsError PLC_RWarmerChannelList(ref Dictionary currWarmerChannelList) + public override CmsError PLC_RWarmerChannelList(bool useCache, ref Dictionary currWarmerChannelList) { - // refresh stato canale + // refresh stato canale ESP[i] refreshRiscStatus(); - // refresh % attuale + // refresh % lavoro attuale OVp[i] refreshRiscPerc(); - // refresh setpoint PLC + // refresh corrente attuale Ich[i] refreshRiscActCurr(); - // refresh setpoint HMI - refreshRiscSetpointHMI(); - // refresh setpoint PLC + // refresh setpoint PLC % (era 514 --> 627) refreshRiscSetpointPLC(); - // refresh dati termocamera - refreshRiscTermoCamAbilit(); + // refresh dati status/comando termocamera refreshRiscTermoCamCommStatus(); - refreshRiscTermoCamTempAct(); - refreshRiscTermoCamTempSet(); + + if (!useCache) + { + // refresh setpoint HMI canale % | Write + refreshRiscSetpointHMI(); + // refresh abilitazione canale x thermoCam | Write + refreshRiscTermoCamAbilit(); + // refresh ultima temp canale letta da thermoCam | Write + refreshRiscTermoCamTempAct(); + // refresh temp canale impostata x thermoCam | Write + refreshRiscTermoCamTempSet(); + } // copio lista act in output currWarmerChannelList = ThermoWarmChannels; @@ -2953,28 +2961,170 @@ namespace CMS_CORE_Library.S7Net /// private void refreshRiscTermoCamTempSet() { - // FIXME TODO ???? da dove prendere info? + // leggo DB624 x Setpoint Temp richiesti + List currMem = new List(); + + // leggo da PLC a array di byte di appoggio... + CmsError libraryError = MEM_RWShortList(R, 0, TCAM_TEMP_REQ_DATA.MemType, TCAM_TEMP_REQ_DATA.Address, TCAM_TEMP_REQ_DATA.SubAddress, TCAM_TEMP_REQ_DATA.Size / 2, ref currMem); + + // copio! controllo SE ho dati... + if (currMem.Count > 0) + { + for (int i = 0; i < TCAM_TEMP_REQ_DATA.Size / 2; i++) + { + // cerco id + 1 (su memoria è base 0) + if (ThermoWarmChannels.ContainsKey(i + 1)) + { + try + { + ThermoWarmChannels[i + 1].TCamTempSet = currMem[i]; + } + catch + { } + } + else + { + ThermoWarmChannels.Add(i + 1, new ThermoModels.WarmerChannel() + { + IdChannel = i + 1, + TCamTempSet = currMem[i] + }); + } + } + } + else + { + libraryError = S7_PLC_EMPTY_READ; + } } /// /// Refresh dati ThermoCamera dal PLC: ultima temp letta /// private void refreshRiscTermoCamTempAct() { - // FIXME TODO ???? da dove prendere info? + // leggo DB625 x Temp attuale + List currMem = new List(); + + // leggo da PLC a array di byte di appoggio... + CmsError libraryError = MEM_RWShortList(R, 0, TCAM_TEMP_ACT_DATA.MemType, TCAM_TEMP_ACT_DATA.Address, TCAM_TEMP_ACT_DATA.SubAddress, TCAM_TEMP_ACT_DATA.Size / 2, ref currMem); + + // copio! controllo SE ho dati... + if (currMem.Count > 0) + { + for (int i = 0; i < TCAM_TEMP_ACT_DATA.Size / 2; i++) + { + // cerco id + 1 (su memoria è base 0) + if (ThermoWarmChannels.ContainsKey(i + 1)) + { + try + { + ThermoWarmChannels[i + 1].TCamTempActual = currMem[i]; + } + catch + { } + } + else + { + ThermoWarmChannels.Add(i + 1, new ThermoModels.WarmerChannel() + { + IdChannel = i + 1, + TCamTempActual = currMem[i] + }); + } + } + } + else + { + libraryError = S7_PLC_EMPTY_READ; + } } /// /// Refresh dati ThermoCamera dal PLC x area command/status /// private void refreshRiscTermoCamCommStatus() { - // FIXME TODO ???? da dove prendere info? +#if false + // leggo DB614 x area Ich + List currMem = new List(); + + // leggo da PLC a array di byte di appoggio... + CmsError libraryError = MEM_RWByteList(R, 0, RISC_CHP_DATA.MemType, RISC_CHP_DATA.Address, RISC_CHP_DATA.SubAddress, 0, RISC_CHP_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_CHP_DATA.Size; i++) + { + // cerco id + 1 (su memoria è base 0) + if (ThermoWarmChannels.ContainsKey(i + 1)) + { + try + { + ThermoWarmChannels[i + 1].SetpointHMI = memArray[i]; + } + catch + { } + } + else + { + ThermoWarmChannels.Add(i + 1, new ThermoModels.WarmerChannel() + { + IdChannel = i + 1, + SetpointHMI = memArray[i] + }); + } + } + } + else + { + libraryError = S7_PLC_EMPTY_READ; + } +#endif } /// /// Refresh dati ThermoCamera dal PLC x area command/status /// private void refreshRiscTermoCamAbilit() { - // FIXME TODO ???? da dove prendere info? +#if false + // leggo DB664 x abilitazione ch alla termocamera + List currMem = new List(); + + // leggo da PLC a array di byte di appoggio... + CmsError libraryError = MEM_RWByteList(R, 0, TCAM_CH_ENAB_DATA.MemType, TCAM_CH_ENAB_DATA.Address, TCAM_CH_ENAB_DATA.SubAddress, 0, TCAM_CH_ENAB_DATA.Size, ref currMem); + + // copio! controllo SE ho dati... + if (currMem.Count > 0) + { + for (int i = 0; i < TCAM_TEMP_ACT_DATA.Size; i++) + { + // cerco id + 1 (su memoria è base 0) + if (ThermoWarmChannels.ContainsKey(i + 1)) + { + try + { + ThermoWarmChannels[i + 1].TCamActive = currMem[i]; + } + catch + { } + } + else + { + ThermoWarmChannels.Add(i + 1, new ThermoModels.WarmerChannel() + { + IdChannel = i + 1, + TCamActive = currMem[i] + }); + } + } + } + else + { + libraryError = S7_PLC_EMPTY_READ; + } +#endif } /// /// Refresh Canali Riscaldi: SetPoint HMI @@ -3020,11 +3170,11 @@ namespace CMS_CORE_Library.S7Net } } /// - /// Refresh Canali Riscaldi: SetPoint PLC + /// Refresh Canali Riscaldi: SetPoint PLC (% lavoro applicata ATTUALE dal PLC) /// private void refreshRiscSetpointPLC() { - // leggo DB514 x area Ich + // leggo area DB627 (era DB514) x area CHp List currMem = new List(); // leggo da PLC a array di byte di appoggio... @@ -3095,7 +3245,7 @@ namespace CMS_CORE_Library.S7Net } } /// - /// Refresh Canali Riscaldi: Percentuale Attuale + /// Refresh Canali Riscaldi: Percentuale lavoro Attuale /// private void refreshRiscPerc() { @@ -4977,7 +5127,7 @@ namespace CMS_CORE_Library.S7Net // riscaldi internal static MEMORY_CELL RISC_VU_MIN = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 513, 0, 2); internal static MEMORY_CELL RISC_OCC_DATA = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 514, 64, 64); - internal static MEMORY_CELL RISC_PLC_DATA = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 514, 128, 1024); + internal static MEMORY_CELL RISC_PLC_DATA = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 627, 0, 1024); //internal static MEMORY_CELL RISC_PLC_DATA = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 514, 128, 1024); //valore PRE thermoCam internal static MEMORY_CELL RISC_CHP_DATA = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 614, 0, 1024); internal static MEMORY_CELL RISC_CFI_DATA = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 514, 2176, 1024); internal static MEMORY_CELL RISC_ICH_MIN_DATA = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 514, 3200, 4096); @@ -4987,12 +5137,11 @@ namespace CMS_CORE_Library.S7Net internal static MEMORY_CELL RISC_ICH_DATA = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 514, 11776, 4096); // ThermoCamera - internal static MEMORY_CELL TCAM_STAT_DATA = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 626, 0, 2); - internal static MEMORY_CELL TCAM_COMM_DATA = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 626, 2, 2); + internal static MEMORY_CELL TCAM_STATW_DATA = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 626, 0, 2); + internal static MEMORY_CELL TCAM_COMMW_DATA = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 626, 2, 2); internal static MEMORY_CELL TCAM_CH_ENAB_DATA = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 626, 4, 128); internal static MEMORY_CELL TCAM_TEMP_REQ_DATA = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 624, 0, 2048); internal static MEMORY_CELL TCAM_TEMP_ACT_DATA = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 625, 0, 2048); - internal static MEMORY_CELL TCAM_CHP_DATA = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 627, 0, 1024); // produzione