|
|
@@ -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成功");
|