Fix SIemens Tools & Edges reading

This commit is contained in:
Nicola Carminati
2019-08-08 14:42:00 +00:00
parent ba0dc34ad4
commit bad366c801
2 changed files with 81 additions and 19 deletions
+66 -13
View File
@@ -1996,14 +1996,15 @@ namespace CMS_CORE_Library.Siemens
try
{
Item[] items = new Item[6]
Item[] items = new Item[7]
{
new Item { Path = "/Channel/State/actTNumber[u" + processId + ",1]" }, // ActiveToolId
new Item { Path = "/Channel/State/actDNumber[u" + processId + ",1]" }, // OffsetId
new Item { Path = "/Channel/State/actFrameIndex[u" + processId + "]" }, // Origin
new Item { Path = "DB21.DBB4"}, // Work override
new Item { Path = "DB21.DBB5"}, // Rapid override,
new Item { Path = "/Channel/State/actFeedRateIpo[u" + processId + ", 1]"}
new Item { Path = "/Channel/State/actFeedRateIpo[u" + processId + ", 1]"},
new Item { Path = "/Nck/Configuration/numCuttEdgeParams[1]"}, // Cutt Edge Params
};
// Read data
@@ -2021,25 +2022,77 @@ namespace CMS_CORE_Library.Siemens
}
OffsetModel offset = new OffsetModel();
if (Convert.ToInt16(items[1].Value) != 0)
//Read the ID of the Tool & Edge
short actualToolId = Convert.ToInt16(items[0].Value);
short actualEdgeId = Convert.ToInt16(items[1].Value);
short numCuttEdgeParams = Convert.ToInt16(items[6].Value);
int offsetEdge = (actualEdgeId - 1) * numCuttEdgeParams;
if (actualToolId != 0 && actualEdgeId != 0)
{
//Setup the items for the tools. Must be read only this value
Item[] itemsToolEdge = new Item[4]
{
new Item { Path = "/Tool/Compensation/edgeData[u1,c"+ actualToolId +","+ (offsetEdge + 3) + "]" }, // $TC_DP3
new Item { Path = "/Tool/Compensation/edgeData[u1,c"+ actualToolId +","+ (offsetEdge + 6) + "]" }, // $TC_DP6
new Item { Path = "/Tool/Compensation/edgeData[u1,c"+ actualToolId +","+ (offsetEdge + 12) + "]" }, // $TC_DP12
new Item { Path = "/Tool/Compensation/edgeData[u1,c"+ actualToolId +","+ (offsetEdge + 15) + "]" } // $TC_DP15
};
dataSvc.Read(itemsToolEdge);
offset = new OffsetModel()
{
Id = actualEdgeId,
Length = Convert.ToDouble(itemsToolEdge[0].Value),
Radius = Convert.ToDouble(itemsToolEdge[1].Value),
WearLength = Convert.ToDouble(itemsToolEdge[2].Value),
WearRadius = Convert.ToDouble(itemsToolEdge[3].Value),
RealLength = Convert.ToDouble(itemsToolEdge[0].Value) + Convert.ToDouble(itemsToolEdge[2].Value),
RealRadius = Convert.ToDouble(itemsToolEdge[1].Value) + Convert.ToDouble(itemsToolEdge[3].Value)
};
/* Other Method. Find it in the Database of the Tools... Too SLow? (Nicola Carminati 08/08/19)
// Find edge
EdgeModel edge = ToolTableData.Where(x => x.Id == Convert.ToInt16(items[0].Value))
.FirstOrDefault()
.EdgesData.Where(x => x.Id == Convert.ToInt16(items[1].Value))
.FirstOrDefault();
// Convert edgeModel to offsetModel
offset = new OffsetModel()
//Find the Type of the Tool
SiemensEdgesConfiguration toolEdgesConfig = new SiemensEdgesConfiguration();
List<EdgeConfigModel> toolTypeConfig = toolEdgesConfig.EdgesConfig[
ToolTableData.Where(x => x.Id == Convert.ToInt16(items[0].Value)).FirstOrDefault().ToolType
];
if(toolTypeConfig != null && toolTypeConfig.Count > 0)
{
Id = (short)edge.Id,
Length = edge.EdgeAdditionalParams["lenght"],
Radius = edge.EdgeAdditionalParams["radius"],
WearLength = edge.EdgeAdditionalParams["wearLenght"],
WearRadius = edge.EdgeAdditionalParams["wearRadius"],
RealLength = edge.EdgeAdditionalParams["lenght"] + edge.EdgeAdditionalParams["wearLenght"],
RealRadius = edge.EdgeAdditionalParams["radius"] + edge.EdgeAdditionalParams["wearRadius"]
};
//Read Names of the parameters
String lenghtName = toolTypeConfig.Where(x => x.Path == "$TC_DP3[").FirstOrDefault().Name;
String radiusName = toolTypeConfig.Where(x => x.Path == "$TC_DP6[").FirstOrDefault().Name;
String wearLenghtName = toolTypeConfig.Where(x => x.Path == "$TC_DP12[").FirstOrDefault().Name;
String wearRadiusName = toolTypeConfig.Where(x => x.Path == "$TC_DP15[").FirstOrDefault().Name;
if(!String.IsNullOrEmpty(wearLenghtName) && !String.IsNullOrEmpty(wearRadiusName) && !String.IsNullOrEmpty(lenghtName) && !String.IsNullOrEmpty(radiusName))
{
// Convert edgeModel to offsetModel
offset = new OffsetModel()
{
Id = (short)edge.Id,
Length = edge.EdgeAdditionalParams[lenghtName],
Radius = edge.EdgeAdditionalParams[radiusName],
WearLength = edge.EdgeAdditionalParams[wearLenghtName],
WearRadius = edge.EdgeAdditionalParams[wearRadiusName],
RealLength = edge.EdgeAdditionalParams[lenghtName] + edge.EdgeAdditionalParams[wearLenghtName],
RealRadius = edge.EdgeAdditionalParams[radiusName] + edge.EdgeAdditionalParams[wearRadiusName]
};
}
}*/
}
// Creata return model
@@ -5,6 +5,14 @@ namespace CMS_CORE_Library.Siemens
{
internal class SiemensEdgesConfiguration
{
//This Parameter must be present for every tooltype!!!!
//
// $TC_DP3
// $TC_DP6
// $TC_DP12
// $TC_DP15
public Dictionary<int, List<EdgeConfigModel>> EdgesConfig = new Dictionary<int, List<EdgeConfigModel>>()
{
{
@@ -105,7 +113,7 @@ namespace CMS_CORE_Library.Siemens
new EdgeConfigModel{ Name = "vector1", Path = "$TC_DPV3[", Number = 28},
new EdgeConfigModel{ Name = "vector2", Path = "$TC_DPV4[", Number = 29},
new EdgeConfigModel{ Name = "vector3", Path = "$TC_DPV5[", Number = 30},
new EdgeConfigModel{ Name = "teeth", Path = "$TC_DPNT[", Number = 34 }
new EdgeConfigModel{ Name = "teeth", Path = "$TC_DPNT[", Number = 34 },
}
},
{
@@ -115,8 +123,9 @@ namespace CMS_CORE_Library.Siemens
new EdgeConfigModel{ Name = "lenght", Path = "$TC_DP3[", Number = 3},
new EdgeConfigModel{ Name = "radius", Path = "$TC_DP6[", Number = 6},
new EdgeConfigModel{ Name = "outsideRadius", Path = "$TC_DP7[", Number = 7},
new EdgeConfigModel{ Name = "ToolAngle", Path = "$TC_DP11[", Number = 11},
new EdgeConfigModel{ Name = "teeth", Path = "$TC_DPNT[", Number = 34 }
new EdgeConfigModel{ Name = "toolAngle", Path = "$TC_DP11[", Number = 11},
new EdgeConfigModel{ Name = "wearLenght", Path = "$TC_DP12[", Number = 12},
new EdgeConfigModel{ Name = "wearRadius", Path = "$TC_DP15[", Number = 15},
}
},
{
@@ -321,9 +330,9 @@ namespace CMS_CORE_Library.Siemens
new EdgeConfigModel{ Name = "geomWearLenght1", Path = "$TC_DP12[", Number = 12},
new EdgeConfigModel{ Name = "geomWearLenght2", Path = "$TC_DP13[", Number = 13},
new EdgeConfigModel{ Name = "geomWearLenght3", Path = "$TC_DP14[", Number = 14},
new EdgeConfigModel{ Name = "WearDiameter", Path = "$TC_DP15[", Number = 15},
new EdgeConfigModel{ Name = "WearSlotWdth", Path = "$TC_DP16[", Number = 16},
new EdgeConfigModel{ Name = "WearGeomPrjection", Path = "$TC_DP17[", Number = 17},
new EdgeConfigModel{ Name = "wearDiameter", Path = "$TC_DP15[", Number = 15},
new EdgeConfigModel{ Name = "wearSlotWdth", Path = "$TC_DP16[", Number = 16},
new EdgeConfigModel{ Name = "wearGeomPrjection", Path = "$TC_DP17[", Number = 17},
new EdgeConfigModel{ Name = "adapterLenght1", Path = "$TC_DP21[", Number = 21},
new EdgeConfigModel{ Name = "adapterLenght2", Path = "$TC_DP22[", Number = 22},
new EdgeConfigModel{ Name = "adapterLenght3", Path = "$TC_DP23[", Number = 23}