wanghan 7 miesięcy temu
rodzic
commit
6ed22f51bb
1 zmienionych plików z 98 dodań i 8 usunięć
  1. 98 8
      TeamAAS-VM/Core/Management.cs

+ 98 - 8
TeamAAS-VM/Core/Management.cs

@@ -1821,7 +1821,7 @@ namespace TeamAAS_VP.Core
                         }
                     }
                 }
-                // 固定相机取料拍照
+                // 固定相机取料拍照--外壳拍照
                 else if (addressConfig.In_FixedCameraPickExe.Address.Contains(tuple.nodeId))
                 {
                     if (tuple.value is bool state)
@@ -1889,6 +1889,51 @@ namespace TeamAAS_VP.Core
                                 Vector<double> p3 = Vector<double>.Build.Dense(new double[] { visionResults[3].X, visionResults[3].Y });
                                 Vector<double> p4 = Vector<double>.Build.Dense(new double[] { visionResults[0].X, visionResults[0].Y });
 
+                                LogHelper.WriteLogInfo($"P1:{visionResults[1].X};{visionResults[1].Y};");
+                                LogHelper.WriteLogInfo($"P2:{visionResults[2].X};{visionResults[2].Y};");
+                                LogHelper.WriteLogInfo($"P3:{visionResults[3].X};{visionResults[3].Y};");
+                                LogHelper.WriteLogInfo($"P4:{visionResults[0].X};{visionResults[0].Y};");
+                                var pp1 = new Point2d(visionResults[1].X, visionResults[1].Y);
+                                var pp2 = new Point2d(visionResults[2].X, visionResults[2].Y);
+                                var pp3 = new Point2d(visionResults[3].X, visionResults[3].Y);
+                                var pp4 = new Point2d(visionResults[0].X, visionResults[0].Y);
+                                var dist1 = Point2d.Distance(pp1, pp2);//长1
+                                var dist2 = Point2d.Distance(pp2, pp3);//宽1
+                                var dist3 = Point2d.Distance(pp3, pp4);//长2
+                                var dist4 = Point2d.Distance(pp1, pp4);//宽2
+                                LogHelper.WriteLogInfo($"dist1={dist1};dist2={dist2};dist3={dist3};dist4={dist4};");
+                                if (currentProduct.GlobalParamListCollection.Count >= 4)
+                                {
+                                    var param = currentProduct.GlobalParamListCollection.FirstOrDefault(p => p.Number == 2);
+                                    if (param != null)//长
+                                    {
+                                        var length = Double.Parse(param.Param1);
+                                        var limtDown = Double.Parse(param.Param2);
+                                        var LimtUp = Double.Parse(param.Param3);
+                                        if (!(((length + limtDown) <= dist1) && (dist1 <= (length + LimtUp)) && (((length + limtDown) <= dist3) && (dist3 <= (length + LimtUp)))))
+                                        {
+                                            SendTaskMessage($"屏幕长度超范围:长1={dist1},长2={dist3},para1={length},para2={limtDown},para3={LimtUp}", MessageLevel.Alarm);
+                                            await plc.WriteNodeAsync(addressConfig.Out_FixedCameraPickStatus.Address, (Int16)2);
+                                            return;
+                                        }
+                                        SendTaskMessage($"屏幕长度:长1={dist1},长2={dist3},para1={length},para2={limtDown},para3={LimtUp}", MessageLevel.Info);
+                                    }
+                                    param = currentProduct.GlobalParamListCollection.FirstOrDefault(p => p.Number == 3);
+                                    if (param != null)//宽
+                                    {
+                                        var length = Double.Parse(param.Param1);
+                                        var limtDown = Double.Parse(param.Param2);
+                                        var LimtUp = Double.Parse(param.Param3);
+                                        if (!(((length + limtDown) <= dist2) && (dist2 <= (length + LimtUp)) && (((length + limtDown) <= dist4) && (dist4 <= (length + LimtUp)))))
+                                        {
+                                            SendTaskMessage($"屏幕宽度超范围:宽1={dist2},宽2={dist4},para1={length},para2={limtDown},para3={LimtUp}", MessageLevel.Alarm);
+                                            await plc.WriteNodeAsync(addressConfig.Out_FixedCameraPickStatus.Address, (Int16)2);
+                                            return;
+                                        }
+                                        SendTaskMessage($"屏幕宽度:宽1={dist2},宽2={dist4},para1={length},para2={limtDown},para3={LimtUp}", MessageLevel.Info);
+                                    }
+                                }
+
                                 var center = RectangleCenterCalculator.CalculateByPCAWithKnownOrder(new List<Vector<double>> { p1, p2, p3, p4 });
                                 UpCameraPutResults[1].X = (float)center.Center[0];
                                 UpCameraPutResults[1].Y = (float)center.Center[1];
@@ -1911,7 +1956,7 @@ namespace TeamAAS_VP.Core
                         }
                     }
                 }
