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