From bad366c80102032470fb20746afa716ea5bdaf60 Mon Sep 17 00:00:00 2001 From: Nicola Carminati Date: Thu, 8 Aug 2019 14:42:00 +0000 Subject: [PATCH] Fix SIemens Tools & Edges reading --- CMS_CORE_Library/Siemens/Nc_Siemens.cs | 79 ++++++++++++++++--- .../Siemens/SiemensEdgesConfigurations.cs | 21 +++-- 2 files changed, 81 insertions(+), 19 deletions(-) diff --git a/CMS_CORE_Library/Siemens/Nc_Siemens.cs b/CMS_CORE_Library/Siemens/Nc_Siemens.cs index a519d00..93b1384 100644 --- a/CMS_CORE_Library/Siemens/Nc_Siemens.cs +++ b/CMS_CORE_Library/Siemens/Nc_Siemens.cs @@ -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 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 diff --git a/CMS_CORE_Library/Siemens/SiemensEdgesConfigurations.cs b/CMS_CORE_Library/Siemens/SiemensEdgesConfigurations.cs index 2634a3b..423c0ad 100644 --- a/CMS_CORE_Library/Siemens/SiemensEdgesConfigurations.cs +++ b/CMS_CORE_Library/Siemens/SiemensEdgesConfigurations.cs @@ -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> EdgesConfig = new Dictionary>() { { @@ -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}