Commit da49fff1 张东亮

使用料盘列表来记录对应料盘厚度,避免错乱

1 个父辈 a859c3a1
...@@ -23,13 +23,15 @@ namespace DeviceLibrary ...@@ -23,13 +23,15 @@ namespace DeviceLibrary
/// <param name="ngMsg">NG消息</param> /// <param name="ngMsg">NG消息</param>
public LabelParam(string wareNo = "", int platew = 0, int plateh = 0, bool _IsNg = false, string ngMsg = "") public LabelParam(string wareNo = "", int platew = 0, int plateh = 0, bool _IsNg = false, string ngMsg = "")
{ {
UID = Common.id.nextId();
WareCode = wareNo; WareCode = wareNo;
PlateW = platew; PlateW = platew;
PlateH = plateh; PlateH = plateh;
IsNg = _IsNg; IsNg = _IsNg;
NgMsg = ngMsg; NgMsg = ngMsg;
} }
public long UID { get; set; }
public long PreUID { get; set; }
/// <summary> /// <summary>
/// 物品二维码信息 /// 物品二维码信息
/// </summary> /// </summary>
...@@ -43,7 +45,8 @@ namespace DeviceLibrary ...@@ -43,7 +45,8 @@ namespace DeviceLibrary
/// 料盘高度 /// 料盘高度
/// </summary> /// </summary>
public int PlateH { get; set; } public int PlateH { get; set; }
public int PlwHight { get; set; } public int RightPulseHeight { get; set; }
public int RightPlateHeight { get; set; }
/// <summary> /// <summary>
/// 料盘宽度 /// 料盘宽度
/// </summary> /// </summary>
......
...@@ -12,6 +12,52 @@ namespace DeviceLibrary ...@@ -12,6 +12,52 @@ namespace DeviceLibrary
{ {
partial class MainMachine partial class MainMachine
{ {
List<LabelParam> runParams = new List<LabelParam>();
object paramLock = new object();
void addParam(LabelParam param)
{
lock(paramLock)
{
runParams.Add(param);
LogUtil.info($"参数新建【{JsonHelper.SerializeObject(param)}】");
}
}
void removeParam(long uid)
{
lock (paramLock)
{
var param = runParams.FirstOrDefault(p => p.UID == uid);
if(param != null)
{
runParams.Remove(param);
LogUtil.info($"参数删除【{JsonHelper.SerializeObject(param)}】");
}
}
}
LabelParam GetLabelParam(long uid)
{
lock (paramLock)
{
var param = runParams.FirstOrDefault(p => p.UID == uid);
return param;
}
}
//void setParamPlwHight(long uid,int PlwHight,int plateH)
//{
// lock (paramLock)
// {
// var param = runParams.FirstOrDefault(p => p.UID == uid);
// if (param != null)
// {
// param.RightPulseHeight = PlwHight;
// param.RightPlateHeight = plateH;
// LogUtil.info($"参数修改:PlwHight={PlwHight},plateH={plateH}【{JsonHelper.SerializeObject(param)}】");
// }
// }
//}
public void StopMove(bool ServoOff = false) public void StopMove(bool ServoOff = false)
{ {
runStatus = RunStatus.Stop; runStatus = RunStatus.Stop;
......
...@@ -67,7 +67,7 @@ namespace DeviceLibrary ...@@ -67,7 +67,7 @@ namespace DeviceLibrary
if (enableCheck) if (enableCheck)
{ {
var aixH = 1f * Math.Abs(_leftBatchAxisPositionWhileTrayCheck - curPos) / Config.Left_Batch_ChangeValue; var aixH = 1f * Math.Abs(_leftBatchAxisPositionWhileTrayCheck - curPos) / Config.Left_Batch_ChangeValue;
float plateH = Math.Max(LeftMoveInfo.MoveParam.PlwHight / Config.Right_Batch_ChangeValue, LeftMoveInfo.MoveParam.PlateH); float plateH = LeftMoveInfo.MoveParam.RightPlateHeight;
var canErrorMM = ConfigHelper.Config.Get("左侧料盘放料串检查厚度最大偏差值", 5); var canErrorMM = ConfigHelper.Config.Get("左侧料盘放料串检查厚度最大偏差值", 5);
if (Math.Abs(aixH - plateH) <= canErrorMM) if (Math.Abs(aixH - plateH) <= canErrorMM)
{ {
...@@ -113,15 +113,16 @@ namespace DeviceLibrary ...@@ -113,15 +113,16 @@ namespace DeviceLibrary
LeftMoveInfo.NextMoveStep(MoveStep.L04); LeftMoveInfo.NextMoveStep(MoveStep.L04);
int targetP1 = Left_Batch_Axis.GetAclPosition() - ConfigHelper.Config.Get("LeftAxisDownValue", 50) * Config.Left_Batch_ChangeValue; int targetP1 = Left_Batch_Axis.GetAclPosition() - ConfigHelper.Config.Get("LeftAxisDownValue", 50) * Config.Left_Batch_ChangeValue;
int currpoint = Left_Batch_Axis.GetAclPosition(); int currpoint = Left_Batch_Axis.GetAclPosition();
if (PlwHight > 5000) var param = GetLabelParam(LeftMoveInfo.MoveParam.UID);
if (param!=null && param.RightPlateHeight>0)
{ {
int countPleHight = PlwHight / Config.Right_Batch_ChangeValue * Config.Left_Batch_ChangeValue; int countPleHight = param.RightPlateHeight * Config.Left_Batch_ChangeValue;
var target = currpoint - countPleHight + 5000; var target = currpoint - countPleHight + 5000;
if (target < targetP1) if (target < targetP1)
{ {
targetP1 = target; targetP1 = target;
LeftMoveInfo.MoveParam.PlateH = countPleHight / Config.Left_Batch_ChangeValue; LeftMoveInfo.MoveParam.PlateH = countPleHight / Config.Left_Batch_ChangeValue;
LeftMoveInfo.log($"出料提升机构,获取到料盘高度脉冲{PlwHight},当前位置{currpoint},计算盘高{LeftMoveInfo.MoveParam.PlateH}"); LeftMoveInfo.log($"出料提升机构,获取到料盘高度脉冲{param.RightPlateHeight},当前位置{currpoint},计算盘高{LeftMoveInfo.MoveParam.PlateH}");
} }
} }
int targetSpeed = Config.Left_Batch_P1_speed; int targetSpeed = Config.Left_Batch_P1_speed;
...@@ -194,15 +195,30 @@ namespace DeviceLibrary ...@@ -194,15 +195,30 @@ namespace DeviceLibrary
if (enableCheck) if (enableCheck)
{ {
//等待右侧测高完成 //等待右侧测高完成
if ((RightMoveInfo.MoveStep > MoveStep.R04 && RightMoveInfo.MoveStep <= MoveStep.R10_WaitReelLeave) || RightMoveInfo.MoveStep == MoveStep.Wait)//测高完成 var param1 = GetLabelParam(RightMoveInfo.MoveParam.UID);
if (param1 == null)
{ {
LeftMoveInfo.MoveParam.PlwHight = PlwHight; LeftMoveInfo.NextMoveStep(MoveStep.L16);
LeftMoveInfo.log($"右侧测高完成:PlwHight={PlwHight}"); LeftMoveInfo.log($"未查询到记录:{RightMoveInfo.MoveParam.UID},不检查");
return;
} }
else else //找到记录
{ {
return; if (param1.RightPlateHeight == 0)//测高未完成
{
LeftMoveInfo.NextMoveStep(MoveStep.L13);
LeftMoveInfo.log($"查询到记录:{RightMoveInfo.MoveParam.UID},但还未获取到高度,等待");
LeftMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(500));
return;
}
else
{
LeftMoveInfo.MoveParam.RightPlateHeight = param1.RightPlateHeight;
LeftMoveInfo.MoveParam.RightPulseHeight = param1.RightPulseHeight;
LeftMoveInfo.log($"查询到记录:{RightMoveInfo.MoveParam.UID},RightPlateHeight={LeftMoveInfo.MoveParam.RightPlateHeight},RightPulseHeight={LeftMoveInfo.MoveParam.RightPulseHeight}");
}
} }
} }
var curPos = Left_Batch_Axis.GetAclPosition(); var curPos = Left_Batch_Axis.GetAclPosition();
//判断当前料盘是否放到料串上 //判断当前料盘是否放到料串上
...@@ -235,11 +251,7 @@ namespace DeviceLibrary ...@@ -235,11 +251,7 @@ namespace DeviceLibrary
LeftMoveInfo.log($"批量轴重新上升到P2位置,LeftStartMovePosition={LeftStartMovePosition}"); LeftMoveInfo.log($"批量轴重新上升到P2位置,LeftStartMovePosition={LeftStartMovePosition}");
break; break;
case MoveStep.L16: case MoveStep.L16:
if (RightMoveInfo.MoveStep == MoveStep.Wait || RightShelfNoTray) removeParam(LeftMoveInfo.MoveParam.UID);
{
PlwHight = 0;
LeftMoveInfo.log($"右侧无料盘,PlwHight={PlwHight}");
}
LeftBatchAxisPositionWhileTrayCheck = Left_Batch_Axis.GetAclPosition(); LeftBatchAxisPositionWhileTrayCheck = Left_Batch_Axis.GetAclPosition();
LeftMoveInfo.NextMoveStep(MoveStep.L20_WaitLabel); LeftMoveInfo.NextMoveStep(MoveStep.L20_WaitLabel);
break; break;
...@@ -257,7 +269,7 @@ namespace DeviceLibrary ...@@ -257,7 +269,7 @@ namespace DeviceLibrary
} }
else else
{ {
if (PlwHight > 0) if (LeftMoveInfo.MoveParam.RightPulseHeight > 0)
{ {
LeftMoveInfo.NextMoveStep(MoveStep.L03); LeftMoveInfo.NextMoveStep(MoveStep.L03);
LeftBatchAxisToP2(Config.Left_Batch_P1, Config.Left_Batch_P1_speed, IO_VALUE.LOW); LeftBatchAxisToP2(Config.Left_Batch_P1, Config.Left_Batch_P1_speed, IO_VALUE.LOW);
......
...@@ -26,15 +26,15 @@ namespace DeviceLibrary ...@@ -26,15 +26,15 @@ namespace DeviceLibrary
//如果右侧可取料那么那么移动轴到p2点,夹爪释放。获取右侧的标签信息,右侧标签信息复位,否则等待 //如果右侧可取料那么那么移动轴到p2点,夹爪释放。获取右侧的标签信息,右侧标签信息复位,否则等待
if (RightMoveInfo.MoveStep == MoveStep.R10_WaitReelLeave) if (RightMoveInfo.MoveStep == MoveStep.R10_WaitReelLeave)
{ {
//PlwHight = 0; PlwHight = 0;
MiddleMoveInfo.NextMoveStep(MoveStep.M02); MiddleMoveInfo.NextMoveStep(MoveStep.M02);
Take_Middle_Axis.AbsMove(MiddleMoveInfo, Config.Take_Middle_P2, Config.Take_Middle_P2_speed); Take_Middle_Axis.AbsMove(MiddleMoveInfo, Config.Take_Middle_P2, Config.Take_Middle_P2_speed);
Take_UpDown_Axis.AbsMove(MiddleMoveInfo, Config.Take_UpDown_P2, Config.Take_UpDown_P2_speed); Take_UpDown_Axis.AbsMove(MiddleMoveInfo, Config.Take_UpDown_P2, Config.Take_UpDown_P2_speed);
clampTool.Release(); clampTool.Release();
//复制右侧料盘信息 //复制右侧料盘信息
MiddleMoveInfo.MoveParam = RightMoveInfo.MoveParam.clone(); MiddleMoveInfo.MoveParam = RightMoveInfo.MoveParam.clone();
addParam(MiddleMoveInfo.MoveParam);
RightMoveInfo.MoveParam = new LabelParam(); RightMoveInfo.MoveParam = new LabelParam() { PreUID = MiddleMoveInfo.MoveParam.UID};
MiddleMoveInfo.log($"右侧可以取料,旋转轴/上下轴转到P2点:{JsonConvert.SerializeObject(MiddleMoveInfo.MoveParam)}"); MiddleMoveInfo.log($"右侧可以取料,旋转轴/上下轴转到P2点:{JsonConvert.SerializeObject(MiddleMoveInfo.MoveParam)}");
//MiddleMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.RightArm_Check, IO_VALUE.HIGH)); //MiddleMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.RightArm_Check, IO_VALUE.HIGH));
} }
......
...@@ -47,7 +47,26 @@ namespace DeviceLibrary ...@@ -47,7 +47,26 @@ namespace DeviceLibrary
PlwHight = Uplast - LastBatchAxisPosition; PlwHight = Uplast - LastBatchAxisPosition;
if (PlwHight <= 0) if (PlwHight <= 0)
PlwHight = 5000; PlwHight = 5000;
RightMoveInfo.log($"批量轴上升到P2位置到位,当前位置:{Uplast}, PlwHight:{PlwHight}"); if (RightCount == 0)//第一次上升,不是测高的
{
RightMoveInfo.log($"RightCount={RightCount},新料串到位");
}
else
{
var param = GetLabelParam(RightMoveInfo.MoveParam.PreUID);
if (param != null)
{
param.RightPulseHeight = PlwHight;
param.RightPlateHeight = PlwHight / Config.Right_Batch_ChangeValue;
RightMoveInfo.log($"批量轴上升到P2位置到位,当前位置:{Uplast},uid={param.UID}, PlwHight:{param.RightPulseHeight},plateH:{param.RightPlateHeight}");
}
else
{
RightMoveInfo.log($"未找到UID:{RightMoveInfo.MoveParam.PreUID},无法设置高度");
}
}
break; break;
//如果定位上升并且特定中间步骤偶,开始扫码 //如果定位上升并且特定中间步骤偶,开始扫码
case MoveStep.R04: case MoveStep.R04:
...@@ -132,7 +151,7 @@ namespace DeviceLibrary ...@@ -132,7 +151,7 @@ namespace DeviceLibrary
{ {
RightMoveInfo.NextMoveStep(MoveStep.R20_reel_duplicate); RightMoveInfo.NextMoveStep(MoveStep.R20_reel_duplicate);
RightMoveInfo.MoveParam.IsNg = true; RightMoveInfo.MoveParam.IsNg = true;
RightMoveInfo.MoveParam.NgMsg = crc.GetString("Res0183.b7688c25","条码重复"); RightMoveInfo.MoveParam.NgMsg = crc.GetString("Res0183.b7688c25", "条码重复");
//duplicate = true; //duplicate = true;
RightMoveInfo.log($"条码重复:{result.overlapPercentage} > 50"); RightMoveInfo.log($"条码重复:{result.overlapPercentage} > 50");
} }
...@@ -179,7 +198,7 @@ namespace DeviceLibrary ...@@ -179,7 +198,7 @@ namespace DeviceLibrary
} }
break; break;
case MoveStep.R20_reel_duplicate: case MoveStep.R20_reel_duplicate:
Msg.add(crc.GetString("Res0184.4aa86524","条码出现重复,请分别取走左右料串顶层的料盘,然后按右侧按钮继续"), MsgLevel.alarm); Msg.add(crc.GetString("Res0184.4aa86524", "条码出现重复,请分别取走左右料串顶层的料盘,然后按右侧按钮继续"), MsgLevel.alarm);
if (IOValue(IO_Type.GratingSignal_Check).Equals(IO_VALUE.LOW)) if (IOValue(IO_Type.GratingSignal_Check).Equals(IO_VALUE.LOW))
{ {
if (IOValue(IO_Type.Right_BTN).Equals(IO_VALUE.HIGH)) if (IOValue(IO_Type.Right_BTN).Equals(IO_VALUE.HIGH))
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!