Commit 9fea21ae LN

托盘横移修改:托盘检测信号需要持续500。阻挡气缸单独下降。

1 个父辈 e095c294
...@@ -34,6 +34,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -34,6 +34,7 @@ namespace OnlineStore.DeviceLibrary
/// 升降轴 /// 升降轴
/// </summary> /// </summary>
public AxisBean UpdownAxis = null; public AxisBean UpdownAxis = null;
public delegate void TrayProcessEnd(int swNum, int trayNum);
protected virtual void StopMoveProcess() protected virtual void StopMoveProcess()
{ {
......
...@@ -43,6 +43,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -43,6 +43,7 @@ namespace OnlineStore.DeviceLibrary
return false; return false;
} }
public event TrayProcessEnd TrayPEndEvent;
#region 托盘检测 #region 托盘检测
private InOutParam CheckParam = new InOutParam(); private InOutParam CheckParam = new InOutParam();
private void StartCheckFixture() private void StartCheckFixture()
...@@ -54,10 +55,8 @@ namespace OnlineStore.DeviceLibrary ...@@ -54,10 +55,8 @@ namespace OnlineStore.DeviceLibrary
if (Config.SidesWayNum > 0) if (Config.SidesWayNum > 0)
{ {
bool canProcess = (LineManager.Line.SwNoProcess(Config.SidesWayNum));
bool isTestNeed = (LineManager.Line.runStatus <= LineRunStatus.Wait); if (IOValue(IO_Type.SW_TrayCheck).Equals(IO_VALUE.HIGH) && canProcess)
bool isNeedTray = (LineManager.Line.SwNoProcess(Config.SidesWayNum));
if (IOValue(IO_Type.SW_TrayCheck).Equals(IO_VALUE.HIGH) && (isTestNeed || isNeedTray))
{ {
UpdateTrayNum(); UpdateTrayNum();
// preTrayNum = currTrayNum; // preTrayNum = currTrayNum;
...@@ -78,14 +77,13 @@ namespace OnlineStore.DeviceLibrary ...@@ -78,14 +77,13 @@ namespace OnlineStore.DeviceLibrary
TrayManager.UpdateSWState(Config.SidesWayNum, 1); TrayManager.UpdateSWState(Config.SidesWayNum, 1);
} }
} }
else if (Config.SidesWayNum.Equals(2) && IOValue(IO_Type.SW_StopCheck).Equals(IO_VALUE.HIGH) && (isTestNeed || isNeedTray)) else if (Config.SidesWayNum.Equals(2) && IOValue(IO_Type.SW_StopCheck).Equals(IO_VALUE.HIGH) && canProcess)
{ {
SecondMoveInfo.NewMove(LineMoveType.CheckFixture, CheckParam); SecondMoveInfo.NewMove(LineMoveType.CheckFixture, CheckParam);
TrayManager.UpdateSWState(Config.SidesWayNum, 2); TrayManager.UpdateSWState(Config.SidesWayNum, 2);
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_01_StopCylinder1Down); SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_00_StopCylinder1Down);
CheckLog("检测到SW_StopCheck:" + SecondMoveInfo.SLog + "阻挡气缸下降 ,等待"+TrayManager.StopDownWaitTime); CheckLog("检测到SW_StopCheck:" + SecondMoveInfo.SLog + "阻挡气缸下降 ,等待"+TrayManager.StopDownWaitTime);
IOMove(IO_Type.SW_StopDown, IO_VALUE.HIGH); IOMove(IO_Type.SW_StopDown, IO_VALUE.HIGH);
// SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.SW_StopDown, IO_VALUE.LOW));
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(TrayManager.StopDownWaitTime)); SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(TrayManager.StopDownWaitTime));
} }
} }
...@@ -107,7 +105,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -107,7 +105,7 @@ namespace OnlineStore.DeviceLibrary
{ {
//托盘在第一个阻挡处 //托盘在第一个阻挡处
SecondMoveInfo.NewMove(LineMoveType.CheckFixture); SecondMoveInfo.NewMove(LineMoveType.CheckFixture);
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_01_StopCylinder1Down); SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_00_StopCylinder1Down);
CheckLog(" 检测到FL_StopCheck:" + SecondMoveInfo.SLog + " FL阻挡1下降 ,最多等待1秒)"); CheckLog(" 检测到FL_StopCheck:" + SecondMoveInfo.SLog + " FL阻挡1下降 ,最多等待1秒)");
IOMove(IO_Type.FL_StopCylinder_Down1, IO_VALUE.HIGH); IOMove(IO_Type.FL_StopCylinder_Down1, IO_VALUE.HIGH);
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.FL_StopCylinder_Down1, IO_VALUE.HIGH)); SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.FL_StopCylinder_Down1, IO_VALUE.HIGH));
...@@ -133,11 +131,11 @@ namespace OnlineStore.DeviceLibrary ...@@ -133,11 +131,11 @@ namespace OnlineStore.DeviceLibrary
} }
#region 托盘检测 #region 托盘检测
if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MIO_01_StopCylinder1Down)) if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MIO_00_StopCylinder1Down))
{ {
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_03_StopCylinder2Down);
if (Config.SidesWayNum <= 0) if (Config.SidesWayNum <= 0)
{ {
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_03_StopCylinder2Down);
CheckLog("托盘检测:" + SecondMoveInfo.SLog + "阻挡1上升,等待FL_TrayCheck=1)"); CheckLog("托盘检测:" + SecondMoveInfo.SLog + "阻挡1上升,等待FL_TrayCheck=1)");
IOMove(IO_Type.FL_StopCylinder_Down1, IO_VALUE.LOW); IOMove(IO_Type.FL_StopCylinder_Down1, IO_VALUE.LOW);
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.FL_StopCylinder_Down1, IO_VALUE.LOW)); SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.FL_StopCylinder_Down1, IO_VALUE.LOW));
...@@ -145,12 +143,39 @@ namespace OnlineStore.DeviceLibrary ...@@ -145,12 +143,39 @@ namespace OnlineStore.DeviceLibrary
} }
else else
{ {
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_01_FixtureCheck);
CheckLog("托盘检测:" + SecondMoveInfo.SLog + "阻挡气缸上升,等待SW_TrayCheck=1)"); CheckLog("托盘检测:" + SecondMoveInfo.SLog + "阻挡气缸上升,等待SW_TrayCheck=1)");
IOMove(IO_Type.SW_StopDown, IO_VALUE.LOW); IOMove(IO_Type.SW_StopDown, IO_VALUE.LOW);
// SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.SW_StopDown, IO_VALUE.LOW));
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.SW_TrayCheck, IO_VALUE.HIGH)); SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.SW_TrayCheck, IO_VALUE.HIGH));
} }
} }
else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MIO_01_FixtureCheck))
{
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_02_WaitFixture);
CheckLog("托盘检测:" + SecondMoveInfo.SLog + "再次等待SW_TrayCheck=1并需要持续:" + TrayManager.SwTrayWaitTime);
IOMove(IO_Type.SW_StopDown, IO_VALUE.LOW);
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.SW_TrayCheck, IO_VALUE.HIGH));
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(TrayManager.SwTrayWaitTime));
}
else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MIO_02_WaitFixture))
{
if (IOValue(IO_Type.SW_TrayCheck).Equals(IO_VALUE.HIGH))
{
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_03_StopCylinder2Down);
CheckLog("托盘检测:" + SecondMoveInfo.SLog + "阻挡气缸上升,等待SW_TrayCheck=1)");
IOMove(IO_Type.SW_StopDown, IO_VALUE.LOW);
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.SW_TrayCheck, IO_VALUE.HIGH));
}
else
{
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_02_WaitFixture);
CheckLog("托盘检测:" + SecondMoveInfo.SLog + "再次等待SW_TrayCheck=1并需要持续:" + TrayManager.SwTrayWaitTime);
IOMove(IO_Type.SW_StopDown, IO_VALUE.LOW);
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.SW_TrayCheck, IO_VALUE.HIGH));
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(TrayManager.SwTrayWaitTime));
}
}
else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MIO_03_StopCylinder2Down)) else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MIO_03_StopCylinder2Down))
{ {
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_04_Wait); SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_04_Wait);
...@@ -191,8 +216,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -191,8 +216,7 @@ namespace OnlineStore.DeviceLibrary
else else
{ {
CheckLog("托盘检测:不需要次托盘,结束处理 )"); CheckLog("托盘检测:不需要次托盘,结束处理 )");
TrayManager.UpdateSWState(Config.SidesWayNum, 1); SMoveEnd();
SecondMoveInfo.EndMove();
} }
} }
} }
...@@ -249,11 +273,10 @@ namespace OnlineStore.DeviceLibrary ...@@ -249,11 +273,10 @@ namespace OnlineStore.DeviceLibrary
{ {
if (Config.SidesWayNum.Equals(2)) if (Config.SidesWayNum.Equals(2))
{ {
//更新横移托盘已处理完成
TrayManager.UpdateSWState(Config.SidesWayNum, 1);
//preTrayNum = currTrayNum; //preTrayNum = currTrayNum;
CheckLog("托盘放行: 此处为环形线横移2,顶升气缸不需要下降, (托盘放行结束) "); CheckLog("托盘放行: 此处为环形线横移2,顶升气缸不需要下降, (托盘放行结束) ");
SecondMoveInfo.EndMove();
SMoveEnd();
} }
else else
{ {
...@@ -275,11 +298,8 @@ namespace OnlineStore.DeviceLibrary ...@@ -275,11 +298,8 @@ namespace OnlineStore.DeviceLibrary
{ {
if (Config.SidesWayNum > 0) if (Config.SidesWayNum > 0)
{ {
//更新横移托盘已处理完成
TrayManager.UpdateSWState(Config.SidesWayNum, 1);
//preTrayNum = currTrayNum;
CheckLog("托盘放行 SecondStoreMove:(托盘放行结束) "); CheckLog("托盘放行 SecondStoreMove:(托盘放行结束) ");
SecondMoveInfo.EndMove(); SMoveEnd();
} }
else else
{ {
...@@ -308,8 +328,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -308,8 +328,7 @@ namespace OnlineStore.DeviceLibrary
{ {
//preTrayNum = currTrayNum; //preTrayNum = currTrayNum;
CheckLog("托盘放行 SecondStoreMove:(托盘放行结束) "); CheckLog("托盘放行 SecondStoreMove:(托盘放行结束) ");
// IOMove(IO_Type.StopCylinder_Down1, IO_VALUE.HIGH); SMoveEnd();
SecondMoveInfo.EndMove();
} }
#endregion #endregion
...@@ -333,6 +352,13 @@ namespace OnlineStore.DeviceLibrary ...@@ -333,6 +352,13 @@ namespace OnlineStore.DeviceLibrary
} }
} }
private void SMoveEnd()
{
TrayManager.UpdateSWState(Config.SidesWayNum, 1);
SecondMoveInfo.EndMove();
this.TrayPEndEvent?.Invoke(Config.SidesWayNum, currTrayNum);
}
#endregion #endregion
#region 入料流程 #region 入料流程
......
...@@ -12,9 +12,10 @@ namespace OnlineStore.DeviceLibrary ...@@ -12,9 +12,10 @@ namespace OnlineStore.DeviceLibrary
{ {
#region 出料流程 #region 出料流程
private int OutStoreHeight = -1; private int OutStoreHeight = -1;
internal bool CanStartCheckOut() internal bool CanStartCheckOut(int trayNum)
{ {
UpdateTrayNum(); preTrayNum = currTrayNum;
currTrayNum = trayNum;
if (CurrTrayIsNeed(currTrayNum, true)) if (CurrTrayIsNeed(currTrayNum, true))
{ {
SecondMoveInfo.NewMove(LineMoveType.CheckFixture, CheckParam); SecondMoveInfo.NewMove(LineMoveType.CheckFixture, CheckParam);
......
...@@ -88,6 +88,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -88,6 +88,7 @@ namespace OnlineStore.DeviceLibrary
AddDeviceName(ioList, config.IOIPList); AddDeviceName(ioList, config.IOIPList);
FeedingEquipMap.Add(config.Id, equip); FeedingEquipMap.Add(config.Id, equip);
AllEquipMap.Add(config.Id, equip); AllEquipMap.Add(config.Id, equip);
equip.TrayPEndEvent += Equip_TrayPEndEvent;
} }
foreach (MoveEquip_Config config in configList.Values) foreach (MoveEquip_Config config in configList.Values)
{ {
...@@ -104,6 +105,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -104,6 +105,7 @@ namespace OnlineStore.DeviceLibrary
AddDeviceName(ioList, config.IOIPList); AddDeviceName(ioList, config.IOIPList);
ProvidingEquipMap.Add(config.Id, equip); ProvidingEquipMap.Add(config.Id, equip);
AllEquipMap.Add(config.Id, equip); AllEquipMap.Add(config.Id, equip);
equip.TrayPEndEvent += Equip_TrayPEndEvent;
} }
foreach (DischargeLine_Config config in disLineMap.Values) foreach (DischargeLine_Config config in disLineMap.Values)
{ {
...@@ -316,7 +318,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -316,7 +318,7 @@ namespace OnlineStore.DeviceLibrary
private void RHomeOp() private void RHomeOp()
{ {
TrayManager.SidesWayStateMap = new System.Collections.Concurrent.ConcurrentDictionary<int, int>() ; // TrayManager.SidesWayStateMap = new System.Collections.Concurrent.ConcurrentDictionary<int, int>() ;
alarmType = LineAlarmType.None; alarmType = LineAlarmType.None;
mainTimer.Enabled = false; mainTimer.Enabled = false;
IoCheckTimer.Enabled = false; IoCheckTimer.Enabled = false;
......
...@@ -418,7 +418,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -418,7 +418,7 @@ namespace OnlineStore.DeviceLibrary
{ {
//托盘在第一个阻挡处 //托盘在第一个阻挡处
SecondMoveInfo.NewMove(LineMoveType.CheckFixture); SecondMoveInfo.NewMove(LineMoveType.CheckFixture);
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_01_StopCylinder1Down); SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_00_StopCylinder1Down);
CheckLog(" 托盘检测:料盘检测StopCylinder_Check1 " + SecondMoveInfo.SLog + "阻挡气缸1-1下降 ,最多等待1秒)"); CheckLog(" 托盘检测:料盘检测StopCylinder_Check1 " + SecondMoveInfo.SLog + "阻挡气缸1-1下降 ,最多等待1秒)");
IOMove(IO_Type.StopCylinder_Down1, IO_VALUE.HIGH); IOMove(IO_Type.StopCylinder_Down1, IO_VALUE.HIGH);
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.StopCylinder_Down1, IO_VALUE.HIGH)); SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.StopCylinder_Down1, IO_VALUE.HIGH));
...@@ -442,7 +442,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -442,7 +442,7 @@ namespace OnlineStore.DeviceLibrary
} }
#region 托盘检测 #region 托盘检测
if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MIO_01_StopCylinder1Down)) if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MIO_00_StopCylinder1Down))
{ {
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_03_StopCylinder2Down); SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_03_StopCylinder2Down);
CheckLog("托盘阻挡" + SecondMoveInfo.SLog + " 阻挡气缸1-1上升,等待 阻挡2托盘检测=1)"); CheckLog("托盘阻挡" + SecondMoveInfo.SLog + " 阻挡气缸1-1上升,等待 阻挡2托盘检测=1)");
...@@ -450,7 +450,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -450,7 +450,7 @@ namespace OnlineStore.DeviceLibrary
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.StopCylinder_Down1, IO_VALUE.LOW)); SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.StopCylinder_Down1, IO_VALUE.LOW));
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.StopCylinder_Check2, IO_VALUE.HIGH)); SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.StopCylinder_Check2, IO_VALUE.HIGH));
} }
else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MIO_02_FixtureCheck)) else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MIO_01_FixtureCheck))
{ {
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_03_StopCylinder2Down); SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_03_StopCylinder2Down);
CheckLog("托盘阻挡" + SecondMoveInfo.SLog + " 阻挡气缸1-1上升)"); CheckLog("托盘阻挡" + SecondMoveInfo.SLog + " 阻挡气缸1-1上升)");
......
...@@ -10,6 +10,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -10,6 +10,7 @@ namespace OnlineStore.DeviceLibrary
{ {
partial class ProvidingEquip partial class ProvidingEquip
{ {
public event TrayProcessEnd TrayPEndEvent;
#region 托盘检测 #region 托盘检测
protected override bool CheckWaitResult(LineMoveInfo moveInfo, WaitResultInfo wait) protected override bool CheckWaitResult(LineMoveInfo moveInfo, WaitResultInfo wait)
...@@ -49,7 +50,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -49,7 +50,7 @@ namespace OnlineStore.DeviceLibrary
{ {
//托盘在第一个阻挡处 //托盘在第一个阻挡处
SecondMoveInfo.NewMove(LineMoveType.CheckFixture); SecondMoveInfo.NewMove(LineMoveType.CheckFixture);
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_01_StopCylinder1Down); SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_00_StopCylinder1Down);
TrayManager.UpdateSWState(Config.SidesWayNum, 2); TrayManager.UpdateSWState(Config.SidesWayNum, 2);
CheckLog(" 托盘检测:" + SecondMoveInfo.SLog + "阻挡气缸1-1下降 ,最多等待1秒)"); CheckLog(" 托盘检测:" + SecondMoveInfo.SLog + "阻挡气缸1-1下降 ,最多等待1秒)");
IOMove(IO_Type.StopCylinder_Down1, IO_VALUE.HIGH); IOMove(IO_Type.StopCylinder_Down1, IO_VALUE.HIGH);
...@@ -78,7 +79,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -78,7 +79,7 @@ namespace OnlineStore.DeviceLibrary
} }
#region 托盘检测 #region 托盘检测
if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MIO_01_StopCylinder1Down)) if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MIO_00_StopCylinder1Down))
{ {
CheckLog("托盘阻挡" + SecondMoveInfo.SLog + " 阻挡气缸1-1上升,等待 阻挡2托盘检测=1)"); CheckLog("托盘阻挡" + SecondMoveInfo.SLog + " 阻挡气缸1-1上升,等待 阻挡2托盘检测=1)");
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_03_StopCylinder2Down); SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_03_StopCylinder2Down);
...@@ -86,7 +87,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -86,7 +87,7 @@ namespace OnlineStore.DeviceLibrary
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.StopCylinder_Down1, IO_VALUE.LOW)); SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.StopCylinder_Down1, IO_VALUE.LOW));
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.StopCylinder_Check2, IO_VALUE.HIGH)); SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.StopCylinder_Check2, IO_VALUE.HIGH));
} }
else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MIO_02_FixtureCheck)) else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MIO_01_FixtureCheck))
{ {
CheckLog("托盘阻挡" + SecondMoveInfo.SLog + " 阻挡气缸1-1上升)"); CheckLog("托盘阻挡" + SecondMoveInfo.SLog + " 阻挡气缸1-1上升)");
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_03_StopCylinder2Down); SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_03_StopCylinder2Down);
...@@ -201,9 +202,10 @@ namespace OnlineStore.DeviceLibrary ...@@ -201,9 +202,10 @@ namespace OnlineStore.DeviceLibrary
else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MO_18_StopCylinder_Back)) else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MO_18_StopCylinder_Back))
{ {
//preTrayNum = currTrayNum; //preTrayNum = currTrayNum;
CheckLog("托盘放行 SecondMove:(托盘放行结束) "); CheckLog("托盘放行 SecondMove:(托盘放行结束),出发 TrayPEndEvent ");
// IOMove(IO_Type.StopCylinder_Down1, IO_VALUE.HIGH); // IOMove(IO_Type.StopCylinder_Down1, IO_VALUE.HIGH);
SecondMoveInfo.EndMove(); SecondMoveInfo.EndMove();
this.TrayPEndEvent?.Invoke(Config.SidesWayNum, currTrayNum);
} }
#endregion #endregion
} }
......
...@@ -12,6 +12,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -12,6 +12,7 @@ namespace OnlineStore.DeviceLibrary
{ {
public class TrayManager public class TrayManager
{ {
public static int SwTrayWaitTime = 500;
public static int StopDownWaitTime = 500; public static int StopDownWaitTime = 500;
public static RFID RfidReader = new RFID(); public static RFID RfidReader = new RFID();
/// <summary> /// <summary>
...@@ -249,16 +250,16 @@ namespace OnlineStore.DeviceLibrary ...@@ -249,16 +250,16 @@ namespace OnlineStore.DeviceLibrary
#region 横移状态缓存 #region 横移状态缓存
internal static ConcurrentDictionary<int, int> SidesWayStateMap = new ConcurrentDictionary<int, int>(); // internal static ConcurrentDictionary<int, int> SidesWayStateMap = new ConcurrentDictionary<int, int>();
internal static int GetSwStatus(int swNum) internal static int GetSwStatus(int swNum)
{ {
if (SidesWayStateMap.ContainsKey(swNum)) //if (SidesWayStateMap.ContainsKey(swNum))
{ //{
return SidesWayStateMap[swNum]; // return SidesWayStateMap[swNum];
} //}
return 0; return 0;
} }
internal static bool CanMoveSidesWay(int swNum) internal static bool LineCanMoveSW(int swNum)
{ {
int status = GetSwStatus(swNum); int status = GetSwStatus(swNum);
...@@ -267,20 +268,14 @@ namespace OnlineStore.DeviceLibrary ...@@ -267,20 +268,14 @@ namespace OnlineStore.DeviceLibrary
{ {
if (equip.Config.SidesWayNum.Equals(swNum)) if (equip.Config.SidesWayNum.Equals(swNum))
{ {
if (equip.IsDebug || equip.runStatus <= LineRunStatus.Wait) if (equip.runStatus <= LineRunStatus.Wait || equip.isInSuddenDown || equip.isNoAirCheck)
{ {
return true; return true;
} }
if (equip.SecondMoveInfo.MoveType.Equals(LineMoveType.None))
//上料3如果报警,可以直接处理移栽
if (status.Equals(0) && swNum.Equals(2) && (equip.isInSuddenDown || equip.isNoAirCheck))
{ {
return true; return true;
} }
if (equip.SecondMoveInfo.MoveType.Equals(LineMoveType.None).Equals(false))
{
return false ;
}
break; break;
} }
} }
...@@ -288,29 +283,15 @@ namespace OnlineStore.DeviceLibrary ...@@ -288,29 +283,15 @@ namespace OnlineStore.DeviceLibrary
{ {
if (equip.Config.SidesWayNum.Equals(swNum)) if (equip.Config.SidesWayNum.Equals(swNum))
{ {
if (equip.IsDebug || equip.runStatus <= LineRunStatus.Wait) if (equip.runStatus <= LineRunStatus.Wait || equip.isInSuddenDown || equip.isNoAirCheck)
{ {
return true; return true;
} }
if (equip.SecondMoveInfo.MoveType.Equals(LineMoveType.None))
if (equip.SecondMoveInfo.MoveType.Equals(LineMoveType.None).Equals(false))
{
return false ;
}
break;
}
}
if (status.Equals(1) )
{ {
return true; return true;
} }
else if (swNum.Equals(1) || swNum.Equals(3)) break;
{
if (status.Equals(0) )
{
return true;
} }
} }
return false; return false;
...@@ -323,19 +304,19 @@ namespace OnlineStore.DeviceLibrary ...@@ -323,19 +304,19 @@ namespace OnlineStore.DeviceLibrary
/// <param name="value">0=未处理等待中,1=托盘处理完成,可处理横移,2=托盘检测处理中</param> /// <param name="value">0=未处理等待中,1=托盘处理完成,可处理横移,2=托盘检测处理中</param>
internal static void UpdateSWState(int swNum, int value) internal static void UpdateSWState(int swNum, int value)
{ {
if (swNum <= 0) //if (swNum <= 0)
{ //{
return; // return;
} //}
if (SidesWayStateMap.ContainsKey(swNum)) //if (SidesWayStateMap.ContainsKey(swNum))
{ //{
SidesWayStateMap[swNum] = value; // SidesWayStateMap[swNum] = value;
} //}
else //else
{ //{
SidesWayStateMap.TryAdd(swNum, value); // SidesWayStateMap.TryAdd(swNum, value);
} //}
} }
......
...@@ -7,7 +7,7 @@ using System.Drawing; ...@@ -7,7 +7,7 @@ using System.Drawing;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading; using System.Threading;
using System.Threading.Tasks;
namespace OnlineStore.DeviceLibrary namespace OnlineStore.DeviceLibrary
{ {
...@@ -386,9 +386,22 @@ namespace OnlineStore.DeviceLibrary ...@@ -386,9 +386,22 @@ namespace OnlineStore.DeviceLibrary
IOMove(IoType, value); IOMove(IoType, value);
} }
} }
public void IOMove(string IoType, IO_VALUE value) public void IOMove(string IoType, IO_VALUE value, int msTime = 0)
{
if (msTime <= 0)
{
IOManager.IOMove(IoType, value, baseConfig.Id);
}
else
{
Task.Factory.StartNew(delegate
{ {
IOManager.IOMove(IoType, value, baseConfig.Id); IOManager.IOMove(IoType, value, baseConfig.Id);
Thread.Sleep(msTime);
IO_VALUE tValue = value.Equals(IO_VALUE.HIGH) ? IO_VALUE.LOW : IO_VALUE.HIGH;
IOManager.IOMove(IoType, tValue, baseConfig.Id);
});
}
} }
public IO_VALUE IOValue(string IoType) public IO_VALUE IOValue(string IoType)
{ {
......
...@@ -265,11 +265,15 @@ namespace OnlineStore.DeviceLibrary ...@@ -265,11 +265,15 @@ namespace OnlineStore.DeviceLibrary
/// <summary> /// <summary>
///移载(流水线)装置出入库处理,阻挡气缸1-1下降 ///移载(流水线)装置出入库处理,阻挡气缸1-1下降
/// </summary> /// </summary>
MIO_01_StopCylinder1Down = 3081, MIO_00_StopCylinder1Down = 3080,
/// <summary> /// <summary>
///移载(流水线)装置出入库处理,夹具检测1-4=1 ///移载(流水线)装置出入库处理,夹具检测1-4=1
/// </summary> /// </summary>
MIO_02_FixtureCheck = 3082, MIO_01_FixtureCheck = 3081,
/// <summary>
/// 移载(流水线)装置出入库处理,等待夹具持续500毫秒
/// </summary>
MIO_02_WaitFixture = 3082,
/// <summary> /// <summary>
///移载(流水线)装置出入库处理,阻挡气缸1-1上升 ///移载(流水线)装置出入库处理,阻挡气缸1-1上升
/// </summary> /// </summary>
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!