Commit 810fa969 LN

agv命令修改

1 个父辈 ccb39bb3
此文件类型无法预览
......@@ -87,7 +87,7 @@ namespace OnlineStore.ACPackingStore
{
if (StoreManager.Store.storeRunStatus <= StoreRunStatus.Wait)
{
RFIDManager.Close();
// RFIDManager.Close();
}
}
}
......
......@@ -321,6 +321,8 @@ namespace OnlineStore.ACPackingStore
{
停止所有料仓TToolStripMenuItem_Click(null, null);
}
RFIDManager.Close();
}
private void btnClearLog_Click(object sender, EventArgs e)
{
......
......@@ -680,21 +680,20 @@ namespace OnlineStore.DeviceLibrary
ShowTimeLog("IOTimeOutProcess");
//如果入口有料架需要入库
if (StoreManager.Store.AutoShelfInstore&&
if (StoreManager.Store.AutoShelfInstore &&
MoveInfo.MoveType.Equals(StoreMoveType.None) &&
(IOValue(IO_Type.LineIn_Check).Equals(IO_VALUE.HIGH) || IOValue(IO_Type.LineTake_Check).Equals(IO_VALUE.HIGH)))
{
StartShelfInStore();
}
//判断是否要更新状态为None
ClientAction action = AgvClient.GetAction(Config.AgvNodeName);
if (action.Equals(ClientAction.FinishEnter) || action.Equals(ClientAction.FinishLeave))
if (IOValue(IO_Type.LineIn_Check).Equals(IO_VALUE.LOW) && IOValue(IO_Type.LineTake_Check).Equals(IO_VALUE.LOW))
{
AgvClient.SetStatus(Config.AgvNodeName);
AgvClient.NeedEnter(Config.AgvNodeName);
}
else if(IOValue(IO_Type.LineIn_Check).Equals(IO_VALUE.LOW)&&IOValue(IO_Type.LineTake_Check).Equals(IO_VALUE.LOW))
else
{
AgvClient.NeedEnter(Config.AgvNodeName);
AgvClient.SetToNone(Config.AgvNodeName);
}
}
}
......
......@@ -282,13 +282,8 @@ namespace OnlineStore.DeviceLibrary
{
//读取RFID
RFIDData data = RFIDManager.ReadRFID(Config.RFID_IP, true);
LogUtil.info(Name + "更新当前料架号【" + data.NumStr() + "】");
//TODO 判断料架是否正确
// if (data.RFType.Equals('A'))
{
CurrShelfID = data.NumStr();
AgvClient.SetStatus(Config.AgvNodeName,"", CurrShelfID,ClientAction.FinishEnter);
}
LogUtil.info(Name + "更新当前料架号【" + data.NumStr() + "】");
CurrShelfID = data.NumStr();
}
private void StartMoveToBag()
......
......@@ -45,7 +45,7 @@ namespace OnlineStore.DeviceLibrary
else
{
// MoveInfo.ShelfPositionList = new List<string>(ShelfPosList);
InOutStoreLog(moveName + MoveInfo.SLog + "调用AgvClient.MayEnter,agv已到达,打开入料口移门");
InOutStoreLog(moveName + MoveInfo.SLog + " agv已到达,打开入料口移门");
MoveInfo.NextMoveStep(StoreMoveStep.BI_02_DoorOpen);
DoorBean.StartOpen(MoveInfo);
}
......@@ -95,9 +95,7 @@ namespace OnlineStore.DeviceLibrary
else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BI_05_LineStop))
{
MoveInfo.NextMoveStep(StoreMoveStep.BI_06_DoorClose);
InOutStoreLog(moveName + MoveInfo.SLog + "入料口移门关闭 ,发送 FinishEnter");
AgvClient.SetStatus(Config.AgvNodeName, "", "", ClientAction.FinishEnter, ClientLevel.High);
// CylinderMove(MoveInfo, IO_Type.EntranceDoor_Open, IO_Type.EntranceDoor_Close);
InOutStoreLog(moveName + MoveInfo.SLog + "入料口移门关闭 ");
DoorBean.StartClose(MoveInfo);
if (!instoreShelf)
{
......@@ -118,7 +116,8 @@ namespace OnlineStore.DeviceLibrary
{
LineStop();
MoveInfo.NextMoveStep(StoreMoveStep.BI_08_LocationUp);
InOutStoreLog(moveName + MoveInfo.SLog + "线体停止转动,定位装置上升,读取料架编号");
InOutStoreLog(moveName + MoveInfo.SLog + "线体停止转动,定位装置上升,读取料架编号,设置状态为None");
AgvClient.SetStatus(Config.AgvNodeName);
// CylinderMove(MoveInfo, IO_Type.LocationCylinder_Down, IO_Type.LocationCylinder_Up);
UpdateShelfId();
if (!instoreShelf)
......@@ -167,22 +166,23 @@ namespace OnlineStore.DeviceLibrary
MoveInfo.NextMoveStep(StoreMoveStep.BS_01_TopDown);
if (MoveInfo.MoveType.Equals(StoreMoveType.OutStore))
{
InOutStoreLog("送出出库料架:顶升气缸下降,清空料架clearPutInRfid[" + CurrShelfID + "]");
InOutStoreLog("送出出库料架:顶升气缸下降,调用 NeedLeave[" + CurrShelfID + "],清空料架clearPutInRfid[" + CurrShelfID + "]");
}
else
{
InOutStoreLog("送出空料架:顶升气缸下降,清空料架clearPutInRfid[" + CurrShelfID + "]");
InOutStoreLog("送出空料架:顶升气缸下降,调用 NeedLeave[" + CurrShelfID + "],清空料架clearPutInRfid[" + CurrShelfID + "]");
}
CylinderMove(MoveInfo, IO_Type.TopCylinder_Up, IO_Type.TopCylinder_Down);
StoreManager.clearPutInRfid(Name, CurrShelfID);
AgvClient.NeedLeave(Config.AgvNodeName, CurrShelfID);
}
private void ShelfOutProcess()
{
string moveName = "送出空料架";
bool instoreShelf = true;
//bool instoreShelf = true;
if (MoveInfo.MoveType.Equals(StoreMoveType.OutStore))
{
instoreShelf = false;
// instoreShelf = false;
moveName = "送出出库料架";
}
......@@ -193,50 +193,49 @@ namespace OnlineStore.DeviceLibrary
// CylinderMove(MoveInfo, IO_Type.LocationCylinder_Up, IO_Type.LocationCylinder_Down);
}
else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BS_02_LocatinDown))
{
MoveInfo.NextMoveStep(StoreMoveStep.BS_03_DoorOpen);
InOutStoreLog(moveName + MoveInfo.SLog + ":打开入料口移门");
DoorBean.StartOpen(MoveInfo);
}
else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BS_03_DoorOpen))
{
MoveInfo.NextMoveStep(StoreMoveStep.BS_04_ReadyEmpty);
{
MoveInfo.NextMoveStep(StoreMoveStep.BS_03_WaitArrive);
MoveInfo.OneWaitCanEndStep = true;
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(60000));
InOutStoreLog(moveName + MoveInfo.SLog + ":调用AgvClient.ReadyEmpty,等待Agv到达 ,最多等待60000");
AgvClient.NeedLeave(Config.AgvNodeName, CurrShelfID);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(180000));
InOutStoreLog(moveName + MoveInfo.SLog + ":再次调用 NeedLeave["+CurrShelfID+"],等待Agv到达 ,最多等待180000");
AgvClient.SetStatus(Config.AgvNodeName, "", CurrShelfID, ClientAction.NeedLeave, ClientLevel.Low);
//等待agv到达
MoveInfo.WaitList.Add(WaitResultInfo.WaitAgvAction((int)ClientAction.Arrive));
}
else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BS_04_ReadyEmpty))
else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BS_03_WaitArrive))
{
MoveInfo.NextMoveStep(StoreMoveStep.BS_05_LineBackRun);
//agv到达
if (AgvClient.GetAction(Config.AgvNodeName).Equals(ClientAction.Arrive))
{
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(500));
if (instoreShelf)
{
InOutStoreLog(moveName + MoveInfo.SLog + ":agv到达,调用AgvClient.SendRFID【" + CurrShelfID + "】,调用AgvClient.MayOut,线体开始反转");
//TODO AGV到达,发送料架信息,是否需要重新读取?
AgvClient.SetStatus(Config.AgvNodeName, "", CurrShelfID, ClientAction.MayLeave);
}
else
{
InOutStoreLog(moveName + MoveInfo.SLog + ":agv到达, 调用AgvClient.MayOut,线体开始反转");
}
AgvClient.SetStatus(Config.AgvNodeName, "", CurrShelfID,ClientAction.MayLeave,ClientLevel.High);
LineBackRun();
MoveInfo.NextMoveStep(StoreMoveStep.BS_04_DoorOpen);
InOutStoreLog(moveName + MoveInfo.SLog + ":agv到达,打开入料口移门");
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
{
MoveInfo.NextMoveStep(StoreMoveStep.BS_05_LineBackRun);
//如果agv未到达,直接结束
MoveEndToRuningStatus();
EmprtShelfList = new ConcurrentQueue<string>();
InOutStoreLog(moveName + MoveInfo.SLog + ":等待agv超时,直接结束");
}
}
else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BS_04_DoorOpen))
{
MoveInfo.NextMoveStep(StoreMoveStep.BS_05_LineBackRun);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(500));
InOutStoreLog(moveName + MoveInfo.SLog + ":移门已打开,调用MayLeave[" + CurrShelfID + "] ,线体开始反转");
//TODO AGV到达,发送料架信息,是否需要重新读取?
AgvClient.SetStatus(Config.AgvNodeName, "", CurrShelfID, ClientAction.MayLeave, ClientLevel.High);
LineBackRun();
}
else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BS_05_LineBackRun))
{
MoveInfo.NextMoveStep(StoreMoveStep.BS_06_WaitInLineSingle);
......@@ -247,9 +246,8 @@ namespace OnlineStore.DeviceLibrary
else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BS_06_WaitInLineSingle))
{
MoveInfo.NextMoveStep(StoreMoveStep.BS_07_WaitTime);
InOutStoreLog(moveName + MoveInfo.SLog + ":再转动3000时间,同时等待收到FinishOut,等待入料口无信号");
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(3000));
InOutStoreLog(moveName + MoveInfo.SLog + ":再转动3000时间, 等待入料口无信号");
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(3000));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LineIn_Check, IO_VALUE.LOW));
//等到agv离开
//MoveInfo.WaitList.Add(WaitResultInfo.WaitAgvAction(AGVAction.FinishOut));
......@@ -257,7 +255,7 @@ namespace OnlineStore.DeviceLibrary
else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BS_07_WaitTime))
{
MoveInfo.NextMoveStep(StoreMoveStep.BS_08_WaitAGVLeave);
InOutStoreLog(moveName + MoveInfo.SLog + ":同时等待 AGV离开,最多等待5000 ");
InOutStoreLog(moveName + MoveInfo.SLog + ":同时等待 AGV离开,最多等待5000 ");
MoveInfo.OneWaitCanEndStep = true;
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(5000));
//MoveInfo.WaitList.Add(WaitResultInfo.WaitAgvAction(action.FinishOut));
......@@ -267,10 +265,10 @@ namespace OnlineStore.DeviceLibrary
{
MoveInfo.NextMoveStep(StoreMoveStep.BS_09_CloseDoor);
InOutStoreLog(moveName + MoveInfo.SLog + ":停止线体转动,关闭仓门 ,发送FinishLeave ,等待最少5000");
AgvClient.SetStatus(Config.AgvNodeName, "", CurrShelfID, ClientAction.FinishLeave, ClientLevel.High);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(5000));
LineStop();
DoorBean.StartClose(MoveInfo);
AgvClient.SetStatus(Config.AgvNodeName, "", CurrShelfID, ClientAction.FinishLeave, ClientLevel.High);
}
else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BS_09_CloseDoor))
{
......
......@@ -205,7 +205,7 @@ namespace OnlineStore.DeviceLibrary
equip.StopRun();
}
storeRunStatus = StoreRunStatus.Wait;
RFIDManager.Close();
// RFIDManager.Close();
TimeSpan span = DateTime.Now - StartTime;
LogUtil.info( Name + ",停止运行,关闭rfid,总运行时间:" + span.ToString());
}
......
......@@ -111,29 +111,13 @@ namespace OnlineStore.DeviceLibrary
public static bool NeedLeave(string id, string shelfId = "")
{
ClientAction currA = GetAction(id);
if (currA.Equals(ClientAction.None) || currA.Equals(ClientAction.NeedLeave) || currA.Equals(ClientAction.NeedEnter))
if (currA.Equals(ClientAction.None) || currA.Equals(ClientAction.NeedLeave) || currA.Equals(ClientAction.NeedEnter) || currA.Equals(ClientAction.FinishEnter)||currA.Equals(ClientAction.FinishLeave))
{
SetStatus(id, shelfId, shelfId, ClientAction.NeedLeave);
return true;
}
return false;
}
//internal static void MayEnter(string NodeName, string shelfId = "")
//{
// SetStatus(NodeName, shelfId, shelfId, ClientAction.MayEnter);
// //agvClient.MayEnter(NodeName);
//}
//internal static void FinishEnter(string NodeName, string shelfId = "")
//{
// SetStatus(NodeName, shelfId, shelfId, ClientAction.FinishEnter);
// // agvClient.FinishEnter(NodeName);
//}
//internal static void MayLeave(string NodeName, string shelfId = "")
//{
// SetStatus(NodeName, shelfId, shelfId, ClientAction.MayLeave);
// // agvClient.MayLeave(NodeName);
//}
}
private static void AgvClient_Log(string s)
{
try
......
......@@ -12,12 +12,19 @@ using System.Windows.Forms;
namespace OnlineStore.DeviceLibrary
{
public class RFIDManager
{
{
private static bool IsOpen = false;
public static void Open(string[] iparray)
{
if (IsOpen)
{
LogUtil.info("RFIDManager.Open , IsOpen = true , return ");
return;
}
Task.Factory.StartNew(delegate
{
LogUtil.info( "RFIDManager.Open");
LogUtil.info("RFIDManager.Open , set IsOpen = true");
IsOpen = true;
try
{
RFIDAutoReader.Open(null, iparray);
......@@ -66,7 +73,8 @@ namespace OnlineStore.DeviceLibrary
{
Task.Factory.StartNew(delegate
{
LogUtil.info("RFIDManager.Close");
IsOpen = false;
LogUtil.info("RFIDManager.Close ,set IsOpen= false");
try
{
RFIDAutoReader.CloseAll();
......
......@@ -144,7 +144,7 @@ namespace OnlineStore.DeviceLibrary
///BOX复位: 旋转轴返回P1
/// </summary>
BOX_H06_MiddleAxisToP1 = 016,
/// <summary>
/// BOX回待机点:叉子走到P1
/// </summary>
......@@ -161,12 +161,12 @@ namespace OnlineStore.DeviceLibrary
#region 料架进入料仓步骤 1000开始
/// <summary>
/// 通知agv准备带料架agv
/// </summary>
BI_01_ReadyShelf=1001,
BI_01_ReadyShelf = 1001,
/// <summary>
/// 料架入库:入料口移门打开
/// </summary>
......@@ -179,7 +179,7 @@ namespace OnlineStore.DeviceLibrary
/// <summary>
/// 等待取料位检测到信号
/// </summary>
BI_04_WaitTakeSingle=1004,
BI_04_WaitTakeSingle = 1004,
/// <summary>
/// 料架入库:取料位检测到信号,停止线体正转
/// </summary>
......@@ -191,7 +191,7 @@ namespace OnlineStore.DeviceLibrary
/// <summary>
/// 线体再正转1秒
/// </summary>
BI_07_LineRun=1007,
BI_07_LineRun = 1007,
/// <summary>
/// 料架入库:定位装置上升
/// </summary>
......@@ -272,10 +272,10 @@ namespace OnlineStore.DeviceLibrary
/// </summary>
SO_14_GoBack = 2044,
#endregion
#region 料架入库步骤,3000开始
/// <summary>
/// 料架入库:开始循环从第一个空位逐个取料盘,扫码入库
......@@ -359,11 +359,11 @@ namespace OnlineStore.DeviceLibrary
/// 料架取料: 获取库位号完成,设置位置参数, 准备入库
/// </summary>
BI_30_SetInstoreParam = 3030,
/// <summary>
/// 入库。。移动到库位点,旋转轴至P2( 库位点)轴2(上下) 至P3(库位入库前点)
/// </summary>
BI_51_MoveToBag = 3051,
BI_51_MoveToBag = 3051,
/// <summary>
/// 入库。。叉子进入库位中,进出轴到库位P3
/// </summary>
......@@ -384,7 +384,7 @@ namespace OnlineStore.DeviceLibrary
/// <summary>
/// 送出料盘:扫码或获取库位失败,升降轴移动到NG料门口上端,旋转轴移动到NG料门口
/// </summary>
BI_71_ToNGDoor=3071,
BI_71_ToNGDoor = 3071,
/// <summary>
/// 送出料盘:NG料口升降门上升
/// </summary>
......@@ -396,7 +396,7 @@ namespace OnlineStore.DeviceLibrary
/// <summary>
/// 送出料盘:升降轴缓慢下降,放下料盘
/// </summary>
BI_74_UpdownDown= 3074,
BI_74_UpdownDown = 3074,
/// <summary>
/// 送出料盘:叉子后退到P1
/// </summary>
......@@ -408,7 +408,7 @@ namespace OnlineStore.DeviceLibrary
/// <summary>
/// NG流水线转动指定的时间3000
/// </summary>
BI_77_NGLineRun=3078,
BI_77_NGLineRun = 3078,
#endregion
#region 把料架送出步骤 4000开始
......@@ -416,23 +416,24 @@ namespace OnlineStore.DeviceLibrary
/// <summary>
/// 送出空料架:顶升气缸下降
/// </summary>
BS_01_TopDown=4001,
BS_01_TopDown = 4001,
/// <summary>
/// 送出空料架:定位气缸下降
/// </summary>
BS_02_LocatinDown = 4002,
BS_02_LocatinDown = 4002,
/// <summary>
/// 送出空料架:打开仓门
/// 通知AGV准备空车
/// </summary>
BS_03_DoorOpen = 4003,
BS_03_WaitArrive = 4003,
/// <summary>
/// 通知AGV准备空车
/// 送出空料架:打开仓门
/// </summary>
BS_04_ReadyEmpty=4004,
BS_04_DoorOpen = 4004,
/// <summary>
/// 送出空料架:线体反转
/// </summary>
BS_05_LineBackRun= 4005,
BS_05_LineBackRun = 4005,
/// <summary>
/// 送出空料架:等待取料工位无信号,入料口有信号
/// </summary>
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!