Commit da49fff1 张东亮

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

1 个父辈 a859c3a1
......@@ -23,13 +23,15 @@ namespace DeviceLibrary
/// <param name="ngMsg">NG消息</param>
public LabelParam(string wareNo = "", int platew = 0, int plateh = 0, bool _IsNg = false, string ngMsg = "")
{
UID = Common.id.nextId();
WareCode = wareNo;
PlateW = platew;
PlateH = plateh;
IsNg = _IsNg;
NgMsg = ngMsg;
}
public long UID { get; set; }
public long PreUID { get; set; }
/// <summary>
/// 物品二维码信息
/// </summary>
......@@ -43,7 +45,8 @@ namespace DeviceLibrary
/// 料盘高度
/// </summary>
public int PlateH { get; set; }
public int PlwHight { get; set; }
public int RightPulseHeight { get; set; }
public int RightPlateHeight { get; set; }
/// <summary>
/// 料盘宽度
/// </summary>
......
......@@ -12,6 +12,52 @@ namespace DeviceLibrary
{
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)
{
runStatus = RunStatus.Stop;
......
......@@ -67,7 +67,7 @@ namespace DeviceLibrary
if (enableCheck)
{
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);
if (Math.Abs(aixH - plateH) <= canErrorMM)
{
......@@ -113,15 +113,16 @@ namespace DeviceLibrary
LeftMoveInfo.NextMoveStep(MoveStep.L04);
int targetP1 = Left_Batch_Axis.GetAclPosition() - ConfigHelper.Config.Get("LeftAxisDownValue", 50) * Config.Left_Batch_ChangeValue;
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;
if (target < targetP1)
{
targetP1 = target;
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;
......@@ -194,15 +195,30 @@ namespace DeviceLibrary
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.log($"右侧测高完成:PlwHight={PlwHight}");
LeftMoveInfo.NextMoveStep(MoveStep.L16);
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();
//判断当前料盘是否放到料串上
......@@ -235,11 +251,7 @@ namespace DeviceLibrary
LeftMoveInfo.log($"批量轴重新上升到P2位置,LeftStartMovePosition={LeftStartMovePosition}");
break;
case MoveStep.L16:
if (RightMoveInfo.MoveStep == MoveStep.Wait || RightShelfNoTray)
{
PlwHight = 0;
LeftMoveInfo.log($"右侧无料盘,PlwHight={PlwHight}");
}
removeParam(LeftMoveInfo.MoveParam.UID);
LeftBatchAxisPositionWhileTrayCheck = Left_Batch_Axis.GetAclPosition();
LeftMoveInfo.NextMoveStep(MoveStep.L20_WaitLabel);
break;
......@@ -257,7 +269,7 @@ namespace DeviceLibrary
}
else
{
if (PlwHight > 0)
if (LeftMoveInfo.MoveParam.RightPulseHeight > 0)
{
LeftMoveInfo.NextMoveStep(MoveStep.L03);
LeftBatchAxisToP2(Config.Left_Batch_P1, Config.Left_Batch_P1_speed, IO_VALUE.LOW);
......
......@@ -26,15 +26,15 @@ namespace DeviceLibrary
//如果右侧可取料那么那么移动轴到p2点,夹爪释放。获取右侧的标签信息,右侧标签信息复位,否则等待
if (RightMoveInfo.MoveStep == MoveStep.R10_WaitReelLeave)
{
//PlwHight = 0;
PlwHight = 0;
MiddleMoveInfo.NextMoveStep(MoveStep.M02);
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);
clampTool.Release();
//复制右侧料盘信息
MiddleMoveInfo.MoveParam = RightMoveInfo.MoveParam.clone();
RightMoveInfo.MoveParam = new LabelParam();
addParam(MiddleMoveInfo.MoveParam);
RightMoveInfo.MoveParam = new LabelParam() { PreUID = MiddleMoveInfo.MoveParam.UID};
MiddleMoveInfo.log($"右侧可以取料,旋转轴/上下轴转到P2点:{JsonConvert.SerializeObject(MiddleMoveInfo.MoveParam)}");
//MiddleMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.RightArm_Check, IO_VALUE.HIGH));
}
......
......@@ -47,7 +47,26 @@ namespace DeviceLibrary
PlwHight = Uplast - LastBatchAxisPosition;
if (PlwHight <= 0)
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;
//如果定位上升并且特定中间步骤偶,开始扫码
case MoveStep.R04:
......@@ -132,7 +151,7 @@ namespace DeviceLibrary
{
RightMoveInfo.NextMoveStep(MoveStep.R20_reel_duplicate);
RightMoveInfo.MoveParam.IsNg = true;
RightMoveInfo.MoveParam.NgMsg = crc.GetString("Res0183.b7688c25","条码重复");
RightMoveInfo.MoveParam.NgMsg = crc.GetString("Res0183.b7688c25", "条码重复");
//duplicate = true;
RightMoveInfo.log($"条码重复:{result.overlapPercentage} > 50");
}
......@@ -179,7 +198,7 @@ namespace DeviceLibrary
}
break;
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.Right_BTN).Equals(IO_VALUE.HIGH))
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!