diff --git a/CMS_CORE_Library/Demo/Nc_Demo.cs b/CMS_CORE_Library/Demo/Nc_Demo.cs index a9c916b..541c0f1 100644 --- a/CMS_CORE_Library/Demo/Nc_Demo.cs +++ b/CMS_CORE_Library/Demo/Nc_Demo.cs @@ -999,6 +999,11 @@ namespace CMS_CORE_Library.Demo return NO_ERROR; } + public override CmsError PLC_WTerminateAssistedToolingProcedure() + { + return NO_ERROR; + } + private CmsError ResetStrobe(int bitId, int strobeByte, int ackByte, MEMORY_TYPE memType) { int n = 5; diff --git a/CMS_CORE_Library/Fanuc/Nc_Fanuc.cs b/CMS_CORE_Library/Fanuc/Nc_Fanuc.cs index 829e060..2992cb6 100644 --- a/CMS_CORE_Library/Fanuc/Nc_Fanuc.cs +++ b/CMS_CORE_Library/Fanuc/Nc_Fanuc.cs @@ -1134,12 +1134,7 @@ namespace CMS_CORE_Library.Fanuc return cmsError; // Write strobe to start procedure - bool strobe = true; - cmsError = MEM_RWBoolean(W, 1, ASSISTED_TOOLING_STROBE.MemType, ASSISTED_TOOLING_STROBE.Address, 0, ref strobe); - if (cmsError.IsError()) - return cmsError; - - return PLC_WStrobe(ASSISTED_TOOLING_FINAL_VALUE, ASSISTED_TOOLING_STROBE, 1); + return PLC_WStrobe(ASSISTED_TOOLING_FINAL_VALUE, ASSISTED_TOOLING_STROBE_ACTIVE, 1); } public override CmsError PLC_RAssistedToolingData(ref AssistedToolingModel data) @@ -1150,8 +1145,10 @@ namespace CMS_CORE_Library.Fanuc if (cmsError.IsError()) return cmsError; + // Bit: + // 0: ack 1: strobe 2: unload 3: load // Check if the procedure is finished - if (GetBitValue(procFinalValue, 1)) + if (GetBitValue(procFinalValue, 2)) { List values = new List(); @@ -1162,10 +1159,10 @@ namespace CMS_CORE_Library.Fanuc // Set action ASSISTED_TOOLING_ACTION action = ASSISTED_TOOLING_ACTION.NONE; - if (GetBitValue(procFinalValue, 2)) + if (GetBitValue(procFinalValue, 3)) action = ASSISTED_TOOLING_ACTION.UNLOAD; - if (GetBitValue(procFinalValue, 3)) + if (GetBitValue(procFinalValue, 4)) action = ASSISTED_TOOLING_ACTION.EXCHANGE; data = new AssistedToolingModel() @@ -1180,7 +1177,16 @@ namespace CMS_CORE_Library.Fanuc return NO_ERROR; } + + public override CmsError PLC_WTerminateAssistedToolingProcedure() + { + // Terminate procedure with ACK-STROBE method + CmsError cmsError = PLC_WStrobe(ASSISTED_TOOLING_STROBE_ACTIVE, ASSISTED_TOOLING_FINAL_VALUE, 2); + if (cmsError.IsError()) + return cmsError; + return NO_ERROR; + } #endregion PLC High-level data /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -4511,7 +4517,7 @@ namespace CMS_CORE_Library.Fanuc internal static MEMORY_CELL MAGAZINES_TOOLING_CMD = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, STARTING_ADDRESS + 4217, 4); internal static MEMORY_CELL ASSISTED_TOOLING_DATA = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, STARTING_ADDRESS + 4222, 7); - internal static MEMORY_CELL ASSISTED_TOOLING_STROBE = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, STARTING_ADDRESS + 4229, 1); + internal static MEMORY_CELL ASSISTED_TOOLING_STROBE_ACTIVE = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, STARTING_ADDRESS + 4229, 1); internal static MEMORY_CELL ASSISTED_TOOLING_FINAL_VALUE = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, STARTING_ADDRESS + 4230, 1); diff --git a/CMS_CORE_Library/Nc.cs b/CMS_CORE_Library/Nc.cs index 76bed76..4db5dc1 100644 --- a/CMS_CORE_Library/Nc.cs +++ b/CMS_CORE_Library/Nc.cs @@ -687,6 +687,8 @@ namespace CMS_CORE_Library public abstract CmsError PLC_RAssistedToolingData(ref AssistedToolingModel data); + public abstract CmsError PLC_WTerminateAssistedToolingProcedure(); + #endregion PROCESS (PATH, CHANNEL) data (to override) /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/CMS_CORE_Library/Osai/Nc_Osai.cs b/CMS_CORE_Library/Osai/Nc_Osai.cs index d12a241..9b66407 100644 --- a/CMS_CORE_Library/Osai/Nc_Osai.cs +++ b/CMS_CORE_Library/Osai/Nc_Osai.cs @@ -1060,6 +1060,11 @@ namespace CMS_CORE_Library.Osai return NO_ERROR; } + public override CmsError PLC_WTerminateAssistedToolingProcedure() + { + return NO_ERROR; + } + private CmsError PLC_WStrobe(MEMORY_CELL ackCell, MEMORY_CELL strobeCell, uint id) { CmsError cmsError; diff --git a/CMS_CORE_Library/Siemens/Nc_Siemens.cs b/CMS_CORE_Library/Siemens/Nc_Siemens.cs index 12998ac..54931c9 100644 --- a/CMS_CORE_Library/Siemens/Nc_Siemens.cs +++ b/CMS_CORE_Library/Siemens/Nc_Siemens.cs @@ -1314,9 +1314,13 @@ namespace CMS_CORE_Library.Siemens public override CmsError PLC_RAssistedToolingData(ref AssistedToolingModel data) { - return NO_ERROR; + return FUNCTION_NOT_ALLOWED_ERROR; } + public override CmsError PLC_WTerminateAssistedToolingProcedure() + { + return FUNCTION_NOT_ALLOWED_ERROR; + } private CmsError PLC_WStrobe(MEMORY_CELL ackCell, MEMORY_CELL strobeCell, uint id) { @@ -4109,7 +4113,15 @@ namespace CMS_CORE_Library.Siemens // Manage the Alarms - Called automatically on changes private void AlarmsChanged(Guid guid, Alarm[] alarms) { - SiemensAlarms = alarms; + try + { + if (alarms != null) + SiemensAlarms = alarms.ToArray(); + } + catch (Exception ex) + { + Console.WriteLine(ex.Message); + } } private void NcLanguageChanged(string language)