Commit f3198fbf LN

线体bug,入料bug修改。

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