Commit 51520b6a LN

上料机构,如果读取到rfid时,需要等待定位工位检测信号。

1 个父辈 33e47724
...@@ -120,7 +120,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -120,7 +120,7 @@ namespace OnlineStore.DeviceLibrary
OutStoreHeight = -1; OutStoreHeight = -1;
//OutStoreCount = 0; //OutStoreCount = 0;
BatchAxisStopCheck(); BatchAxisStopCheck();
ResetClearData(); ResetClearData();
IOMove(IO_Type.SL_HddLed, IO_VALUE.HIGH); IOMove(IO_Type.SL_HddLed, IO_VALUE.HIGH);
MoveInfo.NextMoveStep(LineMoveStep.FR_01_StopUp); MoveInfo.NextMoveStep(LineMoveStep.FR_01_StopUp);
...@@ -170,14 +170,15 @@ namespace OnlineStore.DeviceLibrary ...@@ -170,14 +170,15 @@ namespace OnlineStore.DeviceLibrary
break; break;
case LineMoveStep.FR_02_LineRun: case LineMoveStep.FR_02_LineRun:
MoveInfo.NextMoveStep(LineMoveStep.FR_03_CylinderUp); MoveInfo.NextMoveStep(LineMoveStep.FR_03_CylinderUp);
LogInfo(MoveInfo.MoveType + ":" + MoveInfo.SLog + ":链条停止转动,上料横移机构上升,顶升气缸下降,所有阻挡气缸上升"); LogInfo(MoveInfo.MoveType + ":" + MoveInfo.SLog + ":链条停止转动,清理RFID,上料横移机构上升,顶升气缸下降,所有阻挡气缸上升");
//线体停止 //线体停止
AllLineMove(IO_VALUE.LOW); AllLineMove(IO_VALUE.LOW);
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.SL_Line_Run, IO_VALUE.LOW)); MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.SL_Line_Run, IO_VALUE.LOW));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.SL_LocationSideWay_Run, IO_VALUE.LOW)); MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.SL_LocationSideWay_Run, IO_VALUE.LOW));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.SL_OutSideWay_Run, IO_VALUE.LOW)); MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.SL_OutSideWay_Run, IO_VALUE.LOW));
TopCylinderDown(MoveInfo); TopCylinderDown(MoveInfo);
//清理RFID
RFIDManager.ClearTrayNum(DeviceID);
break; break;
case LineMoveStep.FR_03_CylinderUp: case LineMoveStep.FR_03_CylinderUp:
MoveInfo.NextMoveStep(LineMoveStep.FR_04_UpdownAxisHome); MoveInfo.NextMoveStep(LineMoveStep.FR_04_UpdownAxisHome);
...@@ -245,27 +246,47 @@ namespace OnlineStore.DeviceLibrary ...@@ -245,27 +246,47 @@ namespace OnlineStore.DeviceLibrary
//CylinderMove(MoveInfo, IO_Type.SL_OutTopCylinder_Up, IO_Type.SL_OutTopCylinder_Down); //CylinderMove(MoveInfo, IO_Type.SL_OutTopCylinder_Up, IO_Type.SL_OutTopCylinder_Down);
CylinderMove(MoveInfo, IO_Type.SL_ClampCylinder_Work, IO_Type.SL_ClampCylinder_Relax ); CylinderMove(MoveInfo, IO_Type.SL_ClampCylinder_Work, IO_Type.SL_ClampCylinder_Relax );
break; break;
case LineMoveStep.FR_15_TopDown: case LineMoveStep.FR_15_TopDown:
RFIDData data = RFIDManager.GetShelfId(DeviceID);
MoveInfo.NextMoveStep(LineMoveStep.FR_16_BatchAxisToP1); if (data.Num > 0)
{
MoveInfo.NextMoveStep(LineMoveStep.FR_16_WaitLocationCheck);
LogInfo(MoveInfo.MoveType + ":" + MoveInfo.SLog + ":定位工位读取到料串 " + data.NumStr() + " , 等待定位工位检测信号亮");
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.SL_Location_Check, IO_VALUE.HIGH));
}
//判断定位工位是否有料架 //判断定位工位是否有料架
if (IOValue(IO_Type.SL_Location_Check).Equals(IO_VALUE.HIGH)) else if (IOValue(IO_Type.SL_Location_Check).Equals(IO_VALUE.HIGH))
{ {
MoveInfo.NextMoveStep(LineMoveStep.FR_17_BatchAxisToP1);
LogInfo(MoveInfo.MoveType + ":" + MoveInfo.SLog + ":定位工位有料架,提升伺服不需要到P1"); LogInfo(MoveInfo.MoveType + ":" + MoveInfo.SLog + ":定位工位有料架,提升伺服不需要到P1");
} }
else else
{ {
MoveInfo.NextMoveStep(LineMoveStep.FR_17_BatchAxisToP1);
LogInfo(MoveInfo.MoveType + ":" + MoveInfo.SLog + ":定位工位无料架,提升伺服上升到P1点"); LogInfo(MoveInfo.MoveType + ":" + MoveInfo.SLog + ":定位工位无料架,提升伺服上升到P1点");
BatchAxis.AbsMove(MoveInfo, Config.BatchAxisP1, Config.BatchAxis_P1Speed); BatchAxis.AbsMove(MoveInfo, Config.BatchAxisP1, Config.BatchAxis_P1Speed);
} }
break; break;
case LineMoveStep.FR_16_BatchAxisToP1: case LineMoveStep.FR_16_WaitLocationCheck:
MoveInfo.NextMoveStep(LineMoveStep.FR_17_ClampCheck); if (IOValue(IO_Type.SL_Location_Check).Equals(IO_VALUE.HIGH))
{
MoveInfo.NextMoveStep(LineMoveStep.FR_17_BatchAxisToP1);
LogInfo(MoveInfo.MoveType + ":" + MoveInfo.SLog + ":定位工位有料架,提升伺服不需要到P1");
}
else
{
MoveInfo.NextMoveStep(LineMoveStep.FR_16_WaitLocationCheck);
LogInfo(MoveInfo.MoveType + ":" + MoveInfo.SLog + ":定位工位读取到料串 , 等待定位工位检测信号亮");
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.SL_Location_Check, IO_VALUE.HIGH));
}
break;
case LineMoveStep.FR_17_BatchAxisToP1:
MoveInfo.NextMoveStep(LineMoveStep.FR_18_ClampCheck);
DebugInfo(MoveInfo.MoveType + " : 等待夹爪料盘检测信号无料"); DebugInfo(MoveInfo.MoveType + " : 等待夹爪料盘检测信号无料");
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.SL_ClampCylinder_Check, IO_VALUE.LOW)); MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.SL_ClampCylinder_Check, IO_VALUE.LOW));
break; break;
case LineMoveStep.FR_17_ClampCheck: case LineMoveStep.FR_18_ClampCheck:
LogInfo("重置完成!"); LogInfo("重置完成!");
MoveEndS(); MoveEndS();
......
...@@ -103,50 +103,71 @@ namespace OnlineStore.DeviceLibrary ...@@ -103,50 +103,71 @@ namespace OnlineStore.DeviceLibrary
} }
public override bool StartInStoreMove(InOutParam param) public override bool StartInStoreMove(InOutParam param)
{ {
runStatus = LineRunStatus.Busy; runStatus = LineRunStatus.Busy;
MoveInfo.NewMove(LineMoveType.InStore); MoveInfo.NewMove(LineMoveType.InStore);
MoveInfo.MoveParam = new InOutParam(); MoveInfo.MoveParam = new InOutParam();
RFIDData data = RFIDManager.GetShelfId(DeviceID);
//判断是哪个工位有料架 //判断是哪个工位有料架
if (IOValue(IO_Type.SL_Location_Check).Equals(IO_VALUE.HIGH)) if (data.Num > 0)
{ {
FI_04_WaitTime(); InLog("定位工位读取到料串" + data.NumStr() + " , 等待定位工位检测信号亮");
FI_06_WaitTime(true);
} }
else else if (IOValue(IO_Type.SL_Location_Check).Equals(IO_VALUE.HIGH))
{ {
FI_06_WaitTime();
}
else
{
if (IsTrayLCylinderAfter()) if (IsTrayLCylinderAfter())
{ {
MoveInfo.NextMoveStep(LineMoveStep.FI_02_TrayLocation_After); MoveInfo.NextMoveStep(LineMoveStep.FI_02_TrayLocation_After);
InLog("检测到料架, " + MoveInfo.MoveStep + " :升降盘定位气缸下降"); InLog("检测到料架, " + MoveInfo.MoveStep + " :升降盘定位气缸下降");
TrayLCylinderAfter(MoveInfo); TrayLCylinderAfter(MoveInfo);
}else }
else
{ {
MoveInfo.NextMoveStep(LineMoveStep.FI_01_BatchAxisToP2); MoveInfo.NextMoveStep(LineMoveStep.FI_01_BatchAxisToP2);
OutLog("检测到料架,升降盘不在后退端 " + MoveInfo.SLog + " :提升伺服先回到P2"); OutLog("检测到料架,升降盘不在后退端 " + MoveInfo.SLog + " :提升伺服先回到P2");
BatchAxis.AbsMove(MoveInfo, Config.BatchAxisP2, Config.BatchAxis_P2Speed); BatchAxis.AbsMove(MoveInfo, Config.BatchAxisP2, Config.BatchAxis_P2Speed);
} }
} }
return true; return true;
} }
private void FI_04_WaitTime() private void FI_06_WaitTime(bool needWaitCheck = false)
{ {
//定位工位有料架,等待1秒后再次检测 //定位工位有料架,等待1秒后再次检测
MoveInfo.NextMoveStep(LineMoveStep.FI_06_WaitTime); MoveInfo.NextMoveStep(LineMoveStep.FI_06_WaitTime);
InLog("定位工位检测到料架: " + MoveInfo.SLog + ",进料阻挡上升,缓冲阻挡上升, 等待3秒再次检测"); if (needWaitCheck)
{
InLog("定位工位读取到料串: " + MoveInfo.SLog + ",进料阻挡上升,缓冲阻挡上升, 等待定位工位信号");
}
else
{
InLog("定位工位检测到料架: " + MoveInfo.SLog + ",进料阻挡上升,缓冲阻挡上升, 等待3秒再次检测");
}
IOMove(IO_Type.SL_Entry_StopDown, IO_VALUE.LOW); IOMove(IO_Type.SL_Entry_StopDown, IO_VALUE.LOW);
IOMove(IO_Type.SL_Buffer_StopDown, IO_VALUE.LOW); IOMove(IO_Type.SL_Buffer_StopDown, IO_VALUE.LOW);
IOMove(IO_Type.SL_Line_Run, IO_VALUE.HIGH); IOMove(IO_Type.SL_Line_Run, IO_VALUE.HIGH);
//MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.SL_Buffer_StopDown, IO_VALUE.LOW));
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(3000)); MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(3000));
if (needWaitCheck)
{
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.SL_Location_Check, IO_VALUE.HIGH));
}
} }
private void LineInStoreProcess() private void LineInStoreProcess()
{ { //判断是哪个工位有料架
RFIDData data = RFIDManager.GetShelfId(DeviceID);
//判断是哪个工位有料架 if (data.Num > 0)
if (IOValue(IO_Type.SL_Location_Check).Equals(IO_VALUE.HIGH)) {
InLog("定位工位读取到料串 " + data.NumStr() + " , 等待定位工位检测信号亮");
FI_06_WaitTime(true);
}
else if (IOValue(IO_Type.SL_Location_Check).Equals(IO_VALUE.HIGH))
{ {
FI_04_WaitTime(); FI_06_WaitTime();
} }
//阻挡工位有料架,流水线转动一个工位 //阻挡工位有料架,流水线转动一个工位
else if (IOValue(IO_Type.SL_Stop_Check).Equals(IO_VALUE.HIGH)) else if (IOValue(IO_Type.SL_Stop_Check).Equals(IO_VALUE.HIGH))
...@@ -162,7 +183,8 @@ namespace OnlineStore.DeviceLibrary ...@@ -162,7 +183,8 @@ namespace OnlineStore.DeviceLibrary
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000)); MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.SL_Location_Check, IO_VALUE.HIGH)); MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.SL_Location_Check, IO_VALUE.HIGH));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.SL_Line_Run, IO_VALUE.HIGH)); MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.SL_Line_Run, IO_VALUE.HIGH));
} else if (IOValue(IO_Type.SL_Entry_Check).Equals(IO_VALUE.HIGH)) }
else if (IOValue(IO_Type.SL_Entry_Check).Equals(IO_VALUE.HIGH))
{ {
MoveInfo.NextMoveStep(LineMoveStep.FI_05_LineStart); MoveInfo.NextMoveStep(LineMoveStep.FI_05_LineStart);
InLog("入料检测: " + MoveInfo.SLog + " 进料口有新料架,进料阻挡上升,缓冲阻挡前进1000,流水线转动 1000"); InLog("入料检测: " + MoveInfo.SLog + " 进料口有新料架,进料阻挡上升,缓冲阻挡前进1000,流水线转动 1000");
...@@ -633,10 +655,12 @@ namespace OnlineStore.DeviceLibrary ...@@ -633,10 +655,12 @@ namespace OnlineStore.DeviceLibrary
else if (MoveInfo.IsStep(LineMoveStep.FI_60_LineStop)) else if (MoveInfo.IsStep(LineMoveStep.FI_60_LineStop))
{ {
MoveInfo.NextMoveStep(LineMoveStep.FI_61_TopDown); MoveInfo.NextMoveStep(LineMoveStep.FI_61_TopDown);
InLog("上料完成" + MoveInfo.SLog + ", 料架到达出口,顶升气缸下降 ,清理缓存料架RFID "); InLog("上料完成" + MoveInfo.SLog + ", 料架到达出口,顶升气缸下降 ,清理料架号,清理RFID缓存 ");
UpdateLastShelfID(); UpdateLastShelfID();
TopCylinderDown(MoveInfo); TopCylinderDown(MoveInfo);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(300)); MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(300));
//清理RFID
RFIDManager.ClearTrayNum(DeviceID);
} }
else if (MoveInfo.IsStep(LineMoveStep.FI_61_TopDown)) else if (MoveInfo.IsStep(LineMoveStep.FI_61_TopDown))
{ {
......
...@@ -157,9 +157,16 @@ namespace OnlineStore.DeviceLibrary ...@@ -157,9 +157,16 @@ namespace OnlineStore.DeviceLibrary
MoveInfo.NewMove(LineMoveType.OutStore); MoveInfo.NewMove(LineMoveType.OutStore);
MoveInfo.MoveParam = new InOutParam(); MoveInfo.MoveParam = new InOutParam();
taskData = null; taskData = null;
RFIDData data = RFIDManager.GetShelfId(DeviceID);
//判断是哪个工位有料架
if (data.Num > 0 && IsTrayLCylinderAfter())
{
OutLog("定位工位读取到料串 " + data.NumStr() + " , 等待定位工位检测信号亮");
FI_06_WaitTime(true);
}
if (IOValue(IO_Type.SL_Location_Check).Equals(IO_VALUE.HIGH) && IsTrayLCylinderAfter()) if (IOValue(IO_Type.SL_Location_Check).Equals(IO_VALUE.HIGH) && IsTrayLCylinderAfter())
{ {
FO_04_WaitTime(); FO_06_WaitTime();
} }
else else
{ {
...@@ -179,26 +186,42 @@ namespace OnlineStore.DeviceLibrary ...@@ -179,26 +186,42 @@ namespace OnlineStore.DeviceLibrary
} }
return true; return true;
} }
private void FO_04_WaitTime() private void FO_06_WaitTime(bool needWaitCheck = false)
{ {
//定位工位有料架,等待1秒后再次检测 //定位工位有料架,等待1秒后再次检测
MoveInfo.NextMoveStep(LineMoveStep.FO_06_WaitTime); MoveInfo.NextMoveStep(LineMoveStep.FO_06_WaitTime);
OutLog("准备出库料架 " + MoveInfo.SLog + "定位工位检测到料架:进料阻挡上升, 等待3秒再次检测"); if (needWaitCheck)
{
OutLog("定位工位读取到料串: " + MoveInfo.SLog + ",进料阻挡上升,缓冲阻挡上升, 等待定位工位信号");
}
else
{
OutLog("准备出库料架 " + MoveInfo.SLog + "定位工位检测到料架:进料阻挡上升, 等待3秒再次检测");
}
IOMove(IO_Type.SL_Line_Run, IO_VALUE.HIGH); IOMove(IO_Type.SL_Line_Run, IO_VALUE.HIGH);
IOMove(IO_Type.SL_Buffer_StopDown, IO_VALUE.LOW); IOMove(IO_Type.SL_Buffer_StopDown, IO_VALUE.LOW);
IOMove(IO_Type.SL_Entry_StopDown, IO_VALUE.LOW); IOMove(IO_Type.SL_Entry_StopDown, IO_VALUE.LOW);
//MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.SL_Buffer_StopDown, IO_VALUE.LOW)); //MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.SL_Buffer_StopDown, IO_VALUE.LOW));
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(3000)); MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(3000));
if (needWaitCheck)
{
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.SL_Location_Check, IO_VALUE.HIGH));
}
} }
private void LineOutStoreProcess() private void LineOutStoreProcess()
{ {
//判断是哪个工位有料架 //判断是哪个工位有料架
if (IOValue(IO_Type.SL_Location_Check).Equals(IO_VALUE.HIGH)) RFIDData data = RFIDManager.GetShelfId(DeviceID);
if (data.Num > 0)
{
OutLog("定位工位读取到料串 " + data.NumStr() + " , 等待定位工位检测信号亮");
FI_06_WaitTime(true);
}
else if (IOValue(IO_Type.SL_Location_Check).Equals(IO_VALUE.HIGH))
{ {
FO_04_WaitTime(); FO_06_WaitTime();
} }
//阻挡工位有料架,流水线转动一个工位 //阻挡工位有料架,流水线转动一个工位
else if (IOValue(IO_Type.SL_Stop_Check).Equals(IO_VALUE.HIGH)) else if (IOValue(IO_Type.SL_Stop_Check).Equals(IO_VALUE.HIGH))
...@@ -493,11 +516,13 @@ namespace OnlineStore.DeviceLibrary ...@@ -493,11 +516,13 @@ namespace OnlineStore.DeviceLibrary
else if (MoveInfo.IsStep(LineMoveStep.FO_60_LineStop)) else if (MoveInfo.IsStep(LineMoveStep.FO_60_LineStop))
{ {
MoveInfo.NextMoveStep(LineMoveStep.FO_61_TopDown); MoveInfo.NextMoveStep(LineMoveStep.FO_61_TopDown);
OutLog("送出料串: " + MoveInfo.SLog + ", 料架到达出口,顶升气缸下降 ,清空LastOutParam,清理缓存料架RFID "); OutLog("送出料串: " + MoveInfo.SLog + ", 料架到达出口,顶升气缸下降 ,清空LastOutParam,清理料架号,清理RFID缓存 ");
UpdateLastShelfID(); UpdateLastShelfID();
TopCylinderDown(MoveInfo); TopCylinderDown(MoveInfo);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(300)); MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(300));
LastOutParam = new InOutParam(); LastOutParam = new InOutParam();
//清理RFID
RFIDManager.ClearTrayNum(DeviceID);
} }
else if (MoveInfo.IsStep(LineMoveStep.FO_61_TopDown)) else if (MoveInfo.IsStep(LineMoveStep.FO_61_TopDown))
{ {
......
...@@ -419,17 +419,21 @@ namespace OnlineStore.DeviceLibrary ...@@ -419,17 +419,21 @@ namespace OnlineStore.DeviceLibrary
/// <summary> /// <summary>
///上料模块复位: 顶升气缸下降 ///上料模块复位: 顶升气缸下降
/// </summary> /// </summary>
FR_15_TopDown, FR_15_TopDown,
/// <summary>
/// 上料模块复位:RFID读取到料架,检测定位工位信号
/// </summary>
FR_16_WaitLocationCheck,
/// <summary> /// <summary>
/// 上料模块复位:提升伺服在上升到P1点 /// 上料模块复位:提升伺服在上升到P1点
/// </summary> /// </summary>
FR_16_BatchAxisToP1, FR_17_BatchAxisToP1,
/// <summary> /// <summary>
/// 上料模块复位:检测夹爪料盘检测信号无料 /// 上料模块复位:检测夹爪料盘检测信号无料
/// </summary> /// </summary>
FR_17_ClampCheck, FR_18_ClampCheck,
#endregion #endregion
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!