Commit f3198fbf LN

线体bug,入料bug修改。

1 个父辈 a01d7cea
...@@ -83,11 +83,12 @@ namespace OnlineStore.DeviceLibrary ...@@ -83,11 +83,12 @@ namespace OnlineStore.DeviceLibrary
lastProTimer = DateTime.Now; lastProTimer = DateTime.Now;
try try
{ {
if (IsDebug&&runStatus<=LineRunStatus.Wait) if (runStatus <= LineRunStatus.Wait && (!baseConfig.DType.Equals(DeviceType.FeedingEquip)))
{ {
isInPro = false; isInPro = false;
return; return;
} }
BaseTimerProcess(); BaseTimerProcess();
if (TimerMaxSeconds > 3 && runStatus >= LineRunStatus.Runing) if (TimerMaxSeconds > 3 && runStatus >= LineRunStatus.Runing)
......
...@@ -37,6 +37,8 @@ namespace OnlineStore.DeviceLibrary ...@@ -37,6 +37,8 @@ namespace OnlineStore.DeviceLibrary
SecondMoveInfo = new LineMoveInfo(DeviceID, "[" + Name.Trim() + "-SMove]"); SecondMoveInfo = new LineMoveInfo(DeviceID, "[" + Name.Trim() + "-SMove]");
RFIDIP = RFIDManager.GetRFIP(DeviceID); RFIDIP = RFIDManager.GetRFIP(DeviceID);
HasOutLine = config.DOList.ContainsKey(IO_Type.SL_OutLine_Run); HasOutLine = config.DOList.ContainsKey(IO_Type.SL_OutLine_Run);
addLastDI(IO_Type.SL_Reset_BTN, IO_VALUE.LOW);
mainTimer.Enabled = true;
} }
public override bool StartRun(bool isDebug = false) public override bool StartRun(bool isDebug = false)
...@@ -309,69 +311,93 @@ namespace OnlineStore.DeviceLibrary ...@@ -309,69 +311,93 @@ namespace OnlineStore.DeviceLibrary
AgvClient.SetStatus(Config.AgvOutName, "", ClientAction.None, ClientLevel.Low, true); AgvClient.SetStatus(Config.AgvOutName, "", ClientAction.None, ClientLevel.Low, true);
} }
protected override void BaseTimerProcess() protected override void BaseTimerProcess()
{ {
if (IOValue(IO_Type.SL_SuddenStop_BTN).Equals(IO_VALUE.LOW)) if (runStatus.Equals(LineRunStatus.Wait))
{ {
if (!isInSuddenDown) //取新的Io状态
{ IO_VALUE fuweiValue = IOValue(IO_Type.SL_Reset_BTN);
LogUtil.error(Name + "收到急停信号,等待300后再次验证急停"); IO_VALUE lastFuwei = DILastValueMap[IO_Type.SL_Reset_BTN];
addLastDI(IO_Type.SL_Reset_BTN, fuweiValue);
Thread.Sleep(300); //收到复位信号后启动
if (IOValue(IO_Type.SL_SuddenStop_BTN).Equals(IO_VALUE.LOW)) if ( fuweiValue.Equals(IO_VALUE.HIGH) && lastFuwei.Equals(IO_VALUE.LOW))
{
//没有启动时收到启动按钮
LogUtil.info(Name + "没有启动时收到复位按钮,开始调用启动方法!");
bool isOk = StartRun();
if (!isOk)
{ {
SetWarnMsg(Name + "收到急停信号,急停报警"); LogUtil.error("启动失败,等待下次启动");
if (isInSuddenDown.Equals(false)) mainTimer.Enabled = true;
{
Alarm(LineAlarmType.SuddenStop);
}
return;
} }
} }
return;
} }
else if (IOValue(IO_Type.SL_Reset_BTN).Equals(IO_VALUE.HIGH)) else
{ {
if (NoAlarm()) if (IOValue(IO_Type.SL_SuddenStop_BTN).Equals(IO_VALUE.LOW))
{ {
if (MoveInfo.MoveType.Equals(LineMoveType.None)) if (!isInSuddenDown)
{ {
LogUtil.error(Name + "收到复位信号,当前无报警,不需要复位"); LogUtil.error(Name + "收到急停信号,等待300后再次验证急停");
Thread.Sleep(300);
if (IOValue(IO_Type.SL_SuddenStop_BTN).Equals(IO_VALUE.LOW))
{
SetWarnMsg(Name + "收到急停信号,急停报警");
if (isInSuddenDown.Equals(false))
{
Alarm(LineAlarmType.SuddenStop);
}
return;
}
}
}
else if (IOValue(IO_Type.SL_Reset_BTN).Equals(IO_VALUE.HIGH))
{
if (NoAlarm())
{
if (MoveInfo.MoveType.Equals(LineMoveType.None))
{
LogUtil.error(Name + "收到复位信号,当前无报警,不需要复位");
}
else
{
LogUtil.error(Name + "收到复位信号,当前无报警,正在" + MoveInfo.MoveType + "处理中,不需要复位");
}
} }
else else
{ {
LogUtil.error(Name + "收到复位信号,当前无报警,正在" + MoveInfo.MoveType + "处理中,不需要复位"); LogUtil.info(Name + "收到复位信号,开始复位");
Reset();
} }
return;
} }
else if (isInSuddenDown || isNoAirCheck)
{
LogUtil.info(Name + "收到复位信号,开始复位");
Reset();
}
return;
}
if (isInSuddenDown || isNoAirCheck)
{
return;
}
BusyMoveProcess();
IOTimeOutProcess();
//判断流水线打开了才可以运行
if (MoveInfo.MoveType.Equals(LineMoveType.None) && NoErrorAlarm() && (!MoveStop))
{
if (Config.IsCanOut.Equals(0))
{ {
StartInStoreP(); return;
} }
else BusyMoveProcess();
IOTimeOutProcess();
//判断流水线打开了才可以运行
if (MoveInfo.MoveType.Equals(LineMoveType.None) && NoErrorAlarm() && (!MoveStop))
{ {
StartOutStoreP(); if (Config.IsCanOut.Equals(0))
{
StartInStoreP();
}
else
{
StartOutStoreP();
}
} }
}
AgvStatusPro(); AgvStatusPro();
LedProcess(); LedProcess();
}
} }
...@@ -386,7 +412,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -386,7 +412,7 @@ namespace OnlineStore.DeviceLibrary
try try
{ {
TimeSpan span = DateTime.Now - lastProLedTime; TimeSpan span = DateTime.Now - lastProLedTime;
if (span.TotalSeconds < 1) if (span.TotalMilliseconds < 500)
{ {
return; return;
} }
......
...@@ -861,7 +861,15 @@ namespace OnlineStore.DeviceLibrary ...@@ -861,7 +861,15 @@ namespace OnlineStore.DeviceLibrary
} }
} }
private void CheckHasTray() private void CheckHasTray()
{ {
//若BOX和出料都没有在等待Io的过程中则此Io超时异常可能已经处理过
if (alarmType.Equals(LineAlarmType.IoSingleTimeOut) && MoveInfo.IsInWait.Equals(false) && SecondMoveInfo.IsInWait.Equals(false))
{
LogUtil.info(Name + "清理信号超时报警【" + WarnMsg + "】 ");
alarmType = LineAlarmType.None;
SetWarnMsg("");
}
if (IOValue(IO_Type.SL_AxisLocationCheck).Equals(IO_VALUE.HIGH) && MoveInfo.ShelfNoTray.Equals(false)) if (IOValue(IO_Type.SL_AxisLocationCheck).Equals(IO_VALUE.HIGH) && MoveInfo.ShelfNoTray.Equals(false))
{ {
FI_18_ScanCode(); FI_18_ScanCode();
......
...@@ -184,6 +184,8 @@ namespace OnlineStore.DeviceLibrary ...@@ -184,6 +184,8 @@ namespace OnlineStore.DeviceLibrary
private Stopwatch trayCheckWait = new Stopwatch();//检测到托盘的时间 private Stopwatch trayCheckWait = new Stopwatch();//检测到托盘的时间
private Stopwatch trayCheck2LowWait = new Stopwatch();//上一个托盘离开的时间 private Stopwatch trayCheck2LowWait = new Stopwatch();//上一个托盘离开的时间
private object lockObj = ""; private object lockObj = "";
private bool preTrayIsC1Line = false;
private void CheckFixture() private void CheckFixture()
{ {
if (Monitor.TryEnter(lockObj, 100)) if (Monitor.TryEnter(lockObj, 100))
...@@ -206,7 +208,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -206,7 +208,7 @@ namespace OnlineStore.DeviceLibrary
MoveInfo.NewMove(LineMoveType.Fixture); MoveInfo.NewMove(LineMoveType.Fixture);
runStatus = LineRunStatus.Busy; runStatus = LineRunStatus.Busy;
MoveInfo.NextMoveStep(LineMoveStep.HY03_FrontStopUp); MoveInfo.NextMoveStep(LineMoveStep.HY03_FrontStopUp);
LogInfo("检测托盘," + MoveInfo.SLog + " ,阻挡上升"); LogInfo("托盘检测," + MoveInfo.SLog + " 检测到托盘 ,阻挡上升");
if (Config.DOList.ContainsKey(IO_Type.HY_FrontStopDown)) if (Config.DOList.ContainsKey(IO_Type.HY_FrontStopDown))
{ {
IOMove(IO_Type.HY_FrontStopDown, IO_VALUE.LOW); IOMove(IO_Type.HY_FrontStopDown, IO_VALUE.LOW);
...@@ -217,18 +219,24 @@ namespace OnlineStore.DeviceLibrary ...@@ -217,18 +219,24 @@ namespace OnlineStore.DeviceLibrary
IOMove(IO_Type.HY_OL_StopDown, IO_VALUE.LOW); IOMove(IO_Type.HY_OL_StopDown, IO_VALUE.LOW);
} }
} }
else if (preTrayIsC1Line && Config.IsOutLineOut && IOValue(IO_Type.HY_OL_Tray_Check).Equals(IO_VALUE.HIGH))
{
//C1线和出料线交替处理
HY71_OL_Wait();
}
else if (Config.DIList.ContainsKey(IO_Type.HY_FrontStopCheck) && IOValue(IO_Type.HY_FrontStopCheck).Equals(IO_VALUE.HIGH)) else if (Config.DIList.ContainsKey(IO_Type.HY_FrontStopCheck) && IOValue(IO_Type.HY_FrontStopCheck).Equals(IO_VALUE.HIGH))
{ {
bool check2IsOk = CheckStopWatch(trayCheck2LowWait, TrayWaitTime, false); bool check2IsOk = CheckStopWatch(trayCheck2LowWait, TrayWaitTime, false);
if (CheckStopWatch(trayCheckWait, TrayWaitTime, false) && check2IsOk) if (CheckStopWatch(trayCheckWait, TrayWaitTime, false) && check2IsOk)
{ {
preTrayIsC1Line = true;
//托盘在前阻挡处 //托盘在前阻挡处
trayCheckWait.Stop(); trayCheckWait.Stop();
trayCheck2LowWait.Stop(); trayCheck2LowWait.Stop();
MoveInfo.NewMove(LineMoveType.Fixture); MoveInfo.NewMove(LineMoveType.Fixture);
runStatus = LineRunStatus.Busy; runStatus = LineRunStatus.Busy;
MoveInfo.NextMoveStep(LineMoveStep.HY02_FrontStopDown); MoveInfo.NextMoveStep(LineMoveStep.HY02_FrontStopDown);
LogInfo(" 托盘检测:" + MoveInfo.SLog + ",检测到前阻挡托盘 ,前阻挡下降,清理托盘RFID,顶升气缸下降"); LogInfo(" 托盘检测:" + MoveInfo.SLog + ",检测到前阻挡托盘,前阻挡下降");
ClearTrayRFID(); ClearTrayRFID();
IOMove(IO_Type.HY_FrontStopDown, IO_VALUE.HIGH, 1200); IOMove(IO_Type.HY_FrontStopDown, IO_VALUE.HIGH, 1200);
MoveInfo.OneWaitCanEndStep = true; MoveInfo.OneWaitCanEndStep = true;
...@@ -240,20 +248,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -240,20 +248,7 @@ namespace OnlineStore.DeviceLibrary
} }
else if (Config.IsOutLineOut && IOValue(IO_Type.HY_OL_Tray_Check).Equals(IO_VALUE.HIGH)) else if (Config.IsOutLineOut && IOValue(IO_Type.HY_OL_Tray_Check).Equals(IO_VALUE.HIGH))
{ {
bool check2IsOk = CheckStopWatch(trayCheck2LowWait, TrayWaitTime, false); HY71_OL_Wait();
if (CheckStopWatch(trayCheckWait, TrayWaitTime, false) && check2IsOk)
{
//托盘在前阻挡处
trayCheckWait.Stop();
trayCheck2LowWait.Stop();
MoveInfo.NewMove(LineMoveType.Fixture);
runStatus = LineRunStatus.Busy;
MoveInfo.NextMoveStep(LineMoveStep.HY71_OL_Wait);
LogInfo(" 托盘检测:" + MoveInfo.SLog + ",检测到出料线托盘 ");
ClearTrayRFID();
IOMove(IO_Type.HY_OL_StopDown, IO_VALUE.LOW);
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_OL_Tray_Check, IO_VALUE.HIGH));
}
} }
else else
{ {
...@@ -277,7 +272,24 @@ namespace OnlineStore.DeviceLibrary ...@@ -277,7 +272,24 @@ namespace OnlineStore.DeviceLibrary
LogUtil.error(Name + " CheckFixture " + "失败,未得到锁"); LogUtil.error(Name + " CheckFixture " + "失败,未得到锁");
} }
} }
private void HY71_OL_Wait()
{
bool check2IsOk = CheckStopWatch(trayCheck2LowWait, TrayWaitTime, false);
if (CheckStopWatch(trayCheckWait, TrayWaitTime, false) && check2IsOk)
{
preTrayIsC1Line = false;
//托盘在前阻挡处
trayCheckWait.Stop();
trayCheck2LowWait.Stop();
MoveInfo.NewMove(LineMoveType.Fixture);
runStatus = LineRunStatus.Busy;
MoveInfo.NextMoveStep(LineMoveStep.HY71_OL_Wait);
LogInfo(" 托盘检测:" + MoveInfo.SLog + ",检测到出料线托盘 ");
ClearTrayRFID();
IOMove(IO_Type.HY_OL_StopDown, IO_VALUE.LOW);
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_OL_Tray_Check, IO_VALUE.HIGH));
}
}
protected override void FixtureProcess() protected override void FixtureProcess()
{ {
if (MoveInfo.IsInWait) if (MoveInfo.IsInWait)
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!