Commit 997c6ca3 张东亮

0112

1 个父辈 6e98965f
......@@ -221,7 +221,7 @@ namespace OnlineStore.DeviceLibrary
{
InProcess = true;
stopwatch.Restart();
IoCheckProcess();
//IoCheckProcess();
if (runStatus >= RunStatus.HomeMoving)
{
......@@ -237,7 +237,7 @@ namespace OnlineStore.DeviceLibrary
}
else if (runStatus.Equals(RunStatus.Runing))
{
//InLineTimerProcess();
InLineTimerProcess();
OutLineTimerProcess();
TranverseTimerProcess();
......@@ -259,6 +259,54 @@ namespace OnlineStore.DeviceLibrary
InProcess = false;
}
private DateTime il_lastCallAgvTime = DateTime.Now.AddMinutes(-5);
private Stopwatch il_outstopCheckWarch = new Stopwatch();
private Stopwatch il_manualCheckWatch = new Stopwatch();
/// <summary>
/// 入料线体定时处理
/// </summary>
private void InLineTimerProcess()
{
TimeSpan span = DateTime.Now - il_lastCallAgvTime;
//出口有料架,需要通知agv取走料架
//每次叫小车时间间隔3分钟?
//出口信号需要持续1秒钟
if (IOManager.IOValue(IO_Type.L2_OutCheck).Equals(IO_VALUE.HIGH) && span.TotalSeconds > 60)
{
if (LastOutShelfId.Equals("000").Equals(false))
{
if (LineManager.checkWatch(il_outstopCheckWarch, 1000))
{
il_lastCallAgvTime = DateTime.Now;
//StopIOMove(IO_Type.InL_OutStopDown, StopDownMS);
LogUtil.info(" 出料线体出口有料架" + LastOutShelfId + ",呼叫agv小车[" + Config.L2_AgvName + "] [NeedLeave] ");
agvClient.OutLine_NeedLeave(LastOutShelfId);
}
}
}
else if (span.TotalMilliseconds > StopDownMS)
{
il_outstopCheckWarch.Stop();
ClientAction currA = AgvClient.GetAction(Config.L2_AgvName);
if (currA.Equals(ClientAction.None) || currA.Equals(ClientAction.NeedLeave) || currA.Equals(ClientAction.NeedEnter))
{
if (IOManager.IOValue(IO_Type.L2_StopDown).Equals(IO_VALUE.HIGH))
{
IOManager.IOMove(IO_Type.L2_StopDown, IO_VALUE.LOW);
}
}
}
//如果是出口无料架,NeedLeave状态,改为None
if (IOManager.IOValue(IO_Type.L2_OutCheck).Equals(IO_VALUE.LOW) && AgvClient.GetAction(Config.L2_AgvName).Equals(ClientAction.NeedLeave))
{
il_outstopCheckWarch.Stop();
LogUtil.info(" 出料线体出口无料架 ,更改[" + Config.L2_AgvName + "] 状态[None] ");
agvClient.OutLine_RFID = "";
agvClient.OutLine_None(LastOutShelfId);
}
}
private Stopwatch ol_noshelfWatch = new Stopwatch();
private Stopwatch ol_noshelfWatch1 = new Stopwatch();
private Stopwatch rfidWatch = new Stopwatch();
......@@ -279,12 +327,11 @@ namespace OnlineStore.DeviceLibrary
if (IOManager.IOValue(IO_Type.L2_StopCheck).Equals(IO_VALUE.HIGH) && IOManager.IOValue(IO_Type.L2_OutCheck).Equals(IO_VALUE.LOW) && span.TotalSeconds > 3)
{
//如果出料线体出口无料架,放一个料架到出口
if (LineManager.checkWatch(ol_noshelfWatch, 1000))
if (LineManager.checkWatch(ol_noshelfWatch, 5000))
{
IOManager.CIOMove(IO_Type.L2_OutStopDown, IO_VALUE.LOW);
LogUtil.info(" Feeder2线体出口无料架,下降 [" + IO_Type.L2_StopDown + "] [" + StopDownMS + "] 秒");
LogUtil.info(" 出料线体出口无料架,下降 [" + IO_Type.L2_StopDown + "] [" + StopDownMS + "] 秒");
ol_lastSendShelfTime = DateTime.Now;
agvClient.OutLine_RFID = "";
StopIOMove(IO_Type.L2_StopDown, StopDownMS);
}
}
......@@ -296,7 +343,7 @@ namespace OnlineStore.DeviceLibrary
{
StopIOMove(IO_Type.L1_OutStopDown, StopDownMS);
Thread.Sleep(1000);
LogUtil.info(" Feeder1线体出口无料架,下降 [" + IO_Type.L1_StopDown + "] [" + StopDownMS + "] 秒");
LogUtil.info(" 入料线体出口无料架,下降 [" + IO_Type.L1_StopDown + "] [" + StopDownMS + "] 秒");
ol_lastSendShelfTime = DateTime.Now;
StopIOMove(IO_Type.L1_StopDown, StopDownMS);
}
......@@ -309,10 +356,6 @@ namespace OnlineStore.DeviceLibrary
IOManager.CIOMove(IO_Type.L1_StopDown, IO_VALUE.LOW);
IOManager.CIOMove(IO_Type.L1_OutStopDown, IO_VALUE.LOW);
}
if(IOManager.IOValue(IO_Type.L2_OutCheck).Equals(IO_VALUE.HIGH) && LineManager.checkWatch(rfidWatch, 2000))
{
agvClient.OutLine_NeedLeave(LastOutShelfId);
}
}
private Task TranverseTask;
private static void TranverseProcess()
......@@ -323,7 +366,7 @@ namespace OnlineStore.DeviceLibrary
IOManager.CIOMove(IO_Type.Tranverse_Down_SOL, IO_VALUE.LOW);
Thread.Sleep(1000);
IOManager.IOMove(IO_Type.Tranverse_Up_SOL, IO_VALUE.HIGH);
Thread.Sleep(1000);
Thread.Sleep(1000);
LogUtil.info(" 横移机构上升");
if (IOManager.IOValue(IO_Type.L1_Updown_Up_Sig).Equals(IO_VALUE.HIGH) && IOManager.IOValue(IO_Type.L2_Updown_Up_Sig).Equals(IO_VALUE.HIGH))
{
......@@ -357,15 +400,17 @@ namespace OnlineStore.DeviceLibrary
LogUtil.info(" 横移电机停止");
IOManager.CIOMove(IO_Type.Tranverse_Up_SOL, IO_VALUE.LOW);
Thread.Sleep(1000);
IOManager.CIOMove(IO_Type.Tranverse_Up_SOL, IO_VALUE.LOW);
IOManager.CIOMove(IO_Type.Tranverse_Down_SOL, IO_VALUE.HIGH);
Thread.Sleep(1000);
LogUtil.info(" 横移机构下降");
LogUtil.info(" TranverseProcess Finish");
}
private Stopwatch ol_tranverseShelfWatch = new Stopwatch();
private DateTime il_lastTranverseTime = DateTime.Now.AddMinutes(-5);
private void TranverseTimerProcess()
{
TimeSpan span = DateTime.Now - il_lastCallAgvTime;
TimeSpan span = DateTime.Now - il_lastTranverseTime;
//Feeder1出口有料架,Feeder2入口空
//出口信号需要持续6秒钟
if (IOManager.IOValue(IO_Type.L1_OutCheck).Equals(IO_VALUE.HIGH) && IOManager.IOValue(IO_Type.L2_InCheck).Equals(IO_VALUE.LOW) && span.TotalSeconds > 6)
......@@ -375,12 +420,12 @@ namespace OnlineStore.DeviceLibrary
if (TranverseTask ==null)
{
TranverseTask = Task.Factory.StartNew(new Action(TranverseProcess));
il_lastCallAgvTime = DateTime.Now;
il_lastTranverseTime = DateTime.Now;
}
else if (TranverseTask.IsCompleted)
{
TranverseTask = Task.Factory.StartNew(new Action(TranverseProcess));
il_lastCallAgvTime = DateTime.Now;
il_lastTranverseTime = DateTime.Now;
}
}
......@@ -390,7 +435,6 @@ namespace OnlineStore.DeviceLibrary
ol_tranverseShelfWatch.Stop();
}
}
private DateTime il_lastCallAgvTime = DateTime.Now.AddMinutes(-5);
//private void LedProcess()
//{
......@@ -426,67 +470,67 @@ namespace OnlineStore.DeviceLibrary
// }
//}
private IO_VALUE LastResetValue = IO_VALUE.LOW;
//private IO_VALUE LastResetValue = IO_VALUE.LOW;
public void IoCheckProcess()
{
DateTime time = DateTime.Now;
if (runStatus.Equals(RunStatus.Wait))
{
//获取新的Io状态
IO_VALUE autoSingle = IOManager.IOValue(IO_Type.Reset_BTN);
if (ConfigAppSettings.GetIntValue(Setting_Init.App_AutoRun).Equals(1))
{
if (autoSingle.Equals(IO_VALUE.HIGH) && LastResetValue.Equals(IO_VALUE.LOW))
{
//没有启动时收到复位按钮,相当于启动按钮
LogUtil.info(Name + "没有启动时收到复位按钮,相当于启动按钮,开始调用启动方法!");
bool result = StartRun();
if (result.Equals(false))
{
LogUtil.error("Feeder流水线启动失败,继续等待下次启动!");
mainTimer.Enabled = true;
}
}
LastResetValue = autoSingle;
return;
}
LastResetValue = autoSingle;
}
// 判断急停
if (runStatus >= RunStatus.HomeMoving)
{ //判断急停
if (IOManager.IOValue(IO_Type.SuddenStop_BTN).Equals(IO_VALUE.LOW))
{
if (isInSuddenDown.Equals(false))
{
isInSuddenDown = true;
SetWarnMsg("收到急停信号,报警急停");
//报警时会关闭所有轴
Alarm(AlarmType.SuddenStop);
}
}
else if (IOManager.IOValue(IO_Type.SuddenStop_BTN).Equals(IO_VALUE.HIGH) && IOManager.IOValue(IO_Type.Reset_BTN).Equals(IO_VALUE.HIGH))
{
//收到复位信号,若报警直接复位,若不报警且无操作,回到待机点
if (alarmType.Equals(AlarmType.None) && isInSuddenDown.Equals(false))
{
if (MoveInfo.MoveType.Equals(LineMoveType.None))
{
LogUtil.info("收到复位信号,当前无报警,暂不复位");
}
else
{
LogUtil.info("收到复位信号,当前无报警, 在" + MoveInfo.MoveType + "处理中,暂不复位");
}
}
else
{
//收到复位信号
LogUtil.info("收到复位信号,自动复位");
Reset();
}
}
}
//if (runStatus.Equals(RunStatus.Wait))
//{
// //获取新的Io状态
// IO_VALUE autoSingle = IOManager.IOValue(IO_Type.Reset_BTN);
// if (ConfigAppSettings.GetIntValue(Setting_Init.App_AutoRun).Equals(1))
// {
// if (autoSingle.Equals(IO_VALUE.HIGH) && LastResetValue.Equals(IO_VALUE.LOW))
// {
// //没有启动时收到复位按钮,相当于启动按钮
// LogUtil.info(Name + "没有启动时收到复位按钮,相当于启动按钮,开始调用启动方法!");
// bool result = StartRun();
// if (result.Equals(false))
// {
// LogUtil.error("Feeder流水线启动失败,继续等待下次启动!");
// mainTimer.Enabled = true;
// }
// }
// LastResetValue = autoSingle;
// return;
// }
// LastResetValue = autoSingle;
//}
//判断急停
//if (runStatus >= RunStatus.HomeMoving)
//{ //判断急停
// //if (IOManager.IOValue(IO_Type.SuddenStop_BTN).Equals(IO_VALUE.LOW))
// //{
// // if (isInSuddenDown.Equals(false))
// // {
// // isInSuddenDown = true;
// // SetWarnMsg("收到急停信号,报警急停");
// // //报警时会关闭所有轴
// // Alarm(AlarmType.SuddenStop);
// // }
// //}
// //else if (IOManager.IOValue(IO_Type.SuddenStop_BTN).Equals(IO_VALUE.HIGH) && IOManager.IOValue(IO_Type.Reset_BTN).Equals(IO_VALUE.HIGH))
// //{
// // //收到复位信号,若报警直接复位,若不报警且无操作,回到待机点
// // if (alarmType.Equals(AlarmType.None) && isInSuddenDown.Equals(false))
// // {
// // if (MoveInfo.MoveType.Equals(LineMoveType.None))
// // {
// // LogUtil.info("收到复位信号,当前无报警,暂不复位");
// // }
// // else
// // {
// // LogUtil.info("收到复位信号,当前无报警, 在" + MoveInfo.MoveType + "处理中,暂不复位");
// // }
// // }
// // else
// // {
// // //收到复位信号
// // LogUtil.info("收到复位信号,自动复位");
// // Reset();
// // }
// //}
//}
}
private DateTime preIoTimerOutTime = DateTime.Now;
......
......@@ -30,14 +30,14 @@ namespace OnlineStore.DeviceLibrary
/// </summary>
public void InLine_None()
{
SetStatus(InLine_Name, "", ClientAction.None);
SetStatus(InLine_Name, "000", ClientAction.None);
}
/// <summary>
/// 可以进入状态
/// </summary>
public void InLine_NeedEnter()
{
SetStatus(InLine_Name, "", ClientAction.NeedEnter);
SetStatus(InLine_Name, "000", ClientAction.NeedEnter);
}
#endregion
......@@ -127,7 +127,7 @@ namespace OnlineStore.DeviceLibrary
}
//五秒后改为离开状态
Thread.Sleep(5000);
Thread.Sleep(10000);
Feeder_In_Msg = "Feeder In: 调用 FinishEnter ";
LogUtil.info(Feeder_In_Msg);
FinishEnter(InLine_Name);
......@@ -306,17 +306,17 @@ namespace OnlineStore.DeviceLibrary
if (actionMap.ContainsKey(name))
{
ClientAction currA = actionMap[name]; //相同状态就设置一次
if (currA.Equals(action) && shelfId == "")
if (currA.Equals(action) && (shelfId == "000"))
{
return false;
}
// actionMap[name] = action;
// agvClient.SetStatus(name, shelfId, action, level);
actionMap[name] = action;
agvClient.SetStatus(name, shelfId, action, level);
LogUtil.info("设置 " + name + " [" + shelfId + "] " + action.ToString());
return true;
}
agvClient.SetStatus(name, shelfId, action, level);
//actionMap.Add(name, action);
actionMap.Add(name, action);
LogUtil.info("设置 " + name + " ["+ shelfId + "] "+ action.ToString());
return true;
}
......@@ -329,7 +329,14 @@ namespace OnlineStore.DeviceLibrary
}
return agvClient.IsConn;
}
public static ClientAction GetAction(string NodeName)
{
if (actionMap.ContainsKey(NodeName))
{
return actionMap[NodeName];
}
return ClientAction.None;
}
public void Dispose()
{
try
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!