diff --git a/CMS_CORE_Library/Models/ThermoModels.cs b/CMS_CORE_Library/Models/ThermoModels.cs
index 29b2d37..08cef20 100644
--- a/CMS_CORE_Library/Models/ThermoModels.cs
+++ b/CMS_CORE_Library/Models/ThermoModels.cs
@@ -329,6 +329,79 @@ namespace CMS_CORE_Library.Models
#endregion Public Methods
}
+ public class LogCycleData
+ {
+ #region Public Constructors
+
+ ///
+ /// Deserializzazione da byte ad oggetto LogCycleData
+ ///
+ ///
+ 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
diff --git a/CMS_CORE_Library/NcThermo.cs b/CMS_CORE_Library/NcThermo.cs
index f42c7d8..163b3a5 100644
--- a/CMS_CORE_Library/NcThermo.cs
+++ b/CMS_CORE_Library/NcThermo.cs
@@ -636,6 +636,13 @@ namespace CMS_CORE_Library
///
public abstract CmsError PLC_WAckSetpointInvalidated();
+ ///
+ /// Get current LOG Cycle data
+ ///
+ ///
+ ///
+ public abstract CmsError PLC_RLogCycleData(out List currLogCycle);
+
///
/// Get current Axis RT data
///
diff --git a/CMS_CORE_Library/S7Net/Nc_S7Net.cs b/CMS_CORE_Library/S7Net/Nc_S7Net.cs
index 8a5c403..9280f43 100644
--- a/CMS_CORE_Library/S7Net/Nc_S7Net.cs
+++ b/CMS_CORE_Library/S7Net/Nc_S7Net.cs
@@ -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;
}
+
+ ///
+ /// Get current LOG Cycle data
+ ///
+ ///
+ ///
+ public override CmsError PLC_RLogCycleData(out List currLogCycle)
+ {
+ CmsError libraryError = NO_ERROR;
+ List currMem = new List();
+ int packSize = 10;
+ currLogCycle = new List();
+
+ // 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;
+ }
+
///
/// Get current Axis RT data
///