Update for ThermoCam reading
This commit is contained in:
@@ -498,17 +498,17 @@ namespace CMS_CORE_Library.Models
|
||||
/// <summary>
|
||||
/// Define if camera is active for channel
|
||||
/// </summary>
|
||||
public bool ThermocamActive { get; set; } = false;
|
||||
public bool TCamActive { get; set; } = false;
|
||||
|
||||
/// <summary>
|
||||
/// Actual value from last ThermoCam image acquisition (° Celsius)
|
||||
/// Actual value from last ThermoCam image acquisition (1/10 ° Celsius)
|
||||
/// </summary>
|
||||
public double ThermocamActualTemp { get; set; } = 0;
|
||||
public short TCamTempActual { get; set; } = 0;
|
||||
|
||||
/// <summary>
|
||||
/// Setpoint from HMI (° Celsius)
|
||||
/// Setpoint from HMI (1/10 ° Celsius)
|
||||
/// </summary>
|
||||
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;
|
||||
|
||||
@@ -674,9 +674,10 @@ namespace CMS_CORE_Library
|
||||
/// <summary>
|
||||
/// Get current Warmers Channels list
|
||||
/// </summary>
|
||||
/// <param name="useCache">updates only READ parameters (false = update all data)</param>
|
||||
/// <param name="currWarmerChannelList"></param>
|
||||
/// <returns></returns>
|
||||
public abstract CmsError PLC_RWarmerChannelList(ref Dictionary<int, ThermoModels.WarmerChannel> currWarmerChannelList);
|
||||
public abstract CmsError PLC_RWarmerChannelList(bool useCache, ref Dictionary<int, ThermoModels.WarmerChannel> currWarmerChannelList);
|
||||
/// <summary>
|
||||
/// Set current Warmers Channels setpoints
|
||||
/// </summary>
|
||||
|
||||
@@ -2345,26 +2345,34 @@ namespace CMS_CORE_Library.S7Net
|
||||
/// <summary>
|
||||
/// Get current Warmers Channels list
|
||||
/// </summary>
|
||||
/// <param name="useCache">updates only READ parameters (false = update all data)</param>
|
||||
/// <param name="currWarmerChannelList"></param>
|
||||
/// <returns></returns>
|
||||
public override CmsError PLC_RWarmerChannelList(ref Dictionary<int, ThermoModels.WarmerChannel> currWarmerChannelList)
|
||||
public override CmsError PLC_RWarmerChannelList(bool useCache, ref Dictionary<int, ThermoModels.WarmerChannel> 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
|
||||
/// </summary>
|
||||
private void refreshRiscTermoCamTempSet()
|
||||
{
|
||||
// FIXME TODO ???? da dove prendere info?
|
||||
// leggo DB624 x Setpoint Temp richiesti
|
||||
List<short> currMem = new List<short>();
|
||||
|
||||
// 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;
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// Refresh dati ThermoCamera dal PLC: ultima temp letta
|
||||
/// </summary>
|
||||
private void refreshRiscTermoCamTempAct()
|
||||
{
|
||||
// FIXME TODO ???? da dove prendere info?
|
||||
// leggo DB625 x Temp attuale
|
||||
List<short> currMem = new List<short>();
|
||||
|
||||
// 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;
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// Refresh dati ThermoCamera dal PLC x area command/status
|
||||
/// </summary>
|
||||
private void refreshRiscTermoCamCommStatus()
|
||||
{
|
||||
// FIXME TODO ???? da dove prendere info?
|
||||
#if false
|
||||
// leggo DB614 x area Ich
|
||||
List<byte> currMem = new List<byte>();
|
||||
|
||||
// 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
|
||||
}
|
||||
/// <summary>
|
||||
/// Refresh dati ThermoCamera dal PLC x area command/status
|
||||
/// </summary>
|
||||
private void refreshRiscTermoCamAbilit()
|
||||
{
|
||||
// FIXME TODO ???? da dove prendere info?
|
||||
#if false
|
||||
// leggo DB664 x abilitazione ch alla termocamera
|
||||
List<byte> currMem = new List<byte>();
|
||||
|
||||
// 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
|
||||
}
|
||||
/// <summary>
|
||||
/// Refresh Canali Riscaldi: SetPoint HMI
|
||||
@@ -3020,11 +3170,11 @@ namespace CMS_CORE_Library.S7Net
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// Refresh Canali Riscaldi: SetPoint PLC
|
||||
/// Refresh Canali Riscaldi: SetPoint PLC (% lavoro applicata ATTUALE dal PLC)
|
||||
/// </summary>
|
||||
private void refreshRiscSetpointPLC()
|
||||
{
|
||||
// leggo DB514 x area Ich
|
||||
// leggo area DB627 (era DB514) x area CHp
|
||||
List<byte> currMem = new List<byte>();
|
||||
|
||||
// leggo da PLC a array di byte di appoggio...
|
||||
@@ -3095,7 +3245,7 @@ namespace CMS_CORE_Library.S7Net
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// Refresh Canali Riscaldi: Percentuale Attuale
|
||||
/// Refresh Canali Riscaldi: Percentuale lavoro Attuale
|
||||
/// </summary>
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user