WIP Assisted Tooling
This commit is contained in:
@@ -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);
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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)
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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},
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user