Commit 65166571 张东亮

包装仓入库逻辑优化

1 个父辈 e8dd2942
......@@ -63,11 +63,12 @@ namespace OnlineStore.DeviceLibrary
wait.IsEnd = IOValue(wait.IoType).Equals(wait.IoValue);
int timeOutMs = Config.IOSingle_TimerOut;
if (MoveInfo.MoveStep.Equals(StoreMoveStep.BS_08_WaitLineIn)||
if (MoveInfo.MoveStep.Equals(StoreMoveStep.BS_08_WaitLineIn) ||
MoveInfo.MoveStep.Equals(StoreMoveStep.BI_04_WaitTakeSingle))
{
timeOutMs = 30000;
}else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BI_03_LineRun))
}
else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BI_03_LineRun))
{
timeOutMs = 40000;
}
......@@ -76,13 +77,13 @@ namespace OnlineStore.DeviceLibrary
ConfigIO io = Config.getWaitIO(wait.IoType);
WarnMsg = Name + "[" + MoveInfo.MoveType + "][" + MoveInfo.MoveStep + "] 等待(" + io.DisplayStr + "=" + wait.IoValue + ") 超时";
Alarm(StoreAlarmType.IoSingleTimeOut, io.ElectricalDefinition, WarnMsg, MoveInfo.MoveType);
LogUtil.error(Name + "[" + MoveInfo.MoveType + "][" + MoveInfo.MoveStep + "] 等待(" + io.DisplayStr + "=" + wait.IoValue + ") 超时", logType+14);
LogUtil.error(Name + "[" + MoveInfo.MoveType + "][" + MoveInfo.MoveStep + "] 等待(" + io.DisplayStr + "=" + wait.IoValue + ") 超时", logType + 14);
if (!MoveInfo.OneWaitCanEndStep)
{
isOk = false;
break;
}
if(wait.IoType.Equals(IO_Type.Compress_Check) && MoveInfo.MoveStep.Equals(StoreMoveStep.SO_07_CheckComSig))
if (wait.IoType.Equals(IO_Type.Compress_Check) && MoveInfo.MoveStep.Equals(StoreMoveStep.SO_07_CheckComSig))
{
CompressSigTimeOut = true;
}
......@@ -143,7 +144,7 @@ namespace OnlineStore.DeviceLibrary
wait.IsEnd = true;
}
}
else if (wait.AgvAction.Equals((int)ClientAction.Arrive)&&MoveInfo.MoveStep.Equals(StoreMoveStep.BS_03_WaitEmptyAgv))
else if (wait.AgvAction.Equals((int)ClientAction.Arrive) && MoveInfo.MoveStep.Equals(StoreMoveStep.BS_03_WaitEmptyAgv))
{
if (IOValue(IO_Type.LineTake_Check).Equals(IO_VALUE.LOW) && IOValue(IO_Type.LineIn_Check).Equals(IO_VALUE.LOW))
{
......@@ -158,7 +159,7 @@ namespace OnlineStore.DeviceLibrary
if (AgvClient.closeDoorTimeMap.ContainsKey(Config.AgvNodeName))
{
DateTime time = AgvClient.closeDoorTimeMap[Config.AgvNodeName];
if(time>= MoveInfo.LastSetpTime)
if (time >= MoveInfo.LastSetpTime)
{
wait.IsEnd = true;
}
......@@ -200,7 +201,7 @@ namespace OnlineStore.DeviceLibrary
{
second = 10;
}
LogUtil.error(WarnMsg, logType+100,second);
LogUtil.error(WarnMsg, logType + 100, second);
Alarm(StoreAlarmType.IoSingleTimeOut, "", WarnMsg, MoveInfo.MoveType);
}
}
......@@ -210,7 +211,7 @@ namespace OnlineStore.DeviceLibrary
//判断是否在P1,如果是,不需要运行
if (ACServerManager.isInPosition(Config.InOut_Axis, InOut_P1))
{
LogUtil.debug(Name+ "进出轴当前已经在P1,不需要再回P1");
LogUtil.debug(Name + "进出轴当前已经在P1,不需要再回P1");
}
else
{
......@@ -230,7 +231,7 @@ namespace OnlineStore.DeviceLibrary
/// 最后一次使用的料架号
/// </summary>
// private string LastRfidID = "";//服务器发送的出库rfid
private InOutParam LastOutParam = new InOutParam() ;
private InOutParam LastOutParam = new InOutParam();
private string GetLastRfid()
{
......@@ -336,9 +337,29 @@ namespace OnlineStore.DeviceLibrary
//读取RFID
RFIDData data = RFIDManager.ReadRFID(Config.RFID_IP, true);
CurrShelfID = data.NumStr();
LogUtil.info(Name + "更新当前料架号CurrShelfID=【" + CurrShelfID + "】,LastRfidID=【" + GetLastRfid() +"】");
LogUtil.info(Name + "更新当前料架号CurrShelfID=【" + CurrShelfID + "】,LastRfidID=【" + GetLastRfid() + "】");
}
private void GetPosId()
{
MoveInfo.NextMoveStep(StoreMoveStep.BI_30_SetInstoreParam);
InOutStoreLog("不扫码 " + MoveInfo.SLog + ": 获取库位号");
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(10000));
if (MoveInfo.IsShelfLocked)
{
bool result = GetPosIdByCode();
if (!result)//获取库位失败
{
MoveInfo.MoveParam.PosID = "";
StartSendTray("锁定库位:获取入库库位失败");
}
else
{
MoveInfo.EndStepWait();
}
}
}
private void StartMoveToBag()
{
MoveInfo.NextMoveStep(StoreMoveStep.BI_51_MoveToBag);
......@@ -378,7 +399,7 @@ namespace OnlineStore.DeviceLibrary
#region 料架取料盘扫码获取POSID
if (MoveInfo.MoveStep.Equals(StoreMoveStep.BI_10_StartGetTray))
{
if(MoveInfo.IsShelfLocked)
if (MoveInfo.IsShelfLocked)
{
if (MoveInfo.NextLockedShelfPos())
{
......@@ -477,11 +498,16 @@ namespace OnlineStore.DeviceLibrary
}
else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BI_17_InoutBack))
{
if (MoveInfo.SingleInstore || MoveInfo.IsShelfLocked)
if (MoveInfo.SingleInstore)
{
//单盘入库或者该料架已锁定库位,不需要扫码
//单盘入库,不需要扫码
StartMoveToBag();
}
else if(MoveInfo.IsShelfLocked)
{
//该料架已锁定库位,不需要扫码,直接查询服务器
GetPosId();
}
else
{
MoveInfo.NextMoveStep(StoreMoveStep.BI_21_ToScanPosition);
......@@ -539,7 +565,7 @@ namespace OnlineStore.DeviceLibrary
Task.Factory.StartNew(delegate
{
IOMove(IO_Type.Camera_Led, IO_VALUE.HIGH);
LastScanCodes = CodeManager.CameraScan(Config.GetCameraList(),Name);
LastScanCodes = CodeManager.CameraScan(Config.GetCameraList(), Name);
if (LastScanCodes.Count <= 0)
{
Thread.Sleep(1);
......@@ -587,10 +613,10 @@ namespace OnlineStore.DeviceLibrary
MoveInfo.NextMoveStep(StoreMoveStep.BI_30_SetInstoreParam);
InOutStoreLog("扫码 " + MoveInfo.SLog + ": 获取库位号");
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(10000));
bool result = GetPosIdByCode(MoveInfo.currShelfIndex,out CodeResultType codeResult);
bool result = GetPosIdByCode(MoveInfo.currShelfIndex, out CodeResultType codeResult);
if (!result)//获取库位失败
{
if(codeResult == CodeResultType.NotFoundPos)//库位不在该料仓,将该料盘放回料架
if (codeResult == CodeResultType.NotFoundPos)//库位不在该料仓,将该料盘放回料架
{
//MoveInfo.MoveParam.PosID = "";
StartMoveTrayBack("此料盘不属于该仓库,放回料架");
......@@ -991,7 +1017,7 @@ namespace OnlineStore.DeviceLibrary
}
else if (MoveInfo.MoveStep == StoreMoveStep.SO_07_CheckComSig)
{
if(IOValue(IO_Type.Compress_Check).Equals(IO_VALUE.HIGH) || IsIgnoreComSig)
if (IOValue(IO_Type.Compress_Check).Equals(IO_VALUE.HIGH) || IsIgnoreComSig)
{
IsIgnoreComSig = false;
CompressSigTimeOut = false;
......
......@@ -162,6 +162,7 @@ namespace OnlineStore.DeviceLibrary
if (instoreShelf)
{
MoveInfo.NextMoveStep(StoreMoveStep.BI_10_StartGetTray);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(10000));
//获取料架的锁定状态
bool lockState = StoreManager.GetShelfLockInfo(Name,CID, CurrShelfID, out MoveInfo.shelfLockDatas);
......@@ -176,7 +177,7 @@ namespace OnlineStore.DeviceLibrary
MoveInfo.IsShelfLocked = false;
InOutStoreLog(moveName + MoveInfo.SLog + "开始循环料架取料盘 ");
}
MoveInfo.EndStepWait();
}
else
{
......@@ -690,7 +691,7 @@ namespace OnlineStore.DeviceLibrary
#region 扫码获取库位
/// <summary>
/// 扫码枪数据接收
/// 数据接收
/// </summary>
/// <param name="message"></param>
private bool GetPosIdByCode()
......@@ -701,7 +702,8 @@ namespace OnlineStore.DeviceLibrary
{
LastWidth = 7;
}
string message = StoreManager.ProcessCode(LastWidth, LastHeight, LastScanCodes);
//string message = StoreManager.ProcessCode(LastWidth, LastHeight, LastScanCodes);
string message = MoveInfo.shelfLockDatas[MoveInfo.currShelfIndex].barcode;
if (message.Equals("") || string.IsNullOrEmpty(message))
{
CodeMsg = "未扫到二维码";
......@@ -719,7 +721,7 @@ namespace OnlineStore.DeviceLibrary
//发送扫码内容到服务器进行入库操作
Operation operation = getLineBoxStatus();
operation.op = 1;
operation.data = new Dictionary<string, string>() { { "code", message }, { "boxId", 1.ToString() }, { ParamDefine.rfid, CurrShelfID }, { "cids", Config.All_CIDs.Replace('#', ',') } };
operation.data = new Dictionary<string, string>() { { "code", message }, { "boxId", 1.ToString() }, { ParamDefine.rfid, CurrShelfID }};
string server = ConfigAppSettings.GetValue(Setting_Init.http_server);
Operation resultOperation = HttpHelper.Post(StoreManager.GetPostApi(server), operation, false);
if (resultOperation == null)
......
......@@ -562,7 +562,7 @@ namespace OnlineStore.DeviceLibrary
private static string Addr_getShelfLockInfo = "/rest/api/qisda/device/getShelfLockInfo"; //包装仓获取料架锁定状态地址
public static bool GetShelfLockInfo(string deviceName, string cid,string rfid,out List<ShelfLockData> shelfLockDatas)
public static bool GetShelfLockInfo(string deviceName, string cid, string rfid, out List<ShelfLockData> shelfLockDatas)
{
string msg = "";
shelfLockDatas = null;
......@@ -576,7 +576,7 @@ namespace OnlineStore.DeviceLibrary
string resultStr = HttpHelper.Post(server, "");
LogUtil.info(deviceName + "料架锁定状态 " + FormUtil.GetSpanStr(DateTime.Now - startTime) + " 【" + server + "】【" + resultStr + "】");
LogUtil.info(deviceName + " 料架锁定状态 " + FormUtil.GetSpanStr(DateTime.Now - startTime) + " 【" + server + "】【" + resultStr + "】");
ShelfLockInfo serverResult = JsonHelper.DeserializeJsonToObject<ShelfLockInfo>(resultStr);
if (serverResult == null)
{
......@@ -585,9 +585,9 @@ namespace OnlineStore.DeviceLibrary
return false;
}
if (serverResult.data.Count ==0) //该料架未锁定
if (serverResult.data.Count == 0) //该料架未锁定
{
msg = deviceName + " 料架【"+rfid+"】 没有锁定库位的料";
msg = deviceName + " 料架【" + rfid + "】 没有被锁定";
LogUtil.info(msg);
return false;
}
......@@ -597,14 +597,14 @@ namespace OnlineStore.DeviceLibrary
string plates = "";
foreach (ShelfLockData item in serverResult.data)
{
LogUtil.info("锁定的CID="+item.cid+";当前CID="+cid);
if(item.cid.Equals(cid))//该料盘属于此料仓
LogUtil.info("锁定的CID=" + item.cid + "; 当前CID=" + cid);
if (item.cid.Equals(cid))//该料盘属于此料仓
{
shelfLockDatas.Add(item);
plates += "["+item.lockPos+"]# ";
plates += item.lockPos + "# ";
}
}
msg = deviceName + " 料架【" + rfid + "】 在该料仓锁定库位的料:【"+plates+"】";
msg = deviceName + " 料架【" + rfid + "】 在该料仓锁定库位的有:【" + plates + "】";
LogUtil.info(msg);
return true;
}
......@@ -618,7 +618,7 @@ namespace OnlineStore.DeviceLibrary
private static string Addr_PosForPutin = "/service/store/emptyPosForPutin"; //获取当前料盘属于的料仓编号
public static bool GetPosForPutIn(string deviceName,AC_BOX_Config boxConfig,string barcode,string rfid,int rfidLoc)
public static bool GetPosForPutIn(string deviceName, AC_BOX_Config boxConfig, string barcode, string rfid, int rfidLoc)
{
string msg = "";
try
......@@ -628,7 +628,7 @@ namespace OnlineStore.DeviceLibrary
// 参数:cids: 多个 cid
//code: 条码内容
Dictionary<string, string> paramMap = new Dictionary<string, string>();
paramMap.Add("cids",boxConfig.All_CIDs.Replace('#',','));
paramMap.Add("cids", boxConfig.All_CIDs.Replace('#', ','));
paramMap.Add("code", barcode);
paramMap.Add(ParamDefine.rfid, rfid);
paramMap.Add("rfidLoc", rfidLoc.ToString());
......@@ -664,7 +664,7 @@ namespace OnlineStore.DeviceLibrary
//第9和第10位表示隔板位置(04)
//例如: 4D12010124 表示4楼12号料仓第1列第1行架子上的第24个隔板位置
//4D19050208 表示4楼19号料仓(包装料仓)第5列第2行架子上的第8个隔板位置
msg = deviceName + " 料盘【" + barcode + "】属于该料仓【"+boxConfig.CID+"】";
msg = deviceName + " 料盘【" + barcode + "】属于该料仓【" + boxConfig.CID + "】";
LogUtil.info(msg);
return true;
......
......@@ -134,7 +134,7 @@ namespace OnlineStore.LoadCSVLibrary
}
else
{
LogUtil.error("读取csv,index=" + index + ",数据格式不匹配!,line=" + line);
LogUtil.error("读取"+ filePath + ",index=" + index + ",数据格式不匹配!,line=" + line);
}
}
catch (Exception ex)
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!