Start method S7Net axes mgmt
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -98,8 +98,70 @@ namespace CMS_CORE_Library.Models
|
||||
return base.GetHashCode();
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// Single AXIS RealTime (positions / movement) Data
|
||||
/// </summary>
|
||||
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();
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// Single AXIS Info Data
|
||||
/// </summary>
|
||||
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;
|
||||
|
||||
@@ -3220,6 +3220,43 @@ namespace CMS_CORE_Library.S7Net
|
||||
|
||||
#region PROCESS-AXES (PATH) High-level data
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Get current Production Info data
|
||||
/// </summary>
|
||||
/// <param name="currProdInfo"></param>
|
||||
/// <returns></returns>
|
||||
public override CmsError PLC_RAxesMov(ref ThermoModels.AxisRT currProdInfo)
|
||||
{
|
||||
List<byte> currMem = new List<byte>();
|
||||
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<string, double> 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);
|
||||
|
||||
Reference in New Issue
Block a user