-                // 固定相机锁附/组装拍照
+                // 固定相机锁附/组装拍照--屏幕拍照
                 else if (addressConfig.In_FixedCameraPutExe.Address.Contains(tuple.nodeId))
                 {
                     if (tuple.value is bool state)
@@ -1978,6 +2023,51 @@ namespace TeamAAS_VP.Core
                                 Vector<double> p3 = Vector<double>.Build.Dense(new double[] { visionResults[3].X, visionResults[3].Y });
                                 Vector<double> p4 = Vector<double>.Build.Dense(new double[] { visionResults[0].X, visionResults[0].Y });
 
+                                LogHelper.WriteLogInfo($"P1:{visionResults[1].X};{visionResults[1].Y};");
+                                LogHelper.WriteLogInfo($"P2:{visionResults[2].X};{visionResults[2].Y};");
+                                LogHelper.WriteLogInfo($"P3:{visionResults[3].X};{visionResults[3].Y};");
+                                LogHelper.WriteLogInfo($"P4:{visionResults[0].X};{visionResults[0].Y};");
+                                var pp1 = new Point2d(visionResults[1].X, visionResults[1].Y);
+                                var pp2 = new Point2d(visionResults[2].X, visionResults[2].Y);
+                                var pp3 = new Point2d(visionResults[3].X, visionResults[3].Y);
+                                var pp4 = new Point2d(visionResults[0].X, visionResults[0].Y);
+                                var dist1 = Point2d.Distance(pp1, pp2);//长1
+                                var dist2 = Point2d.Distance(pp2, pp3);//宽1
+                                var dist3 = Point2d.Distance(pp3, pp4);//长2
+                                var dist4 = Point2d.Distance(pp1, pp4);//宽2
+                                LogHelper.WriteLogInfo($"dist1={dist1};dist2={dist2};dist3={dist3};dist4={dist4};");
+                                if (currentProduct.GlobalParamListCollection.Count >= 4)
+                                {
+                                    var param = currentProduct.GlobalParamListCollection.FirstOrDefault(p => p.Number == 0);
+                                    if (param != null)//长
+                                    {
+                                        var length = Double.Parse(param.Param1);
+                                        var limtDown = Double.Parse(param.Param2);
+                                        var LimtUp = Double.Parse(param.Param3);
+                                        if (!(((length + limtDown) <= dist1) && (dist1 <= (length + LimtUp)) && (((length + limtDown) <= dist3) && (dist3 <= (length + LimtUp)))))
+                                        {
+                                            SendTaskMessage($"外壳长度超范围:长1={dist1},长2={dist3},para1={length},para2={limtDown},para3={LimtUp}", MessageLevel.Alarm);
+                                            await plc.WriteNodeAsync(addressConfig.Out_FixedCameraPutStatus.Address, (Int16)2);
+                                            return;
+                                        }
+                                        SendTaskMessage($"外壳长度:长1={dist1},长2={dist3},para1={length},para2={limtDown},para3={LimtUp}", MessageLevel.Info);
+                                    }
+                                    param = currentProduct.GlobalParamListCollection.FirstOrDefault(p => p.Number == 1);
+                                    if (param != null)//宽
+                                    {
+                                        var length = Double.Parse(param.Param1);
+                                        var limtDown = Double.Parse(param.Param2);
+                                        var LimtUp = Double.Parse(param.Param3);
+                                        if (!(((length + limtDown) <= dist2) && (dist2 <= (length + LimtUp)) && (((length + limtDown) <= dist4) && (dist4 <= (length + LimtUp)))))
+                                        {
+                                            SendTaskMessage($"外壳宽度超范围:宽1={dist2},宽2={dist4},para1={length},para2={limtDown},para3={LimtUp}", MessageLevel.Alarm);
+                                            await plc.WriteNodeAsync(addressConfig.Out_FixedCameraPutStatus.Address, (Int16)2);
+                                            return;
+                                        }
+                                        SendTaskMessage($"外壳宽度:宽1={dist2},宽2={dist4},para1={length},para2={limtDown},para3={LimtUp}", MessageLevel.Info);
+                                    }
+                                }
+
                                 var center = RectangleCenterCalculator.CalculateByPCAWithKnownOrder(new List<Vector<double>> { p1, p2, p3, p4 });
                                 UpCameraPutResults[0].X = (float)center.Center[0];
                                 UpCameraPutResults[0].Y = (float)center.Center[1];
@@ -2099,7 +2189,7 @@ namespace TeamAAS_VP.Core
                         {
                             SendTaskMessage($"收到多相机坐标合并请求,开始合并...", MessageLevel.Debug);
 
-                            if (isDryMode)
+                            if (isDryMode)//空跑模式
                             {
                                 var point1 = currentProduct.ScrewPoints[0].Clone();
                                 SendTaskMessage($"点:1,{point1.X_Position:F3},{point1.Y_Position:F4},{point1.U_Position:F4}", MessageLevel.Info);
@@ -2234,7 +2324,7 @@ namespace TeamAAS_VP.Core
                             await plc.WriteNodeAsync(addressConfig.Out_QrCodePhotoResault.Address, (Int16)0);
                         }
                     }
-                   
+
                 }
                 else
                 {
@@ -2265,7 +2355,7 @@ namespace TeamAAS_VP.Core
 
                                     LogHelper.WriteLogMes($"【mes开始QUERY】");
                                     SendTaskMessage($"mes开始QUERY", MessageLevel.Info);
-                                    (bool isSuccess, string response) = await _mesService.StationGetAsync(i,code, comp, 2);
+                                    (bool isSuccess, string response) = await _mesService.StationGetAsync(i, code, comp, 2);
                                     if (i == 0)
                                     {
                                         SendTaskMessage($"收到当前过站检查请求(当站是否生产)...", MessageLevel.Debug);
@@ -2370,13 +2460,13 @@ namespace TeamAAS_VP.Core
                                     LogHelper.WriteLogMes($"【mes开始ADD】");
                                     SendTaskMessage($"mes开始ADD", MessageLevel.Info);
                                     string gap = ""; string press = ""; string presstime = ""; string assypress = "";
-                                    if (i==0)
+                                    if (i == 0)
                                     {
                                         gap = gapString;
                                         try
                                         {
                                             assypress = currentPressure[0].ToString("F2");
-                                            if (currentPressure[0] >= p1.PressureDownLimit && currentPressure[0]<=p1.PressureUpLimit)
+                                            if (currentPressure[0] >= p1.PressureDownLimit && currentPressure[0] <= p1.PressureUpLimit)
                                             {
                                                 resultIndex = 1;
                                             }
@@ -2415,7 +2505,7 @@ namespace TeamAAS_VP.Core
                                         SendTaskMessage($"保压压力:{press},保压时间:{presstime}", MessageLevel.Info);
                                     }
                                     //gap-复检gap参数, press-保压站实际压力值, presstime-保压站保压时间, assypress-组装站实际压力值
-                                    (bool isSuccess, string response) = await _mesService.SubmitGetAsync(i,code, comp, gap, press, presstime, assypress, resultIndex == 1 ? true : false, _LastMesCheckTime[i], DateTime.UtcNow);
+                                    (bool isSuccess, string response) = await _mesService.SubmitGetAsync(i, code, comp, gap, press, presstime, assypress, resultIndex == 1 ? true : false, _LastMesCheckTime[i], DateTime.UtcNow);
                                     if (isSuccess)
                                     {
                                         LogHelper.WriteLogMes($"上传mes成功");