Commit 0b9be71f LN

HY03卡托盘优化

1 个父辈 a4214149
......@@ -293,7 +293,7 @@ namespace OnlineStore.DeviceLibrary
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_FrontStopCheck, IO_VALUE.LOW));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_TrayCheck, IO_VALUE.HIGH));
CylinderMove(null, IO_Type.HY_TopCylinder_Up, IO_Type.HY_TopCylinder_Down);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(20000));
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(10000));
IOMove(IO_Type.HY_OL_StopDown, IO_VALUE.LOW);
}
}
......@@ -336,15 +336,22 @@ namespace OnlineStore.DeviceLibrary
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_OL_Tray_Check, IO_VALUE.HIGH));
}
}
internal void HY03_FrontStopUp(int timeout= 30000)
internal void HY03_FrontStopUp(int timeout= 20000,bool frontStopUp=true)
{
frontTrayCheckWait.Stop();
trayCheckLowWait.Stop();
MoveInfo.NewMove(LineMoveType.Fixture);
runStatus = LineRunStatus.Busy;
MoveInfo.NextMoveStep(LineMoveStep.HY03_FrontStopUp);
if (frontStopUp)
{
CheckLog("托盘阻挡" + MoveInfo.SLog + " 托盘检测到信号,前阻挡上升");
CheckAndMove(IO_Type.HY_FrontStopDown, IO_VALUE.LOW);
}
else
{
CheckLog("托盘阻挡" + MoveInfo.SLog + " 前阻挡检测信号灭,等待托盘检测信号");
}
MoveInfo.OneWaitCanEndStep = true;
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_TrayCheck, IO_VALUE.HIGH));
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(timeout));
......@@ -396,10 +403,22 @@ namespace OnlineStore.DeviceLibrary
if (MoveInfo.IsStep(LineMoveStep.HY02_FrontStopDown))
{
if (IOValue(IO_Type.HY_FrontStopCheck).Equals(IO_VALUE.LOW) || IOValue(IO_Type.HY_TrayCheck).Equals(IO_VALUE.HIGH))
//如果此步骤持续还不到一秒,是信号闪烁,暂不处理
if (MoveInfo.StepSpan().TotalSeconds < 1)
{
return;
}
if (IOValue(IO_Type.HY_TrayCheck).Equals(IO_VALUE.HIGH))
{
HY03_FrontStopUp();
}
if (IOValue(IO_Type.HY_FrontStopCheck).Equals(IO_VALUE.LOW))
{
//前检测信号灭,等待阻挡自动上升
HY03_FrontStopUp(20000,false);
}
else
{
EndOrReStopDown("未等到信号 HY_FrontStopCheck=LOW 或 HY_TrayCheck=HIGH 结束处理 ");
......
......@@ -61,9 +61,11 @@ namespace OnlineStore.DeviceLibrary
{
instance.WriteSingleDO(configIo.IO_IP, configIo.SlaveID, configIo.GetIOAddr(), ioValue);
Thread.Sleep(100);
if (!IOValue(ioType, subType).Equals(ioValue))
if (!instance.GetDOValue(configIo.IO_IP, configIo.SlaveID, configIo.GetIOAddr()).Equals(ioValue))
{
instance.WriteSingleDO(configIo.IO_IP, configIo.SlaveID, configIo.GetIOAddr(), ioValue);
}
}
else
{
IOErrorLog(ioType, subType, "DO");
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!