Commit 257c8e93 LN

写IO增加验证

1 个父辈 48ff972a
...@@ -260,7 +260,7 @@ namespace OnlineStore.AssemblyLine ...@@ -260,7 +260,7 @@ namespace OnlineStore.AssemblyLine
//AIManager.CloseConnect(); //AIManager.CloseConnect();
ACServerManager.CloseAllPort(); ACServerManager.CloseAllPort();
// CodeManager.CloseAllCamera(); // CodeManager.CloseAllCamera();
TrayManager.RfidReader.Close(); // TrayManager.RfidReader.Close();
//this.Close(); //this.Close();
System.Environment.Exit(System.Environment.ExitCode); System.Environment.Exit(System.Environment.ExitCode);
} }
......
...@@ -126,10 +126,10 @@ namespace OnlineStore.DeviceLibrary ...@@ -126,10 +126,10 @@ namespace OnlineStore.DeviceLibrary
LogInfo("停止运动:(定位气缸下降,皮带线停转 )开始 "); LogInfo("停止运动:(定位气缸下降,皮带线停转 )开始 ");
CylinderMove(null, IO_Type.SeparateDevice_Up, IO_Type.SeparateDevice_Down); CylinderMove(null, IO_Type.SeparateDevice_Up, IO_Type.SeparateDevice_Down);
IOMove(IO_Type.DLine_Run1, IO_VALUE.LOW); CheckAndMove(IO_Type.DLine_Run1, IO_VALUE.LOW);
IOMove(IO_Type.DLine_Run2, IO_VALUE.LOW); CheckAndMove(IO_Type.DLine_Run2, IO_VALUE.LOW);
IOMove(IO_Type.DLine_Run3, IO_VALUE.LOW); CheckAndMove(IO_Type.DLine_Run3, IO_VALUE.LOW);
IOMove(IO_Type.SeparateDevice_Run, IO_VALUE.LOW); CheckAndMove(IO_Type.SeparateDevice_Run, IO_VALUE.LOW);
} }
/// <summary> /// <summary>
...@@ -143,14 +143,14 @@ namespace OnlineStore.DeviceLibrary ...@@ -143,14 +143,14 @@ namespace OnlineStore.DeviceLibrary
} }
StopMove(); StopMove();
//停止运行时,把所有IO 置零 //停止运行时,把所有IO 置零
IOMove(IO_Type.DLine_RunStatus, IO_VALUE.LOW); CheckAndMove(IO_Type.DLine_RunStatus, IO_VALUE.LOW);
IOMove(IO_Type.DLine_RunAlarm, IO_VALUE.LOW); CheckAndMove(IO_Type.DLine_RunAlarm, IO_VALUE.LOW);
IOMove(IO_Type.DLine_Run1, IO_VALUE.LOW); CheckAndMove(IO_Type.DLine_Run1, IO_VALUE.LOW);
IOMove(IO_Type.DLine_Run2, IO_VALUE.LOW); CheckAndMove(IO_Type.DLine_Run2, IO_VALUE.LOW);
IOMove(IO_Type.DLine_Run3, IO_VALUE.LOW); CheckAndMove(IO_Type.DLine_Run3, IO_VALUE.LOW);
IOMove(IO_Type.SeparateDevice_Run, IO_VALUE.LOW); CheckAndMove(IO_Type.SeparateDevice_Run, IO_VALUE.LOW);
IOMove(IO_Type.SeparateDevice_Up, IO_VALUE.LOW); CheckAndMove(IO_Type.SeparateDevice_Up, IO_VALUE.LOW);
IOMove(IO_Type.SeparateDevice_Down, IO_VALUE.LOW); CheckAndMove(IO_Type.SeparateDevice_Down, IO_VALUE.LOW);
runStatus = LineRunStatus.Wait; runStatus = LineRunStatus.Wait;
} }
......
...@@ -107,19 +107,30 @@ namespace OnlineStore.DeviceLibrary ...@@ -107,19 +107,30 @@ namespace OnlineStore.DeviceLibrary
ResetClearData(); ResetClearData();
lineStatus = LineStatus.ResetMove; lineStatus = LineStatus.ResetMove;
IOMove(IO_Type.SL_HddLed, IO_VALUE.HIGH); IOMove(IO_Type.SL_HddLed, IO_VALUE.HIGH);
MoveInfo.NextMoveStep(LineMoveStep.FR_00_LineRun); MoveInfo.NextMoveStep(LineMoveStep.FR_00_LineRun);
LogInfo(MoveInfo.MoveType + ":" + MoveInfo.SLog + ":开始复位,放料顶升下降, 所有阻挡上升,链条先转动3秒钟或等待定位工位有料架");
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(3000));
//CylinderMove(MoveInfo, IO_Type.SL_MoveCylinder_Down, IO_Type.SL_MoveCylinder_Up);
//CylinderMove(MoveInfo, IO_Type.SL_OutTopCylinder_Up, IO_Type.SL_OutTopCylinder_Down);
//阻挡上升 //阻挡上升
IOMove(IO_Type.SL_Entry_StopDown, IO_VALUE.LOW); if(IOValue(IO_Type.SL_Location_Check).Equals(IO_VALUE.HIGH))
IOMove(IO_Type.SL_Buffer_StopDown, IO_VALUE.LOW); {
IOMove(IO_Type.SL_Out_StopDown, IO_VALUE.LOW); LogInfo(MoveInfo.MoveType + ":" + MoveInfo.SLog + ":开始复位,放料顶升下降, 所有阻挡上升,检测到定位工位有信号,不转动链条");
}
else
{
LogInfo(MoveInfo.MoveType + ":" + MoveInfo.SLog + ":开始复位,放料顶升下降, 所有阻挡上升,链条先转动3秒钟 ");
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(3000));
//线体开始转动
IOMove(IO_Type.SL_Line_Run, IO_VALUE.HIGH);
IOMove(IO_Type.SL_LocationSideWay_Run, IO_VALUE.HIGH);
IOMove(IO_Type.SL_OutSideWay_Run, IO_VALUE.HIGH);
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.SL_Location_Check, IO_VALUE.HIGH));
MoveInfo.OneWaitCanEndStep = true;
}
CheckAndMove(IO_Type.SL_Entry_StopDown, IO_VALUE.LOW);
CheckAndMove(IO_Type.SL_Buffer_StopDown, IO_VALUE.LOW);
CheckAndMove(IO_Type.SL_Out_StopDown, IO_VALUE.LOW);
if (Config.SidesWayNum <= 0) if (Config.SidesWayNum <= 0)
{ {
IOMove(IO_Type.FL_StopCylinder_Down1, IO_VALUE.LOW); CheckAndMove(IO_Type.FL_StopCylinder_Down1, IO_VALUE.LOW);
IOMove(IO_Type.FL_StopCylinder_Down2, IO_VALUE.LOW); CheckAndMove(IO_Type.FL_StopCylinder_Down2, IO_VALUE.LOW);
//顶升气缸下降 //顶升气缸下降
CylinderMove(null, IO_Type.FL_TopCylinder_Up, IO_Type.FL_TopCylinder_Down); CylinderMove(null, IO_Type.FL_TopCylinder_Up, IO_Type.FL_TopCylinder_Down);
} }
...@@ -128,12 +139,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -128,12 +139,7 @@ namespace OnlineStore.DeviceLibrary
CylinderMove(null, IO_Type.SW_LocationCylinder_Up, IO_Type.SW_LocationCylinder_Down); CylinderMove(null, IO_Type.SW_LocationCylinder_Up, IO_Type.SW_LocationCylinder_Down);
CylinderMove(null, IO_Type.SW_TopCylinder_Up, IO_Type.SW_TopCylinder_Down); CylinderMove(null, IO_Type.SW_TopCylinder_Up, IO_Type.SW_TopCylinder_Down);
} }
//线体停止
IOMove(IO_Type.SL_Line_Run, IO_VALUE.HIGH);
IOMove(IO_Type.SL_LocationSideWay_Run, IO_VALUE.HIGH);
IOMove(IO_Type.SL_OutSideWay_Run, IO_VALUE.HIGH);
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.SL_Location_Check, IO_VALUE.HIGH));
MoveInfo.OneWaitCanEndStep = true;
isInPro = false; isInPro = false;
} }
//复位时,应该先提升伺服回原点,然后提升伺服下降到P2点,放开定位气缸,顶升气缸下降,提升伺服在上升到P1点。 //复位时,应该先提升伺服回原点,然后提升伺服下降到P2点,放开定位气缸,顶升气缸下降,提升伺服在上升到P1点。
...@@ -363,8 +369,8 @@ namespace OnlineStore.DeviceLibrary ...@@ -363,8 +369,8 @@ namespace OnlineStore.DeviceLibrary
if (Config.SidesWayNum <= 0) if (Config.SidesWayNum <= 0)
{ {
LogInfo("下降放料阻挡12 ,下降FL顶升气缸,上升横移机构 "); LogInfo("下降放料阻挡12 ,下降FL顶升气缸,上升横移机构 ");
IOMove(IO_Type.FL_StopCylinder_Down1, IO_VALUE.HIGH); CheckAndMove(IO_Type.FL_StopCylinder_Down1, IO_VALUE.HIGH);
IOMove(IO_Type.FL_StopCylinder_Down2, IO_VALUE.HIGH); CheckAndMove(IO_Type.FL_StopCylinder_Down2, IO_VALUE.HIGH);
//顶升气缸下降 //顶升气缸下降
CylinderMove(null, IO_Type.FL_TopCylinder_Up, IO_Type.FL_TopCylinder_Down); CylinderMove(null, IO_Type.FL_TopCylinder_Up, IO_Type.FL_TopCylinder_Down);
} }
...@@ -379,19 +385,19 @@ namespace OnlineStore.DeviceLibrary ...@@ -379,19 +385,19 @@ namespace OnlineStore.DeviceLibrary
if (Config.SidesWayNum <= 0) if (Config.SidesWayNum <= 0)
{ {
LogInfo("上升放料阻挡12,关闭顶升气缸,关闭横移上下气缸"); LogInfo("上升放料阻挡12,关闭顶升气缸,关闭横移上下气缸");
IOMove(IO_Type.FL_StopCylinder_Down1, IO_VALUE.LOW); CheckAndMove(IO_Type.FL_StopCylinder_Down1, IO_VALUE.LOW);
IOMove(IO_Type.FL_StopCylinder_Down2, IO_VALUE.LOW); CheckAndMove(IO_Type.FL_StopCylinder_Down2, IO_VALUE.LOW);
//顶升气缸下降 //顶升气缸下降
IOMove(IO_Type.FL_TopCylinder_Up, IO_VALUE.LOW); CheckAndMove(IO_Type.FL_TopCylinder_Up, IO_VALUE.LOW);
IOMove(IO_Type.FL_TopCylinder_Down, IO_VALUE.LOW); CheckAndMove(IO_Type.FL_TopCylinder_Down, IO_VALUE.LOW);
} }
else else
{ {
LogInfo(" 关闭横移上下气缸"); LogInfo(" 关闭横移上下气缸");
} }
IOMove(IO_Type.SL_MoveCylinder_Down, IO_VALUE.LOW); CheckAndMove(IO_Type.SL_MoveCylinder_Down, IO_VALUE.LOW);
IOMove(IO_Type.SL_MoveCylinder_Up, IO_VALUE.LOW); CheckAndMove(IO_Type.SL_MoveCylinder_Up, IO_VALUE.LOW);
} }
/// <summary> /// <summary>
...@@ -444,7 +450,6 @@ namespace OnlineStore.DeviceLibrary ...@@ -444,7 +450,6 @@ namespace OnlineStore.DeviceLibrary
private IO_VALUE TargetIoValue = IO_VALUE.HIGH; private IO_VALUE TargetIoValue = IO_VALUE.HIGH;
private bool BatchAxisStartCheck(string targetIo = "", IO_VALUE value = IO_VALUE.HIGH) private bool BatchAxisStartCheck(string targetIo = "", IO_VALUE value = IO_VALUE.HIGH)
{ {
isOk = false;
if (String.IsNullOrEmpty(targetIo)) if (String.IsNullOrEmpty(targetIo))
{ {
targetIo = IO_Type.SL_AxisLocationCheck; targetIo = IO_Type.SL_AxisLocationCheck;
...@@ -464,45 +469,38 @@ namespace OnlineStore.DeviceLibrary ...@@ -464,45 +469,38 @@ namespace OnlineStore.DeviceLibrary
} }
private bool BatchAxisStopCheck() private bool BatchAxisStopCheck()
{ {
isOk = false;
if (!(axisCheckTimer == null)) if (!(axisCheckTimer == null))
{ {
axisCheckTimer.Stop(); axisCheckTimer.Stop();
} }
return true; return true;
} }
private bool IsInProcess = false; private bool IsInProcess = false;
private bool isOk = false;
private DateTime lastOkTime = DateTime.Now; private DateTime lastOkTime = DateTime.Now;
private void CheckTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) private void CheckTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{ {
if (IsInProcess) { return; } TimeSpan pan = DateTime.Now - lastOkTime;
IsInProcess = true; if (IsInProcess && pan.TotalMilliseconds < 300) { return; }
if (IOValue(TargetIoType).Equals(TargetIoValue)) try
{ {
//if (!isOk)
//{ IsInProcess = true;
// isOk = true; lastOkTime = DateTime.Now;
// lastOkTime = DateTime.Now; if (IOValue(TargetIoType).Equals(TargetIoValue))
//} {
//else LogUtil.info(Name + "上料轴,检测到 " + TargetIoType + "=" + TargetIoValue + ",可以停止运动");
//{ BatchAxis.SuddenStop();
//TimeSpan span = DateTime.Now - lastOkTime; BatchAxisStopCheck();
//if (span.TotalMilliseconds > 100) }
{ }catch(Exception ex)
LogUtil.info(Name + "上料轴,检测到 " + TargetIoType + "=" + TargetIoValue + ",可以停止运动"); {
BatchAxis.SuddenStop(); LogUtil.error("CheckTimer_Elapsed出错:" + ex.ToString());
BatchAxisStopCheck();
}
//}
} }
else finally
{ {
isOk = false; IsInProcess = false;
} }
IsInProcess = false;
} }
......
...@@ -16,6 +16,8 @@ namespace OnlineStore.DeviceLibrary ...@@ -16,6 +16,8 @@ namespace OnlineStore.DeviceLibrary
{ {
if (IOValue(TargetIoType).Equals(TargetIoValue)) if (IOValue(TargetIoType).Equals(TargetIoValue))
{ {
LogInfo("CheckWaitResult 检测到" + TargetIoType + "=" + TargetIoValue + ",停止运行");
BatchAxis.SuddenStop();
BatchAxisStopCheck(); BatchAxisStopCheck();
return true; return true;
} }
...@@ -82,8 +84,8 @@ namespace OnlineStore.DeviceLibrary ...@@ -82,8 +84,8 @@ namespace OnlineStore.DeviceLibrary
CheckLog("检测到SW_StopCheck:" + SecondMoveInfo.SLog + "阻挡气缸下降 ,最多等待1秒"); CheckLog("检测到SW_StopCheck:" + SecondMoveInfo.SLog + "阻挡气缸下降 ,最多等待1秒");
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_01_StopCylinder1Down); SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_01_StopCylinder1Down);
IOMove(IO_Type.SW_StopDown, IO_VALUE.HIGH); IOMove(IO_Type.SW_StopDown, IO_VALUE.HIGH);
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.SW_StopDown, IO_VALUE.HIGH)); SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.SW_StopDown, IO_VALUE.LOW));
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000)); SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(500));
//} //}
//else //else
//{ //{
...@@ -595,13 +597,13 @@ namespace OnlineStore.DeviceLibrary ...@@ -595,13 +597,13 @@ namespace OnlineStore.DeviceLibrary
{ {
MoveInfo.NextMoveStep(LineMoveStep.FI_17_UpdownAxisToP1); MoveInfo.NextMoveStep(LineMoveStep.FI_17_UpdownAxisToP1);
InLog("料盘移栽" + MoveInfo.SLog + ":升降伺服到P1点"); InLog("料盘移栽" + MoveInfo.SLog + ":升降伺服到P1点");
UpdownAxis.AbsMove(MoveInfo, Config.UpDownAxisP1, Config.UpdownAxis_P1Speed); UpdownAxis.AbsMove(MoveInfo, Config.UpDownAxisP1, Config.UpdownAxis_P1Speed);
} }
else if (MoveInfo.MoveStep.Equals(LineMoveStep.FI_17_UpdownAxisToP1)) else if (MoveInfo.MoveStep.Equals(LineMoveStep.FI_17_UpdownAxisToP1))
{ {
MoveInfo.NextMoveStep(LineMoveStep.FI_17_BatchAxisToP3); MoveInfo.NextMoveStep(LineMoveStep.FI_17_BatchAxisToP3);
InLog("料盘移栽" + MoveInfo.SLog + ":提升伺服运动到P3"); InLog("料盘移栽" + MoveInfo.SLog + ":提升伺服运动到P3,横移气缸上升");
CylinderMove(null, IO_Type.SL_MoveCylinder_Down, IO_Type.SL_MoveCylinder_Up);
BatchAxisToP3(); BatchAxisToP3();
} }
else if (MoveInfo.MoveStep.Equals(LineMoveStep.FI_17_BatchAxisToP3)) else if (MoveInfo.MoveStep.Equals(LineMoveStep.FI_17_BatchAxisToP3))
......
...@@ -185,12 +185,12 @@ namespace OnlineStore.DeviceLibrary ...@@ -185,12 +185,12 @@ namespace OnlineStore.DeviceLibrary
Thread.Sleep(5); Thread.Sleep(5);
if (!IsDebug) if (!IsDebug)
{ {
Task.Factory.StartNew(delegate //Task.Factory.StartNew(delegate
{ //{
string[] rfidArray = rfidList.ToArray(); // string[] rfidArray = rfidList.ToArray();
//连接rfip // //连接rfip
TrayManager.RfidReader.Open(rfidArray); // TrayManager.RfidReader.Open(rfidArray);
}); //});
} }
addLastDI(IO_Type.Airpressure_Check, IOValue(IO_Type.Airpressure_Check)); addLastDI(IO_Type.Airpressure_Check, IOValue(IO_Type.Airpressure_Check));
addLastDI(IO_Type.SuddenStop_BTN, IOValue(IO_Type.SuddenStop_BTN)); addLastDI(IO_Type.SuddenStop_BTN, IOValue(IO_Type.SuddenStop_BTN));
...@@ -345,8 +345,8 @@ namespace OnlineStore.DeviceLibrary ...@@ -345,8 +345,8 @@ namespace OnlineStore.DeviceLibrary
//横移轨道下降 //横移轨道下降
SideWayStop(); SideWayStop();
IOMove(IO_Type.SW2_StopDown, IO_VALUE.LOW); CheckAndMove(IO_Type.SW2_StopDown, IO_VALUE.LOW);
IOMove(IO_Type.SW4_StopDown, IO_VALUE.LOW); CheckAndMove(IO_Type.SW4_StopDown, IO_VALUE.LOW);
//定位下降 //定位下降
CylinderMove(MoveInfo, IO_Type.SW1_LocationCylinder_Up, IO_Type.SW1_LocationCylinder_Down); CylinderMove(MoveInfo, IO_Type.SW1_LocationCylinder_Up, IO_Type.SW1_LocationCylinder_Down);
...@@ -790,6 +790,12 @@ namespace OnlineStore.DeviceLibrary ...@@ -790,6 +790,12 @@ namespace OnlineStore.DeviceLibrary
SideWayTimerProcess(); SideWayTimerProcess();
} }
TimeSpan span = DateTime.Now - time;
if (span.TotalMilliseconds > 1000)
{
LogUtil.error(Name + "主定时器处理耗时:" + FormUtil.GetSpanStr(span));
}
} }
catch (Exception ex) catch (Exception ex)
{ {
......
...@@ -415,6 +415,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -415,6 +415,7 @@ namespace OnlineStore.DeviceLibrary
private bool sdIsInprocess = false; private bool sdIsInprocess = false;
private DateTime sdlastProTime = DateTime.Now; private DateTime sdlastProTime = DateTime.Now;
private int TraySingleWaitTime = 500;
private void SideWayTimerProcess() private void SideWayTimerProcess()
{ {
TimeSpan span = DateTime.Now - sdlastProTime; TimeSpan span = DateTime.Now - sdlastProTime;
...@@ -439,7 +440,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -439,7 +440,7 @@ namespace OnlineStore.DeviceLibrary
TrayManager.CanMoveSidesWay(4) && TrayManager.CanMoveSidesWay(1)) TrayManager.CanMoveSidesWay(4) && TrayManager.CanMoveSidesWay(1))
{ {
TimeSpan span12 = DateTime.Now - SideWay41Ntime; TimeSpan span12 = DateTime.Now - SideWay41Ntime;
if (SideWay41IsWait && span12.TotalSeconds > 1) if (SideWay41IsWait && span12.TotalMilliseconds > TraySingleWaitTime)
{ {
SW41_MoveInfo.NewMove(LineMoveType.InStore); SW41_MoveInfo.NewMove(LineMoveType.InStore);
SW41_MoveInfo.NextMoveStep(LineMoveStep.SW02_WaitFixtureCheck); SW41_MoveInfo.NextMoveStep(LineMoveStep.SW02_WaitFixtureCheck);
...@@ -456,19 +457,14 @@ namespace OnlineStore.DeviceLibrary ...@@ -456,19 +457,14 @@ namespace OnlineStore.DeviceLibrary
TrayManager.CanMoveSidesWay(4) && TrayManager.CanMoveSidesWay(1)) TrayManager.CanMoveSidesWay(4) && TrayManager.CanMoveSidesWay(1))
{ {
TimeSpan span14 = DateTime.Now - SideWay41Ntime; TimeSpan span14 = DateTime.Now - SideWay41Ntime;
if (SideWay41IsWait && span14.TotalSeconds > 1) if (SideWay41IsWait && span14.TotalMilliseconds > TraySingleWaitTime)
{ {
// TrayManager.UpdateSWState(4, 4);
//TrayManager.UpdateSWState(1, 4);
SW41_MoveInfo.NewMove(LineMoveType.InStore); SW41_MoveInfo.NewMove(LineMoveType.InStore);
SW41_MoveInfo.NextMoveStep(LineMoveStep.SW01_StopDown); SW41_MoveInfo.NextMoveStep(LineMoveStep.SW00_Wait);
UpateSw41TrayNum(); UpateSw41TrayNum();
SWLog("横移轨道41:检测到SW4_StopCheck, 等待1000,阻挡气缸下降,定位气缸下降 ,更新托盘号 [" + Sw41TrayNum + "] "); SWLog("横移轨道41:检测到SW4_StopCheck, 定位气缸下降 ,更新托盘号 [" + Sw41TrayNum + "] ");
IOMove(IO_Type.SW4_StopDown, IO_VALUE.HIGH); CylinderMove(SW41_MoveInfo, IO_Type.SW4_LocationCylinder_Up, IO_Type.SW4_LocationCylinder_Down);
SW41_MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000)); CylinderMove(SW41_MoveInfo, IO_Type.SW1_LocationCylinder_Up, IO_Type.SW1_LocationCylinder_Down);
// SW41_MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.SW4_TrayCheck, IO_VALUE.HIGH));
CylinderMove(SW41_MoveInfo, IO_Type.SW4_LocationCylinder_Up, IO_Type.SW1_LocationCylinder_Down);
CylinderMove(SW41_MoveInfo, IO_Type.SW4_LocationCylinder_Up, IO_Type.SW1_LocationCylinder_Down);
} }
else if (!SideWay41IsWait) else if (!SideWay41IsWait)
{ {
...@@ -499,10 +495,8 @@ namespace OnlineStore.DeviceLibrary ...@@ -499,10 +495,8 @@ namespace OnlineStore.DeviceLibrary
TrayManager.CanMoveSidesWay(2) && TrayManager.CanMoveSidesWay(3)) TrayManager.CanMoveSidesWay(2) && TrayManager.CanMoveSidesWay(3))
{ {
TimeSpan span34 = DateTime.Now - SideWay23Ntime; TimeSpan span34 = DateTime.Now - SideWay23Ntime;
if (SideWay23IsWait && span34.TotalSeconds > 1) if (SideWay23IsWait && span34.TotalMilliseconds > TraySingleWaitTime)
{ {
// TrayManager.UpdateSWState(2, 2);
//TrayManager.UpdateSWState(3, 2);
SW23_MoveInfo.NewMove(LineMoveType.InStore); SW23_MoveInfo.NewMove(LineMoveType.InStore);
SW23_MoveInfo.NextMoveStep(LineMoveStep.SW02_WaitFixtureCheck); SW23_MoveInfo.NextMoveStep(LineMoveStep.SW02_WaitFixtureCheck);
UpateSw23TrayNum(); UpateSw23TrayNum();
...@@ -523,19 +517,14 @@ namespace OnlineStore.DeviceLibrary ...@@ -523,19 +517,14 @@ namespace OnlineStore.DeviceLibrary
TrayManager.CanMoveSidesWay(2) && TrayManager.CanMoveSidesWay(3)) TrayManager.CanMoveSidesWay(2) && TrayManager.CanMoveSidesWay(3))
{ {
TimeSpan span34 = DateTime.Now - SideWay23Ntime; TimeSpan span34 = DateTime.Now - SideWay23Ntime;
if (SideWay23IsWait && span34.TotalSeconds > 1) if (SideWay23IsWait && span34.TotalMilliseconds > TraySingleWaitTime)
{ {
// TrayManager.UpdateSWState(2, 2);
//TrayManager.UpdateSWState(3, 2);
SW23_MoveInfo.NewMove(LineMoveType.InStore); SW23_MoveInfo.NewMove(LineMoveType.InStore);
SW23_MoveInfo.NextMoveStep(LineMoveStep.SW01_StopDown); SW23_MoveInfo.NextMoveStep(LineMoveStep.SW01_StopDown);
UpateSw23TrayNum(); UpateSw23TrayNum();
SWLog("横移轨道23:检测到SW2_StopCheck, 等待1000,定位气缸下降 ,更新托盘号 [" + Sw23TrayNum + "] "); SWLog("横移轨道23:检测到SW2_StopCheck, 定位气缸下降 ,更新托盘号 [" + Sw23TrayNum + "] ");
IOMove(IO_Type.SW2_StopDown, IO_VALUE.HIGH); CylinderMove(SW23_MoveInfo, IO_Type.SW2_LocationCylinder_Up, IO_Type.SW2_LocationCylinder_Down);
SW23_MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000)); CylinderMove(SW23_MoveInfo, IO_Type.SW3_LocationCylinder_Up, IO_Type.SW3_LocationCylinder_Down);
// SW23_MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.SW2_TrayCheck, IO_VALUE.HIGH));
CylinderMove(SW23_MoveInfo, IO_Type.SW2_LocationCylinder_Up, IO_Type.SW3_LocationCylinder_Down);
CylinderMove(SW23_MoveInfo, IO_Type.SW2_LocationCylinder_Up, IO_Type.SW3_LocationCylinder_Down);
} }
else if (!SideWay23IsWait) else if (!SideWay23IsWait)
{ {
...@@ -604,7 +593,14 @@ namespace OnlineStore.DeviceLibrary ...@@ -604,7 +593,14 @@ namespace OnlineStore.DeviceLibrary
{ {
return; return;
} }
if (SW41_MoveInfo.MoveStep.Equals(LineMoveStep.SW01_StopDown)) if (SW41_MoveInfo.MoveStep.Equals(LineMoveStep.SW00_Wait))
{
SW41_MoveInfo.NextMoveStep(LineMoveStep.SW01_StopDown);
SWLog("横移轨道41: 阻挡气缸下降 等待 "+TrayManager.StopDownWaitTime);
IOMove(IO_Type.SW4_StopDown, IO_VALUE.HIGH);
SW41_MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(TrayManager.StopDownWaitTime));
}
else if (SW41_MoveInfo.MoveStep.Equals(LineMoveStep.SW01_StopDown))
{ {
SW41_MoveInfo.NextMoveStep(LineMoveStep.SW02_WaitFixtureCheck); SW41_MoveInfo.NextMoveStep(LineMoveStep.SW02_WaitFixtureCheck);
SWLog("横移轨道41: 等待横移4托盘检测信号 ,SW4_StopDown上升 "); SWLog("横移轨道41: 等待横移4托盘检测信号 ,SW4_StopDown上升 ");
...@@ -650,14 +646,14 @@ namespace OnlineStore.DeviceLibrary ...@@ -650,14 +646,14 @@ namespace OnlineStore.DeviceLibrary
SW41_MoveInfo.NextMoveStep(LineMoveStep.SW07_TopCylinderDown); SW41_MoveInfo.NextMoveStep(LineMoveStep.SW07_TopCylinderDown);
SWLog("横移轨道41:托盘已到达出口,顶升气缸下降,判断入料1是否需要此托盘 "); SWLog("横移轨道41:托盘已到达出口,顶升气缸下降,判断入料1是否需要此托盘 ");
CylinderMove(SW41_MoveInfo, IO_Type.SW4_TopCylinder_Up, IO_Type.SW4_TopCylinder_Down); CylinderMove(SW41_MoveInfo, IO_Type.SW4_TopCylinder_Up, IO_Type.SW4_TopCylinder_Down);
if (!CheckTrayIsNeed(101,Sw41TrayNum)) if (!CheckTrayIsNeed(101, Sw41TrayNum))
{ {
CylinderMove(SW41_MoveInfo, IO_Type.SW1_TopCylinder_Up, IO_Type.SW1_TopCylinder_Down); CylinderMove(SW41_MoveInfo, IO_Type.SW1_TopCylinder_Up, IO_Type.SW1_TopCylinder_Down);
} }
} }
else if (SW41_MoveInfo.MoveStep.Equals(LineMoveStep.SW07_TopCylinderDown)) else if (SW41_MoveInfo.MoveStep.Equals(LineMoveStep.SW07_TopCylinderDown))
{ {
if (CheckTrayIsNeed(101,Sw41TrayNum)) if (CheckTrayIsNeed(101, Sw41TrayNum))
{ {
SW41_MoveInfo.NextMoveStep(LineMoveStep.SW09_WaitTrayGo); SW41_MoveInfo.NextMoveStep(LineMoveStep.SW09_WaitTrayGo);
SWLog("横移轨道41:关闭皮带电机,不需要等待 托盘离开"); SWLog("横移轨道41:关闭皮带电机,不需要等待 托盘离开");
...@@ -715,7 +711,14 @@ namespace OnlineStore.DeviceLibrary ...@@ -715,7 +711,14 @@ namespace OnlineStore.DeviceLibrary
{ {
return; return;
} }
if (SW23_MoveInfo.MoveStep.Equals(LineMoveStep.SW01_StopDown)) if (SW23_MoveInfo.MoveStep.Equals(LineMoveStep.SW00_Wait))
{
SW23_MoveInfo.NextMoveStep(LineMoveStep.SW01_StopDown);
SWLog("横移轨道23:阻挡气缸下降 等待 "+ TrayManager.StopDownWaitTime);
IOMove(IO_Type.SW2_StopDown, IO_VALUE.HIGH);
SW23_MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(TrayManager.StopDownWaitTime));
}
else if (SW23_MoveInfo.MoveStep.Equals(LineMoveStep.SW01_StopDown))
{ {
SW23_MoveInfo.NextMoveStep(LineMoveStep.SW02_WaitFixtureCheck); SW23_MoveInfo.NextMoveStep(LineMoveStep.SW02_WaitFixtureCheck);
SWLog("横移轨道23:SW2_StopDown上升 等待横移3托盘检测信号 "); SWLog("横移轨道23:SW2_StopDown上升 等待横移3托盘检测信号 ");
...@@ -761,14 +764,14 @@ namespace OnlineStore.DeviceLibrary ...@@ -761,14 +764,14 @@ namespace OnlineStore.DeviceLibrary
SW23_MoveInfo.NextMoveStep(LineMoveStep.SW07_TopCylinderDown); SW23_MoveInfo.NextMoveStep(LineMoveStep.SW07_TopCylinderDown);
SWLog("横移轨道23:托盘已到达出口,顶升气缸下降 "); SWLog("横移轨道23:托盘已到达出口,顶升气缸下降 ");
CylinderMove(SW23_MoveInfo, IO_Type.SW2_TopCylinder_Up, IO_Type.SW2_TopCylinder_Down); CylinderMove(SW23_MoveInfo, IO_Type.SW2_TopCylinder_Up, IO_Type.SW2_TopCylinder_Down);
if (!CheckTrayIsNeed(104,Sw23TrayNum)) if (!CheckTrayIsNeed(104, Sw23TrayNum))
{ {
CylinderMove(SW23_MoveInfo, IO_Type.SW3_TopCylinder_Up, IO_Type.SW3_TopCylinder_Down); CylinderMove(SW23_MoveInfo, IO_Type.SW3_TopCylinder_Up, IO_Type.SW3_TopCylinder_Down);
} }
} }
else if (SW23_MoveInfo.MoveStep.Equals(LineMoveStep.SW07_TopCylinderDown)) else if (SW23_MoveInfo.MoveStep.Equals(LineMoveStep.SW07_TopCylinderDown))
{ {
if (CheckTrayIsNeed(104,Sw23TrayNum)) if (CheckTrayIsNeed(104, Sw23TrayNum))
{ {
SW23_MoveInfo.NextMoveStep(LineMoveStep.SW09_WaitTrayGo); SW23_MoveInfo.NextMoveStep(LineMoveStep.SW09_WaitTrayGo);
SWLog("横移轨道41:关闭皮带电机,不需要等待 托盘离开"); SWLog("横移轨道41:关闭皮带电机,不需要等待 托盘离开");
......
...@@ -12,7 +12,8 @@ namespace OnlineStore.DeviceLibrary ...@@ -12,7 +12,8 @@ namespace OnlineStore.DeviceLibrary
{ {
public class TrayManager public class TrayManager
{ {
public static RFID RfidReader = new RFID(); public static int StopDownWaitTime = 1000;
// public static RFID RfidReader = new RFID();
///// <summary> ///// <summary>
///// 出库时,可以不下降直接放料盘的宽度 ///// 出库时,可以不下降直接放料盘的宽度
///// </summary> ///// </summary>
...@@ -184,62 +185,63 @@ namespace OnlineStore.DeviceLibrary ...@@ -184,62 +185,63 @@ namespace OnlineStore.DeviceLibrary
public static int GetTrayNum(int subType, bool isClear = false) public static int GetTrayNum(int subType, bool isClear = false)
{ {
return 9; return 9;
if (subType.Equals(104)) //if (subType.Equals(104))
{ //{
return LineManager.Line.Sw23TrayNum; // return LineManager.Line.Sw23TrayNum;
} //}
else if (subType.Equals(101)) //else if (subType.Equals(101))
{ //{
return LineManager.Line.Sw41TrayNum; // return LineManager.Line.Sw41TrayNum;
} //}
string ip = GetRFIP(subType); //string ip = GetRFIP(subType);
//获取盘号 ////获取盘号
RFIDData data = ReadRFID(ip); //RFIDData data = ReadRFID(ip);
if (data != null) //if (data != null)
{ //{
if (data.RFType.Equals((byte)'E')) // if (data.RFType.Equals((byte)'E'))
{ // {
return data.Num; // return data.Num;
} // }
return 0; // return 0;
//else // //else
//{ // //{
// LogUtil.error("读取托盘RFID[" + subType + "][" + ip + "]的数据出错:" + data.ToStr()); // // LogUtil.error("读取托盘RFID[" + subType + "][" + ip + "]的数据出错:" + data.ToStr());
//} // //}
} //}
if (isClear) //if (isClear)
{ //{
RfidReader.Clear(ip); // RfidReader.Clear(ip);
} //}
return 0; return 0;
} }
public static RFIDData GetShelfData(int subType) public static RFIDData GetShelfData(int subType)
{ {
string ip = GetRFIP(subType, 1); string ip = GetRFIP(subType, 1);
return ReadRFID(ip); return ReadRFID(ip);
} }
public static RFIDData ReadRFID(string ip) public static RFIDData ReadRFID(string ip)
{ {
try //try
{ //{
if (String.IsNullOrEmpty(ip).Equals(false)&&LineManager.Line.rfidList.Contains(ip)) // if (String.IsNullOrEmpty(ip).Equals(false) && LineManager.Line.rfidList.Contains(ip))
{ // {
//获取盘号 // //获取盘号
byte[] data = RfidReader.Read(ip); // byte[] data = RfidReader.Read(ip);
if (data != null && data.Length >= 2) // if (data != null && data.Length >= 2)
{ // {
RFIDData d = new RFIDData(data); // RFIDData d = new RFIDData(data);
return d; // return d;
} // }
} // }
}catch(Exception ex) //}
{ //catch (Exception ex)
//LogUtil.error("ReadRFID["+ip+"]出错:" + ex.ToString()); //{
} // //LogUtil.error("ReadRFID["+ip+"]出错:" + ex.ToString());
return new RFIDData(-1,-1); //}
return new RFIDData(-1, -1);
} }
private static string GetRFIP(int subType, int rtType = 0) private static string GetRFIP(int subType, int rtType = 0)
......
...@@ -328,7 +328,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -328,7 +328,7 @@ namespace OnlineStore.DeviceLibrary
} }
} }
public void CylinderMove(LineMoveInfo moveInfo, string IoLowType, string IoHighType) public void CylinderMove(LineMoveInfo moveInfo, string IoLowType, string IoHighType, bool isCheckMove = false)
{ {
if (baseConfig.DType.Equals(DeviceType.FeedingEquip)) if (baseConfig.DType.Equals(DeviceType.FeedingEquip))
{ {
...@@ -341,14 +341,29 @@ namespace OnlineStore.DeviceLibrary ...@@ -341,14 +341,29 @@ namespace OnlineStore.DeviceLibrary
return; return;
} }
} }
IOMove(IoLowType, IO_VALUE.LOW); if (isCheckMove||moveInfo==null)
IOMove(IoHighType, IO_VALUE.HIGH); {
CheckAndMove(IoLowType, IO_VALUE.LOW);
CheckAndMove(IoHighType, IO_VALUE.HIGH);
}
else
{
IOMove(IoLowType, IO_VALUE.LOW);
IOMove(IoHighType, IO_VALUE.HIGH);
}
if (moveInfo != null) if (moveInfo != null)
{ {
moveInfo.WaitList.Add(WaitResultInfo.WaitIO(IoLowType, IO_VALUE.LOW)); moveInfo.WaitList.Add(WaitResultInfo.WaitIO(IoLowType, IO_VALUE.LOW));
moveInfo.WaitList.Add(WaitResultInfo.WaitIO(IoHighType, IO_VALUE.HIGH)); moveInfo.WaitList.Add(WaitResultInfo.WaitIO(IoHighType, IO_VALUE.HIGH));
} }
} }
public void CheckAndMove(string IoType, IO_VALUE value)
{
if (!IOValue(IoType).Equals(value))
{
IOMove(IoType, value);
}
}
public void IOMove(string IoType, IO_VALUE value) public void IOMove(string IoType, IO_VALUE value)
{ {
IOManager.IOMove(IoType, value, baseConfig.Id); IOManager.IOMove(IoType, value, baseConfig.Id);
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!