Commit 8fbd789e 刘韬

优化回库流程

1 个父辈 cbc24d7f
......@@ -52,9 +52,9 @@ namespace DeviceLibrary
data.Add("LOT", reel.LOT);
data.Add("EXP", reel.EXP);
data.Add("SN", reel.SN);
data.Add("Time1", DateTime.Now.ToString("MM-dd-yyyy HH:mm:ss"));
data.Add("Time2", DateTime.Now.AddHours(4).ToString("MM-dd-yyyy HH:mm:ss"));
data.Add("Time3", DateTime.Now.AddHours(5*24+4).ToString("MM-dd-yyyy HH:mm:ss"));
data.Add("Time1", reel.Time1);
data.Add("Time2", reel.Time2);
data.Add("Time3", reel.Time3);
data.Add("datetime", DateTime.Now.ToString());
LogUtil.info($"打印标签:{reel.ToDetailStr()}");
var result = Print(labelname, data, out string msg);
......
......@@ -666,6 +666,38 @@ namespace DeviceLibrary
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()
{
string msg = "";
......
......@@ -57,6 +57,9 @@ namespace DeviceLibrary
public string LOT { get; set; }
public string EXP { get; set; }
public string SN { get; set; }
public string Time1 { get; set; }
public string Time2 { get; set; }
public string Time3 { get; set; }
/// <summary>
/// 数量
/// </summary>
......
......@@ -51,7 +51,7 @@ namespace DeviceLibrary
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)
{
......
......@@ -101,6 +101,14 @@ namespace DeviceLibrary
LabelingMoveInfo.log($"获取库位失败,送到NG口:{LabelingMoveInfo.MoveParam.NgMsg}");
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);
Setting_Init.Runtime_Step = Runtime_StepE.Printed;
LabelingMoveInfo.log("开始打印标签:" + LabelingMoveInfo.MoveParam.ToDetailStr());
......@@ -233,7 +241,7 @@ namespace DeviceLibrary
case MoveStep.Labeling12:
LabelingMoveInfo.NextMoveStep(MoveStep.Labeling13);
CylinderMove(LabelingMoveInfo, IO_Type.Label_Dock_Back, IO_Type.Label_Dock_Front, IO_VALUE.LOW);
LabelingMoveInfo.log("开始贴标");
LabelingMoveInfo.log("开始贴标流程");
break;
case MoveStep.Labeling13:
if (CameraPointTest.TestHasLabelOnDock(true))
......@@ -449,6 +457,19 @@ namespace DeviceLibrary
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]
if (cc.CodeStr.StartsWith("P")) //pn
code[0] = cc.CodeStr;
......@@ -460,9 +481,14 @@ namespace DeviceLibrary
code[3] = cc.CodeStr;
else if (cc.CodeStr.StartsWith("2D")) //qty
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;
}
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(code[0]))
......@@ -497,7 +523,6 @@ namespace DeviceLibrary
reelParam.WareCode = rightcode;
reelParam.ReeID = reelParam.SN;
reelParam.RFID = "S"+reelParam.SN;
return true;
}
}
......
......@@ -194,13 +194,13 @@ namespace DeviceLibrary
StoreMoveInfo.NextMoveStep(MoveStep.StoreIn08);
StoreMoveInfo.log($"收到完成贴标NG");
}
else if (StoreMoveInfo.MoveParam.usedCount==1)
{
StoreMoveInfo.NextMoveStep(MoveStep.StoreIn08);
StoreMoveInfo.log($"该物料已入过库");
StoreMoveInfo.MoveParam.IsNg=true;
StoreMoveInfo.MoveParam.NgMsg= "The material has been stocked, and is not allowed to stock again.";
}
//else if (StoreMoveInfo.MoveParam.usedCount >= 1)
//{
// StoreMoveInfo.NextMoveStep(MoveStep.StoreIn08);
// StoreMoveInfo.log($"该物料已入过库");
// StoreMoveInfo.MoveParam.IsNg = true;
// StoreMoveInfo.MoveParam.NgMsg = "The material has been stocked, and is not allowed to stock again.";
//}
else
{
if (string.IsNullOrEmpty(LabelingMoveInfo.MoveParam.PosID))
......@@ -235,7 +235,9 @@ namespace DeviceLibrary
}
break;
case MoveStep.StoreIn05:
if (boxTransport.IsComplateOrFree)
if (!boxTransport.IsComplateOrFree)
break;
if (StoreMoveInfo.MoveParam.usedCount == 0)
{
if (StoreMoveInfo.MoveParam.RFID.Length > 16)
StoreMoveInfo.MoveParam.RFID = StoreMoveInfo.MoveParam.RFID.Substring(0, 16);
......@@ -314,7 +316,7 @@ namespace DeviceLibrary
Z_Axis.AbsMove(StoreMoveInfo, Config.Z_Axis_P1, Config.Z_Axis_P1_speed);
return;
}
}
StoreMoveInfo.NextMoveStep(MoveStep.StoreIn09);
from = CSVPositionReader<ACStorePosition>.GetPositon(RFIDP);
to = CSVPositionReader<ACStorePosition>.GetPositon(StoreMoveInfo.MoveParam.PosID);
......@@ -322,7 +324,6 @@ namespace DeviceLibrary
StoreMoveInfo.MoveParam.ReelOnFixture = true;
boxTransport.Start(new BoxStorePosition(Config, from, StoreMoveInfo.MoveParam), new BoxStorePosition(Config, to, StoreMoveInfo.MoveParam), StoreMoveType.InStore, true);
StoreMoveInfo.log($"开始转运到入库位置");
}
break;
case MoveStep.StoreIn06:
StoreMoveInfo.NextMoveStep(MoveStep.StoreIn07);
......@@ -476,7 +477,7 @@ namespace DeviceLibrary
{
ServerCM.SendStoreState(StoreMoveInfo.MoveParam.PosID, StoreStatus.OutStoreBoxEnd);
bool issame = false;
string ds="";
string ds = "";
for (int i = 0; i < 15; i++)
{
if (RobotManage.RFID.ReadEPC(16, out byte[] data))
......@@ -487,16 +488,17 @@ namespace DeviceLibrary
var mds = ds;
if (mds.StartsWith("S"))
mds = mds.Substring(1);
if (StoreMoveInfo.MoveParam.WareCode.IndexOf(mds) >-1)
if (StoreMoveInfo.MoveParam.WareCode.IndexOf(mds) > -1)
{
StoreMoveInfo.MoveParam.RFID = ds;
StoreMoveInfo.log("读取到 RFID:" + ds + " , "+ RobotManage.RFID.HexBuff(data));
StoreMoveInfo.log("读取到 RFID:" + ds + " , " + RobotManage.RFID.HexBuff(data));
issame = true;
break;
}
}
}
if (!issame) {
if (!issame)
{
if (RobotManage.RFID2.ReadEPC(16, out data))
{
if (data[0] != 0xFF)
......@@ -521,24 +523,35 @@ namespace DeviceLibrary
if (!issame)
{
StoreMoveInfo.log("读取到的RFID与物料信息不符 读取到 RFID:" + ds);
Msg.add("rfid.nomatch", crc.GetString("Res0140","读取到的RFID与物料信息不符:") + ds, MsgLevel.alarm);
RobotManage.UserPause(crc.GetString("Res0141","读取到的RFID与物料信息不符"));
StoreMoveInfo.MoveParam.OutPosID = StoreMoveInfo.MoveParam.PosID;
Msg.add("rfid.nomatch", crc.GetString("Res0140", "读取到的RFID与物料信息不符:") + ds, MsgLevel.alarm);
//RobotManage.UserPause(crc.GetString("Res0141","读取到的RFID与物料信息不符"));
}
StoreMoveInfo.NextMoveStep(MoveStep.StoreOut12);
from = CSVPositionReader<ACStorePosition>.GetPositon(RFIDP);
to = CSVPositionReader<ACStorePosition>.GetPositon(StoreMoveInfo.MoveParam.OutPosID);
StoreMoveInfo.log($"开始转运出库");
StoreMoveInfo.MoveParam.ReelOnFixture = true;
boxTransport.Start(new BoxStorePosition(Config, from, StoreMoveInfo.MoveParam), new BoxStorePosition(Config, to, StoreMoveInfo.MoveParam), StoreMoveType.OutStore, true);
StoreMoveInfo.log($"开始转运出库");
}
break;
case MoveStep.StoreOut12:
if (boxTransport.IsComplateOrFree)
{
if (StoreMoveInfo.MoveParam.OutPosID != StoreMoveInfo.MoveParam.PosID)
{
ServerCM.SendStoreState(StoreMoveInfo.MoveParam.PosID, StoreStatus.OutStoreBoxEnd);
ServerCM.SendStoreState(StoreMoveInfo.MoveParam.PosID, StoreStatus.OutStoreEnd);
StoreMoveInfo.log("出库完成");
}
else {
ServerCM.cancelAndDisable(StoreMoveInfo.MoveParam.PosID);
StoreMoveInfo.log("出库NG,自动禁用库位:"+ StoreMoveInfo.MoveParam.PosID);
}
StoreMoveInfo.NextMoveStep(MoveStep.Wait);
OutStoreJobList.ClearLastPosid();
if (!StoreMoveInfo.MoveParam.IsNg)
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!