WIP Balluf

Fix OSAI axes order
This commit is contained in:
Lucio Maranta
2019-12-02 15:20:17 +00:00
parent 5c319e318d
commit 2d3f3c6501
4 changed files with 96 additions and 11 deletions
+2
View File
@@ -119,6 +119,8 @@ namespace CMS_CORE_Application
Stopwatch st = new Stopwatch();
sw.Restart();
N.NC_Connect();
Dictionary<string, double> b = new Dictionary<string, double>();
N.AXES_RInterpPosition(1, ref b);
List<int> ints = new List<int>();
N.MEM_RWIntegerList(false, 1, Nc.MEMORY_TYPE.Siemens_DB, 258, 0, 256, ref ints);
+11 -6
View File
@@ -1960,7 +1960,6 @@ namespace CMS_CORE_Library.Osai
nReturn = OpenNC.GetAxesPosition(process, 0, OSAI_INTERPOLPOS, ref nAxis, out GETINTDATAC4array Pos, out uint errorClass, out uint errorNum);
//
if (errorClass != 0 || errorNum != 0 || nReturn == 0)
return GetNCError(errorClass, errorNum);
@@ -2265,13 +2264,19 @@ namespace CMS_CORE_Library.Osai
axesData.Clear();
ushort nReturn, axesNumber = 64;
ushort nReturn, axesNumber = 20;
//Try to get information
try
{
// Read axes info from NC
nReturn = OpenNC.GetAxesInfo3(ushort.MaxValue, ref axesNumber, out unsignedshortarray axesProcess, out byte[] axesName, out unsignedshortarray axesType, out unsignedshortarray axesInterface, out uint errorClass, out uint errorNum);
//nReturn = OpenNC.GetAxesInfo3(ushort.MaxValue, ref axesNumber, out unsignedshortarray axesProcess, out byte[] axesName, out unsignedshortarray axesType, out unsignedshortarray axesInterface, out uint errorClass, out uint errorNum);
//if (errorClass != 0 || errorNum != 0 || nReturn == 0)
// return GetNCError(errorClass, errorNum);
// Read axes info from NC (use GetAxesPosition because GetAxesInfo3 returns useless data and axes order is not coerent with OsaiBootController)
nReturn = OpenNC.GetAxesPosition(process, 0, OSAI_INTERPOLPOS, ref axesNumber, out GETINTDATAC4array axesName, out uint errorClass, out uint errorNum);
if (errorClass != 0 || errorNum != 0 || nReturn == 0)
return GetNCError(errorClass, errorNum);
// Get from PLC which axis can be selected
List<byte> ids = new List<byte>();
@@ -2284,9 +2289,9 @@ namespace CMS_CORE_Library.Osai
for (int i = 0; i < axesNumber; i++)
{
var charName = Convert.ToChar(axesName[i]);
var charName = Convert.ToChar(axesName[i].AxisName);
// Filter per master axes and process
if ((charName < 'a' || charName > 'z') && charName != 'S' && charName != '\0' && axesProcess[i] == process)
if ((charName < 'a' || charName > 'z') && charName != 'S' && charName != '\0')
{
// Add to returned value
axesData.Add(new AxisModel()
+56 -5
View File
@@ -1663,7 +1663,7 @@ namespace CMS_CORE_Library.Siemens
if (!ok)
{
// Reset strobe
cmsError = MEM_RWBoolean(W, 0, memType, strobeByte, bitId, ref writeValue);
cmsError = MEM_RWBoolean(W, 0, memType, TABLE, strobeByte, bitId, ref writeValue);
if (cmsError.IsError())
return cmsError;
}
@@ -4476,7 +4476,7 @@ namespace CMS_CORE_Library.Siemens
ushort dimensions = (ushort)(((tool.LeftSize << 4) + tool.RightSize) << 8);
DataSvc dataSvc = new DataSvc();
// Data
Item[] items = new Item[] {
List<Item> items = new List<Item> {
new Item(){ Path = string.Format("DB{0}.DBB10", BALLUF_EMPTY_TABLE.Address), Value = 0 },
new Item(){ Path = string.Format("DB{0}.DBB12", BALLUF_EMPTY_TABLE.Address), Value = 0 },
new Item(){ Path = string.Format("DB{0}.DBW44", BALLUF_EMPTY_TABLE.Address), Value = dimensions },
@@ -4486,14 +4486,65 @@ namespace CMS_CORE_Library.Siemens
new Item(){ Path = string.Format("DB{0}.DBW52", BALLUF_EMPTY_TABLE.Address), Value = tool.MaxSpeed },
new Item(){ Path = string.Format("DB{0}.DBD56", BALLUF_EMPTY_TABLE.Address), Value = tool.Load },
new Item(){ Path = string.Format("DB{0}.DBD60", BALLUF_EMPTY_TABLE.Address), Value = tool.Gamma },
// EDGE
new Item(){ Path = string.Format("DB{0}.DBW96", BALLUF_EMPTY_TABLE.Address), Value = tool.ToolType },
new Item(){ Path = string.Format("DB{0}.DBW98", BALLUF_EMPTY_TABLE.Address), Value = 9 },
new Item(){ Path = string.Format("DB{0}.DBW80", BALLUF_EMPTY_TABLE.Address), Value = 1}
new Item(){ Path = string.Format("DB{0}.DBW80", BALLUF_EMPTY_TABLE.Address), Value = 1},
};
EdgeModel edge = tool.EdgesData[0];
SiemensEdgesConfiguration toolEdgesConfig = new SiemensEdgesConfiguration();
// Get config for current tool type
List<EdgeConfigModel> toolTypeConfig = toolEdgesConfig.EdgesConfig[tool.ToolType];
// Set edge additional params, read by configuration
foreach (EdgeConfigModel conf in toolTypeConfig)
{
if (edge.EdgeAdditionalParams.ContainsKey(conf.Name))
{
items.Add(new Item() {
Path = string.Format(toolEdgesConfig.TDIEdgeFields[conf.Path], BALLUF_EMPTY_TABLE.Address),
Value = edge.EdgeAdditionalParams[conf.Name]
});
}
}
// Life Parameters
switch (tool.LifeType)
{
case SIEMENS_LIFE_TYPE.TIME:
{
items.AddRange(new List<Item>()
{
new Item() { Path = string.Format("DB{0}.DBD196", BALLUF_EMPTY_TABLE.Address), Value = edge.ResidualLife }, // MOP2
new Item() { Path = string.Format("DB{0}.DBD204", BALLUF_EMPTY_TABLE.Address), Value = edge.NominalLife }, // MOP11
new Item() { Path = string.Format("DB{0}.DBD192", BALLUF_EMPTY_TABLE.Address), Value = edge.PreAlmLife } // MOP1
});
}
break;
case SIEMENS_LIFE_TYPE.COUNT:
{
items.Add(new Item() { Path = string.Format("DB{0}.DBW202", BALLUF_EMPTY_TABLE.Address), Value = edge.ResidualLife }); // MOP4
items.Add(new Item() { Path = string.Format("DB{0}.DBW208", BALLUF_EMPTY_TABLE.Address), Value = edge.NominalLife }); // MOP13
items.Add(new Item() { Path = string.Format("DB{0}.DBW200", BALLUF_EMPTY_TABLE.Address), Value = edge.PreAlmLife }); // MOP3
}
break;
case SIEMENS_LIFE_TYPE.WEAR:
{
items.Add(new Item() { Path = string.Format("DB{0}.DBD214", BALLUF_EMPTY_TABLE.Address), Value = edge.ResidualLife }); // MOP6
items.Add(new Item() { Path = string.Format("DB{0}.DBD218", BALLUF_EMPTY_TABLE.Address), Value = edge.NominalLife }); // MOP15
items.Add(new Item() { Path = string.Format("DB{0}.DBD210", BALLUF_EMPTY_TABLE.Address), Value = edge.PreAlmLife }); // MOP5
}
break;
}
try
{
dataSvc.Write(items);
//dataSvc.Write(items.ToArray());
}
catch (Exception ex)
{
@@ -6044,7 +6095,7 @@ namespace CMS_CORE_Library.Siemens
private void ActionsHandler(ToolInfo toolInfo)
{
switch (toolInfo.action)
switch (toolInfo.action)
{
case ToolAction.TOOL_DELETED:
{
@@ -446,5 +446,32 @@ namespace CMS_CORE_Library.Siemens
}
},
};
public Dictionary<string, string> TDIEdgeFields = new Dictionary<string, string>()
{
{ "$TC_DP3[", "DB{0}.DBD100"},
{ "$TC_DP4[", "DB{0}.DBD104"},
{ "$TC_DP5[", "DB{0}.DBD108"},
{ "$TC_DP6[", "DB{0}.DBD112"},
{ "$TC_DP7[", "DB{0}.DBD116"},
{ "$TC_DP8[", "DB{0}.DBD120"},
{ "$TC_DP9[", "DB{0}.DBD124"},
{ "$TC_DP10[", "DB{0}.DBD128"},
{ "$TC_DP11[", "DB{0}.DBD132"},
{ "$TC_DP12[", "DB{0}.DBD136"},
{ "$TC_DP13[", "DB{0}.DBD140"},
{ "$TC_DP14[", "DB{0}.DBD144"},
{ "$TC_DP15[", "DB{0}.DBD148"},
{ "$TC_DP16[", "DB{0}.DBD152"},
{ "$TC_DP17[", "DB{0}.DBD156"},
{ "$TC_DP18[", "DB{0}.DBD160"},
{ "$TC_DP19[", "DB{0}.DBD164"},
{ "$TC_DP20[", "DB{0}.DBD168"},
{ "$TC_DP21[", "DB{0}.DBD172"},
{ "$TC_DP22[", "DB{0}.DBD176"},
{ "$TC_DP23[", "DB{0}.DBD180"},
{ "$TC_DP24[", "DB{0}.DBD184"},
{ "$TC_DP25[", "DB{0}.DBD188"},
};
}
}