fix cycleLog data
This commit is contained in:
@@ -329,6 +329,79 @@ namespace CMS_CORE_Library.Models
|
||||
#endregion Public Methods
|
||||
}
|
||||
|
||||
public class LogCycleData
|
||||
{
|
||||
#region Public Constructors
|
||||
|
||||
/// <summary>
|
||||
/// Deserializzazione da byte ad oggetto LogCycleData
|
||||
/// </summary>
|
||||
/// <param name="rawData"></param>
|
||||
public LogCycleData(byte[] rawData)
|
||||
{
|
||||
// converto i dati da byte grezzi ai 3 componenti...
|
||||
year = S7.Net.Types.Word.FromByteArray(rawData.Skip(0).Take(2).ToArray());
|
||||
month = S7.Net.Types.Byte.FromByteArray(rawData.Skip(2).Take(1).ToArray());
|
||||
day = S7.Net.Types.Byte.FromByteArray(rawData.Skip(3).Take(1).ToArray());
|
||||
hour = S7.Net.Types.Byte.FromByteArray(rawData.Skip(4).Take(1).ToArray());
|
||||
min = S7.Net.Types.Byte.FromByteArray(rawData.Skip(5).Take(1).ToArray());
|
||||
msec = S7.Net.Types.Word.FromByteArray(rawData.Skip(6).Take(2).ToArray());
|
||||
Code = S7.Net.Types.Word.FromByteArray(rawData.Skip(8).Take(2).ToArray());
|
||||
}
|
||||
|
||||
#endregion Public Constructors
|
||||
|
||||
#region Public Properties
|
||||
|
||||
protected int year { get; set; } = 0;
|
||||
protected int month { get; set; } = 0;
|
||||
protected int day { get; set; } = 0;
|
||||
protected int hour { get; set; } = 0;
|
||||
protected int min { get; set; } = 0;
|
||||
protected int msec { get; set; } = 0;
|
||||
public DateTime DtEvent
|
||||
{
|
||||
get
|
||||
{
|
||||
DateTime answ = DateTime.Now;
|
||||
try
|
||||
{
|
||||
new DateTime(year, month, day);
|
||||
answ = answ.AddHours(hour).AddMinutes(min).AddMilliseconds(msec);
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
return answ;
|
||||
}
|
||||
}
|
||||
public int Code { get; set; } = 0;
|
||||
|
||||
#endregion Public Properties
|
||||
|
||||
#region Public Methods
|
||||
|
||||
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
// Object is not a GaugeModel instance
|
||||
if (!(obj is LogCycleData item))
|
||||
return false;
|
||||
|
||||
if (DtEvent != item.DtEvent)
|
||||
return false;
|
||||
if (Code != item.Code)
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return base.GetHashCode();
|
||||
}
|
||||
|
||||
#endregion Public Methods
|
||||
}
|
||||
|
||||
public class ModuleBlock
|
||||
{
|
||||
#region Public Properties
|
||||
|
||||
@@ -636,6 +636,13 @@ namespace CMS_CORE_Library
|
||||
/// <returns></returns>
|
||||
public abstract CmsError PLC_WAckSetpointInvalidated();
|
||||
|
||||
/// <summary>
|
||||
/// Get current LOG Cycle data
|
||||
/// </summary>
|
||||
/// <param name="currParamList"></param>
|
||||
/// <returns></returns>
|
||||
public abstract CmsError PLC_RLogCycleData(out List<ThermoModels.LogCycleData> currLogCycle);
|
||||
|
||||
/// <summary>
|
||||
/// Get current Axis RT data
|
||||
/// </summary>
|
||||
|
||||
@@ -103,6 +103,8 @@ namespace CMS_CORE_Library.S7Net
|
||||
|
||||
internal static MEMORY_CELL KEYBOARD_STAR_MEMORY = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, TABLE, 6780, 2);
|
||||
|
||||
internal static MEMORY_CELL LOG_CYCLE_DATA = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 617, 12, 1000);
|
||||
|
||||
internal static MEMORY_CELL M154_ACK = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, TABLE, 3042, 1);
|
||||
|
||||
internal static MEMORY_CELL M154_STROBE = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, TABLE, 3043, 1);
|
||||
@@ -191,6 +193,7 @@ namespace CMS_CORE_Library.S7Net
|
||||
internal static MEMORY_CELL REQ_MODE_STROBE = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, TABLE, 2, 2);
|
||||
internal static MEMORY_CELL RISC_CFI_DATA = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 514, 2176, 1024);
|
||||
|
||||
// riscaldi
|
||||
internal static MEMORY_CELL RISC_CHP_DATA = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 614, 0, 1024);
|
||||
|
||||
internal static MEMORY_CELL RISC_ESP_DATA = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 514, 9728, 1024);
|
||||
@@ -207,7 +210,6 @@ namespace CMS_CORE_Library.S7Net
|
||||
|
||||
internal static MEMORY_CELL RISC_PLC_DATA = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 627, 0, 1024);
|
||||
|
||||
// riscaldi
|
||||
internal static MEMORY_CELL RISC_VU_MIN = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 513, 0, 2);
|
||||
|
||||
internal static MEMORY_CELL SELECT_AXIS = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, TABLE, 2627, 1);
|
||||
@@ -236,6 +238,7 @@ namespace CMS_CORE_Library.S7Net
|
||||
|
||||
internal static MEMORY_CELL TCAM_TEMP_ACT_DATA = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 625, 0, 2048);
|
||||
internal static MEMORY_CELL TCAM_TEMP_REQ_DATA = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 624, 0, 2048);
|
||||
|
||||
internal static MEMORY_CELL USER_SOFT_KEYS_ACK = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, TABLE, 6584, 16);
|
||||
internal static MEMORY_CELL USER_SOFT_KEYS_CLICKED = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, TABLE, 6600, 16);
|
||||
internal static MEMORY_CELL USER_SOFTKEYS_CLICKABLE = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, TABLE, 6568, 16);
|
||||
@@ -3278,6 +3281,47 @@ namespace CMS_CORE_Library.S7Net
|
||||
return libraryError;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Get current LOG Cycle data
|
||||
/// </summary>
|
||||
/// <param name="currParamList"></param>
|
||||
/// <returns></returns>
|
||||
public override CmsError PLC_RLogCycleData(out List<ThermoModels.LogCycleData> currLogCycle)
|
||||
{
|
||||
CmsError libraryError = NO_ERROR;
|
||||
List<byte> currMem = new List<byte>();
|
||||
int packSize = 10;
|
||||
currLogCycle = new List<ThermoModels.LogCycleData>();
|
||||
|
||||
// leggo da PLC a array di byte di appoggio...
|
||||
libraryError = MEM_RWByteList(R, 0, LOG_CYCLE_DATA.MemType, LOG_CYCLE_DATA.Address, LOG_CYCLE_DATA.SubAddress, 0, LOG_CYCLE_DATA.Size, ref currMem);
|
||||
if (libraryError.IsError())
|
||||
return libraryError;
|
||||
|
||||
// controllo SE ho dati...
|
||||
if (currMem.Count > 0)
|
||||
{
|
||||
// converto a blocchi di byte...
|
||||
byte[] memArray = currMem.ToArray();
|
||||
for (int i = 0; i < LOG_CYCLE_DATA.Size / packSize; i++)
|
||||
{
|
||||
ThermoModels.LogCycleData currData = new ThermoModels.LogCycleData(memArray.Skip(i * packSize).Take(packSize).ToArray());
|
||||
// se il valore ricevuto di evento è > 0...
|
||||
if (currData.Code > 0)
|
||||
{
|
||||
try
|
||||
{
|
||||
currLogCycle.Add(currData);
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
}
|
||||
}
|
||||
}
|
||||
return libraryError;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get current Axis RT data
|
||||
/// </summary>
|
||||
|
||||
Reference in New Issue
Block a user