Commit 8fbd789e 刘韬

优化回库流程

1 个父辈 cbc24d7f
...@@ -52,9 +52,9 @@ namespace DeviceLibrary ...@@ -52,9 +52,9 @@ namespace DeviceLibrary
data.Add("LOT", reel.LOT); data.Add("LOT", reel.LOT);
data.Add("EXP", reel.EXP); data.Add("EXP", reel.EXP);
data.Add("SN", reel.SN); data.Add("SN", reel.SN);
data.Add("Time1", DateTime.Now.ToString("MM-dd-yyyy HH:mm:ss")); data.Add("Time1", reel.Time1);
data.Add("Time2", DateTime.Now.AddHours(4).ToString("MM-dd-yyyy HH:mm:ss")); data.Add("Time2", reel.Time2);
data.Add("Time3", DateTime.Now.AddHours(5*24+4).ToString("MM-dd-yyyy HH:mm:ss")); data.Add("Time3", reel.Time3);
data.Add("datetime", DateTime.Now.ToString()); data.Add("datetime", DateTime.Now.ToString());
LogUtil.info($"打印标签:{reel.ToDetailStr()}"); LogUtil.info($"打印标签:{reel.ToDetailStr()}");
var result = Print(labelname, data, out string msg); var result = Print(labelname, data, out string msg);
......
...@@ -666,6 +666,38 @@ namespace DeviceLibrary ...@@ -666,6 +666,38 @@ namespace DeviceLibrary
return msg; return msg;
} }
public string cancelAndDisable(string posId)
{
string msg = "";
try
{
Dictionary<string, string> paramMap = new Dictionary<string, string>();
paramMap.Add("posName", posId);
string server = GetAddr("/service/store/cancelAndDisable", paramMap);
DateTime startTime = DateTime.Now;
string resultStr = HttpHelper.Get(server);
LogUtil.info("cancelAndDisable " + FormUtil.GetSpanStr(DateTime.Now - startTime) + " 【" + server + "】【" + resultStr + "】");
ResultData data = JsonHelper.DeserializeJsonToObject<ResultData>(resultStr);
if (data == null)
{
return msg = " cancelAndDisable【 " + posId + "】 没有收到服务器反馈";
}
else if (data.code.Equals(0).Equals(false))
{
return msg = " cancelAndDisable【 " + posId + "】 :" + data.msg;
}
return "";
}
catch (Exception ex)
{
LogUtil.error("cancelAndDisable: " + ex.ToString());
}
return msg;
}
public JobInfo SelfAudit_getNetPos() public JobInfo SelfAudit_getNetPos()
{ {
string msg = ""; string msg = "";
......
...@@ -57,6 +57,9 @@ namespace DeviceLibrary ...@@ -57,6 +57,9 @@ namespace DeviceLibrary
public string LOT { get; set; } public string LOT { get; set; }
public string EXP { get; set; } public string EXP { get; set; }
public string SN { get; set; } public string SN { get; set; }
public string Time1 { get; set; }
public string Time2 { get; set; }
public string Time3 { get; set; }
/// <summary> /// <summary>
/// 数量 /// 数量
/// </summary> /// </summary>
......
...@@ -51,7 +51,7 @@ namespace DeviceLibrary ...@@ -51,7 +51,7 @@ namespace DeviceLibrary
Msg.add("WaitType."+ w.WaitType, w.ActionMsg, w.Data); Msg.add("WaitType."+ w.WaitType, w.ActionMsg, w.Data);
} }
}); });
foreach (WaitResultInfo wait in MoveInfo.WaitList) foreach (WaitResultInfo wait in MoveInfo.WaitList.ToArray())
{ {
if (wait.IsEnd) if (wait.IsEnd)
{ {
......
...@@ -101,6 +101,14 @@ namespace DeviceLibrary ...@@ -101,6 +101,14 @@ namespace DeviceLibrary
LabelingMoveInfo.log($"获取库位失败,送到NG口:{LabelingMoveInfo.MoveParam.NgMsg}"); LabelingMoveInfo.log($"获取库位失败,送到NG口:{LabelingMoveInfo.MoveParam.NgMsg}");
return; return;
} }
if (LabelingMoveInfo.MoveParam.usedCount >= 1)
{
LabelingMoveInfo.NextMoveStep(MoveStep.Labeling57);
Setting_Init.Runtime_Step = Runtime_StepE.LabelPasteFinish;
RotateEquip.TurnToEnd(false);
LabelingMoveInfo.log($"该物料为return物料");
return;
}
PrintTask = RobotManage.printerHelper.PrintLabel(LabelingMoveInfo.MoveParam, Setting_Init.Printer_Labelname); PrintTask = RobotManage.printerHelper.PrintLabel(LabelingMoveInfo.MoveParam, Setting_Init.Printer_Labelname);
Setting_Init.Runtime_Step = Runtime_StepE.Printed; Setting_Init.Runtime_Step = Runtime_StepE.Printed;
LabelingMoveInfo.log("开始打印标签:" + LabelingMoveInfo.MoveParam.ToDetailStr()); LabelingMoveInfo.log("开始打印标签:" + LabelingMoveInfo.MoveParam.ToDetailStr());
...@@ -233,7 +241,7 @@ namespace DeviceLibrary ...@@ -233,7 +241,7 @@ namespace DeviceLibrary
case MoveStep.Labeling12: case MoveStep.Labeling12:
LabelingMoveInfo.NextMoveStep(MoveStep.Labeling13); LabelingMoveInfo.NextMoveStep(MoveStep.Labeling13);
CylinderMove(LabelingMoveInfo, IO_Type.Label_Dock_Back, IO_Type.Label_Dock_Front, IO_VALUE.LOW); CylinderMove(LabelingMoveInfo, IO_Type.Label_Dock_Back, IO_Type.Label_Dock_Front, IO_VALUE.LOW);
LabelingMoveInfo.log("开始贴标"); LabelingMoveInfo.log("开始贴标流程");
break; break;
case MoveStep.Labeling13: case MoveStep.Labeling13:
if (CameraPointTest.TestHasLabelOnDock(true)) if (CameraPointTest.TestHasLabelOnDock(true))
...@@ -449,6 +457,19 @@ namespace DeviceLibrary ...@@ -449,6 +457,19 @@ namespace DeviceLibrary
break; break;
} }
} }
}
if (!string.IsNullOrEmpty(rightcode)) {
var newcodes = rightcode.Split('|');
codeInfos = new CodeInfo[newcodes.Length];
for (int i = 0; i < newcodes.Length; i++)
{
codeInfos[i] = new CodeInfo(newcodes[i], 0, 0);
}
rightcode = "";
}
foreach (var cc in codeInfos)
{
//PN[5:0:-1]|BATCH[2:0:-1]|LOT|QTY[2:0:3]|RI|SP[3:0:-1]|EXPDATEdd-MM-yyyy[2:0:-1]|xxx|xxx|xxx|MSL[1:0:-1] //PN[5:0:-1]|BATCH[2:0:-1]|LOT|QTY[2:0:3]|RI|SP[3:0:-1]|EXPDATEdd-MM-yyyy[2:0:-1]|xxx|xxx|xxx|MSL[1:0:-1]
if (cc.CodeStr.StartsWith("P")) //pn if (cc.CodeStr.StartsWith("P")) //pn
code[0] = cc.CodeStr; code[0] = cc.CodeStr;
...@@ -460,9 +481,14 @@ namespace DeviceLibrary ...@@ -460,9 +481,14 @@ namespace DeviceLibrary
code[3] = cc.CodeStr; code[3] = cc.CodeStr;
else if (cc.CodeStr.StartsWith("2D")) //qty else if (cc.CodeStr.StartsWith("2D")) //qty
code[4] = cc.CodeStr; code[4] = cc.CodeStr;
else if(cc.CodeStr.StartsWith("S"))// if (Regex.IsMatch(cc.CodeStr, @"S[A-Za-z\-]*\d+")) //ri else if (cc.CodeStr.StartsWith("S"))// if (Regex.IsMatch(cc.CodeStr, @"S[A-Za-z\-]*\d+")) //ri
code[5] = cc.CodeStr; code[5] = cc.CodeStr;
} }
reelParam.Time1 = DateTime.Now.ToString("MM-dd-yyyy HH:mm:ss");
reelParam.Time2 = DateTime.Now.AddHours(4).ToString("MM-dd-yyyy HH:mm:ss");
reelParam.Time3 = DateTime.Now.AddHours(5 * 24 + 4).ToString("MM-dd-yyyy HH:mm:ss");
code[4] = "2D" + reelParam.Time3;
if (string.IsNullOrEmpty(rightcode)) if (string.IsNullOrEmpty(rightcode))
{ {
if (string.IsNullOrEmpty(code[0])) if (string.IsNullOrEmpty(code[0]))
...@@ -497,7 +523,6 @@ namespace DeviceLibrary ...@@ -497,7 +523,6 @@ namespace DeviceLibrary
reelParam.WareCode = rightcode; reelParam.WareCode = rightcode;
reelParam.ReeID = reelParam.SN; reelParam.ReeID = reelParam.SN;
reelParam.RFID = "S"+reelParam.SN; reelParam.RFID = "S"+reelParam.SN;
return true; return true;
} }
} }
......
...@@ -194,13 +194,13 @@ namespace DeviceLibrary ...@@ -194,13 +194,13 @@ namespace DeviceLibrary
StoreMoveInfo.NextMoveStep(MoveStep.StoreIn08); StoreMoveInfo.NextMoveStep(MoveStep.StoreIn08);
StoreMoveInfo.log($"收到完成贴标NG"); StoreMoveInfo.log($"收到完成贴标NG");
} }
else if (StoreMoveInfo.MoveParam.usedCount==1) //else if (StoreMoveInfo.MoveParam.usedCount >= 1)
{ //{
StoreMoveInfo.NextMoveStep(MoveStep.StoreIn08); // StoreMoveInfo.NextMoveStep(MoveStep.StoreIn08);
StoreMoveInfo.log($"该物料已入过库"); // StoreMoveInfo.log($"该物料已入过库");
StoreMoveInfo.MoveParam.IsNg=true; // StoreMoveInfo.MoveParam.IsNg = true;
StoreMoveInfo.MoveParam.NgMsg= "The material has been stocked, and is not allowed to stock again."; // StoreMoveInfo.MoveParam.NgMsg = "The material has been stocked, and is not allowed to stock again.";
} //}
else else
{ {
if (string.IsNullOrEmpty(LabelingMoveInfo.MoveParam.PosID)) if (string.IsNullOrEmpty(LabelingMoveInfo.MoveParam.PosID))
...@@ -235,7 +235,9 @@ namespace DeviceLibrary ...@@ -235,7 +235,9 @@ namespace DeviceLibrary
} }
break; break;
case MoveStep.StoreIn05: case MoveStep.StoreIn05:
if (boxTransport.IsComplateOrFree) if (!boxTransport.IsComplateOrFree)
break;
if (StoreMoveInfo.MoveParam.usedCount == 0)
{ {
if (StoreMoveInfo.MoveParam.RFID.Length > 16) if (StoreMoveInfo.MoveParam.RFID.Length > 16)
StoreMoveInfo.MoveParam.RFID = StoreMoveInfo.MoveParam.RFID.Substring(0, 16); StoreMoveInfo.MoveParam.RFID = StoreMoveInfo.MoveParam.RFID.Substring(0, 16);
...@@ -314,7 +316,7 @@ namespace DeviceLibrary ...@@ -314,7 +316,7 @@ namespace DeviceLibrary
Z_Axis.AbsMove(StoreMoveInfo, Config.Z_Axis_P1, Config.Z_Axis_P1_speed); Z_Axis.AbsMove(StoreMoveInfo, Config.Z_Axis_P1, Config.Z_Axis_P1_speed);
return; return;
} }
}
StoreMoveInfo.NextMoveStep(MoveStep.StoreIn09); StoreMoveInfo.NextMoveStep(MoveStep.StoreIn09);
from = CSVPositionReader<ACStorePosition>.GetPositon(RFIDP); from = CSVPositionReader<ACStorePosition>.GetPositon(RFIDP);
to = CSVPositionReader<ACStorePosition>.GetPositon(StoreMoveInfo.MoveParam.PosID); to = CSVPositionReader<ACStorePosition>.GetPositon(StoreMoveInfo.MoveParam.PosID);
...@@ -322,7 +324,6 @@ namespace DeviceLibrary ...@@ -322,7 +324,6 @@ namespace DeviceLibrary
StoreMoveInfo.MoveParam.ReelOnFixture = true; StoreMoveInfo.MoveParam.ReelOnFixture = true;
boxTransport.Start(new BoxStorePosition(Config, from, StoreMoveInfo.MoveParam), new BoxStorePosition(Config, to, StoreMoveInfo.MoveParam), StoreMoveType.InStore, true); boxTransport.Start(new BoxStorePosition(Config, from, StoreMoveInfo.MoveParam), new BoxStorePosition(Config, to, StoreMoveInfo.MoveParam), StoreMoveType.InStore, true);
StoreMoveInfo.log($"开始转运到入库位置"); StoreMoveInfo.log($"开始转运到入库位置");
}
break; break;
case MoveStep.StoreIn06: case MoveStep.StoreIn06:
StoreMoveInfo.NextMoveStep(MoveStep.StoreIn07); StoreMoveInfo.NextMoveStep(MoveStep.StoreIn07);
...@@ -476,7 +477,7 @@ namespace DeviceLibrary ...@@ -476,7 +477,7 @@ namespace DeviceLibrary
{ {
ServerCM.SendStoreState(StoreMoveInfo.MoveParam.PosID, StoreStatus.OutStoreBoxEnd); ServerCM.SendStoreState(StoreMoveInfo.MoveParam.PosID, StoreStatus.OutStoreBoxEnd);
bool issame = false; bool issame = false;
string ds=""; string ds = "";
for (int i = 0; i < 15; i++) for (int i = 0; i < 15; i++)
{ {
if (RobotManage.RFID.ReadEPC(16, out byte[] data)) if (RobotManage.RFID.ReadEPC(16, out byte[] data))
...@@ -487,16 +488,17 @@ namespace DeviceLibrary ...@@ -487,16 +488,17 @@ namespace DeviceLibrary
var mds = ds; var mds = ds;
if (mds.StartsWith("S")) if (mds.StartsWith("S"))
mds = mds.Substring(1); mds = mds.Substring(1);
if (StoreMoveInfo.MoveParam.WareCode.IndexOf(mds) >-1) if (StoreMoveInfo.MoveParam.WareCode.IndexOf(mds) > -1)
{ {
StoreMoveInfo.MoveParam.RFID = ds; StoreMoveInfo.MoveParam.RFID = ds;
StoreMoveInfo.log("读取到 RFID:" + ds + " , "+ RobotManage.RFID.HexBuff(data)); StoreMoveInfo.log("读取到 RFID:" + ds + " , " + RobotManage.RFID.HexBuff(data));
issame = true; issame = true;
break; break;
} }
} }
} }
if (!issame) { if (!issame)
{
if (RobotManage.RFID2.ReadEPC(16, out data)) if (RobotManage.RFID2.ReadEPC(16, out data))
{ {
if (data[0] != 0xFF) if (data[0] != 0xFF)
...@@ -521,24 +523,35 @@ namespace DeviceLibrary ...@@ -521,24 +523,35 @@ namespace DeviceLibrary
if (!issame) if (!issame)
{ {
StoreMoveInfo.log("读取到的RFID与物料信息不符 读取到 RFID:" + ds); StoreMoveInfo.log("读取到的RFID与物料信息不符 读取到 RFID:" + ds);
Msg.add("rfid.nomatch", crc.GetString("Res0140","读取到的RFID与物料信息不符:") + ds, MsgLevel.alarm); StoreMoveInfo.MoveParam.OutPosID = StoreMoveInfo.MoveParam.PosID;
RobotManage.UserPause(crc.GetString("Res0141","读取到的RFID与物料信息不符")); Msg.add("rfid.nomatch", crc.GetString("Res0140", "读取到的RFID与物料信息不符:") + ds, MsgLevel.alarm);
//RobotManage.UserPause(crc.GetString("Res0141","读取到的RFID与物料信息不符"));
} }
StoreMoveInfo.NextMoveStep(MoveStep.StoreOut12); StoreMoveInfo.NextMoveStep(MoveStep.StoreOut12);
from = CSVPositionReader<ACStorePosition>.GetPositon(RFIDP); from = CSVPositionReader<ACStorePosition>.GetPositon(RFIDP);
to = CSVPositionReader<ACStorePosition>.GetPositon(StoreMoveInfo.MoveParam.OutPosID); to = CSVPositionReader<ACStorePosition>.GetPositon(StoreMoveInfo.MoveParam.OutPosID);
StoreMoveInfo.log($"开始转运出库");
StoreMoveInfo.MoveParam.ReelOnFixture = true; StoreMoveInfo.MoveParam.ReelOnFixture = true;
boxTransport.Start(new BoxStorePosition(Config, from, StoreMoveInfo.MoveParam), new BoxStorePosition(Config, to, StoreMoveInfo.MoveParam), StoreMoveType.OutStore, true); boxTransport.Start(new BoxStorePosition(Config, from, StoreMoveInfo.MoveParam), new BoxStorePosition(Config, to, StoreMoveInfo.MoveParam), StoreMoveType.OutStore, true);
StoreMoveInfo.log($"开始转运出库");
} }
break; break;
case MoveStep.StoreOut12: case MoveStep.StoreOut12:
if (boxTransport.IsComplateOrFree) if (boxTransport.IsComplateOrFree)
{ {
if (StoreMoveInfo.MoveParam.OutPosID != StoreMoveInfo.MoveParam.PosID)
{
ServerCM.SendStoreState(StoreMoveInfo.MoveParam.PosID, StoreStatus.OutStoreBoxEnd); ServerCM.SendStoreState(StoreMoveInfo.MoveParam.PosID, StoreStatus.OutStoreBoxEnd);
ServerCM.SendStoreState(StoreMoveInfo.MoveParam.PosID, StoreStatus.OutStoreEnd); ServerCM.SendStoreState(StoreMoveInfo.MoveParam.PosID, StoreStatus.OutStoreEnd);
StoreMoveInfo.log("出库完成"); StoreMoveInfo.log("出库完成");
}
else {
ServerCM.cancelAndDisable(StoreMoveInfo.MoveParam.PosID);
StoreMoveInfo.log("出库NG,自动禁用库位:"+ StoreMoveInfo.MoveParam.PosID);
}
StoreMoveInfo.NextMoveStep(MoveStep.Wait); StoreMoveInfo.NextMoveStep(MoveStep.Wait);
OutStoreJobList.ClearLastPosid(); OutStoreJobList.ClearLastPosid();
if (!StoreMoveInfo.MoveParam.IsNg) if (!StoreMoveInfo.MoveParam.IsNg)
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!