Commit 73972f25 张东亮

料架尾号为00出现不放料

1 个父辈 a46982e8
......@@ -10,7 +10,7 @@ using System.Text;
namespace OnlineStore.DeviceLibrary
{
/// <summary>
/// 双层流水线当前运动信息类(出入库状态,步骤记录)
/// 当前运动信息类(状态,步骤记录)
/// </summary>
public class LineMoveInfo
{
......
......@@ -18,9 +18,17 @@ namespace OnlineStore.DeviceLibrary
/// 工位S2是否可以放行左侧的料架
/// </summary>
internal bool S2CanGetShelf = true;
/// <summary>
/// 上料工位当前料架信息
/// </summary>
internal string S1_CurrShelfId = "";
/// <summary>
/// 上料工位左侧料架信息
/// </summary>
internal string S1_LeftShelfId = "";
/// <summary>
/// 上料工位右侧料架信息
/// </summary>
internal string S1_RightShelfId = "";
private string S1SName
......@@ -35,10 +43,18 @@ namespace OnlineStore.DeviceLibrary
{
get { return "【R_" + S1_RightShelfId + "_" + GetXNrfid(S1_RightShelfId) + "】"; }
}
/// <summary>
/// 所有任务信息
/// </summary>
public AllTaskInfo AllTaskInfo = new AllTaskInfo();
/// <summary>
/// 上料工位任务信息
/// </summary>
internal ShelfTaskInfo S1_ShelfTask = new ShelfTaskInfo();
//S1工位如果启动时有料架,左侧位置默认为00D,
/// <summary>
/// 上料工位检查,S1工位如果启动时有料架,左侧位置默认为00D,
/// </summary>
internal void S1_ShelfCheck()
{
//未准备料架,判断工位是否有料架
......@@ -76,6 +92,11 @@ namespace OnlineStore.DeviceLibrary
}
}
private Stopwatch pkgHasShelfWatch = new Stopwatch();
/// <summary>
/// 检查上料工位任务
/// </summary>
/// <param name="log"></param>
/// <returns></returns>
private bool CheckS1Task(string log = "")
{
//判断是否还有任务
......@@ -96,51 +117,18 @@ namespace OnlineStore.DeviceLibrary
S1Log(log + " 剩余任务:" + AllTaskInfo.ToStr() + ",需要一个新C料架");
return true;
}
//else if (AllTaskInfo.packageTask > 0)
//{
// //需要等待S2工位无料架,才能送料架过去
// if (NoWrokShelf())
// {
// //等待3秒都无料架
// if (LineManager.checkWatch(pkgHasShelfWatch, 10000))
// {
// needNewShelf = Static_String.BigShelf_RFID_Prefix;
// SOneMoveInfo.NewMove(LineMoveType.S1Shelf, MoveStep.S1_NewShelf);
// S1Log(log + " 剩余任务:" + AllTaskInfo.ToStr() + ",需要一个新C料架_包装料");
// return true;
// }
// }
// else
// {
// pkgHasShelfWatch.Stop();
// }
//}
else
{
pkgHasShelfWatch.Stop();
}
return false;
}
//private bool NoWrokShelf()
//{
// if (
// String.IsNullOrEmpty(S1_CurrShelfId) &&
// String.IsNullOrEmpty(S1_LeftShelfId) &&
// String.IsNullOrEmpty(S1_RightShelfId) &&
// IOValue(IO_Type.M_LeftStopCheck).Equals(IO_VALUE.LOW) &&
// IOValue(IO_Type.M_RightStopCheck).Equals(IO_VALUE.LOW) &&
// IOValue(IO_Type.S1_StopCheck1).Equals(IO_VALUE.LOW) &&
// IOValue(IO_Type.S1_StopCheck2).Equals(IO_VALUE.LOW) &&
// IOValue(IO_Type.S1_StopCheck4).Equals(IO_VALUE.LOW) &&
// CylinderIsOk(IO_Type.S1_TopCylinderUp1, IO_Type.S1_TopCylinderDown1) &&
// CylinderIsOk(IO_Type.S1_TopCylinderUp2, IO_Type.S1_TopCylinderDown2) &&
// IOValue(IO_Type.S1_StopCheck5).Equals(IO_VALUE.LOW)
// )
// {
// return true;
// }
// return false;
//}
/// <summary>
/// 上料工位阻挡移动
/// </summary>
/// <param name="moveInfo"></param>
/// <param name="iovalue"></param>
/// <param name="stop2Move"></param>
public void S1_StopMove(LineMoveInfo moveInfo, IO_VALUE iovalue, bool stop2Move = false)
{
if (moveInfo != null)
......@@ -193,7 +181,7 @@ namespace OnlineStore.DeviceLibrary
}
IsUseRightHigh = false;
if (!rfid.Equals(""))
if (!rfid.Equals("") && !rfid.Equals("000"))
{
if ((needNewShelf.EndsWith(Static_String.SmallShelf_RFID_Prefix) || needNewShelf.StartsWith(Static_String.SmallShelf_RFID_Prefix)) && rfid.StartsWith(Static_String.SmallShelf_RFID_Prefix))
{
......@@ -717,7 +705,7 @@ namespace OnlineStore.DeviceLibrary
}
private string needNewShelf = "";
private string ReadyLock = "";
private object ReadyLock = new object();
private void S1_24_Ready()
{
if (Monitor.TryEnter(ReadyLock, 1))
......@@ -816,14 +804,14 @@ namespace OnlineStore.DeviceLibrary
}
catch (Exception ex)
{
LogUtil.error("S1_22_Ready 出错:" + ex.ToString());
LogUtil.error("S1_24_Ready 出错:" + ex.ToString());
}
finally { Monitor.Exit(ReadyLock); }
}
else
{
LogUtil.error("S1_22_Ready 未得到锁 ", 15);
LogUtil.error("S1_24_Ready 未得到锁 ", 15);
}
}
......
......@@ -55,7 +55,7 @@ namespace OnlineStore.DeviceLibrary
CurrTray = new TrayInfo();
}
public bool CanChange(string currShelf)
public bool CanChange(string currShelf)
{
if (CurrTray != null)
{
......@@ -63,14 +63,17 @@ namespace OnlineStore.DeviceLibrary
if (span.TotalSeconds > 5)
{
return true;
}else if (!CurrTray.realRFID.Equals(currShelf))
}
else if (!CurrTray.realRFID.Equals(currShelf))
{
return true;
}else if(span.TotalSeconds>2&& IOManager.IOValue(DI_TrayCheck).Equals(IO_VALUE.LOW))
}
else if (span.TotalSeconds > 2 && IOManager.IOValue(DI_TrayCheck).Equals(IO_VALUE.LOW))
{
return true;
}
}else if (IOManager.IOValue(DI_TrayCheck).Equals(IO_VALUE.LOW))
}
else if (IOManager.IOValue(DI_TrayCheck).Equals(IO_VALUE.LOW))
{
return true;
}
......@@ -97,9 +100,9 @@ namespace OnlineStore.DeviceLibrary
NeedShelf = "";
MoveInfo.EndMove();
}
// private Stopwatch DiStop = new Stopwatch();
// private Stopwatch DiStop = new Stopwatch();
private Stopwatch abbWatch = new Stopwatch();
private string lockTimer = "";
private object lockTimer = new object();
internal void TimerProcess()
{
if (Monitor.TryEnter(lockTimer, 1))
......@@ -130,8 +133,7 @@ namespace OnlineStore.DeviceLibrary
// DiStop.Stop();
return;
}
// else if (LineManager.checkWatch(DiStop, 500, false))
// {
else if (LineManager.Line.S1IsReady())
{
string outMsg = "";
......@@ -165,7 +167,7 @@ namespace OnlineStore.DeviceLibrary
//获取成功,开始放料
MoveInfo.NewMove(LineMoveType.PutTray, MoveStep.T01_GetTray);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(100));
LogUtil.info(Name + MoveInfo.SLog + "开始料【" + CurrPoint + "】" + CurrTray.ToStr() + "");
LogUtil.info(Name + MoveInfo.SLog + "开始料【" + CurrPoint + "】" + CurrTray.ToStr() + "");
ABBControl.SendCmd(RobotIp, ABBControl.Cmd_moveget, CurrTray.getP, "L", ABBControl.DefaultSpeed);
}
......@@ -244,7 +246,7 @@ namespace OnlineStore.DeviceLibrary
MoveInfo.NextMoveStep(MoveStep.T04_WaitEnd);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(10000));
LineManager.Line.S1_ShelfTask = HttpServer.ShelfFinish(CurrTray.realRFID, CurrTray.barcode, CurrTray.shelfP.ToString(), robotNum.ToString());
EndMove();
EndMove();
}
else if (MoveInfo.IsTimeOut(180))
{
......@@ -266,7 +268,7 @@ namespace OnlineStore.DeviceLibrary
{
EndMove();
}
}
}
private void EndMove()
{
LogUtil.info(Name + MoveInfo.SLog + "【" + CurrPoint + "】结束放料 " + DateTime.Now.ToLongTimeString() + "");
......@@ -296,8 +298,8 @@ namespace OnlineStore.DeviceLibrary
{
NeedRfid = CurrTray.rfid;
//料架号=00,不放料
if (currRfid.EndsWith("00"))
//料架号=000,不放料
if (!currRfid.StartsWith("D")&& !currRfid.StartsWith("C"))
{
return false;
}
......@@ -320,7 +322,7 @@ namespace OnlineStore.DeviceLibrary
}
}
//当前是第一盘料,使用虚拟料架号
string needType = CurrTray.rfid.Substring(CurrTray.rfid.Length - 1, 1);
string currType = currRfid.Substring(0, 1);
......@@ -357,7 +359,7 @@ namespace OnlineStore.DeviceLibrary
if (String.IsNullOrEmpty(CurrTray.getP).Equals(false))
{
info += ", " + CurrTray.ToStr() + " ";
}
}
return info;
}
}
......
......@@ -30,6 +30,7 @@ namespace OnlineStore.DeviceLibrary
{
NONE,
READ_RFID,
WAIT_AGV,
/// <summary>
/// 等待到达提升机
/// </summary>
......@@ -38,7 +39,6 @@ namespace OnlineStore.DeviceLibrary
/// 料架流出
/// </summary>
SHELT_OUT,
WAIT_AGV,
}
public StepInfo<BenQ_IN_STEP> benQInStepLeft = new StepInfo<BenQ_IN_STEP>(BenQ_IN_STEP.NONE);
......
......@@ -84,14 +84,22 @@ namespace OnlineStore.DeviceLibrary
benQInFromOutStep.AddIoWait(IO_Type.R_RightStopCheck, IO_VALUE.HIGH);
IOMove(IO_Type.R_OutLineBackRun, IO_VALUE.HIGH);
}
//else if(hasShelfRight && !noShelfLeft && chainNoRun)//提升机上有料架,送入处理
//{
// CheckAndMove(IO_Type.R_LeftStopCylinder, IO_VALUE.LOW);
// benQInFromOutStep.ToNextStep(BenQ_IN_FROM_OUT_STEP.SHELF_TO_UPDOWN);
// benQInFromOutStep.Msg = "检测到右侧提升机有料架,提升机上升";
// benQInFromOutStep.AddIoWait(IO_Type.R_LeftStopCheck, IO_VALUE.HIGH);
// benQInFromOutStep.AddIoWait(IO_Type.R_RightStopCheck, IO_VALUE.HIGH);
//}
else if (hasShelfRight && !noShelfLeft && benQOutStep.GetCurStep() <= BenQ_OUT_STEP.WAIT_AGV && chainNoRun)//准备送满料,但提升机上有架子
{
CheckAndMove(IO_Type.R_LeftStopCylinder, IO_VALUE.LOW);
benQInFromOutStep.ToNextStep(BenQ_IN_FROM_OUT_STEP.SHELF_TO_UPDOWN);
benQInFromOutStep.Msg = "检测到右侧提升机有料架[准备送满料],提升机上升";
benQInFromOutStep.AddIoWait(IO_Type.R_LeftStopCheck, IO_VALUE.HIGH);
benQInFromOutStep.AddIoWait(IO_Type.R_RightStopCheck, IO_VALUE.HIGH);
}
else if (hasShelfRight && !noShelfLeft && chainNoRun)
{
CheckAndMove(IO_Type.R_LeftStopCylinder, IO_VALUE.LOW);
benQInFromOutStep.ToNextStep(BenQ_IN_FROM_OUT_STEP.SHELF_TO_UPDOWN);
benQInFromOutStep.Msg = "检测到右侧提升机有料架[无满料出],提升机上升";
benQInFromOutStep.AddIoWait(IO_Type.R_LeftStopCheck, IO_VALUE.HIGH);
benQInFromOutStep.AddIoWait(IO_Type.R_RightStopCheck, IO_VALUE.HIGH);
}
}
else
{
......@@ -168,14 +176,13 @@ namespace OnlineStore.DeviceLibrary
bool shelfUp = IOValue(IO_Type.R_Updown_Up).Equals(IO_VALUE.HIGH);
if (!shelfUp)
return;
if (!rHBuffTransStep.IsStep(RBUFF_TRANVERSE_STEP.NONE))
return;
if (benQInFromOutStep.IsFinished())//提升机到达上层
{
benQInFromOutStep.ToNextStep(BenQ_IN_FROM_OUT_STEP.SHELF_ENTER);
benQInFromOutStep.Msg = "料架到达右侧提升机上层,准备送出料架";
benQInFromOutStep.AddIoWait(IO_Type.R_LeftStopCheck, IO_VALUE.LOW, 5000);
benQInFromOutStep.AddIoWait(IO_Type.R_RightStopCheck, IO_VALUE.LOW, 5000);
benQInFromOutStep.AddIoWait(IO_Type.RHigh_FullCheck, IO_VALUE.HIGH, 5000);
CheckAndMove(IO_Type.RHigh_LineRun, IO_VALUE.HIGH);//右侧上层链条运行
CheckAndMove(IO_Type.R_OutLineBackRun, IO_VALUE.HIGH);
IOMove(IO_Type.R_RightStopCylinder, IO_VALUE.HIGH, 5000);
......@@ -185,7 +192,8 @@ namespace OnlineStore.DeviceLibrary
}
else if (benQInFromOutStep.IsStep(BenQ_IN_FROM_OUT_STEP.SHELF_ENTER))
{
bool noShelf = IOManager.IOValue(IO_Type.R_LeftStopCheck).Equals(IO_VALUE.LOW) && IOManager.IOValue(IO_Type.R_RightStopCheck).Equals(IO_VALUE.LOW);
bool noShelf = IOManager.IOValue(IO_Type.R_LeftStopCheck).Equals(IO_VALUE.LOW) &&
IOManager.IOValue(IO_Type.R_RightStopCheck).Equals(IO_VALUE.LOW) && IOManager.IOValue(IO_Type.RHigh_FullCheck).Equals(IO_VALUE.HIGH);
if (noShelf && benQInFromOutStep.IsFinished())//料盘进入完成
{
IOMove(IO_Type.R_RightStopCylinder, IO_VALUE.LOW);
......@@ -200,6 +208,7 @@ namespace OnlineStore.DeviceLibrary
}
else
{
KeepLineRun(IO_Type.RHigh_LineRun);
CheckAndMove(IO_Type.R_RightStopCylinder, IO_VALUE.HIGH);
CheckAndMove(IO_Type.R_LeftStopCylinder, IO_VALUE.HIGH);
}
......@@ -210,8 +219,8 @@ namespace OnlineStore.DeviceLibrary
{
benQInFromOutStep.ToNextStep(BenQ_IN_FROM_OUT_STEP.WAIT_SHELF_TO_READY_POS);
benQInFromOutStep.Msg = "BenQ AGV 在右侧提升机将料架送入上层平台完成";
benQInFromOutStep.AddIoWait(IO_Type.RHigh_StopCheck1, IO_VALUE.HIGH);
benQInFromOutStep.AddTimeWait(10000);
benQInFromOutStep.AddIoWait(IO_Type.RHigh_StopCheck1, IO_VALUE.HIGH);
benQInFromOutStep.AddTimeWait(60000);
}
}
else if (benQInFromOutStep.IsStep(BenQ_IN_FROM_OUT_STEP.WAIT_SHELF_TO_READY_POS))
......
......@@ -51,7 +51,6 @@
<conversionPattern value="[%date][%t]%-5p %m%n" />
</layout>
</appender>
<logger name="RollingLogFileAppender">
<level value="Info" />
<appender-ref ref="RollingLogFileAppender" />
......@@ -60,10 +59,10 @@
<level value="Error" />
<appender-ref ref="TheRFID" />
</logger>
<!--<root>
<root name="RollingLogFileAppender">
<level value="Info" />
<appender-ref ref="RollingLogFileAppender" />
</root>-->
</root>
</log4net>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!