Commit 60d9af23 LN

1.HY8托盘逻辑修改。2.接驳台提前放行托盘.

1 个父辈 04f4f1d7
...@@ -201,7 +201,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -201,7 +201,7 @@ namespace OnlineStore.DeviceLibrary
CheckStopWatch(trayCheck2LowWait, 30000, false); CheckStopWatch(trayCheck2LowWait, 30000, false);
} }
if (Config.DIList.ContainsKey(IO_Type.HY_FrontStopCheck) && IOValue(IO_Type.HY_FrontStopCheck).Equals(IO_VALUE.HIGH)) if (Config.DIList.ContainsKey(IO_Type.HY_FrontStopCheck) && IOValue(IO_Type.HY_FrontStopCheck).Equals(IO_VALUE.HIGH))
{ {
CheckStopWatch(frontTrayCheckWait, 30000, false); CheckStopWatch(frontTrayCheckWait, 30000, false);
} }
else else
...@@ -314,6 +314,19 @@ namespace OnlineStore.DeviceLibrary ...@@ -314,6 +314,19 @@ namespace OnlineStore.DeviceLibrary
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_OL_Tray_Check, IO_VALUE.HIGH)); MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_OL_Tray_Check, IO_VALUE.HIGH));
} }
} }
internal void HY03_FrontStopUp()
{
frontTrayCheckWait.Stop();
trayCheck2LowWait.Stop();
MoveInfo.NewMove(LineMoveType.Fixture);
runStatus = LineRunStatus.Busy;
MoveInfo.NextMoveStep(LineMoveStep.HY03_FrontStopUp);
CheckLog("托盘阻挡" + MoveInfo.SLog + " 托盘检测到信号,前阻挡上升");
CheckAndMove(IO_Type.HY_FrontStopDown, IO_VALUE.LOW);
MoveInfo.OneWaitCanEndStep = true;
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_TrayCheck, IO_VALUE.HIGH));
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(30000));
}
protected override void FixtureProcess() protected override void FixtureProcess()
{ {
if (MoveInfo.IsInWait) if (MoveInfo.IsInWait)
...@@ -330,12 +343,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -330,12 +343,7 @@ namespace OnlineStore.DeviceLibrary
{ {
if (IOValue(IO_Type.HY_FrontStopCheck).Equals(IO_VALUE.LOW) || IOValue(IO_Type.HY_TrayCheck).Equals(IO_VALUE.HIGH)) if (IOValue(IO_Type.HY_FrontStopCheck).Equals(IO_VALUE.LOW) || IOValue(IO_Type.HY_TrayCheck).Equals(IO_VALUE.HIGH))
{ {
MoveInfo.NextMoveStep(LineMoveStep.HY03_FrontStopUp); HY03_FrontStopUp();
CheckLog("托盘阻挡" + MoveInfo.SLog + " 托盘检测到信号,前阻挡上升");
CheckAndMove(IO_Type.HY_FrontStopDown, IO_VALUE.LOW);
MoveInfo.OneWaitCanEndStep = true;
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_TrayCheck, IO_VALUE.HIGH));
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(30000));
} }
else else
{ {
......
...@@ -328,10 +328,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -328,10 +328,7 @@ namespace OnlineStore.DeviceLibrary
} }
} }
/// <summary>
/// 判断料盘是否需要移到接驳台
/// </summary>
/// <returns></returns>
private bool ReelNeedMove() private bool ReelNeedMove()
{ {
try try
...@@ -352,8 +349,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -352,8 +349,7 @@ namespace OnlineStore.DeviceLibrary
if (trayInfo.InOrOutStore.Equals(ReelType.OutStore) && inoup.urgentReel.Equals(false) && inoup.cutReel.Equals(false)) if (trayInfo.InOrOutStore.Equals(ReelType.OutStore) && inoup.urgentReel.Equals(false) && inoup.cutReel.Equals(false))
{ {
LogInfo(" 工单料->接驳台:" + "" + inoup.ToStr()); LogInfo(" 工单料->接驳台:" + "" + inoup.ToStr());
SecondMoveInfo.MoveParam = inoup; SecondMoveInfo.MoveParam = inoup;
//MoveInfo.MoveParam = inoup;
return true; return true;
} }
...@@ -366,11 +362,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -366,11 +362,7 @@ namespace OnlineStore.DeviceLibrary
return false; return false;
} }
/// <summary>
/// 判断料盘是否需要移到NG箱
/// </summary>
/// <returns></returns>
private bool ReelNeedToNG() private bool ReelNeedToNG()
{ {
try try
...@@ -393,17 +385,17 @@ namespace OnlineStore.DeviceLibrary ...@@ -393,17 +385,17 @@ namespace OnlineStore.DeviceLibrary
SServerManager.cancelPutInTask(Name, trayInfo.InoutPar.WareCode); SServerManager.cancelPutInTask(Name, trayInfo.InoutPar.WareCode);
} }
SecondMoveInfo.MoveParam = inoup; SecondMoveInfo.MoveParam = inoup;
MoveInfo.MoveParam = inoup; //MoveInfo.MoveParam = inoup;
return true; return true;
} }
else if (trayInfo.InOrOutStore.Equals(ReelType.OutStore) && inoup.urgentReel && this.DeviceID.Equals(217)) else if (trayInfo.InOrOutStore.Equals(ReelType.OutStore) && inoup.urgentReel && this.DeviceID.Equals(217))
{ {
LogInfo(" 紧急料->NG箱" + "" + inoup.ToStr()); LogInfo(" 紧急料->NG箱" + "" + inoup.ToStr());
SecondMoveInfo.MoveParam = inoup; SecondMoveInfo.MoveParam = inoup;
MoveInfo.MoveParam = inoup; //MoveInfo.MoveParam = inoup;
return true; return true;
} }
} }
} }
catch (Exception ex) catch (Exception ex)
...@@ -514,17 +506,17 @@ namespace OnlineStore.DeviceLibrary ...@@ -514,17 +506,17 @@ namespace OnlineStore.DeviceLibrary
} }
else if (MoveInfo.IsStep(LineMoveStep.JM_07_ClampCheck)) else if (MoveInfo.IsStep(LineMoveStep.JM_07_ClampCheck))
{ {
TrayCanGo();
if (IsNgPro()) if (IsNgPro())
{ {
MoveInfo.NextMoveStep(LineMoveStep.JM_11_CylinderGive); MoveInfo.NextMoveStep(LineMoveStep.JM_11_CylinderGive);
OutLog(logName + MoveInfo.SLog + ":接驳台气缸放料 "); OutLog(logName + MoveInfo.SLog + ": 托盘离开,接驳台气缸放料 ");
CylinderMove(MoveInfo, IO_Type.HY_MoveCylinder_Take, IO_Type.HY_MoveCylinder_Give); CylinderMove(MoveInfo, IO_Type.HY_MoveCylinder_Take, IO_Type.HY_MoveCylinder_Give);
} }
else else
{ {
MoveInfo.NextMoveStep(LineMoveStep.JM_10_WaitJNoReel); MoveInfo.NextMoveStep(LineMoveStep.JM_10_WaitJNoReel);
OutLog(logName + MoveInfo.SLog + ":等待接驳台无料 "); OutLog(logName + MoveInfo.SLog + ":托盘离开,等待接驳台无料 ");
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_TrayCheck1, IO_VALUE.LOW)); MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_TrayCheck1, IO_VALUE.LOW));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_TrayCheck2, IO_VALUE.LOW)); MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_TrayCheck2, IO_VALUE.LOW));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_TrayCheck3, IO_VALUE.LOW)); MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_TrayCheck3, IO_VALUE.LOW));
...@@ -549,8 +541,6 @@ namespace OnlineStore.DeviceLibrary ...@@ -549,8 +541,6 @@ namespace OnlineStore.DeviceLibrary
MoveInfo.NextMoveStep(LineMoveStep.JM_13_ClampRelax); MoveInfo.NextMoveStep(LineMoveStep.JM_13_ClampRelax);
OutLog(logName + MoveInfo.SLog + ":夹料气缸放松 "); OutLog(logName + MoveInfo.SLog + ":夹料气缸放松 ");
CylinderMove(MoveInfo, IO_Type.HY_ClampCylinder_Work, IO_Type.HY_ClampCylinder_Relax); CylinderMove(MoveInfo, IO_Type.HY_ClampCylinder_Work, IO_Type.HY_ClampCylinder_Relax);
} }
else if (MoveInfo.IsStep(LineMoveStep.JM_13_ClampRelax)) else if (MoveInfo.IsStep(LineMoveStep.JM_13_ClampRelax))
{ {
...@@ -594,9 +584,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -594,9 +584,7 @@ namespace OnlineStore.DeviceLibrary
{ {
afterPutCutOK = true; afterPutCutOK = true;
} }
TrayCanGo(); //TrayCanGo();
//MoveInfo.EndMove();
//runStatus = LineRunStatus.Runing;
} }
else if (MoveInfo.IsStep(LineMoveStep.JM_16_ReelArrive)) else if (MoveInfo.IsStep(LineMoveStep.JM_16_ReelArrive))
{ {
......
...@@ -13,15 +13,11 @@ namespace OnlineStore.DeviceLibrary ...@@ -13,15 +13,11 @@ namespace OnlineStore.DeviceLibrary
partial class LineBean partial class LineBean
{ {
#region 定时处理方法 #region 定时处理方法
public bool CanProcessLine(bool isCheckSleep = true) public bool CanProcessLine(bool isCheckSleep = true)
{ {
//if (runStatus <= LineRunStatus.Wait) if (IOManager.IOValue(IO_Type.MotorRun_C1_123, 0).Equals(IO_VALUE.HIGH) &&
//{
// return false ;
//}
if ( IOManager.IOValue(IO_Type.MotorRun_C1_123, 0).Equals(IO_VALUE.HIGH) &&
IOManager.IOValue(IO_Type.MotorRun_C1_4, 0).Equals(IO_VALUE.HIGH) && IOManager.IOValue(IO_Type.MotorRun_C1_4, 0).Equals(IO_VALUE.HIGH) &&
IOManager.IOValue(IO_Type.MotorRun_679, 0).Equals(IO_VALUE.HIGH) && IOManager.IOValue(IO_Type.MotorRun_679, 0).Equals(IO_VALUE.HIGH) &&
IOManager.IOValue(IO_Type.MotorRun_23458, 0).Equals(IO_VALUE.HIGH)) IOManager.IOValue(IO_Type.MotorRun_23458, 0).Equals(IO_VALUE.HIGH))
...@@ -32,7 +28,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -32,7 +28,7 @@ namespace OnlineStore.DeviceLibrary
} }
public bool OutHyCanProLine() public bool OutHyCanProLine()
{ {
if (IOManager.IOValue(IO_Type.MotorRun_679, 0).Equals(IO_VALUE.HIGH) || if (IOManager.IOValue(IO_Type.MotorRun_679, 0).Equals(IO_VALUE.HIGH) &&
IOManager.IOValue(IO_Type.MotorRun_23458, 0).Equals(IO_VALUE.HIGH)) IOManager.IOValue(IO_Type.MotorRun_23458, 0).Equals(IO_VALUE.HIGH))
{ {
return true; return true;
...@@ -56,7 +52,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -56,7 +52,7 @@ namespace OnlineStore.DeviceLibrary
} }
//若BOX和移栽都没有在等待Io的过程中则此Io超时异常可能已经处理过 //若BOX和移栽都没有在等待Io的过程中则此Io超时异常可能已经处理过
if (MoveInfo.IsInWait.Equals(false) && T3C1_MoveInfo.IsInWait.Equals(false) ) if (MoveInfo.IsInWait.Equals(false) && T3C1_MoveInfo.IsInWait.Equals(false))
{ {
LogUtil.info(Name + "清理信号超时报警【" + WarnMsg + "】 "); LogUtil.info(Name + "清理信号超时报警【" + WarnMsg + "】 ");
alarmType = LineAlarmType.None; alarmType = LineAlarmType.None;
...@@ -110,7 +106,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -110,7 +106,7 @@ namespace OnlineStore.DeviceLibrary
ConfigIO io = baseConfig.getWaitIO(wait.IoType); ConfigIO io = baseConfig.getWaitIO(wait.IoType);
WarnMsg = checkWaitInfo.Name + "[" + checkWaitInfo.MoveStep + "]等待" + NotOkMsg + " 超时"; WarnMsg = checkWaitInfo.Name + "[" + checkWaitInfo.MoveStep + "]等待" + NotOkMsg + " 超时";
Alarm(LineAlarmType.IoSingleTimeOut); Alarm(LineAlarmType.IoSingleTimeOut);
LogUtil.error( WarnMsg, 901); LogUtil.error(WarnMsg, 901);
} }
//超过报警时长 //超过报警时长
else if (rwSpan.TotalSeconds > 5 && span.TotalSeconds > 6 && span.TotalSeconds < LineManager.Config.IOSingle_TimerOut * 2) else if (rwSpan.TotalSeconds > 5 && span.TotalSeconds > 6 && span.TotalSeconds < LineManager.Config.IOSingle_TimerOut * 2)
...@@ -206,7 +202,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -206,7 +202,7 @@ namespace OnlineStore.DeviceLibrary
} }
protected override void OutStoreProcess() protected override void OutStoreProcess()
{ {
} }
public override bool StartInStoreMove(InOutParam param) public override bool StartInStoreMove(InOutParam param)
{ {
return true; return true;
...@@ -299,9 +295,9 @@ namespace OnlineStore.DeviceLibrary ...@@ -299,9 +295,9 @@ namespace OnlineStore.DeviceLibrary
{ {
//如果移栽已拦截到自己入库的托盘,不能出库 //如果移栽已拦截到自己入库的托盘,不能出库
if(move.SecondMoveInfo.MoveType.Equals(LineMoveType.Fixture)&& if (move.SecondMoveInfo.MoveType.Equals(LineMoveType.Fixture) &&
move.SecondMoveInfo.MoveStep>=LineMoveStep.MIO_05_WaitTime && move.SecondMoveInfo.MoveStep >= LineMoveStep.MIO_05_WaitTime &&
move.SecondMoveInfo.MoveStep<= LineMoveStep.MO_14_TopDown move.SecondMoveInfo.MoveStep <= LineMoveStep.MO_14_TopDown
) )
{ {
return false; return false;
...@@ -315,8 +311,8 @@ namespace OnlineStore.DeviceLibrary ...@@ -315,8 +311,8 @@ namespace OnlineStore.DeviceLibrary
{ {
return true; return true;
} }
else if (move.MoveInfo.IsStep(LineMoveStep.MO_57_CylinderAfter) && move.MoveInfo.IsInWait.Equals(false) else if (move.MoveInfo.IsStep(LineMoveStep.MO_57_CylinderAfter) && move.MoveInfo.IsInWait.Equals(false)
&&move.CylinderIsOk(IO_Type.BeforeAfterCylinder_Before, IO_Type.BeforeAfterCylinder_After)) && move.CylinderIsOk(IO_Type.BeforeAfterCylinder_Before, IO_Type.BeforeAfterCylinder_After))
{ {
return true; return true;
} }
...@@ -339,17 +335,17 @@ namespace OnlineStore.DeviceLibrary ...@@ -339,17 +335,17 @@ namespace OnlineStore.DeviceLibrary
return false; return false;
} }
MoveEquip move = MoveEquipMap[id]; MoveEquip move = MoveEquipMap[id];
if (move.IsDebug) if (move.IsDebug)
{ {
return false; return false;
} }
if (runStatus > LineRunStatus.Wait && move.runStatus > LineRunStatus.Wait) if (runStatus > LineRunStatus.Wait && move.runStatus > LineRunStatus.Wait)
{ {
return true; return true;
} }
return false; return false;
} }
#endregion #endregion
...@@ -360,16 +356,16 @@ namespace OnlineStore.DeviceLibrary ...@@ -360,16 +356,16 @@ namespace OnlineStore.DeviceLibrary
/// <param name="deviceID">上料机构ID</param> /// <param name="deviceID">上料机构ID</param>
/// <param name="trayNum">空托盘号</param> /// <param name="trayNum">空托盘号</param>
/// <returns></returns> /// <returns></returns>
internal bool TrayIsReady(int deviceID,out int trayNum) internal bool TrayIsReady(int deviceID, out int trayNum)
{ {
trayNum = -1; trayNum = -1;
bool isDebug = AllEquipMap[deviceID].IsDebug; bool isDebug = AllEquipMap[deviceID].IsDebug;
if (deviceID.Equals(103)) if (deviceID.Equals(103))
{ {
if (T3C1TrayIsReady()) if (T3C1TrayIsReady())
{ {
trayNum = T3C1_TrayNum; trayNum = T3C1_TrayNum;
return true; return true;
} }
...@@ -379,13 +375,14 @@ namespace OnlineStore.DeviceLibrary ...@@ -379,13 +375,14 @@ namespace OnlineStore.DeviceLibrary
{ {
return true; return true;
} }
}else }
else
{ {
foreach(HYEquipBase hy in HYEquipMap.Values) foreach (HYEquipBase hy in HYEquipMap.Values)
{ {
if (hy.Config.WorkDeviceId.Equals(deviceID)) if (hy.Config.WorkDeviceId.Equals(deviceID))
{ {
if(hy.TrayIsReady()) if (hy.TrayIsReady())
{ {
trayNum = hy.currTrayNum; trayNum = hy.currTrayNum;
return true; return true;
...@@ -415,7 +412,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -415,7 +412,7 @@ namespace OnlineStore.DeviceLibrary
{ {
foreach (HYEquipBase hy in HYEquipMap.Values) foreach (HYEquipBase hy in HYEquipMap.Values)
{ {
if (hy.Config.WorkDeviceId.Equals(deviceID)) if (hy.Config.WorkDeviceId.Equals(deviceID))
{ {
hy.TrayCanLeave(); hy.TrayCanLeave();
...@@ -425,6 +422,53 @@ namespace OnlineStore.DeviceLibrary ...@@ -425,6 +422,53 @@ namespace OnlineStore.DeviceLibrary
} }
} }
#endregion #endregion
internal bool Move5CanStop2Down(int deviceId)
{
if (!deviceId.Equals(5))
{
return true;
}
if (HYEquipMap.ContainsKey(208))
{
HYEquipBase hy8 = HYEquipMap[208];
if (hy8.runStatus <= LineRunStatus.Wait)
{
return true;
}
else if (hy8.MoveInfo.MoveType.Equals(LineMoveType.None))
{
return true;
}
}
return false;
}
internal void Move5Stop2Down(int deviceId)
{
try
{
if (!deviceId.Equals(5))
{
return;
}
if (HYEquipMap.ContainsKey(208))
{
HY_C1Line hy8 = (HY_C1Line)HYEquipMap[208];
if (hy8.runStatus > LineRunStatus.Wait && hy8.MoveInfo.MoveType.Equals(LineMoveType.None))
{
LogUtil.info("进仓05托盘离开," + hy8.Name + "开始等待托盘检测信号 HY03_FrontStopUp");
hy8.HY03_FrontStopUp();
}
}
}
catch (Exception ex)
{
LogUtil.error("Move5Stop2Down[" + deviceId + "]出错:" + ex.ToString());
}
}
} }
} }
...@@ -170,10 +170,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -170,10 +170,7 @@ namespace OnlineStore.DeviceLibrary
} }
} }
} }
/// <summary>
/// 停止运动
/// </summary>
internal override void StopMove() internal override void StopMove()
{ {
trayCheck2LowWait.Stop(); trayCheck2LowWait.Stop();
......
...@@ -895,6 +895,8 @@ namespace OnlineStore.DeviceLibrary ...@@ -895,6 +895,8 @@ namespace OnlineStore.DeviceLibrary
SecondMoveInfo.NextMoveStep(LineMoveStep.MO_18_WaitTime); SecondMoveInfo.NextMoveStep(LineMoveStep.MO_18_WaitTime);
CheckLog("托盘放行 " + SecondMoveInfo.SLog + " , 等待300ms后阻挡2上升"); CheckLog("托盘放行 " + SecondMoveInfo.SLog + " , 等待300ms后阻挡2上升");
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(300)); SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(300));
LineManager.Line.Move5Stop2Down(DeviceID);
} }
else if (SecondMoveInfo.IsStep(LineMoveStep.MO_18_WaitTime)) else if (SecondMoveInfo.IsStep(LineMoveStep.MO_18_WaitTime))
{ {
...@@ -914,10 +916,19 @@ namespace OnlineStore.DeviceLibrary ...@@ -914,10 +916,19 @@ namespace OnlineStore.DeviceLibrary
} }
private void MO_16_Stop2Down() private void MO_16_Stop2Down()
{ {
SecondMoveInfo.NextMoveStep(LineMoveStep.MO_16_Stop2Down); if (LineManager.Line.Move5CanStop2Down(DeviceID))
CheckLog("托盘放行" + SecondMoveInfo.SLog + " ,阻挡气缸1-2下降 "); {
IOMove(IO_Type.StopDown2, IO_VALUE.HIGH); SecondMoveInfo.NextMoveStep(LineMoveStep.MO_16_Stop2Down);
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.StopDown2, IO_VALUE.HIGH)); CheckLog("托盘放行" + SecondMoveInfo.SLog + " ,阻挡气缸1-2下降 ");
IOMove(IO_Type.StopDown2, IO_VALUE.HIGH);
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.StopDown2, IO_VALUE.HIGH));
}
else if (SecondMoveInfo.IsTimeOut(120))
{
WarnMsg = MoveInfo.Name + "[" + MoveInfo.MoveType + "][" + MoveInfo.SLog + "]等待HY8空闲[" + Math.Round(MoveInfo.StepSpan().TotalSeconds, 1) + "]秒";
LogUtil.error(WarnMsg, DeviceID * 1000 + 12);
Alarm(LineAlarmType.IoSingleTimeOut);
}
} }
#endregion #endregion
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!