Commit 55fab928 LN

送出料架需要等待agvReady

1 个父辈 810fa969
...@@ -62,6 +62,11 @@ namespace OnlineStore.DeviceLibrary ...@@ -62,6 +62,11 @@ namespace OnlineStore.DeviceLibrary
wait.IsEnd = IOValue(wait.IoType).Equals(wait.IoValue); wait.IsEnd = IOValue(wait.IoType).Equals(wait.IoValue);
int timeOutMs = Config.IOSingle_TimerOut; int timeOutMs = Config.IOSingle_TimerOut;
if (MoveInfo.MoveStep.Equals(StoreMoveStep.BS_07_WaitInLineSingle)||
MoveInfo.MoveStep.Equals(StoreMoveStep.BI_04_WaitTakeSingle))
{
timeOutMs = 30000;
}
if ((!wait.IsEnd) && span.TotalMilliseconds > timeOutMs && NoAlarm()) if ((!wait.IsEnd) && span.TotalMilliseconds > timeOutMs && NoAlarm())
{ {
ConfigIO io = Config.getWaitIO(wait.IoType); ConfigIO io = Config.getWaitIO(wait.IoType);
...@@ -111,7 +116,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -111,7 +116,7 @@ namespace OnlineStore.DeviceLibrary
if (!wait.IsEnd && span.TotalSeconds > 10) if (!wait.IsEnd && span.TotalSeconds > 10)
{ {
//如果是等待AGV到达,等待有料架信号也算结束 //如果是等待AGV到达,等待有料架信号也算结束
if (wait.AgvAction.Equals((int)ClientAction.Arrive) && MoveInfo.MoveStep.Equals(StoreMoveStep.BI_01_ReadyShelf)) if (wait.AgvAction.Equals((int)ClientAction.Arrive) && MoveInfo.MoveStep.Equals(StoreMoveStep.BI_00_ReadyShelf))
{ {
if (IOValue(IO_Type.LineTake_Check).Equals(IO_VALUE.HIGH)) if (IOValue(IO_Type.LineTake_Check).Equals(IO_VALUE.HIGH))
{ {
...@@ -124,14 +129,14 @@ namespace OnlineStore.DeviceLibrary ...@@ -124,14 +129,14 @@ namespace OnlineStore.DeviceLibrary
wait.IsEnd = true; wait.IsEnd = true;
} }
} }
else if (wait.AgvAction.Equals((int)ClientAction.FinishLeave)) //else if (wait.AgvAction.Equals((int)ClientAction.FinishLeave))
{ //{
if (IOValue(IO_Type.LineTake_Check).Equals(IO_VALUE.LOW) && IOValue(IO_Type.LineIn_Check).Equals(IO_VALUE.LOW)) // if (IOValue(IO_Type.LineTake_Check).Equals(IO_VALUE.LOW) && IOValue(IO_Type.LineIn_Check).Equals(IO_VALUE.LOW))
{ // {
LogInfo("等待agv离开FinishOut,检测到 LineTake_Check和LineIn_Check都没有信号,结束等待"); // LogInfo("等待agv离开FinishOut,检测到 LineTake_Check和LineIn_Check都没有信号,结束等待");
wait.IsEnd = true; // wait.IsEnd = true;
} // }
} //}
} }
} }
if (wait.IsEnd) if (wait.IsEnd)
...@@ -252,7 +257,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -252,7 +257,7 @@ namespace OnlineStore.DeviceLibrary
MoveInfo.NewMove(StoreMoveType.InStore, new InOutParam()); MoveInfo.NewMove(StoreMoveType.InStore, new InOutParam());
MoveInfo.MoveParam.MoveP = new LineMoveP(Config); MoveInfo.MoveParam.MoveP = new LineMoveP(Config);
MoveInfo.ShelfPositionList = new List<string>(ShelfPosList); MoveInfo.ShelfPositionList = new List<string>(ShelfPosList);
MoveInfo.NextMoveStep(StoreMoveStep.BI_02_DoorOpen); MoveInfo.NextMoveStep(StoreMoveStep.BI_01_DoorOpen);
LogInfo(" 空闲中,检测到入料口有料架,启动料架入库 " + MoveInfo.SLog + ""); LogInfo(" 空闲中,检测到入料口有料架,启动料架入库 " + MoveInfo.SLog + "");
// CylinderMove(MoveInfo, IO_Type.EntranceDoor_Close, IO_Type.EntranceDoor_Open); // CylinderMove(MoveInfo, IO_Type.EntranceDoor_Close, IO_Type.EntranceDoor_Open);
// DoorBean.StartOpen(MoveInfo); // DoorBean.StartOpen(MoveInfo);
...@@ -272,7 +277,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -272,7 +277,7 @@ namespace OnlineStore.DeviceLibrary
MoveInfo.NewMove(StoreMoveType.InStore, new InOutParam()); MoveInfo.NewMove(StoreMoveType.InStore, new InOutParam());
MoveInfo.MoveParam.MoveP = new LineMoveP(Config); MoveInfo.MoveParam.MoveP = new LineMoveP(Config);
MoveInfo.ShelfPositionList = new List<string>(ShelfPosList); MoveInfo.ShelfPositionList = new List<string>(ShelfPosList);
MoveInfo.NextMoveStep(StoreMoveStep.BI_02_DoorOpen); MoveInfo.NextMoveStep(StoreMoveStep.BI_01_DoorOpen);
DoorBean.StartOpen(MoveInfo); DoorBean.StartOpen(MoveInfo);
} }
...@@ -735,7 +740,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -735,7 +740,7 @@ namespace OnlineStore.DeviceLibrary
//当前无料架,或料架位置为空 //当前无料架,或料架位置为空
if ((IOValue(IO_Type.LineTake_Check).Equals(IO_VALUE.LOW) && MoveInfo.MoveParam.NeedEnterShelf) || MoveInfo.MoveParam.ShelfPosID.Equals("")) if ((IOValue(IO_Type.LineTake_Check).Equals(IO_VALUE.LOW) && MoveInfo.MoveParam.NeedEnterShelf) || MoveInfo.MoveParam.ShelfPosID.Equals(""))
{ {
MoveInfo.NextMoveStep(StoreMoveStep.BI_01_ReadyShelf); MoveInfo.NextMoveStep(StoreMoveStep.BI_00_ReadyShelf);
InOutStoreLog("出库 " + MoveInfo.SLog + ": 通知agv调度准备带料架的agv,等待agv到达或检测到料架信号,进出轴到P1"); InOutStoreLog("出库 " + MoveInfo.SLog + ": 通知agv调度准备带料架的agv,等待agv到达或检测到料架信号,进出轴到P1");
InOutBackToP1(MoveInfo.MoveParam.MoveP.InOut_P1); InOutBackToP1(MoveInfo.MoveParam.MoveP.InOut_P1);
//需要先叫agv到达 //需要先叫agv到达
......
...@@ -17,7 +17,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -17,7 +17,7 @@ namespace OnlineStore.DeviceLibrary
private void BI_04_WaitTakeSingle(string moveName) private void BI_04_WaitTakeSingle(string moveName)
{ {
MoveInfo.NextMoveStep(StoreMoveStep.BI_04_WaitTakeSingle); MoveInfo.NextMoveStep(StoreMoveStep.BI_04_WaitTakeSingle);
InOutStoreLog(moveName + MoveInfo.SLog + " 线体正转,等待LineIn_Check=Low, 信号LineTake_Check=High"); InOutStoreLog(moveName + MoveInfo.SLog + " 线体正转,等待LineIn_Check=Low, 信号LineTake_Check=High");
LineRun(); LineRun();
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LineIn_Check, IO_VALUE.LOW)); MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LineIn_Check, IO_VALUE.LOW));
...@@ -32,7 +32,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -32,7 +32,7 @@ namespace OnlineStore.DeviceLibrary
instoreShelf = false; instoreShelf = false;
moveName = "空料架进入"; moveName = "空料架进入";
} }
if (MoveInfo.MoveStep.Equals(StoreMoveStep.BI_01_ReadyShelf)) if (MoveInfo.MoveStep.Equals(StoreMoveStep.BI_00_ReadyShelf))
{ {
if (IOValue(IO_Type.LineIn_Check).Equals(IO_VALUE.HIGH)) if (IOValue(IO_Type.LineIn_Check).Equals(IO_VALUE.HIGH))
{ {
...@@ -46,12 +46,16 @@ namespace OnlineStore.DeviceLibrary ...@@ -46,12 +46,16 @@ namespace OnlineStore.DeviceLibrary
{ {
// MoveInfo.ShelfPositionList = new List<string>(ShelfPosList); // MoveInfo.ShelfPositionList = new List<string>(ShelfPosList);
InOutStoreLog(moveName + MoveInfo.SLog + " agv已到达,打开入料口移门"); InOutStoreLog(moveName + MoveInfo.SLog + " agv已到达,打开入料口移门");
MoveInfo.NextMoveStep(StoreMoveStep.BI_02_DoorOpen); MoveInfo.NextMoveStep(StoreMoveStep.BI_01_DoorOpen);
DoorBean.StartOpen(MoveInfo); DoorBean.StartOpen(MoveInfo);
} }
} }
else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BI_02_DoorOpen)) else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BI_01_DoorOpen))
{ {
//}
//else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BI_02_WaitReady))
//{
MoveInfo.NextMoveStep(StoreMoveStep.BI_03_LineRun); MoveInfo.NextMoveStep(StoreMoveStep.BI_03_LineRun);
InOutStoreLog(moveName + MoveInfo.SLog + "调用AgvClient.MayEnter,线体正转,等待LineIn_Check信号"); InOutStoreLog(moveName + MoveInfo.SLog + "调用AgvClient.MayEnter,线体正转,等待LineIn_Check信号");
AgvClient.SetStatus(Config.AgvNodeName,"","",ClientAction.MayEnter,ClientLevel.High); AgvClient.SetStatus(Config.AgvNodeName,"","",ClientAction.MayEnter,ClientLevel.High);
...@@ -108,9 +112,9 @@ namespace OnlineStore.DeviceLibrary ...@@ -108,9 +112,9 @@ namespace OnlineStore.DeviceLibrary
else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BI_06_DoorClose)) else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BI_06_DoorClose))
{ {
MoveInfo.NextMoveStep(StoreMoveStep.BI_07_LineRun); MoveInfo.NextMoveStep(StoreMoveStep.BI_07_LineRun);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(7000));
InOutStoreLog(moveName + MoveInfo.SLog + "继续转动 7000"); InOutStoreLog(moveName + MoveInfo.SLog + "继续转动 7000");
LineRun(); LineRun();
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(7000));
} }
else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BI_07_LineRun)) else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BI_07_LineRun))
{ {
...@@ -195,9 +199,10 @@ namespace OnlineStore.DeviceLibrary ...@@ -195,9 +199,10 @@ namespace OnlineStore.DeviceLibrary
else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BS_02_LocatinDown)) else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BS_02_LocatinDown))
{ {
MoveInfo.NextMoveStep(StoreMoveStep.BS_03_WaitArrive); MoveInfo.NextMoveStep(StoreMoveStep.BS_03_WaitArrive);
MoveInfo.TimeOutSeconds = 180;
MoveInfo.OneWaitCanEndStep = true; MoveInfo.OneWaitCanEndStep = true;
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(180000)); MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(180000));
InOutStoreLog(moveName + MoveInfo.SLog + ":再次调用 NeedLeave["+CurrShelfID+"],等待Agv到达 ,最多等待180000"); InOutStoreLog(moveName + MoveInfo.SLog + ":再次调用 NeedLeave["+CurrShelfID+ "],等待Agv " + Config.AgvNodeName + " Arrive ,最多等待180000");
AgvClient.SetStatus(Config.AgvNodeName, "", CurrShelfID, ClientAction.NeedLeave, ClientLevel.Low); AgvClient.SetStatus(Config.AgvNodeName, "", CurrShelfID, ClientAction.NeedLeave, ClientLevel.Low);
//等待agv到达 //等待agv到达
MoveInfo.WaitList.Add(WaitResultInfo.WaitAgvAction((int)ClientAction.Arrive)); MoveInfo.WaitList.Add(WaitResultInfo.WaitAgvAction((int)ClientAction.Arrive));
...@@ -211,66 +216,69 @@ namespace OnlineStore.DeviceLibrary ...@@ -211,66 +216,69 @@ namespace OnlineStore.DeviceLibrary
MoveInfo.NextMoveStep(StoreMoveStep.BS_04_DoorOpen); MoveInfo.NextMoveStep(StoreMoveStep.BS_04_DoorOpen);
InOutStoreLog(moveName + MoveInfo.SLog + ":agv到达,打开入料口移门"); InOutStoreLog(moveName + MoveInfo.SLog + ":agv到达,打开入料口移门");
DoorBean.StartOpen(MoveInfo); DoorBean.StartOpen(MoveInfo);
//MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(500));
//InOutStoreLog(moveName + MoveInfo.SLog + ":agv到达,rfid【" + CurrShelfID + "】,调用AgvClient.MayOut,线体开始反转");
////TODO AGV到达,发送料架信息,是否需要重新读取?
//AgvClient.SetStatus(Config.AgvNodeName, "", CurrShelfID, ClientAction.MayLeave, ClientLevel.High);
//LineBackRun();
} }
else else
{ {
MoveInfo.NextMoveStep(StoreMoveStep.BS_05_LineBackRun); MoveInfo.NextMoveStep(StoreMoveStep.BS_06_LineBackRun);
//如果agv未到达,直接结束 //如果agv未到达,直接结束
MoveEndToRuningStatus(); MoveEndToRuningStatus();
EmprtShelfList = new ConcurrentQueue<string>(); EmprtShelfList = new ConcurrentQueue<string>();
InOutStoreLog(moveName + MoveInfo.SLog + ":等待agv超时,直接结束"); InOutStoreLog(moveName + MoveInfo.SLog + ":等待Agv " + Config.AgvNodeName + " Arrive超时,直接结束");
} }
} }
else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BS_04_DoorOpen)) else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BS_04_DoorOpen))
{ {
MoveInfo.NextMoveStep(StoreMoveStep.BS_05_LineBackRun); MoveInfo.NextMoveStep(StoreMoveStep.BS_05_WaitReady);
MoveInfo.TimeOutSeconds = 120;
InOutStoreLog(moveName + MoveInfo.SLog + ":等待agv "+Config.AgvNodeName+" Ready");
//等待agv到达
MoveInfo.WaitList.Add(WaitResultInfo.WaitAgvAction((int)ClientAction.Ready));
}
else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BS_05_WaitReady))
{
MoveInfo.NextMoveStep(StoreMoveStep.BS_06_LineBackRun);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(500)); MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(500));
InOutStoreLog(moveName + MoveInfo.SLog + ":移门已打开,调用MayLeave[" + CurrShelfID + "] ,线体开始反转"); InOutStoreLog(moveName + MoveInfo.SLog + ":agv " + Config.AgvNodeName + " Ready,调用MayLeave[" + CurrShelfID + "] ,线体开始反转");
//TODO AGV到达,发送料架信息,是否需要重新读取? //TODO AGV到达,发送料架信息,是否需要重新读取?
AgvClient.SetStatus(Config.AgvNodeName, "", CurrShelfID, ClientAction.MayLeave, ClientLevel.High); AgvClient.SetStatus(Config.AgvNodeName, "", CurrShelfID, ClientAction.MayLeave, ClientLevel.High);
LineBackRun(); LineBackRun();
} }
else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BS_05_LineBackRun)) else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BS_06_LineBackRun))
{ {
MoveInfo.NextMoveStep(StoreMoveStep.BS_06_WaitInLineSingle); MoveInfo.NextMoveStep(StoreMoveStep.BS_07_WaitInLineSingle);
InOutStoreLog(moveName + MoveInfo.SLog + ":等待取料工位无信号,入料口有信号"); InOutStoreLog(moveName + MoveInfo.SLog + ":等待取料工位无信号,入料口有信号");
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LineTake_Check, IO_VALUE.LOW)); MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LineTake_Check, IO_VALUE.LOW));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LineIn_Check, IO_VALUE.HIGH)); MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LineIn_Check, IO_VALUE.HIGH));
} }
else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BS_06_WaitInLineSingle)) else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BS_07_WaitInLineSingle))
{ {
MoveInfo.NextMoveStep(StoreMoveStep.BS_07_WaitTime); MoveInfo.NextMoveStep(StoreMoveStep.BS_08_WaitTime);
InOutStoreLog(moveName + MoveInfo.SLog + ":再转动3000时间, 等待入料口无信号"); InOutStoreLog(moveName + MoveInfo.SLog + ":再转动3000时间, 等待入料口无信号");
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(3000)); MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(3000));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LineIn_Check, IO_VALUE.LOW)); MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LineIn_Check, IO_VALUE.LOW));
//等到agv离开 //等到agv离开
//MoveInfo.WaitList.Add(WaitResultInfo.WaitAgvAction(AGVAction.FinishOut)); //MoveInfo.WaitList.Add(WaitResultInfo.WaitAgvAction(AGVAction.FinishOut));
} }
else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BS_07_WaitTime)) else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BS_08_WaitTime))
{ {
MoveInfo.NextMoveStep(StoreMoveStep.BS_08_WaitAGVLeave); MoveInfo.NextMoveStep(StoreMoveStep.BS_09_WaitAGVLeave);
InOutStoreLog(moveName + MoveInfo.SLog + ":同时等待 AGV离开,最多等待5000 "); InOutStoreLog(moveName + MoveInfo.SLog + ":同时等待 AGV离开,最多等待5000 ");
MoveInfo.OneWaitCanEndStep = true; MoveInfo.OneWaitCanEndStep = true;
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(5000)); MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(5000));
//MoveInfo.WaitList.Add(WaitResultInfo.WaitAgvAction(action.FinishOut)); //MoveInfo.WaitList.Add(WaitResultInfo.WaitAgvAction(action.FinishOut));
} }
else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BS_08_WaitAGVLeave)) else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BS_09_WaitAGVLeave))
{ {
MoveInfo.NextMoveStep(StoreMoveStep.BS_09_CloseDoor); MoveInfo.NextMoveStep(StoreMoveStep.BS_10_CloseDoor);
InOutStoreLog(moveName + MoveInfo.SLog + ":停止线体转动,关闭仓门 ,发送FinishLeave ,等待最少5000"); InOutStoreLog(moveName + MoveInfo.SLog + ":停止线体转动,关闭仓门 ,发送FinishLeave ,等待最少5000");
AgvClient.SetStatus(Config.AgvNodeName, "", CurrShelfID, ClientAction.FinishLeave, ClientLevel.High); AgvClient.SetStatus(Config.AgvNodeName, "", CurrShelfID, ClientAction.FinishLeave, ClientLevel.High);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(5000)); MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(5000));
LineStop(); LineStop();
DoorBean.StartClose(MoveInfo); DoorBean.StartClose(MoveInfo);
} }
else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BS_09_CloseDoor)) else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BS_10_CloseDoor))
{ {
//结束 //结束
MoveEndToRuningStatus(); MoveEndToRuningStatus();
......
...@@ -166,12 +166,15 @@ namespace OnlineStore.DeviceLibrary ...@@ -166,12 +166,15 @@ namespace OnlineStore.DeviceLibrary
/// <summary> /// <summary>
/// 通知agv准备带料架agv /// 通知agv准备带料架agv
/// </summary> /// </summary>
BI_01_ReadyShelf = 1001, BI_00_ReadyShelf = 1000,
/// <summary> /// <summary>
/// 料架入库:入料口移门打开 /// 料架入库:入料口移门打开
/// </summary> /// </summary>
BI_02_DoorOpen = 1002, BI_01_DoorOpen = 1001,
/// <summary>
/// 料架入库:等待agvReady
/// </summary>
BI_02_WaitReady=1002,
/// <summary> /// <summary>
/// 料架入库:线体正转,等待入料口检测到信号 /// 料架入库:线体正转,等待入料口检测到信号
/// </summary> /// </summary>
...@@ -431,37 +434,29 @@ namespace OnlineStore.DeviceLibrary ...@@ -431,37 +434,29 @@ namespace OnlineStore.DeviceLibrary
/// </summary> /// </summary>
BS_04_DoorOpen = 4004, BS_04_DoorOpen = 4004,
/// <summary> /// <summary>
/// 送出空料架:等待agvReady
/// </summary>
BS_05_WaitReady=4005,
/// <summary>
/// 送出空料架:线体反转 /// 送出空料架:线体反转
/// </summary> /// </summary>
BS_05_LineBackRun = 4005, BS_06_LineBackRun = 4006,
/// <summary> /// <summary>
/// 送出空料架:等待取料工位无信号,入料口有信号 /// 送出空料架:等待取料工位无信号,入料口有信号
/// </summary> /// </summary>
BS_06_WaitInLineSingle = 4006, BS_07_WaitInLineSingle = 4007,
/// <summary> /// <summary>
/// 送出空料架:再转动3000时间 /// 送出空料架:再转动3000时间
/// </summary> /// </summary>
BS_07_WaitTime = 4007, BS_08_WaitTime = 4008,
/// <summary> /// <summary>
/// 送出空料架:等待AGV离开后关闭仓门 /// 送出空料架:等待AGV离开后关闭仓门
/// </summary> /// </summary>
BS_08_WaitAGVLeave = 4008, BS_09_WaitAGVLeave = 4009,
/// <summary> /// <summary>
/// 送出空料架:关闭仓门 /// 送出空料架:关闭仓门
/// </summary> /// </summary>
BS_09_CloseDoor = 4009, BS_10_CloseDoor = 4010,
///// <summary>
///// 送出空料架:停止转动
///// </summary>
//BS_07_LineStop= 4007,
///// <summary>
///// 送出空料架:通知调度系统拿走
///// </summary>
//BS_08_CallAGV = 4008,
///// <summary>
///// 送出空料架:关闭仓门
///// </summary>
//BS_09_CloseDoor= 4009,
#endregion #endregion
} }
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!