From fd95ba5e6ae96a4f013fc2e470d156955c80a987 Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Thu, 4 Mar 2021 17:24:52 +0100 Subject: [PATCH] Add methor for AXES gen Status/Command --- CMS_CORE_Library/NcThermo.cs | 14 ++++++++ CMS_CORE_Library/S7Net/Nc_S7Net.cs | 54 ++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+) diff --git a/CMS_CORE_Library/NcThermo.cs b/CMS_CORE_Library/NcThermo.cs index e3e75fb..fd896a5 100644 --- a/CMS_CORE_Library/NcThermo.cs +++ b/CMS_CORE_Library/NcThermo.cs @@ -687,6 +687,20 @@ namespace CMS_CORE_Library /// public abstract CmsError PLC_WAxisCommand(int AxisNum, uint CommandBit, bool WritePos, double TargetPos); + /// + /// Send Axes Gen Control + /// + /// Boolean for advanced mode + /// + public abstract CmsError PLC_WAxisGeneralControl(bool AdvMode); + + /// + /// Read Axes Gen Control + /// + /// Boolean for advanced mode + /// + public abstract CmsError PLC_RAxisGeneralStatus(ref bool AdvMode); + /// /// Confirm FLIR image acquired and copied to PLC /// diff --git a/CMS_CORE_Library/S7Net/Nc_S7Net.cs b/CMS_CORE_Library/S7Net/Nc_S7Net.cs index 4397a16..a663a84 100644 --- a/CMS_CORE_Library/S7Net/Nc_S7Net.cs +++ b/CMS_CORE_Library/S7Net/Nc_S7Net.cs @@ -45,6 +45,10 @@ namespace CMS_CORE_Library.S7Net internal static MEMORY_CELL AXES_COMMAND = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 616, 512, 512); + internal static MEMORY_CELL AXES_GEN_CONTROL = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 616, 1026, 2); + + internal static MEMORY_CELL AXES_GEN_STATUS = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 616, 1024, 2); + internal static MEMORY_CELL AXES_INFO = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 616, 0, 512); internal static MEMORY_CELL AXES_RTDATA = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 615, 0, 768); @@ -4659,6 +4663,56 @@ namespace CMS_CORE_Library.S7Net return libraryError; } + /// + /// Send Axes Gen Control + /// + /// Boolean for advanced mode + /// + public override CmsError PLC_WAxisGeneralControl(bool AdvMode) + { + CmsError libraryError = NO_ERROR; + + // preparo la word + ushort controlData = 0; + if (AdvMode) + { + controlData = 1; + } + + MEMORY_CELL caTgtPos = new MEMORY_CELL(AXES_GEN_CONTROL.MemType, AXES_GEN_CONTROL.Address, AXES_GEN_CONTROL.SubAddress, 2); + // in primis scrivo la TargetPos nei 4 byte DWord... + libraryError = MEM_RWWord(W, 0, caTgtPos.MemType, caTgtPos.Address, caTgtPos.SubAddress, ref controlData); + if (libraryError.IsError()) + return libraryError; + + return libraryError; + } + + + /// + /// Read Axes Gen Control + /// + /// Boolean for advanced mode + /// + public override CmsError PLC_RAxisGeneralStatus(ref bool AdvMode) + { + CmsError libraryError = NO_ERROR; + + // preparo la word + ushort controlData = 0; + + MEMORY_CELL caTgtPos = new MEMORY_CELL(AXES_GEN_STATUS.MemType, AXES_GEN_STATUS.Address, AXES_GEN_STATUS.SubAddress, 2); + // in primis scrivo la TargetPos nei 4 byte DWord... + libraryError = MEM_RWWord(R, 0, caTgtPos.MemType, caTgtPos.Address, caTgtPos.SubAddress, ref controlData); + if (libraryError.IsError()) + return libraryError; + + AdvMode = (controlData == 1); + + return libraryError; + } + + public override CmsError PLC_WRefreshAllMessages() { // imposto come UserSoftKey