WIP Assisted Tooling

This commit is contained in:
Lucio Maranta
2019-03-11 16:16:34 +00:00
parent 254898cfa2
commit 49e8286710
10 changed files with 213 additions and 18 deletions
+6 -1
View File
@@ -114,7 +114,12 @@ namespace CMS_CORE_Application
SelectedProcessData selected = new SelectedProcessData();
cmsError = N.PROC_RSelectedProcessData(1, ref selected);
//cmsError = N.PROC_RSelectedProcessData(1, ref selected);
cmsError = N.PLC_WAssistedToolingCmd(1, 1, 1, ASSISTED_TOOLING_ACTION.UNLOAD);
AssistedToolingModel ass = new AssistedToolingModel();
cmsError = N.PLC_RAssistedToolingData(ref ass);
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds);
+74 -2
View File
@@ -930,6 +930,75 @@ namespace CMS_CORE_Library.Demo
return NO_ERROR;
}
public override CmsError PLC_WAssistedToolingCmd(ushort toolId, ushort magazineId, ushort positionId, ASSISTED_TOOLING_ACTION action)
{
List<ushort> values = new List<ushort>()
{
toolId,
magazineId,
positionId
};
// Write data
CmsError cmsError = MEM_RWWordList(W, 1, ASSISTED_TOOLING_DATA.MemType, ASSISTED_TOOLING_DATA.Address, 3, ref values);
if (cmsError.IsError())
return cmsError;
// Write action
byte val = (byte)action;
cmsError = MEM_RWByte(W, 1, ASSISTED_TOOLING_DATA.MemType, ASSISTED_TOOLING_DATA.Address + 6, 0, ref val);
if (cmsError.IsError())
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 NO_ERROR;
}
public override CmsError PLC_RAssistedToolingData(ref AssistedToolingModel data)
{
byte procFinalValue = 0;
// Read procedure final value
CmsError cmsError = MEM_RWByte(R, 0, ASSISTED_TOOLING_FINAL_VALUE.MemType, ASSISTED_TOOLING_FINAL_VALUE.Address, 0, ref procFinalValue);
if (cmsError.IsError())
return cmsError;
// Check if the procedure is finished
if(GetBitValue(procFinalValue, 1))
{
List<ushort> values = new List<ushort>();
// Read actual data
cmsError = MEM_RWWordList(R, 1, ASSISTED_TOOLING_DATA.MemType, ASSISTED_TOOLING_DATA.Address, 3, ref values);
if (cmsError.IsError())
return cmsError;
// Set action
ASSISTED_TOOLING_ACTION action = ASSISTED_TOOLING_ACTION.NONE;
if (GetBitValue(procFinalValue, 2))
action = ASSISTED_TOOLING_ACTION.UNLOAD;
if (GetBitValue(procFinalValue, 3))
action = ASSISTED_TOOLING_ACTION.EXCHANGE;
data = new AssistedToolingModel()
{
IsActive = GetBitValue(procFinalValue, 1),
ToolId = values[0],
MagazineId = values[1],
PositionId = values[2],
Action = action
};
}
return NO_ERROR;
}
private CmsError ResetStrobe(int bitId, int strobeByte, int ackByte, MEMORY_TYPE memType)
{
int n = 5;
@@ -999,8 +1068,7 @@ namespace CMS_CORE_Library.Demo
return NO_ERROR;
}
#endregion PLC High-level data
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -3310,6 +3378,10 @@ namespace CMS_CORE_Library.Demo
internal static MEMORY_CELL ORIGIN_DATA = new MEMORY_CELL(MEMORY_TYPE.Demo, 459, 1);
internal static MEMORY_CELL OFFSET_ID = new MEMORY_CELL(MEMORY_TYPE.Demo, 460, 1);
internal static MEMORY_CELL ASSISTED_TOOLING_DATA = new MEMORY_CELL(MEMORY_TYPE.Demo, 461, 7);
internal static MEMORY_CELL ASSISTED_TOOLING_STROBE = new MEMORY_CELL(MEMORY_TYPE.Demo, 468, 1);
internal static MEMORY_CELL ASSISTED_TOOLING_FINAL_VALUE = new MEMORY_CELL(MEMORY_TYPE.Demo, 469, 1);
}
#endregion Memory addresses
+76 -2
View File
@@ -1113,6 +1113,75 @@ namespace CMS_CORE_Library.Fanuc
return NO_ERROR;
}
public override CmsError PLC_WAssistedToolingCmd(ushort toolId, ushort magazineId, ushort positionId, ASSISTED_TOOLING_ACTION action)
{
List<ushort> values = new List<ushort>()
{
toolId,
magazineId,
positionId
};
// Write data
CmsError cmsError = MEM_RWWordList(W, 1, ASSISTED_TOOLING_DATA.MemType, ASSISTED_TOOLING_DATA.Address, 3, ref values);
if (cmsError.IsError())
return cmsError;
// Write action
byte val = (byte)action;
cmsError = MEM_RWByte(W, 1, ASSISTED_TOOLING_DATA.MemType, ASSISTED_TOOLING_DATA.Address + 6, 0, ref val);
if (cmsError.IsError())
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);
}
public override CmsError PLC_RAssistedToolingData(ref AssistedToolingModel data)
{
byte procFinalValue = 0;
// Read procedure final value
CmsError cmsError = MEM_RWByte(R, 0, ASSISTED_TOOLING_FINAL_VALUE.MemType, ASSISTED_TOOLING_FINAL_VALUE.Address, 0, ref procFinalValue);
if (cmsError.IsError())
return cmsError;
// Check if the procedure is finished
if (GetBitValue(procFinalValue, 1))
{
List<ushort> values = new List<ushort>();
// Read actual data
cmsError = MEM_RWWordList(R, 1, ASSISTED_TOOLING_DATA.MemType, ASSISTED_TOOLING_DATA.Address, 3, ref values);
if (cmsError.IsError())
return cmsError;
// Set action
ASSISTED_TOOLING_ACTION action = ASSISTED_TOOLING_ACTION.NONE;
if (GetBitValue(procFinalValue, 2))
action = ASSISTED_TOOLING_ACTION.UNLOAD;
if (GetBitValue(procFinalValue, 3))
action = ASSISTED_TOOLING_ACTION.EXCHANGE;
data = new AssistedToolingModel()
{
IsActive = GetBitValue(procFinalValue, 1),
ToolId = values[0],
MagazineId = values[1],
PositionId = values[2],
Action = action
};
}
return NO_ERROR;
}
#endregion PLC High-level data
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -4413,7 +4482,7 @@ namespace CMS_CORE_Library.Fanuc
internal static MEMORY_CELL M155_INPUT_ACK = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, STARTING_ADDRESS + 3005, 1);
internal static MEMORY_CELL M155_INPUT_STROBE = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, STARTING_ADDRESS + 3006, 1);
internal static MEMORY_CELL M154_SWITCH_ONOFF = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, STARTING_ADDRESS, 2);
internal static MEMORY_CELL M154_SWITCH_ONOFF = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, STARTING_ADDRESS, 1, 2);
internal static MEMORY_CELL M154_ACK = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, STARTING_ADDRESS + 3031, 1);
internal static MEMORY_CELL M154_STROBE = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, STARTING_ADDRESS + 3032, 1);
@@ -4441,7 +4510,12 @@ namespace CMS_CORE_Library.Fanuc
internal static MEMORY_CELL MAGAZINES_ENABLED_CMD = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, STARTING_ADDRESS + 4213, 4);
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_FINAL_VALUE = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, STARTING_ADDRESS + 4230, 1);
// Tool table indexes
internal static MEMORY_CELL TOOL_TABLE_INDEX = new MEMORY_CELL(MEMORY_TYPE.Fanuc_D, 10000, 6900);
internal static MEMORY_CELL FAMILY_TABLE_INDEX = new MEMORY_CELL(MEMORY_TYPE.Fanuc_D, 17000, 7500);
+16
View File
@@ -152,6 +152,13 @@ namespace CMS_CORE_Library.Models
REAL = 4
}
public enum ASSISTED_TOOLING_ACTION
{
NONE = 0,
UNLOAD = 1,
EXCHANGE = 2
}
public static IFormatProvider numberFormat = (NumberFormatInfo)CultureInfo.InvariantCulture.NumberFormat.Clone();
#region Cms Errors Codes
@@ -391,6 +398,15 @@ namespace CMS_CORE_Library.Models
public short ActiveOffsetId { get; set; }
}
public class AssistedToolingModel
{
public bool IsActive { get; set; }
public ushort ToolId { get; set; }
public ushort MagazineId { get; set; }
public ushort PositionId { get; set; }
public ASSISTED_TOOLING_ACTION Action { get; set; }
}
public enum ORIGIN
{
NONE = 0,
+4
View File
@@ -683,6 +683,10 @@ namespace CMS_CORE_Library
public abstract CmsError PROC_RSelectedProcessData(int processId, ref SelectedProcessData processData);
public abstract CmsError PLC_WAssistedToolingCmd(ushort toolId, ushort magazineId, ushort positionId, ASSISTED_TOOLING_ACTION action);
public abstract CmsError PLC_RAssistedToolingData(ref AssistedToolingModel data);
#endregion PROCESS (PATH, CHANNEL) data (to override)
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+10
View File
@@ -1050,6 +1050,16 @@ namespace CMS_CORE_Library.Osai
return cmsError;
}
public override CmsError PLC_WAssistedToolingCmd(ushort toolId, ushort magazineId, ushort positionId, ASSISTED_TOOLING_ACTION action)
{
return NO_ERROR;
}
public override CmsError PLC_RAssistedToolingData(ref AssistedToolingModel data)
{
return NO_ERROR;
}
private CmsError PLC_WStrobe(MEMORY_CELL ackCell, MEMORY_CELL strobeCell, uint id)
{
CmsError cmsError;
+12 -11
View File
@@ -1295,6 +1295,17 @@ namespace CMS_CORE_Library.Siemens
return cmsError;
}
public override CmsError PLC_WAssistedToolingCmd(ushort toolId, ushort magazineId, ushort positionId, ASSISTED_TOOLING_ACTION action)
{
return FUNCTION_NOT_ALLOWED_ERROR;
}
public override CmsError PLC_RAssistedToolingData(ref AssistedToolingModel data)
{
return NO_ERROR;
}
private CmsError PLC_WStrobe(MEMORY_CELL ackCell, MEMORY_CELL strobeCell, uint id)
{
CmsError cmsError;
@@ -1343,7 +1354,7 @@ namespace CMS_CORE_Library.Siemens
private CmsError ResetStrobe(int bitId, int strobeByte, int ackByte, MEMORY_TYPE memType)
{
int n = 5;
int n = 600;
bool readValue = false;
bool writeValue = false;
CmsError cmsError;
@@ -4088,16 +4099,6 @@ namespace CMS_CORE_Library.Siemens
SiemensAlmSvc.Subscribe(AlarmsChanged);
}
private bool GetBitValue(int b, int bitNumber)
{
return (b & (1 << bitNumber - 1)) != 0;
}
private bool GetBitValue(byte b, int bitNumber)
{
return (b & (1 << bitNumber - 1)) != 0;
}
private int SetBitValue(int intVal, bool val, int bitIndex)
{
if (val)
+1 -1
View File
@@ -228,7 +228,7 @@ namespace CMS_CORE_Library
public static List<FieldsConfiguration> NcToolFieldsConfig = new List<FieldsConfiguration>()
{
new FieldsConfiguration{ Name = "id", Type = "int", SelectValues = null, Category = "general", ReadOnly = true, MinValue = 0, MaxValue = 0},
new FieldsConfiguration{ Name = "id", Type = "int", SelectValues = null, Category = "general", ReadOnly = true, MinValue = 0, MaxValue = ushort.MaxValue},
new FieldsConfiguration{ Name = "shankId", Type = "int", SelectValues = null, Category = "general", ReadOnly = true, MinValue = 0, MaxValue = 0},
new FieldsConfiguration{ Name = "familyId", Type = "select", SelectValues = new Dictionary<int, string>(), Category = "general", ReadOnly = false, MinValue = 0, MaxValue = ushort.MaxValue},
//new FieldsConfiguration{ Name = "offsetLength", Type = "int", SelectValues = null, Category = "general", ReadOnly = false, MinValue = 0, MaxValue = ushort.MaxValue},
+10
View File
@@ -274,5 +274,15 @@ namespace CMS_CORE_Library.Utils
return returnVal;
}
public static bool GetBitValue(int b, int bitNumber)
{
return (b & (1 << bitNumber - 1)) != 0;
}
public static bool GetBitValue(byte b, int bitNumber)
{
return (b & (1 << bitNumber - 1)) != 0;
}
}
}
@@ -261,7 +261,8 @@ namespace Nc_Demo_Application.Server.Service
wordList = new List<ushort>();
for (int i = 0; i < Convert.ToInt32(number); i++)
{
wordList.Add(Convert.ToUInt16(DatabaseController.GetInstance().GetWordValue(idx + i), 2));
wordList.Add(Convert.ToUInt16(DatabaseController.GetInstance().GetWordValue(idx), 2));
idx += i * 2;
}
}
@@ -306,6 +307,7 @@ namespace Nc_Demo_Application.Server.Service
foreach (byte item in body.byteList)
{
DatabaseController.GetInstance().PutByteValue(idx, item);
idx++;
}
}
@@ -320,6 +322,7 @@ namespace Nc_Demo_Application.Server.Service
foreach (ushort item in body.wordList)
{
DatabaseController.GetInstance().PutWordValue(idx, item);
idx += 2;
}
}