From b1ce8f2299d990d6c23e0ad05e073ccefeca70e4 Mon Sep 17 00:00:00 2001 From: Nicola Carminati Date: Fri, 29 Mar 2019 16:59:55 +0000 Subject: [PATCH] Added Candies management --- CMS_CORE_Library/Demo/Nc_Demo.cs | 70 +++++++++++++++++++++++++- CMS_CORE_Library/Fanuc/Nc_Fanuc.cs | 68 +++++++++++++++++++++++++ CMS_CORE_Library/Nc.cs | 5 ++ CMS_CORE_Library/Osai/Nc_Osai.cs | 67 ++++++++++++++++++++++++ CMS_CORE_Library/Siemens/Nc_Siemens.cs | 65 ++++++++++++++++++++++++ 5 files changed, 274 insertions(+), 1 deletion(-) diff --git a/CMS_CORE_Library/Demo/Nc_Demo.cs b/CMS_CORE_Library/Demo/Nc_Demo.cs index c42d354..f85a645 100644 --- a/CMS_CORE_Library/Demo/Nc_Demo.cs +++ b/CMS_CORE_Library/Demo/Nc_Demo.cs @@ -1085,7 +1085,71 @@ namespace CMS_CORE_Library.Demo return NO_ERROR; } - + + public override CmsError PLC_WExpiredCandy(bool value) + { + bool newVal = false; + + //Scrivo il dato + CmsError cmsError = MEM_RWBoolean(W, 0, EXP_CANDY_MEM.MemType, EXP_CANDY_MEM.Address, 0, ref value); + if (cmsError.IsError()) + return cmsError; + else + { + //Leggo il dato + cmsError = PLC_RExpiredCandy(ref newVal); + if (cmsError.IsError()) + return cmsError; + + //Se i 2 dati coincidono ritorno OK + if (value == newVal) + return NO_ERROR; + else + return PLC_NOT_RUNNING_ERROR; + + } + } + + public override CmsError PLC_RExpiredCandy(ref bool value) + { + CmsError cmsError = MEM_RWBoolean(R, 0, EXP_CANDY_MEM.MemType, EXP_CANDY_MEM.Address, 0, ref value); + if (cmsError.IsError()) + return cmsError; + return NO_ERROR; + } + + public override CmsError PLC_WCandy(int value) + { + int newVal = 0; + + //Scrivo il dato + CmsError cmsError = MEM_RWInteger(W, 0, CANDY_MEM.MemType, CANDY_MEM.Address, ref value); + if (cmsError.IsError()) + return cmsError; + else + { + //Leggo il dato + cmsError = PLC_RCandy(ref newVal); + if (cmsError.IsError()) + return cmsError; + + //Se i 2 dati coincidono ritorno OK + if (value == newVal) + return NO_ERROR; + else + return PLC_NOT_RUNNING_ERROR; + + } + } + + public override CmsError PLC_RCandy(ref int value) + { + CmsError cmsError = MEM_RWInteger(R, 0, CANDY_MEM.MemType, CANDY_MEM.Address, ref value); + if (cmsError.IsError()) + return cmsError; + return NO_ERROR; + } + #endregion PLC High-level data /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -3403,6 +3467,10 @@ namespace CMS_CORE_Library.Demo internal static MEMORY_CELL ASSISTED_TOOLING_FINAL_VALUE = new MEMORY_CELL(MEMORY_TYPE.Demo, 469, 1); internal static MEMORY_CELL UNIT_OF_MEASURE = new MEMORY_CELL(MEMORY_TYPE.Demo, 470, 1); + internal static MEMORY_CELL EXP_CANDY_MEM = new MEMORY_CELL(MEMORY_TYPE.Demo, 472, 1); + internal static MEMORY_CELL CANDY_MEM = new MEMORY_CELL(MEMORY_TYPE.Demo, 471, 1); + + } #endregion Memory addresses diff --git a/CMS_CORE_Library/Fanuc/Nc_Fanuc.cs b/CMS_CORE_Library/Fanuc/Nc_Fanuc.cs index 674fcf4..0c137ce 100644 --- a/CMS_CORE_Library/Fanuc/Nc_Fanuc.cs +++ b/CMS_CORE_Library/Fanuc/Nc_Fanuc.cs @@ -1196,6 +1196,70 @@ namespace CMS_CORE_Library.Fanuc return NO_ERROR; } + public override CmsError PLC_WExpiredCandy(bool value) + { + bool newVal = false; + + //Scrivo il dato + CmsError cmsError = MEM_RWBoolean(W, 0, EXP_CANDY_MEM.MemType, EXP_CANDY_MEM.Address,5, ref value); + if (cmsError.IsError()) + return cmsError; + else + { + //Leggo il dato + cmsError = PLC_RExpiredCandy(ref newVal); + if (cmsError.IsError()) + return cmsError; + + //Se i 2 dati coincidono ritorno OK + if (value == newVal) + return NO_ERROR; + else + return PLC_NOT_RUNNING_ERROR; + + } + } + + public override CmsError PLC_RExpiredCandy(ref bool value) + { + CmsError cmsError = MEM_RWBoolean(R, 0, EXP_CANDY_MEM.MemType, EXP_CANDY_MEM.Address,5, ref value); + if (cmsError.IsError()) + return cmsError; + return NO_ERROR; + } + + public override CmsError PLC_WCandy(int value) + { + int newVal=0; + + //Scrivo il dato + CmsError cmsError = MEM_RWInteger(W, 0, CANDY_MEM.MemType, CANDY_MEM.Address, ref value); + if (cmsError.IsError()) + return cmsError; + else + { + //Leggo il dato + cmsError = PLC_RCandy(ref newVal); + if (cmsError.IsError()) + return cmsError; + + //Se i 2 dati coincidono ritorno OK + if (value == newVal) + return NO_ERROR; + else + return PLC_NOT_RUNNING_ERROR; + + } + } + + public override CmsError PLC_RCandy(ref int value) + { + CmsError cmsError = MEM_RWInteger(R, 0, CANDY_MEM.MemType, CANDY_MEM.Address, ref value); + if (cmsError.IsError()) + return cmsError; + return NO_ERROR; + } + #endregion PLC High-level data /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -4514,6 +4578,10 @@ namespace CMS_CORE_Library.Fanuc internal static MEMORY_CELL AXES_BUTTON_VISIBLE = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, STARTING_ADDRESS + 3033, 16); + + internal static MEMORY_CELL CANDY_MEM = new MEMORY_CELL(MEMORY_TYPE.Fanuc_D, 7222, 1); + internal static MEMORY_CELL EXP_CANDY_MEM = new MEMORY_CELL(MEMORY_TYPE.Fanuc_D, 7217, 1); + // Tool manager areas internal static MEMORY_CELL MAGAZINE_ACTION = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, STARTING_ADDRESS + 4000, 16); diff --git a/CMS_CORE_Library/Nc.cs b/CMS_CORE_Library/Nc.cs index 7ec450d..fdf9823 100644 --- a/CMS_CORE_Library/Nc.cs +++ b/CMS_CORE_Library/Nc.cs @@ -566,6 +566,11 @@ namespace CMS_CORE_Library public abstract CmsError PLC_WScadaValue(string memIndex, SCADA_MEM_TYPE memType, object value); + public abstract CmsError PLC_RCandy(ref int value); + public abstract CmsError PLC_WCandy(int value); + public abstract CmsError PLC_RExpiredCandy(ref bool value); + public abstract CmsError PLC_WExpiredCandy(bool value); + #endregion PLC High-level data (to override) /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/CMS_CORE_Library/Osai/Nc_Osai.cs b/CMS_CORE_Library/Osai/Nc_Osai.cs index 50a70ed..d2158df 100644 --- a/CMS_CORE_Library/Osai/Nc_Osai.cs +++ b/CMS_CORE_Library/Osai/Nc_Osai.cs @@ -1206,6 +1206,71 @@ namespace CMS_CORE_Library.Osai return cmsError; } + + public override CmsError PLC_WExpiredCandy(bool value) + { + bool newVal = false; + + //Scrivo il dato + CmsError cmsError = MEM_RWBoolean(W, 0, EXP_CANDY_MEM.MemType, EXP_CANDY_MEM.Address, 0, ref value); + if (cmsError.IsError()) + return cmsError; + else + { + //Leggo il dato + cmsError = PLC_RExpiredCandy(ref newVal); + if (cmsError.IsError()) + return cmsError; + + //Se i 2 dati coincidono ritorno OK + if (value == newVal) + return NO_ERROR; + else + return PLC_NOT_RUNNING_ERROR; + + } + } + + public override CmsError PLC_RExpiredCandy(ref bool value) + { + CmsError cmsError = MEM_RWBoolean(R, 0, EXP_CANDY_MEM.MemType, EXP_CANDY_MEM.Address, 0, ref value); + if (cmsError.IsError()) + return cmsError; + return NO_ERROR; + } + + public override CmsError PLC_WCandy(int value) + { + int newVal = 0; + + //Scrivo il dato + CmsError cmsError = MEM_RWInteger(W, 0, CANDY_MEM.MemType, CANDY_MEM.Address, ref value); + if (cmsError.IsError()) + return cmsError; + else + { + //Leggo il dato + cmsError = PLC_RCandy(ref newVal); + if (cmsError.IsError()) + return cmsError; + + //Se i 2 dati coincidono ritorno OK + if (value == newVal) + return NO_ERROR; + else + return PLC_NOT_RUNNING_ERROR; + + } + } + + public override CmsError PLC_RCandy(ref int value) + { + CmsError cmsError = MEM_RWInteger(R, 0, CANDY_MEM.MemType, CANDY_MEM.Address, ref value); + if (cmsError.IsError()) + return cmsError; + return NO_ERROR; + } + #endregion PLC High-level data /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -4298,6 +4363,8 @@ namespace CMS_CORE_Library.Osai internal static MEMORY_CELL M154_ACK = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 4312, 1); internal static MEMORY_CELL AXES_BUTTON_VISIBLE = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 4320, 16); + internal static MEMORY_CELL CANDY_MEM = new MEMORY_CELL(MEMORY_TYPE.Osai_GW, 303, 1); + internal static MEMORY_CELL EXP_CANDY_MEM = new MEMORY_CELL(MEMORY_TYPE.Osai_GW, 302, 1); // Tool manager areas internal static MEMORY_CELL MAGAZINE_ACTION = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 4350, 16); diff --git a/CMS_CORE_Library/Siemens/Nc_Siemens.cs b/CMS_CORE_Library/Siemens/Nc_Siemens.cs index ed655b9..a2e974a 100644 --- a/CMS_CORE_Library/Siemens/Nc_Siemens.cs +++ b/CMS_CORE_Library/Siemens/Nc_Siemens.cs @@ -1454,6 +1454,69 @@ namespace CMS_CORE_Library.Siemens return cmsError; } + public override CmsError PLC_WExpiredCandy(bool value) + { + bool newVal = false; + + //Scrivo il dato + CmsError cmsError = MEM_RWBoolean(W, 0, EXP_CANDY_MEM.MemType, EXP_CANDY_MEM.Address, 5, ref value); + if (cmsError.IsError()) + return cmsError; + else + { + //Leggo il dato + cmsError = PLC_RExpiredCandy(ref newVal); + if (cmsError.IsError()) + return cmsError; + + //Se i 2 dati coincidono ritorno OK + if (value == newVal) + return NO_ERROR; + else + return PLC_NOT_RUNNING_ERROR; + + } + } + + public override CmsError PLC_RExpiredCandy(ref bool value) + { + CmsError cmsError = MEM_RWBoolean(R, 0, EXP_CANDY_MEM.MemType, EXP_CANDY_MEM.Address, 5, ref value); + if (cmsError.IsError()) + return cmsError; + return NO_ERROR; + } + + public override CmsError PLC_WCandy(int value) + { + int newVal = 0; + + //Scrivo il dato + CmsError cmsError = MEM_RWInteger(W, 0, CANDY_MEM.MemType, CANDY_MEM.Address, ref value); + if (cmsError.IsError()) + return cmsError; + else + { + //Leggo il dato + cmsError = PLC_RCandy(ref newVal); + if (cmsError.IsError()) + return cmsError; + + //Se i 2 dati coincidono ritorno OK + if (value == newVal) + return NO_ERROR; + else + return PLC_NOT_RUNNING_ERROR; + + } + } + + public override CmsError PLC_RCandy(ref int value) + { + CmsError cmsError = MEM_RWInteger(R, 0, CANDY_MEM.MemType, CANDY_MEM.Address, ref value); + if (cmsError.IsError()) + return cmsError; + return NO_ERROR; + } #endregion PLC High-level data /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -5926,5 +5989,7 @@ namespace CMS_CORE_Library.Siemens internal static MEMORY_CELL AXES_BUTTON_VISIBLE = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, TABLE, 3044, 16); internal static MEMORY_CELL MAGAZINE_ACTION = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, TABLE, 4000, 16); + internal static MEMORY_CELL CANDY_MEM = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 255, 120, 1); + internal static MEMORY_CELL EXP_CANDY_MEM = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, 255, 92, 1); } } \ No newline at end of file