Commit 997c6ca3 张东亮

0112

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