From 44eb32658c87dbebce1a1e6a6dcf8baaedc2bf56 Mon Sep 17 00:00:00 2001 From: Lucio Maranta Date: Fri, 18 Jan 2019 12:44:21 +0000 Subject: [PATCH] Fix siemens loading WIP Osai alignment --- CMS_CORE_Application/Form1.cs | 4 +- CMS_CORE_Library/Fanuc/Nc_Fanuc.cs | 2 - CMS_CORE_Library/Osai/Nc_Osai.cs | 169 +++++++++++++++---------- CMS_CORE_Library/Siemens/Nc_Siemens.cs | 11 +- 4 files changed, 116 insertions(+), 70 deletions(-) diff --git a/CMS_CORE_Application/Form1.cs b/CMS_CORE_Application/Form1.cs index 575bf26..2440768 100644 --- a/CMS_CORE_Application/Form1.cs +++ b/CMS_CORE_Application/Form1.cs @@ -112,7 +112,9 @@ namespace CMS_CORE_Application if(a == 0) cmsError = N.FILES_WSetActiveProgram(1, "C:\\PartPrg\\nuovo.mpf", ref active); - a++; + a++; + MountedToolModel mounted = new MountedToolModel(); + N.TOOLS_WLoadToolInMagazine(1, new NewToolInMagazineModel() { PositionId = 2, ToolId = 3 }, ref mounted); Console.WriteLine("TIME " + sw.ElapsedMilliseconds); sw.Stop(); diff --git a/CMS_CORE_Library/Fanuc/Nc_Fanuc.cs b/CMS_CORE_Library/Fanuc/Nc_Fanuc.cs index 2bfa138..73a0f6d 100644 --- a/CMS_CORE_Library/Fanuc/Nc_Fanuc.cs +++ b/CMS_CORE_Library/Fanuc/Nc_Fanuc.cs @@ -4141,9 +4141,7 @@ namespace CMS_CORE_Library.Fanuc internal static MEMORY_CELL M155_INPUT_NEEDED = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, STARTING_ADDRESS + 3004, 1); internal static MEMORY_CELL MTCONNECT_DATA_NEEDED = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, STARTING_ADDRESS + 3031, 1); - // Tool manager areas - internal static MEMORY_CELL MAGAZINE_ACTION = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, STARTING_ADDRESS + 4000, 16); internal static MEMORY_CELL TOOL_MANAGER_COMMAND = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, STARTING_ADDRESS + 4013, 2); diff --git a/CMS_CORE_Library/Osai/Nc_Osai.cs b/CMS_CORE_Library/Osai/Nc_Osai.cs index 6bb6cce..b41ccbb 100644 --- a/CMS_CORE_Library/Osai/Nc_Osai.cs +++ b/CMS_CORE_Library/Osai/Nc_Osai.cs @@ -447,7 +447,6 @@ namespace CMS_CORE_Library.Osai return NO_ERROR; } - public override CmsError PLC_RActiveMessages(ref List alarms) { try @@ -459,7 +458,7 @@ namespace CMS_CORE_Library.Osai CmsError cmsError = MEM_RWIntegerList(R, 0, ALARMS_STATUS.MemType, ALARMS_STATUS.Address, - (ALARMS_STATUS.Size + ALARMS_DATA.Size) / 4, // byte / 4 + ((ALARMS_STATUS.Size + ALARMS_DATA.Size) / 4) + 1, // byte / 4 ref readValues); if (cmsError.IsError()) @@ -473,7 +472,7 @@ namespace CMS_CORE_Library.Osai if (statusBits[i]) { // Calculate matching alarm byte info address - int dataByteAddress = i * 8 + ALARMS_NUMBER; + int dataByteAddress = (i * 8 + ALARMS_NUMBER ) + 16; var processList = new List(); @@ -659,8 +658,8 @@ namespace CMS_CORE_Library.Osai List readValue = new List(); int memorySizeToRead = (softKeyStatusMemory.Size + softKeysClickableMemory.Size); - // Offset between status and clickable data - int offset = softKeyStatusMemory.Size * 8; + // Offset between status and clickable data ( + 16 is the empty space created by OSAI ARRAY POINTER) + int offset = (softKeyStatusMemory.Size * 8) + 16; // Read on data from memory CmsError cmsError = MEM_RWIntegerList(R, 0, @@ -775,20 +774,57 @@ namespace CMS_CORE_Library.Osai public override CmsError PLC_ROperatorInputIsNeeded(ref List value) { byte val = 0; - CmsError cmsError = MEM_RWByte(R, 0, OPERATOR_INPUT_NEEDED.MemType, OPERATOR_INPUT_NEEDED.Address, 0, ref val); + CmsError cmsError = MEM_RWByte(R, 0, M155_INPUT_NEEDED.MemType, M155_INPUT_NEEDED.Address, 0, ref val); if (cmsError.IsError()) return cmsError; bool[] bits = ByteToBits(val); - uint i = 0; + string[] parameters; + string actualLine = ""; + int processId = 0; - value = bits - .Select(x => new M155InputIsNeededModel() + foreach (bool bit in bits) + { + if (bit) { - Process = i++, - IsNeeded = x - }) - .ToList(); + // Read active program line + cmsError = ReadActiveLine(processId, ref actualLine); + if (cmsError.IsError()) + return cmsError; + + // Parse line & get parameters + parameters = ExtractM155ParametersFromNcCodeLine(actualLine); + + byte i = 1; + // Skip first parameter because it's the message string + // Set button with -> id = 1..5 -> value = parameter value + Dictionary buttons = parameters.Skip(1)?.ToDictionary(x => i++, x => x); + + value.Add(new M155InputIsNeededModel() + { + Process = (uint)processId, + IsNeeded = bit, + Message = parameters[0] ?? "", + Type = parameters.Count() > 1 ? M155_TYPE.MULTIPLE_BUTTONS : M155_TYPE.REAL, // if there aren't buttons is a simple request + Buttons = buttons + }); + } + + // Next path + processId++; + } + + return NO_ERROR; + } + + private CmsError ReadActiveLine(int processId, ref string line) + { + List lines = new List(); + CmsError cmsError = PROC_RPPLines((ushort)processId,ref lines); + if (cmsError.IsError()) + return cmsError; + + line = lines.First(); return NO_ERROR; } @@ -2421,6 +2457,7 @@ namespace CMS_CORE_Library.Osai { return NO_ERROR; } + public override CmsError FILES_RGetProgramType(ref PROGRAM_TYPE_ENUM programType) { return NO_ERROR; @@ -3839,80 +3876,82 @@ namespace CMS_CORE_Library.Osai internal static class MEMORY_ADDRESS { - internal const int STARTING_ADDRESS = 12000; - - internal static MEMORY_CELL NC_WATCHDOG = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, STARTING_ADDRESS, 1); - internal static MEMORY_CELL ACTIVE_WATCHDOG = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, STARTING_ADDRESS + 1, 1); + internal static MEMORY_CELL NC_WATCHDOG = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 4000, 1); + internal static MEMORY_CELL ACTIVE_WATCHDOG = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 4001, 1); internal static MEMORY_CELL MATR_MACCH_OSAI = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 3403, 0, 1); - internal static MEMORY_CELL FUNCTION_ACCESS = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 12003, 8); + internal static MEMORY_CELL FUNCTION_ACCESS = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 4003, 8); - internal static MEMORY_CELL PRE_POST_POWER_ON = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 12775, 2); - internal static MEMORY_CELL PRE_POST_POWER_ON_CLICKABLE = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 12776, 2); - internal static MEMORY_CELL PRE_POST_POWER_ON_ACK = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 12777, 2); - internal static MEMORY_CELL PRE_POST_POWER_ON_CLICKED = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 12778, 2); + internal static MEMORY_CELL PRE_POST_POWER_ON = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 4007, 2); + internal static MEMORY_CELL PRE_POST_POWER_ON_CLICKABLE = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 4008, 2); + internal static MEMORY_CELL PRE_POST_POWER_ON_ACK = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 4009, 2); + internal static MEMORY_CELL PRE_POST_POWER_ON_CLICKED = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 4010, 2); - internal static MEMORY_CELL AXIS_RESET_PROCEDURE = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 12792, 7, 1); + internal static MEMORY_CELL PROCESS_STATUS = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 4011, 0, 24); + internal static MEMORY_CELL SELECTED_PROCESS = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 4011, 2, 24); + internal static MEMORY_CELL SELECT_PROCESS = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 4023, 1); - internal static MEMORY_CELL PROCESS_STATUS = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 12779, 0, 24); - internal static MEMORY_CELL SELECTED_PROCESS = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 12779, 2, 24); - internal static MEMORY_CELL SELECT_PROCESS = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 12791, 1); + internal static MEMORY_CELL AXIS_RESET_PROCEDURE = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 4024, 7, 1); - internal static MEMORY_CELL COUNTERS = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 43, 0, 40); + internal static MEMORY_CELL NC_SOFTKEYS_VALUE = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 4026, 0, 4); + internal static MEMORY_CELL NC_SOFTKEYS_CLICKABLE = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 4030, 0, 4); + internal static MEMORY_CELL NC_SOFT_KEYS_ACK = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 4034, 4); + internal static MEMORY_CELL NC_SOFT_KEYS_CLICKED = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 4038, 4); - internal static MEMORY_CELL SELECTED_AXIS = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 12801, 0, 1); - internal static MEMORY_CELL SELECT_AXIS = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 12801, 1, 1); + internal static MEMORY_CELL SELECTED_AXIS = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 4040, 0, 1); + internal static MEMORY_CELL SELECT_AXIS = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 4040, 1, 1); - internal static MEMORY_CELL NC_SOFTKEYS_VALUE = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 12793, 0, 4); - internal static MEMORY_CELL NC_SOFTKEYS_CLICKABLE = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 12795, 0, 4); - internal static MEMORY_CELL NC_SOFT_KEYS_ACK = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 12797, 4); - internal static MEMORY_CELL NC_SOFT_KEYS_CLICKED = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 12799, 4); - - internal static MEMORY_CELL USER_SOFTKEYS_VALUE = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 12802, 0, 16); - internal static MEMORY_CELL USER_SOFTKEYS_CLICKABLE = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 12810, 0, 16); + internal static MEMORY_CELL USER_SOFTKEYS_VALUE = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 4042, 0, 16); + internal static MEMORY_CELL USER_SOFTKEYS_CLICKABLE = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 4053, 0, 16); internal static MEMORY_CELL USER_SOFT_KEYS_ACK = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 12818, 16); internal static MEMORY_CELL USER_SOFT_KEYS_CLICKED = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 12825, 16); + + internal static MEMORY_CELL HEADS_DATA = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 4101, 240); - internal static MEMORY_CELL ALARMS_STATUS = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 12007, 128); - internal static MEMORY_CELL ALARMS_DATA = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 12071, 1024); + internal static MEMORY_CELL HEADS_ACK = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 4230, 4); + internal static MEMORY_CELL HEADS_STROBE_INCREMENT = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 4240, 4); + internal static MEMORY_CELL HEADS_STROBE_DECREMENT = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 4250, 4); + + internal static MEMORY_CELL COUNTERS = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 4260, 0, 40); + internal static MEMORY_CELL COUNTER_IS_RESETTABLE = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 4300, 0, 2); + internal static MEMORY_CELL COUNTER_IS_RESETTABLE_ACK = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 4302, 0, 2); + internal static MEMORY_CELL COUNTER_IS_RESETTABLE_STROBE = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 4304, 0, 2); - internal static MEMORY_CELL ALARM_ACK = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 12583, 128); - internal static MEMORY_CELL ALARM_RESTORATION_STROBE = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 12647, 128); - internal static MEMORY_CELL ALARM_REFRESH_STROBE = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 12711, 128); + internal static MEMORY_CELL M155_INPUT_NEEDED = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 4306, 1); + internal static MEMORY_CELL M155_ACK = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 4308, 1); + internal static MEMORY_CELL M155_STROBE = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 4310, 1); - internal static MEMORY_CELL HEADS_DATA = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 12833, 240); - - internal static MEMORY_CELL HEADS_ACK = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 12953, 4); - internal static MEMORY_CELL HEADS_STROBE_INCREMENT = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 12955, 4); - internal static MEMORY_CELL HEADS_STROBE_DECREMENT = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 12957, 4); + internal static MEMORY_CELL MTCONNECT_DATA_NEEDED = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 4312, 1); // Tool manager areas - internal static MEMORY_CELL TOOL_MANAGER_COMMAND = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 13000, 2); + internal static MEMORY_CELL MAGAZINE_ACTION = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 4350, 16); - internal static MEMORY_CELL TOOL_MANAGER_STATUS = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 13001, 2); + internal static MEMORY_CELL TOOL_MANAGER_COMMAND = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 4360, 2); + internal static MEMORY_CELL TOOL_MANAGER_STATUS = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 4362, 2); - internal static MEMORY_CELL TOOL_MANAGER_OPTIONS = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 13002, 2); + internal static MEMORY_CELL TOOL_MANAGER_OPTIONS = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 4364, 2); - internal static MEMORY_CELL MAGAZINE_TYPES = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 13062, 4); - internal static MEMORY_CELL MAGAZINE_POSITIONS_NUMBER = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 13072, 4); + internal static MEMORY_CELL TOOL_STATUS_UPDATED_CMD = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 4400, 2); + internal static MEMORY_CELL TOOL_LIFE_UPDATED_CMD = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 4404, 2); + internal static MEMORY_CELL TOOL_STATUS_UPDATED_ACK = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 4408, 2); + internal static MEMORY_CELL TOOL_LIFE_UPDATED_ACK = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 4412, 2); - internal static MEMORY_CELL MAGAZINES_ENABLED_CMD = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 13082, 2); - internal static MEMORY_CELL MAGAZINES_TOOLING_CMD = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 13084, 2); + internal static MEMORY_CELL TOOL_STATUS_UPDATED_DATA = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 4416, 10); + internal static MEMORY_CELL TOOL_LIFE_UPDATED_DATA = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 4428, 40); + + internal static MEMORY_CELL MAGAZINE_TYPES = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 4470, 4); + internal static MEMORY_CELL MAGAZINE_POSITIONS_NUMBER = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 4482, 4); - internal static MEMORY_CELL TOOL_STATUS_UPDATED_CMD = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 13003, 2); - internal static MEMORY_CELL TOOL_LIFE_UPDATED_CMD = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 13005, 2); - internal static MEMORY_CELL TOOL_STATUS_UPDATED_ACK = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 13007, 2); - internal static MEMORY_CELL TOOL_LIFE_UPDATED_ACK = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 13009, 2); + internal static MEMORY_CELL MAGAZINES_ENABLED_CMD = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 4504, 2); + internal static MEMORY_CELL MAGAZINES_TOOLING_CMD = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 4508, 2); - internal static MEMORY_CELL TOOL_STATUS_UPDATED_DATA = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 13011, 10); - internal static MEMORY_CELL TOOL_LIFE_UPDATED_DATA = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 13022, 40); + // Alarm indexes + internal static MEMORY_CELL ALARMS_STATUS = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 12000, 128); + internal static MEMORY_CELL ALARMS_DATA = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 12065, 1024); - internal static MEMORY_CELL COUNTERS_DATA = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 0, 64); - internal static MEMORY_CELL COUNTERS_ACK = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 0, 2); - internal static MEMORY_CELL COUNTERS_STROBE = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 0, 2); - - internal static MEMORY_CELL OPERATOR_INPUT_NEEDED = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 0, 1); - internal static MEMORY_CELL MTCONNECT_DATA_NEEDED = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 0, 1); + internal static MEMORY_CELL ALARM_ACK = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 13100, 128); + internal static MEMORY_CELL ALARM_RESTORATION_STROBE = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 13200, 128); + internal static MEMORY_CELL ALARM_REFRESH_STROBE = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 13300, 128); } #endregion Memory addresses diff --git a/CMS_CORE_Library/Siemens/Nc_Siemens.cs b/CMS_CORE_Library/Siemens/Nc_Siemens.cs index 6e71917..4f1e238 100644 --- a/CMS_CORE_Library/Siemens/Nc_Siemens.cs +++ b/CMS_CORE_Library/Siemens/Nc_Siemens.cs @@ -1039,7 +1039,7 @@ namespace CMS_CORE_Library.Siemens { byte val = 0; // Read memory - CmsError cmsError = MEM_RWByte(R, 0, OPERATOR_INPUT_NEEDED.MemType, OPERATOR_INPUT_NEEDED.Address, OPERATOR_INPUT_NEEDED.SubAddress, 0, ref val); + CmsError cmsError = MEM_RWByte(R, 0, M155_INPUT_NEEDED.MemType, M155_INPUT_NEEDED.Address, M155_INPUT_NEEDED.SubAddress, 0, ref val); if (cmsError.IsError()) return cmsError; // Convert byte to an array of bits @@ -3336,6 +3336,13 @@ namespace CMS_CORE_Library.Siemens if (newToolPositionType != position.Type) return TOOL_AND_POSITION_NOT_MATCHING_ERROR; + // Check if near positions are disabled + var posizionDisabled = MagazinePositionsData.Where(x => x.MagazineId == magazineId && x.Disabled == true && + ( x.PositionId <= (tool as SiemensToolModel).PositionId + (tool as SiemensToolModel).RightSize/2.0 + || (tool as SiemensToolModel).PositionId + x.PositionId >= (tool as SiemensToolModel).LeftSize/2.0)).ToList(); + if (posizionDisabled.Count() > 0) + return MAGAZINE_POSITION_OCCUPIED_ERROR; + // Check if tool can fit in the position considering other tools foreach (var mountedTool in MagazineMountedTools) { @@ -5599,7 +5606,7 @@ namespace CMS_CORE_Library.Siemens internal static MEMORY_CELL COUNTERS_ACK = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, TABLE, 3008, 2); internal static MEMORY_CELL COUNTERS_STROBE = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, TABLE, 3010, 2); - internal static MEMORY_CELL OPERATOR_INPUT_NEEDED = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, TABLE, 3014, 1); + internal static MEMORY_CELL M155_INPUT_NEEDED = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, TABLE, 3014, 1); internal static MEMORY_CELL MTCONNECT_DATA_NEEDED = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, TABLE, 3042, 1); internal static MEMORY_CELL AXES_BUTTON_VISIBLE = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, TABLE, 3044, 16);