Commit d87f6ae7 LN

出库料架切换修改

1 个父辈 50093b71
此文件类型无法预览
...@@ -215,6 +215,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -215,6 +215,7 @@ namespace OnlineStore.DeviceLibrary
private int LastWidth = 0; private int LastWidth = 0;
private int LastHeight = 0; private int LastHeight = 0;
private string CurrShelfID = ""; private string CurrShelfID = "";
private string LastRfidID = "";//服务器发送的出库rfid
#region 入库 #region 入库
private void ClearLastTrayInfo() private void ClearLastTrayInfo()
...@@ -258,6 +259,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -258,6 +259,7 @@ namespace OnlineStore.DeviceLibrary
InOutStoreLog("料架取料:" + MoveInfo.SLog + " 叉子后退到待机点P1, 重置盘信息"); InOutStoreLog("料架取料:" + MoveInfo.SLog + " 叉子后退到待机点P1, 重置盘信息");
ACAxisMove(Config.InOut_Axis, Config.InOutAxis_P1_Position, Config.InOutAxis_P1_Speed); ACAxisMove(Config.InOut_Axis, Config.InOutAxis_P1_Position, Config.InOutAxis_P1_Speed);
ClearLastTrayInfo(); ClearLastTrayInfo();
LastRfidID = "";
} }
...@@ -313,8 +315,8 @@ namespace OnlineStore.DeviceLibrary ...@@ -313,8 +315,8 @@ namespace OnlineStore.DeviceLibrary
{ {
//读取RFID //读取RFID
RFIDData data = RFIDManager.ReadRFID(Config.RFID_IP, true); RFIDData data = RFIDManager.ReadRFID(Config.RFID_IP, true);
LogUtil.info(Name + "更新当前料架号【" + data.NumStr() + "】");
CurrShelfID = data.NumStr(); CurrShelfID = data.NumStr();
LogUtil.info(Name + "更新当前料架号CurrShelfID=【" + CurrShelfID + "】,LastRfidID=【" + LastRfidID+"】");
} }
private void StartMoveToBag() private void StartMoveToBag()
...@@ -820,15 +822,16 @@ namespace OnlineStore.DeviceLibrary ...@@ -820,15 +822,16 @@ namespace OnlineStore.DeviceLibrary
if (IOValue(IO_Type.LineTake_Check).Equals(IO_VALUE.HIGH)) if (IOValue(IO_Type.LineTake_Check).Equals(IO_VALUE.HIGH))
{ {
if (IsRightShelfId(CurrShelfID, MoveInfo.MoveParam.realRfid)) // if (IsRightShelfId(CurrShelfID, MoveInfo.MoveParam.realRfid))
if (MoveInfo.MoveParam.rfid.Equals(LastRfidID))
{ {
LogUtil.error("入库,当前料架【" + CurrShelfID + "】和目标料架【" + MoveInfo.MoveParam.rfid + "," + MoveInfo.MoveParam.realRfid + "】 是同一个料架,开始取料"); LogUtil.error("出库 【" + LastRfidID + "】 【" + MoveInfo.MoveParam.rfid + "," + MoveInfo.MoveParam.realRfid + "】 同料架,开始取料");
SO_03_ToBagPosition(); SO_03_ToBagPosition();
return; return;
} }
else else
{ {
LogUtil.error("入库,当前料架【" + CurrShelfID + "】和目标料架【" + MoveInfo.MoveParam.rfid + "," + MoveInfo.MoveParam.realRfid + "】不是同一个料架,送出当前料架,稍后重新出库"); LogUtil.error("出库 【" + LastRfidID + "】 【" + MoveInfo.MoveParam.rfid + "," + MoveInfo.MoveParam.realRfid + "】不同料架,送出当前料架,稍后重新出库");
//送出料架,并且记录出库信息,等会重新出库 //送出料架,并且记录出库信息,等会重新出库
StartShelfOut(); StartShelfOut();
...@@ -846,7 +849,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -846,7 +849,7 @@ namespace OnlineStore.DeviceLibrary
InOutStoreLog("出库 " + MoveInfo.SLog + ": 通知agv调度准备带料架的agv[" + mark + "],等待agv到达或检测到料架信号,进出轴到P1"); InOutStoreLog("出库 " + MoveInfo.SLog + ": 通知agv调度准备带料架的agv[" + mark + "],等待agv到达或检测到料架信号,进出轴到P1");
InOutBackToP1(MoveInfo.MoveParam.MoveP.InOut_P1); InOutBackToP1(MoveInfo.MoveParam.MoveP.InOut_P1);
//需要先叫agv到达 //需要先叫agv到达
AgvClient.SetStatus(Config.AgvNodeName, mark,MoveInfo.MoveParam.rfid , ClientAction.NeedEnter, ClientLevel.High, true); AgvClient.SetStatus(Config.AgvNodeName, mark, MoveInfo.MoveParam.rfid, ClientAction.NeedEnter, ClientLevel.High, true);
MoveInfo.WaitList.Add(WaitResultInfo.WaitAgvAction((int)ClientAction.Arrive)); MoveInfo.WaitList.Add(WaitResultInfo.WaitAgvAction((int)ClientAction.Arrive));
} }
else else
...@@ -931,7 +934,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -931,7 +934,7 @@ namespace OnlineStore.DeviceLibrary
string msg = StoreManager.PutShelfFinished(Name, MoveInfo.MoveParam.WareCode, CurrShelfID, posLoc.ToString(), out serverShelfData); string msg = StoreManager.PutShelfFinished(Name, MoveInfo.MoveParam.WareCode, CurrShelfID, posLoc.ToString(), out serverShelfData);
if (String.IsNullOrEmpty(msg).Equals(false)) if (String.IsNullOrEmpty(msg).Equals(false))
{ {
LogUtil.error(Name + "【" + MoveInfo.MoveParam.WareCode + "】【" + CurrShelfID + "】【" + posLoc + "】PutShelfFinished 结果:" + msg); LogUtil.error(Name + "【" + MoveInfo.MoveParam.WareCode + "】【" + CurrShelfID + "】【" + posLoc + "】【"+LastRfidID+"】PutShelfFinished 结果:" + msg);
serverShelfData = null; serverShelfData = null;
} }
} }
...@@ -941,7 +944,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -941,7 +944,7 @@ namespace OnlineStore.DeviceLibrary
string msg = StoreManager.UpdateTrayLoc(Name, MoveInfo.MoveParam.WareCode, CurrShelfID + "@" + posLoc.ToString(), out newTaskCount); string msg = StoreManager.UpdateTrayLoc(Name, MoveInfo.MoveParam.WareCode, CurrShelfID + "@" + posLoc.ToString(), out newTaskCount);
if (String.IsNullOrEmpty(msg).Equals(false)) if (String.IsNullOrEmpty(msg).Equals(false))
{ {
LogUtil.error(Name + "【" + MoveInfo.MoveParam.WareCode + "】【" + CurrShelfID + "】【" + posLoc + "】UpdateTrayLoc 结果:" + msg); LogUtil.error(Name + "【" + MoveInfo.MoveParam.WareCode + "】【" + CurrShelfID + "】【" + posLoc + "】【" + LastRfidID + "】UpdateTrayLoc 结果:" + msg);
serverShelfData = null; serverShelfData = null;
} }
if (newTaskCount > MoveInfo.MoveParam.taskCount) if (newTaskCount > MoveInfo.MoveParam.taskCount)
...@@ -982,6 +985,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -982,6 +985,7 @@ namespace OnlineStore.DeviceLibrary
// InOutStoreLog("出库完成,料架【" + CurrShelfID + "】没有剩余位置,送出料架"); // InOutStoreLog("出库完成,料架【" + CurrShelfID + "】没有剩余位置,送出料架");
// isNeedSend = true; // isNeedSend = true;
//} //}
string logName = "【" + CurrShelfID + "】【" + LastRfidID + "】";
//只有rfid不为空才需要送出料架 //只有rfid不为空才需要送出料架
if (String.IsNullOrEmpty(MoveInfo.MoveParam.rfid)) if (String.IsNullOrEmpty(MoveInfo.MoveParam.rfid))
{ {
...@@ -992,18 +996,18 @@ namespace OnlineStore.DeviceLibrary ...@@ -992,18 +996,18 @@ namespace OnlineStore.DeviceLibrary
{ {
if (serverShelfData.packageEmpty <= 0) if (serverShelfData.packageEmpty <= 0)
{ {
InOutStoreLog("出库完成,料架【" + CurrShelfID + "】没有位置,packageEmpty=" + serverShelfData.packageEmpty + ",送出料架"); InOutStoreLog("出库完成,料架"+ logName + "没有位置,packageEmpty=" + serverShelfData.packageEmpty + ",送出料架");
isNeedSend = true; isNeedSend = true;
} }
else if ((serverShelfData.cutPackageTask + serverShelfData.packageTask) <= 0) else if ((serverShelfData.cutPackageTask + serverShelfData.packageTask) <= 0)
{ {
InOutStoreLog("出库完成,料架【" + CurrShelfID + "】没有出库任务,cutPackageTask=" + serverShelfData.cutPackageTask + ",packageTask=" + serverShelfData.packageTask + ",送出料架"); InOutStoreLog("出库完成,料架" + logName + "没有出库任务,cutPackageTask=" + serverShelfData.cutPackageTask + ",packageTask=" + serverShelfData.packageTask + ",送出料架");
isNeedSend = true; isNeedSend = true;
} }
} }
else if (MoveInfo.MoveParam.taskCount <=0) else if (MoveInfo.MoveParam.taskCount <=0)
{ {
InOutStoreLog("出库完成,料架【" + CurrShelfID + "】没有出库任务,taskCount=" + MoveInfo.MoveParam.taskCount + " 送出料架"); InOutStoreLog("出库完成,料架" + logName + "没有出库任务,taskCount=" + MoveInfo.MoveParam.taskCount + " 送出料架");
isNeedSend = true; isNeedSend = true;
} }
if (isNeedSend) if (isNeedSend)
...@@ -1015,14 +1019,14 @@ namespace OnlineStore.DeviceLibrary ...@@ -1015,14 +1019,14 @@ namespace OnlineStore.DeviceLibrary
TimeSpan span = DateTime.Now - startOutStoreTime; TimeSpan span = DateTime.Now - startOutStoreTime;
string posId = MoveInfo.MoveParam != null ? MoveInfo.MoveParam.PosID : ""; string posId = MoveInfo.MoveParam != null ? MoveInfo.MoveParam.PosID : "";
storeStatus = StoreStatus.StoreOnline; storeStatus = StoreStatus.StoreOnline;
LogInfo(" 【" + posId + "】 整个出库流程结束,耗时【" + FormUtil.GetSpanStr(span) + "】!"); LogInfo(" 【" + posId + "】 " + logName + " 整个出库流程结束,耗时【" + FormUtil.GetSpanStr(span) + "】!");
MoveEndToRuningStatus(); MoveEndToRuningStatus();
AutoInout.InOutEndProcess(this, StoreMoveType.OutStore); AutoInout.InOutEndProcess(this, StoreMoveType.OutStore);
if (!String.IsNullOrEmpty(MoveInfo.MoveParam.rfid)) if (!String.IsNullOrEmpty(MoveInfo.MoveParam.rfid))
{ {
if (StoreManager.Store.AutoShelfInstore) if (StoreManager.Store.AutoShelfInstore)
{ {
LogInfo(" 料架【" + CurrShelfID + "】还有出库任务,设置 AutoShelfInstore = false"); LogInfo(" 料架" + logName + "还有出库任务,设置 AutoShelfInstore = false");
ConfigAppSettings.SaveValue(Setting_Init.AutoShelfInstore, 0); ConfigAppSettings.SaveValue(Setting_Init.AutoShelfInstore, 0);
StoreManager.Store.AutoShelfInstore = false; StoreManager.Store.AutoShelfInstore = false;
} }
......
...@@ -107,12 +107,18 @@ namespace OnlineStore.DeviceLibrary ...@@ -107,12 +107,18 @@ namespace OnlineStore.DeviceLibrary
InOutStoreLog(moveName + MoveInfo.SLog + "线体停止转动,定位装置上升,读取料架编号,设置状态为None"); InOutStoreLog(moveName + MoveInfo.SLog + "线体停止转动,定位装置上升,读取料架编号,设置状态为None");
AgvClient.SetStatus(Config.AgvNodeName); AgvClient.SetStatus(Config.AgvNodeName);
// CylinderMove(MoveInfo, IO_Type.LocationCylinder_Down, IO_Type.LocationCylinder_Up); // CylinderMove(MoveInfo, IO_Type.LocationCylinder_Down, IO_Type.LocationCylinder_Up);
UpdateShelfId();
if (!instoreShelf) if (!instoreShelf)
{ {
LastRfidID = MoveInfo.MoveParam.rfid;
InOutStoreLog("出库 " + MoveInfo.SLog + ":叉子进入库位中, 进出轴至P3(库位取放料点) "); InOutStoreLog("出库 " + MoveInfo.SLog + ":叉子进入库位中, 进出轴至P3(库位取放料点) ");
ACAxisMove(Config.InOut_Axis, MoveInfo.MoveParam.MoveP.InOut_P3, Config.InOutAxis_P3_Speed); ACAxisMove(Config.InOut_Axis, MoveInfo.MoveParam.MoveP.InOut_P3, Config.InOutAxis_P3_Speed);
} }
else
{
LastRfidID = "";
}
UpdateShelfId();
} }
else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BI_08_LocationUp)) else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BI_08_LocationUp))
{ {
...@@ -344,6 +350,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -344,6 +350,7 @@ namespace OnlineStore.DeviceLibrary
//EmprtShelfList = new ConcurrentQueue<string>(); //EmprtShelfList = new ConcurrentQueue<string>();
InOutStoreLog(moveName + MoveInfo.SLog + ":停止转动,送出料架结束 ,设置状态为None,清空当前料架:"+CurrShelfID); InOutStoreLog(moveName + MoveInfo.SLog + ":停止转动,送出料架结束 ,设置状态为None,清空当前料架:"+CurrShelfID);
CurrShelfID = ""; CurrShelfID = "";
LastRfidID = "";
AgvClient.SetStatus(Config.AgvNodeName); AgvClient.SetStatus(Config.AgvNodeName);
} }
} }
......
...@@ -132,17 +132,18 @@ namespace OnlineStore.DeviceLibrary ...@@ -132,17 +132,18 @@ namespace OnlineStore.DeviceLibrary
{ {
continue; continue;
} }
LogUtil.info(deviceName + " 【" + cameraName + "】开始打开相机获取图片"); DateTime startTime = DateTime.Now;
LogUtil.info(deviceName + " 【" + cameraName + "】开始取图片");
using (Bitmap bitmap = GetCamerImage(cameraName)) using (Bitmap bitmap = GetCamerImage(cameraName))
{ {
if (bitmap == null) if (bitmap == null)
{ {
LogUtil.error(deviceName + " 【" + cameraName + "】取图片失败[" + Camera._cam.ErrInfo + "],关闭相机"); LogUtil.error(deviceName + " 【" + cameraName + "】取图片失败[" + Camera._cam.ErrInfo + "],关闭相机");
CloseCamera(cameraName); CloseCamera(cameraName);
continue; continue;
} }
LogUtil.info(deviceName + " 【" + cameraName + "】获取图片完成,开始转换图片,并扫码"); LogUtil.info(deviceName + " 【" + cameraName + "】取图片完成,开始转换并扫码");
System.Threading.Thread.Sleep(1); System.Threading.Thread.Sleep(1);
//转换托盘大概100-150ms,不打印日志 //转换托盘大概100-150ms,不打印日志
Bitmap bit = new Bitmap(bitmap); Bitmap bit = new Bitmap(bitmap);
...@@ -176,7 +177,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -176,7 +177,7 @@ namespace OnlineStore.DeviceLibrary
{ {
SaveImageToFile(deviceName, cameraName, bit); SaveImageToFile(deviceName, cameraName, bit);
} }
LogUtil.info(deviceName + " 【" + cameraName + "】扫码完成:" + r); LogUtil.info(deviceName + " 【" + cameraName + "】扫码完成【" + FormUtil.GetSpanStr(DateTime.Now - startTime) + "】:" + r);
bit.Dispose(); bit.Dispose();
ho_Image.Dispose(); ho_Image.Dispose();
bitmap.Dispose(); bitmap.Dispose();
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!