diff --git a/CMS_CORE_Library/Models/DataStructures.cs b/CMS_CORE_Library/Models/DataStructures.cs
index ed25d3d..d063401 100644
--- a/CMS_CORE_Library/Models/DataStructures.cs
+++ b/CMS_CORE_Library/Models/DataStructures.cs
@@ -527,7 +527,8 @@ namespace CMS_CORE_Library.Models
public enum AXIS_TYPE
{
LINEAR = 0,
- ROTATING = 1
+ ROTATING = 1,
+ NA
}
public enum SIEMENS_TDI_ACTION
diff --git a/CMS_CORE_Library/Models/ThermoModels.cs b/CMS_CORE_Library/Models/ThermoModels.cs
index fa3c6e0..84ccf7e 100644
--- a/CMS_CORE_Library/Models/ThermoModels.cs
+++ b/CMS_CORE_Library/Models/ThermoModels.cs
@@ -98,8 +98,70 @@ namespace CMS_CORE_Library.Models
return base.GetHashCode();
}
}
+ ///
+ /// Single AXIS RealTime (positions / movement) Data
+ ///
+ public class AxisRT
+ {
+ public short Id { get; set; } = 0;
+ public double Position { get; set; } = 0;
+ public double Speed { get; set; } = 0;
+ public double Load { get; set; } = 0;
+ public override bool Equals(object obj)
+ {
+ // Object is not a GaugeModel instance
+ if (!(obj is AxisRT item))
+ return false;
+
+ if (Id != item.Id)
+ return false;
+ if (Position != item.Position)
+ return false;
+ if (Speed != item.Speed)
+ return false;
+ if (Load != item.Load)
+ return false;
+ return true;
+ }
+ public override int GetHashCode()
+ {
+ return base.GetHashCode();
+ }
+ }
+ ///
+ /// Single AXIS Info Data
+ ///
+ public class AxisInfo
+ {
+ public short Id { get; set; } = 0;
+ public int errorCode { get; set; } = 0;
+ public int movPhase { get; set; } = 0;
+ public int statusCode { get; set; } = 0;
+
+ public override bool Equals(object obj)
+ {
+ // Object is not a GaugeModel instance
+ if (!(obj is AxisInfo item))
+ return false;
+
+ if (Id != item.Id)
+ return false;
+ if (errorCode != item.errorCode)
+ return false;
+ if (movPhase != item.movPhase)
+ return false;
+ if (statusCode != item.statusCode)
+ return false;
+ return true;
+ }
+ public override int GetHashCode()
+ {
+ return base.GetHashCode();
+ }
+ }
+
public class ModuleBlock
{
public short Id { get; set; } = 0;
diff --git a/CMS_CORE_Library/S7Net/Nc_S7Net.cs b/CMS_CORE_Library/S7Net/Nc_S7Net.cs
index 05877a5..31b18e4 100644
--- a/CMS_CORE_Library/S7Net/Nc_S7Net.cs
+++ b/CMS_CORE_Library/S7Net/Nc_S7Net.cs
@@ -3220,6 +3220,43 @@ namespace CMS_CORE_Library.S7Net
#region PROCESS-AXES (PATH) High-level data
+
+ ///
+ /// Get current Production Info data
+ ///
+ ///
+ ///
+ public override CmsError PLC_RAxesMov(ref ThermoModels.AxisRT currProdInfo)
+ {
+ List currMem = new List();
+ CmsError libraryError = MEM_RWByteList(R, 0, PROCESS_PROD_INFO.MemType, PROCESS_PROD_INFO.Address, PROCESS_PROD_INFO.SubAddress, 0, PROCESS_PROD_INFO.Size, ref currMem);
+ if (libraryError.IsError())
+ return libraryError;
+
+#if false
+ // converto!
+ currProdInfo = new ThermoModels.ProdInfoModel()
+ {
+ NumTarget = S7.Net.Types.Int.FromByteArray(currMem.Skip(0).Take(2).ToArray()),
+ NumDone = S7.Net.Types.Int.FromByteArray(currMem.Skip(2).Take(2).ToArray()),
+ // cicli preriscaldo? FIXME TODO
+ TimeWarm = S7.Net.Types.DInt.FromByteArray(currMem.Skip(6).Take(4).ToArray()),
+ TimeVent = S7.Net.Types.DInt.FromByteArray(currMem.Skip(10).Take(4).ToArray()),
+ TimeVacuum = S7.Net.Types.DInt.FromByteArray(currMem.Skip(14).Take(4).ToArray()),
+ TimeCycleGross = S7.Net.Types.DInt.FromByteArray(currMem.Skip(18).Take(4).ToArray()),
+ TimeCycleNet = S7.Net.Types.DInt.FromByteArray(currMem.Skip(22).Take(4).ToArray()),
+ MaterialTempEndWarm = S7.Net.Types.Double.FromByteArray(currMem.Skip(26).Take(4).ToArray()),
+ MaterialTempEndVent = S7.Net.Types.Double.FromByteArray(currMem.Skip(30).Take(4).ToArray()),
+ MoldTemp = S7.Net.Types.Double.FromByteArray(currMem.Skip(34).Take(4).ToArray()),
+ VacuumReadVal = S7.Net.Types.Double.FromByteArray(currMem.Skip(38).Take(4).ToArray()),
+ MouldEnergyOUT = S7.Net.Types.Double.FromByteArray(currMem.Skip(42).Take(4).ToArray()),
+ MouldEnergyIN = S7.Net.Types.Double.FromByteArray(currMem.Skip(46).Take(4).ToArray())
+ };
+#endif
+
+ return NO_ERROR;
+ }
+
public override CmsError AXES_RInterpPosition(ushort channel, ref Dictionary axes)
{
return FUNCTION_NOT_ALLOWED_ERROR;
@@ -4708,6 +4745,10 @@ namespace CMS_CORE_Library.S7Net
// Main DB Table
internal const int TABLE = 604;
+ // assi
+ internal static MEMORY_CELL AXES_RTDATA = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 615, 0, 768);
+ internal static MEMORY_CELL AXES_INFO = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 616, 0, 640);
+
// aree Parametri
internal static MEMORY_CELL PARAMETER_DATA = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 600, 20, 8000);
internal static MEMORY_CELL PARAMETER_RT_DATA = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 601, 8, 3200);