Commit 5a6e9ac4 LN

托盘检测入口加锁处理

1 个父辈 ec5a2f4b
...@@ -218,7 +218,8 @@ PRO,0,移栽上下轴流水线取放料详细位置P2,UpDownP2DetialList,0X0=800 ...@@ -218,7 +218,8 @@ PRO,0,移栽上下轴流水线取放料详细位置P2,UpDownP2DetialList,0X0=800
20200302 20200302
上料模块,入料的时候如果链条油两个料架,阻挡下降时间过久,会两个一起过去。 上料模块,入料的时候如果链条油两个料架,阻挡下降时间过久,会两个一起过去。
20200303
托盘检测入口加锁处理。
......
...@@ -314,6 +314,11 @@ namespace OnlineStore.DeviceLibrary ...@@ -314,6 +314,11 @@ namespace OnlineStore.DeviceLibrary
preTrayNum = currTrayNum; preTrayNum = currTrayNum;
currTrayNum = RFIDManager.GetTrayNum(DeviceID, true); currTrayNum = RFIDManager.GetTrayNum(DeviceID, true);
LogInfo(" [" + trayCount + "] IP [" + RFIDManager.GetRFIP(DeviceID) + "] [" + preTrayNum + "] 当前托盘 [" + currTrayNum + "]"); LogInfo(" [" + trayCount + "] IP [" + RFIDManager.GetRFIP(DeviceID) + "] [" + preTrayNum + "] 当前托盘 [" + currTrayNum + "]");
if (preTrayNum.Equals(currTrayNum))
{
TrayManager.TrayErrorMsg =DateTime.Now.ToLongTimeString()+" "+ Name + "托盘号出现错乱:上一个托盘[" + preTrayNum + "] 当前托盘 [" + currTrayNum + "],连续两个托盘号一样";
LogUtil.error(Name + "托盘号出现错乱:上一个托盘[" + preTrayNum + "] 当前托盘 [" + currTrayNum + "],连续两个托盘号一样");
}
return true; return true;
} }
......
...@@ -6,6 +6,7 @@ using System.Collections.Generic; ...@@ -6,6 +6,7 @@ using System.Collections.Generic;
using System.Diagnostics; using System.Diagnostics;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace OnlineStore.DeviceLibrary namespace OnlineStore.DeviceLibrary
...@@ -53,93 +54,116 @@ namespace OnlineStore.DeviceLibrary ...@@ -53,93 +54,116 @@ namespace OnlineStore.DeviceLibrary
internal DateTime lastStopDown = DateTime.Now; internal DateTime lastStopDown = DateTime.Now;
private Stopwatch swWaitWatch = new Stopwatch(); private Stopwatch swWaitWatch = new Stopwatch();
private object lockObj = "";
private void StartCheckFixture() private void StartCheckFixture()
{ {
if (!LineManager.Line.CanProcessLine()) if (Monitor.TryEnter(lockObj, 100))
{ {
swWaitWatch.Stop(); try
return;
}
if (Config.SidesWayNum > 0)
{
bool canProcess = (LineManager.Line.SwNoProcess(Config.SidesWayNum));
if (IOValue(IO_Type.SW_TrayCheck).Equals(IO_VALUE.HIGH) )
{ {
if (TrayManager.checkWatch(swWaitWatch, TrayManager.SwTrayWaitTime, true) && canProcess) if (SecondMoveInfo.MoveType.Equals(LineMoveType.None).Equals(false))
{
return;
}
if (!LineManager.Line.CanProcessLine())
{ {
swWaitWatch.Stop(); swWaitWatch.Stop();
UpdateTrayNum(); return;
//判断是否是需要的托盘 }
if (CurrTrayIsNeed(currTrayNum, true))
if (Config.SidesWayNum > 0)
{
bool canProcess = (LineManager.Line.SwNoProcess(Config.SidesWayNum));
if (IOValue(IO_Type.SW_TrayCheck).Equals(IO_VALUE.HIGH))
{
if (TrayManager.checkWatch(swWaitWatch, TrayManager.SwTrayWaitTime, true) && canProcess)
{
swWaitWatch.Stop();
UpdateTrayNum();
//判断是否是需要的托盘
if (CurrTrayIsNeed(currTrayNum, true))
{
SecondMoveInfo.NewMove(LineMoveType.CheckFixture, CheckParam);
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_06_TopUp);
CheckLog("检测到SW_TrayCheck:" + SecondMoveInfo.SLog + "横移顶升气缸上升 )");
CylinderMove(SecondMoveInfo, IO_Type.SW_TopCylinder_Down, IO_Type.SW_TopCylinder_Up);
}
else
{
SMoveEnd();
}
}
}
else if (Config.SidesWayNum.Equals(2) && IOValue(IO_Type.SW_StopCheck).Equals(IO_VALUE.HIGH)
&& (DateTime.Now - lastStopDown).TotalSeconds > 3)
{ {
SecondMoveInfo.NewMove(LineMoveType.CheckFixture, CheckParam); if (TrayManager.checkWatch(swWaitWatch, TrayManager.SwTrayWaitTime, true) && canProcess)
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_06_TopUp); {
CheckLog("检测到SW_TrayCheck:" + SecondMoveInfo.SLog + "横移顶升气缸上升 )"); swWaitWatch.Stop();
CylinderMove(SecondMoveInfo, IO_Type.SW_TopCylinder_Down, IO_Type.SW_TopCylinder_Up); SecondMoveInfo.NewMove(LineMoveType.CheckFixture, CheckParam);
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_00_Stop1Down);
LogUtil.info(Name + "检测到SW_StopCheck:" + SecondMoveInfo.SLog + "阻挡气缸下降 ,等待 SW_StopCheck=0");
//CheckLog("检测到SW_StopCheck:" + SecondMoveInfo.SLog + "阻挡气缸下降 ,等待 SW_StopCheck=0" );
IOMove(IO_Type.SW_StopDown, IO_VALUE.HIGH);
// SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(TrayManager.StopDownWaitTime));
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.SW_StopDown, IO_VALUE.HIGH));
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.SW_StopCheck, IO_VALUE.LOW));
lastStopDown = DateTime.Now;
//IOMove(IO_Type.SW_StopDown, IO_VALUE.HIGH, TrayManager.StopDownWaitTime);
}
} }
else else
{ {
SMoveEnd(); swWaitWatch.Stop();
} }
} }
} else
else if (Config.SidesWayNum.Equals(2) && IOValue(IO_Type.SW_StopCheck).Equals(IO_VALUE.HIGH)
&& (DateTime.Now - lastStopDown).TotalSeconds > 3)
{
if (TrayManager.checkWatch(swWaitWatch, TrayManager.SwTrayWaitTime, true) && canProcess)
{
swWaitWatch.Stop();
SecondMoveInfo.NewMove(LineMoveType.CheckFixture, CheckParam);
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_00_Stop1Down);
LogUtil.info(Name+ "检测到SW_StopCheck:" + SecondMoveInfo.SLog + "阻挡气缸下降 ,等待 SW_StopCheck=0" );
//CheckLog("检测到SW_StopCheck:" + SecondMoveInfo.SLog + "阻挡气缸下降 ,等待 SW_StopCheck=0" );
IOMove(IO_Type.SW_StopDown, IO_VALUE.HIGH);
// SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(TrayManager.StopDownWaitTime));
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.SW_StopDown, IO_VALUE.HIGH));
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.SW_StopCheck, IO_VALUE.LOW));
lastStopDown = DateTime.Now;
//IOMove(IO_Type.SW_StopDown, IO_VALUE.HIGH, TrayManager.StopDownWaitTime);
}
}
else
{
swWaitWatch.Stop();
}
}
else
{
//托盘在两个阻挡内
if (IOValue(IO_Type.FL_TrayCheck).Equals(IO_VALUE.HIGH))
{
if (TrayManager.checkWatch(swWaitWatch, TrayManager.SwTrayWaitTime, true))
{ {
SecondMoveInfo.NewMove(LineMoveType.CheckFixture); //托盘在两个阻挡内
CheckLog("检测到FL_TrayCheck:" + SecondMoveInfo.SLog + " FL阻挡1上升)"); if (IOValue(IO_Type.FL_TrayCheck).Equals(IO_VALUE.HIGH))
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_03_Stop2Down); {
IOMove(IO_Type.FL_StopCylinder_Down1, IO_VALUE.LOW); if (TrayManager.checkWatch(swWaitWatch, TrayManager.SwTrayWaitTime, true))
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.FL_StopCylinder_Down1, IO_VALUE.LOW)); {
SecondMoveInfo.NewMove(LineMoveType.CheckFixture);
CheckLog("检测到FL_TrayCheck:" + SecondMoveInfo.SLog + " FL阻挡1上升)");
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_03_Stop2Down);
IOMove(IO_Type.FL_StopCylinder_Down1, IO_VALUE.LOW);
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.FL_StopCylinder_Down1, IO_VALUE.LOW));
}
}
else if (IOValue(IO_Type.FL_StopCheck).Equals(IO_VALUE.HIGH))
{
if (TrayManager.checkWatch(swWaitWatch, TrayManager.SwTrayWaitTime, true))
{
//托盘在第一个阻挡处
SecondMoveInfo.NewMove(LineMoveType.CheckFixture);
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_00_Stop1Down);
CheckLog(" 检测到FL_StopCheck:" + SecondMoveInfo.SLog + " FL阻挡1下降 ,等待 FL_StopCheck=0");
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_StopCheck, IO_VALUE.LOW));
/// SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(TrayManager.StopDownWaitTime));
}
}
else
{
swWaitWatch.Stop();
}
} }
} }
else if (IOValue(IO_Type.FL_StopCheck).Equals(IO_VALUE.HIGH)) catch (Exception ex)
{ {
if (TrayManager.checkWatch(swWaitWatch, TrayManager.SwTrayWaitTime, true)) LogUtil.error(Name + " StartCheckFixture " + " 出错:" + ex.ToString());
{
//托盘在第一个阻挡处
SecondMoveInfo.NewMove(LineMoveType.CheckFixture);
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_00_Stop1Down);
CheckLog(" 检测到FL_StopCheck:" + SecondMoveInfo.SLog + " FL阻挡1下降 ,等待 FL_StopCheck=0");
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_StopCheck, IO_VALUE.LOW));
/// SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(TrayManager.StopDownWaitTime));
}
} }
else finally
{ {
swWaitWatch.Stop(); Monitor.Exit(lockObj);
} }
} }
else
{
LogUtil.error(Name + " StartCheckFixture " + "失败,未得到锁");
}
} }
protected override void CheckFixtureProcess() protected override void CheckFixtureProcess()
...@@ -187,22 +211,11 @@ namespace OnlineStore.DeviceLibrary ...@@ -187,22 +211,11 @@ namespace OnlineStore.DeviceLibrary
} }
else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MIO_02_WaitFixture)) else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MIO_02_WaitFixture))
{ {
//if (IOValue(IO_Type.SW_TrayCheck).Equals(IO_VALUE.HIGH))
//{
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_03_Stop2Down); SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_03_Stop2Down);
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_TrayCheck, IO_VALUE.HIGH)); 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_Stop2Down)) else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MIO_03_Stop2Down))
{ {
...@@ -216,13 +229,10 @@ namespace OnlineStore.DeviceLibrary ...@@ -216,13 +229,10 @@ namespace OnlineStore.DeviceLibrary
{ {
CheckLog("托盘检测:" + SecondMoveInfo.SLog + " ,等待编码信号稳定 FL_TrayCheck=1"); CheckLog("托盘检测:" + SecondMoveInfo.SLog + " ,等待编码信号稳定 FL_TrayCheck=1");
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.FL_TrayCheck, IO_VALUE.HIGH)); SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.FL_TrayCheck, IO_VALUE.HIGH));
} }
// SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(500));
} }
else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MIO_04_Wait)) else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MIO_04_Wait))
{ {
//preTrayNum = currTrayNum;
//currTrayNum = TrayManager.GetTrayNum(DeviceID);
UpdateTrayNum(); UpdateTrayNum();
//出料中,需要拦盘 //出料中,需要拦盘
if (CurrTrayIsNeed(currTrayNum, true)) if (CurrTrayIsNeed(currTrayNum, true))
...@@ -468,8 +478,8 @@ namespace OnlineStore.DeviceLibrary ...@@ -468,8 +478,8 @@ namespace OnlineStore.DeviceLibrary
else if (IOValue(IO_Type.SL_Stop_Check).Equals(IO_VALUE.HIGH)) else if (IOValue(IO_Type.SL_Stop_Check).Equals(IO_VALUE.HIGH))
{ {
MoveInfo.NextMoveStep(LineMoveStep.FI_03_LineStart); MoveInfo.NextMoveStep(LineMoveStep.FI_03_LineStart);
InLog("入料检测: " + MoveInfo.SLog + " 阻挡工位检测有料架,进料阻挡下降,缓冲阻挡下降,流水线转动 1000"); InLog("入料检测: " + MoveInfo.SLog + " 阻挡工位检测有料架,进料阻挡下降,缓冲阻挡下降1000,流水线转动 1000");
IOMove(IO_Type.SL_Entry_StopDown, IO_VALUE.HIGH);//进料阻挡下降 IOMove(IO_Type.SL_Entry_StopDown, IO_VALUE.HIGH,1000);//进料阻挡下降
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);
//等待指定时间 //等待指定时间
......
...@@ -134,8 +134,8 @@ namespace OnlineStore.DeviceLibrary ...@@ -134,8 +134,8 @@ namespace OnlineStore.DeviceLibrary
else if (IOValue(IO_Type.SL_Stop_Check).Equals(IO_VALUE.HIGH)) else if (IOValue(IO_Type.SL_Stop_Check).Equals(IO_VALUE.HIGH))
{ {
MoveInfo.NextMoveStep(LineMoveStep.FO_03_LineStart); MoveInfo.NextMoveStep(LineMoveStep.FO_03_LineStart);
OutLog("准备出库料架: " + MoveInfo.SLog + " 阻挡工位检测有料架,进料阻挡下降,缓冲阻挡下降,流水线转动 1000"); OutLog("准备出库料架: " + MoveInfo.SLog + " 阻挡工位检测有料架,进料阻挡下降1000ms,缓冲阻挡下降,流水线转动 1000");
IOMove(IO_Type.SL_Entry_StopDown, IO_VALUE.HIGH); IOMove(IO_Type.SL_Entry_StopDown, IO_VALUE.HIGH,1000);
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);
//等待指定时间 //等待指定时间
......
...@@ -5,6 +5,7 @@ using System.Collections.Generic; ...@@ -5,6 +5,7 @@ using System.Collections.Generic;
using System.Diagnostics; using System.Diagnostics;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace OnlineStore.DeviceLibrary namespace OnlineStore.DeviceLibrary
...@@ -30,42 +31,69 @@ namespace OnlineStore.DeviceLibrary ...@@ -30,42 +31,69 @@ namespace OnlineStore.DeviceLibrary
} }
return false; return false;
} }
internal DateTime lastStopDown = DateTime.Now;
private Stopwatch trayCheckWait = new Stopwatch(); private Stopwatch trayCheckWait = new Stopwatch();
private object lockObj = "";
private void StartCheckFixture() private void StartCheckFixture()
{ {
bool canProcess = (LineManager.Line.SwNoProcess(Config.SidesWayNum)); if (Monitor.TryEnter(lockObj, 100))
//int num = TrayManager.GetTrayNum(DeviceID);
if (IOValue(IO_Type.StopCylinder_Check2).Equals(IO_VALUE.HIGH) )
{ {
if (TrayManager.checkWatch(trayCheckWait, TrayManager.SwTrayWaitTime, true) && canProcess) try
{ {
trayCheckWait.Stop(); if (SecondMoveInfo.MoveType.Equals(LineMoveType.None).Equals(false))
SecondMoveInfo.NewMove(LineMoveType.CheckFixture); {
CheckLog("托盘阻挡" + SecondMoveInfo.SLog + "阻挡气缸1-1上升)"); return;
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_03_Stop2Down); }
IOMove(IO_Type.StopCylinder_Down1, IO_VALUE.LOW); bool canProcess = (LineManager.Line.SwNoProcess(Config.SidesWayNum));
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.StopCylinder_Down1, IO_VALUE.LOW)); //int num = TrayManager.GetTrayNum(DeviceID);
} if (IOValue(IO_Type.StopCylinder_Check2).Equals(IO_VALUE.HIGH))
{
if (TrayManager.checkWatch(trayCheckWait, TrayManager.SwTrayWaitTime, true) && canProcess)
{
trayCheckWait.Stop();
SecondMoveInfo.NewMove(LineMoveType.CheckFixture);
CheckLog("托盘阻挡" + SecondMoveInfo.SLog + "阻挡气缸1-1上升)");
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_03_Stop2Down);
IOMove(IO_Type.StopCylinder_Down1, IO_VALUE.LOW);
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.StopCylinder_Down1, IO_VALUE.LOW));
}
} }
else if (IOValue(IO_Type.StopCylinder_Check1).Equals(IO_VALUE.HIGH) ) else if (IOValue(IO_Type.StopCylinder_Check1).Equals(IO_VALUE.HIGH) && (DateTime.Now - lastStopDown).TotalSeconds > 3)
{ {
if (TrayManager.checkWatch(trayCheckWait, TrayManager.SwTrayWaitTime, true) && canProcess) if (TrayManager.checkWatch(trayCheckWait, TrayManager.SwTrayWaitTime, true) && canProcess)
{
lastStopDown = DateTime.Now;
trayCheckWait.Stop();
//托盘在第一个阻挡处
SecondMoveInfo.NewMove(LineMoveType.CheckFixture);
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_00_Stop1Down);
LogUtil.info(Name + " 托盘检测:" + SecondMoveInfo.SLog + "阻挡气缸1-1下降 ,等待 StopCylinder_Check1=0");
//CheckLog(" 托盘检测:" + SecondMoveInfo.SLog + "阻挡气缸1-1下降 ,等待 StopCylinder_Check1=0" );
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_Check1, IO_VALUE.LOW));
// SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(TrayManager.StopDownWaitTime));
}
}
else
{
trayCheckWait.Stop();
}
}
catch (Exception ex)
{ {
trayCheckWait.Stop(); LogUtil.error(Name + " StartCheckFixture " + " 出错:" + ex.ToString());
//托盘在第一个阻挡处 }
SecondMoveInfo.NewMove(LineMoveType.CheckFixture); finally
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_00_Stop1Down); {
CheckLog(" 托盘检测:" + SecondMoveInfo.SLog + "阻挡气缸1-1下降 ,等待 StopCylinder_Check1=0" ); Monitor.Exit(lockObj);
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_Check1, IO_VALUE.LOW));
// SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(TrayManager.StopDownWaitTime));
} }
} }
else else
{ {
trayCheckWait.Stop(); LogUtil.error(Name + " StartCheckFixture " + "失败,未得到锁");
} }
} }
private void MO_14_TopCylinder_Down() private void MO_14_TopCylinder_Down()
...@@ -214,31 +242,14 @@ namespace OnlineStore.DeviceLibrary ...@@ -214,31 +242,14 @@ namespace OnlineStore.DeviceLibrary
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_03_Stop2Down); SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_03_Stop2Down);
CheckLog("托盘阻挡" + SecondMoveInfo.SLog + " 再次检测料盘信号"); CheckLog("托盘阻挡" + SecondMoveInfo.SLog + " 再次检测料盘信号");
//CheckLog("托盘阻挡" + SecondMoveInfo.SLog + " 等待" + TrayManager.SwTrayWaitTime + ",再次检测料盘信号"); //CheckLog("托盘阻挡" + SecondMoveInfo.SLog + " 等待" + TrayManager.SwTrayWaitTime + ",再次检测料盘信号");
IOMove(IO_Type.StopCylinder_Down1, IO_VALUE.LOW); IOMove(IO_Type.StopCylinder_Down1, IO_VALUE.LOW);
// SecondMoveInfo.OneWaitCanEndStep = true; SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.StopCylinder_Check2, IO_VALUE.HIGH));
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.StopCylinder_Check2, IO_VALUE.HIGH));
// SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(TrayManager.StopDownWaitTime));
// SecondMoveInfo.EndStepWait();
} }
else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MIO_03_Stop2Down)) else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MIO_03_Stop2Down))
{ {
//if (IOValue(IO_Type.StopCylinder_Check2).Equals(IO_VALUE.HIGH))
//{
CheckLog("托盘阻挡" + SecondMoveInfo.SLog + " ,等待编码信号稳定StopCylinder_Check2=1"); CheckLog("托盘阻挡" + SecondMoveInfo.SLog + " ,等待编码信号稳定StopCylinder_Check2=1");
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_04_Wait); SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_04_Wait);
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.StopCylinder_Check2, IO_VALUE.HIGH)); SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.StopCylinder_Check2, IO_VALUE.HIGH));
// SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(100));
//SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(TrayManager.StopDownWaitTime));
//}
//else
//{
// SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_03_Stop2Down);
// CheckLog("托盘阻挡" + SecondMoveInfo.SLog + " 等待" + TrayManager.SwTrayWaitTime + ",再次检测料盘信号");
// IOMove(IO_Type.StopCylinder_Down1, IO_VALUE.LOW);
// SecondMoveInfo.OneWaitCanEndStep = true;
// SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.StopCylinder_Check2, IO_VALUE.HIGH));
// SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(TrayManager.StopDownWaitTime));
//}
} }
else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MIO_04_Wait)) else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MIO_04_Wait))
{ {
...@@ -309,6 +320,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -309,6 +320,7 @@ namespace OnlineStore.DeviceLibrary
{ {
SecondMoveInfo.EndMove(); SecondMoveInfo.EndMove();
CheckLog("托盘放行 结束,触发 TrayPEndEvent "); CheckLog("托盘放行 结束,触发 TrayPEndEvent ");
lastStopDown = DateTime.Now.AddSeconds(-2);
this.TrayPEndEvent?.Invoke(Config.SidesWayNum, currTrayNum); this.TrayPEndEvent?.Invoke(Config.SidesWayNum, currTrayNum);
} }
else else
...@@ -344,6 +356,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -344,6 +356,7 @@ namespace OnlineStore.DeviceLibrary
{ {
CheckLog("托盘放行 结束,触发 TrayPEndEvent "); CheckLog("托盘放行 结束,触发 TrayPEndEvent ");
SecondMoveInfo.EndMove(); SecondMoveInfo.EndMove();
lastStopDown = DateTime.Now.AddSeconds(-2);
this.TrayPEndEvent?.Invoke(Config.SidesWayNum, currTrayNum); this.TrayPEndEvent?.Invoke(Config.SidesWayNum, currTrayNum);
} }
#endregion #endregion
......
...@@ -436,6 +436,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -436,6 +436,7 @@ namespace OnlineStore.DeviceLibrary
{ {
Task.Factory.StartNew(delegate Task.Factory.StartNew(delegate
{ {
LogUtil.info("定时会写IO: ["+ IoType + "]=["+ value + "],msTime="+msTime);
IOManager.IOMove(IoType, value, baseConfig.Id); IOManager.IOMove(IoType, value, baseConfig.Id);
Thread.Sleep(msTime); Thread.Sleep(msTime);
IO_VALUE tValue = value.Equals(IO_VALUE.HIGH) ? IO_VALUE.LOW : IO_VALUE.HIGH; IO_VALUE tValue = value.Equals(IO_VALUE.HIGH) ? IO_VALUE.LOW : IO_VALUE.HIGH;
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!