Commit 992e9594 张东亮

有NG料时上报到服务器

1 个父辈 aea91a02
......@@ -166,7 +166,7 @@ namespace OnlineStore.Common
}
public static string Post(string url, string paramData, int timeOut = 5000)
public static string Post(string url, string paramData, int timeOut = 10000)
{
bool IsTimeOut = false;
return Post(url, paramData, Encoding.UTF8, timeOut, out IsTimeOut);
......
......@@ -17,10 +17,10 @@ namespace OnlineStore.DeviceLibrary
/// <summary>
/// 入库NG的料架位置
/// </summary>
List<string> inNGShelfPos = new List<string>();
void addNGShelfPos(string shelfPos)
Dictionary<string, bool> inNGShelfPos = new Dictionary<string, bool>();
void addNGShelfPos(string shelfPos, bool ok = false)
{
inNGShelfPos.Add(shelfPos);
inNGShelfPos[shelfPos] = ok;
}
/// <summary>
/// 清空料架NG位置信息
......@@ -32,7 +32,12 @@ namespace OnlineStore.DeviceLibrary
}
string getNGShelfPos()
{
return string.Join(",", inNGShelfPos);
StringBuilder sb = new StringBuilder();
foreach (var item in inNGShelfPos)
{
sb.Append($"{item.Key}={item.Value},");
}
return sb.ToString();
}
/// <summary>
/// 是否是入库NG料架
......@@ -40,7 +45,7 @@ namespace OnlineStore.DeviceLibrary
/// <returns></returns>
bool isNGShelf()
{
return inNGShelfPos.Count > 0;
return !inNGShelfPos.Values.Contains(true);
}
/// <summary>
/// 清空最后一盘的信息
......@@ -99,7 +104,7 @@ namespace OnlineStore.DeviceLibrary
if (!result)//获取库位失败
{
MoveInfo.MoveParam.PosID = "";
StartSendTray("锁定库位:获取入库库位失败");
StartSendTray("锁定库位:获取入库库位失败", false);
}
else
{
......@@ -118,9 +123,9 @@ namespace OnlineStore.DeviceLibrary
/// 入库失败料盘处理
/// </summary>
/// <param name="str"></param>
private void StartSendTray(string str = "扫码失败")
private void StartSendTray(string str = "扫码失败", bool ok = false)
{
StartMoveTrayBack(str);
StartMoveTrayBack(str, ok);
//MoveInfo.NextMoveStep(StoreMoveStep.BI_71_ToNGDoor);
//InOutStoreLog("NG料,升降轴到NG门口高点P12,旋转轴到NG门口P11");
////if(MoveInfo.IsShelfLocked)//锁定料架,扫码失败则清除当前位置
......@@ -134,10 +139,10 @@ namespace OnlineStore.DeviceLibrary
/// 将料盘送回原位
/// </summary>
/// <param name="str"></param>
private void StartMoveTrayBack(string str = "料盘不属于该仓库")
private void StartMoveTrayBack(string str = "料盘不属于该仓库", bool ok = false)
{
MoveInfo.NextMoveStep(StoreMoveStep.SO_10_ToShelfPosition);
addNGShelfPos(MoveInfo.MoveParam.CurShelfPosID);
addNGShelfPos(MoveInfo.MoveParam.CurShelfPosID, ok);
InOutStoreLog($"送出料盘 :{str} ,走到料架位置,旋转轴至P101,升降轴至P102");
ACAxisMove(Config.UpDown_Axis, MoveInfo.MoveParam.MoveP.UpDown_HP102, Config.UpDownAxis_P102_Speed);
ACAxisMove(Config.Middle_Axis, MoveInfo.MoveParam.MoveP.Middle_P101, Config.MiddleAxis_P101_Speed);
......@@ -362,7 +367,11 @@ namespace OnlineStore.DeviceLibrary
}
else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BI_29_InoutBackP1))
{
if (LastScanCodes.Count <= 0)
if (LastScanCodes.Count <= 0 && LastWidth.Equals(0) && LastHeight.Equals(8))
{
StartSendTray("未检测到料盘",true);
}
else if (LastScanCodes.Count <= 0)
{
StartSendTray();
}
......@@ -377,12 +386,12 @@ namespace OnlineStore.DeviceLibrary
if (codeResult == CodeResultType.NotPosForPutIn)//库位不在该料仓,将该料盘放回料架
{
//MoveInfo.MoveParam.PosID = "";
StartMoveTrayBack("此料盘不属于该仓库,放回料架");
StartMoveTrayBack("此料盘不属于该仓库,放回料架", true);
}
else//无法获取库位信息
{
MoveInfo.MoveParam.PosID = "";
StartSendTray("获取入库库位失败");
StartSendTray("获取入库库位失败", false);
}
}
else
......
......@@ -455,6 +455,7 @@ namespace OnlineStore.DeviceLibrary
string mark = GetMarkInfo();
// string rfid = MoveInfo.MoveParam.rfid;
MoveInfo.NextMoveStep(StoreMoveStep.BI_00_ReadyShelf);
MoveInfo.TimeOutSeconds = int.MaxValue;
clearNGShelfPos();
InOutStoreLog("呼叫agv送空料架,NeedEnter[" + mark + "][" + MoveInfo.MoveParam.rfid + "],等待agv_Arrive 或有料架,进出轴到P1");
InOutBackToP1(MoveInfo.MoveParam.MoveP.InOut_P1);
......
......@@ -171,7 +171,10 @@ namespace OnlineStore.DeviceLibrary
//查询该料盘所在料仓以及仓位
StoreManager.ResultType resultType = StoreManager.GetPosForPutIn(Name, Config, message, CurrShelfID, rfidLoc, out bool isLockInfoMatch);
if(resultType.Equals(CodeResultType.Error))
{
resultType = StoreManager.GetPosForPutIn(Name, Config, message, CurrShelfID, rfidLoc, out isLockInfoMatch);
}
if (resultType == StoreManager.ResultType.Error)
{
codeResultType = CodeResultType.Error;
......
......@@ -280,7 +280,7 @@ namespace OnlineStore.DeviceLibrary
else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BS_02_LocatinDown))
{
MoveInfo.NextMoveStep(StoreMoveStep.BS_03_WaitEmptyAgv);
MoveInfo.TimeOutSeconds = 600;
MoveInfo.TimeOutSeconds = int.MaxValue;
//MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(30000));
//等待agv到达
MoveInfo.WaitList.Add(WaitResultInfo.WaitAgvAction((int)ClientAction.Arrive));
......
......@@ -849,6 +849,53 @@ namespace OnlineStore.DeviceLibrary
}
return false;
}
private static string Addr_lockAShelfLoc = "/service/store/lockAShelfLoc";
/// <summary>
/// 锁定包装料架NG架位
/// </summary>
/// <param name="rfid"></param>
/// <param name="rfidLoc"></param>
/// <returns></returns>
public static bool LockAShelfLoc(string deviceName, string rfid, int rfidLoc)
{
string msg = "";
try
{
Dictionary<string, string> paramMap = new Dictionary<string, string>();
paramMap.Add(ParamDefine.rfid, rfid);
paramMap.Add("rfidLoc", rfidLoc.ToString());
string server = GetAddr(Addr_lockAShelfLoc, paramMap);
DateTime startTime = DateTime.Now;
LogUtil.info("锁定料架rfid=" + rfid + ",NG架位rfidLoc=" + rfidLoc.ToString());
string resultStr = HttpHelper.Post(server, "");
LogUtil.info(deviceName + " LockAShelfLoc " + FormUtil.GetSpanStr(DateTime.Now - startTime) + " 【" + server + "】【" + resultStr + "】");
RfidData data = JsonHelper.DeserializeJsonToObject<RfidData>(resultStr);
if (data == null)
{
msg = deviceName + " LockAShelfLoc【 " + rfid + "-" + rfidLoc + "】 没有收到服务器反馈";
LogUtil.info(msg);
return false;
}
else if (data.code.Equals(0).Equals(false))
{
msg = deviceName + " LockAShelfLoc【 " + rfid + "-" + rfidLoc + "】:" + data.msg;
LogUtil.info(msg);
return false;
}
return true;
}
catch (Exception ex)
{
LogUtil.error(deviceName + " LockAShelfLoc ", ex);
}
return false;
}
}
public class AfterPutData
{
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!