Commit a1b2c052 LN

1,获取库位号增加参数lastPosId。

2,入料动作优化。
1 个父辈 53f5bc04
...@@ -263,5 +263,10 @@ namespace OnlineStore.Common ...@@ -263,5 +263,10 @@ namespace OnlineStore.Common
public static string barcode = "barcode"; public static string barcode = "barcode";
/// <summary>
/// 上次入库的库位号
/// </summary>
public static string lastPosId = "lastPosId";
} }
} }
...@@ -225,6 +225,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -225,6 +225,7 @@ namespace OnlineStore.DeviceLibrary
if (rmaxis != null && rmaxis.IsPortOpen) if (rmaxis != null && rmaxis.IsPortOpen)
{ {
rmaxis.ResetError(); rmaxis.ResetError();
rmaxis.StopAxis();
} }
} }
public int GetErrorCode() public int GetErrorCode()
......
...@@ -436,7 +436,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -436,7 +436,7 @@ namespace OnlineStore.DeviceLibrary
return msg; return msg;
} }
public static GetPosResult GetPosId(string deviceName, List<string> codeList, int height, int width, string rfid, int feedEquipId) public static GetPosResult GetPosId(string deviceName, List<string> codeList, int height, int width, string rfid, string lastPosId)
{ {
GetPosResult result = new GetPosResult(); GetPosResult result = new GetPosResult();
try try
...@@ -471,6 +471,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -471,6 +471,7 @@ namespace OnlineStore.DeviceLibrary
paramMap.Add("cids", StoreManager.Config.CID); paramMap.Add("cids", StoreManager.Config.CID);
paramMap.Add("code", codeStr); paramMap.Add("code", codeStr);
paramMap.Add(ParamDefine.rfid, rfid); paramMap.Add(ParamDefine.rfid, rfid);
paramMap.Add(ParamDefine.lastPosId, lastPosId);
string server = GetAddr(Addr_PosForPutin, paramMap); string server = GetAddr(Addr_PosForPutin, paramMap);
DateTime startTime = DateTime.Now; DateTime startTime = DateTime.Now;
......
...@@ -578,7 +578,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -578,7 +578,7 @@ namespace OnlineStore.DeviceLibrary
/// </summary> /// </summary>
/// <param name="areaNum">1=A上暂存区,2=A下暂存区,3=B上暂存区,4=B下暂存区</param> /// <param name="areaNum">1=A上暂存区,2=A下暂存区,3=B上暂存区,4=B下暂存区</param>
/// <returns></returns> /// <returns></returns>
public bool AxisInWorkingArea(int areaNum) public bool AxisInWorkingArea(params int[] areaNums)
{ {
int updownP = UpdownAxis.GetAclPosition(); int updownP = UpdownAxis.GetAclPosition();
int middleP = MiddleAxis.GetAclPosition(); int middleP = MiddleAxis.GetAclPosition();
...@@ -593,7 +593,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -593,7 +593,7 @@ namespace OnlineStore.DeviceLibrary
if (updownP > Config.Updown_P6_AUnderH - updownWucha) if (updownP > Config.Updown_P6_AUnderH - updownWucha)
{ {
//在A下暂存区 //在A下暂存区
if (areaNum == 2) if (areaNums.Contains(2))
{ {
return true; return true;
} }
...@@ -601,14 +601,14 @@ namespace OnlineStore.DeviceLibrary ...@@ -601,14 +601,14 @@ namespace OnlineStore.DeviceLibrary
//升降轴高于上方低点 //升降轴高于上方低点
else if (updownP < Config.Updown_P5_AUpperL + updownWucha) else if (updownP < Config.Updown_P5_AUpperL + updownWucha)
{ {
if (areaNum == 1) if (areaNums.Contains(1))
{ {
return true; return true;
} }
} }
else else
{ {
if (areaNum == 1 || areaNum == 2) if (areaNums.Contains(1) || areaNums.Contains(2))
{ {
return true; return true;
} }
...@@ -619,7 +619,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -619,7 +619,7 @@ namespace OnlineStore.DeviceLibrary
//如果升降轴低于下方高点 //如果升降轴低于下方高点
if (updownP > Config.Updown_P12_BUnderH - updownWucha) if (updownP > Config.Updown_P12_BUnderH - updownWucha)
{ {
if (areaNum == 4) if (areaNums.Contains(4))
{ {
return true; return true;
} }
...@@ -627,14 +627,14 @@ namespace OnlineStore.DeviceLibrary ...@@ -627,14 +627,14 @@ namespace OnlineStore.DeviceLibrary
//升降轴高于上方低点 //升降轴高于上方低点
else if (updownP < Config.Updown_P11_BUpperL + updownWucha) else if (updownP < Config.Updown_P11_BUpperL + updownWucha)
{ {
if (areaNum == 3) if (areaNums.Contains(3))
{ {
return true; return true;
} }
} }
else else
{ {
if (areaNum == 3 || areaNum == 4) if (areaNums.Contains(3) || areaNums.Contains(4))
{ {
return true; return true;
} }
......
...@@ -64,15 +64,23 @@ namespace OnlineStore.DeviceLibrary ...@@ -64,15 +64,23 @@ namespace OnlineStore.DeviceLibrary
LogInfo("报警中,无法开始取料入库:" + param.PosInfo.ToStr()); LogInfo("报警中,无法开始取料入库:" + param.PosInfo.ToStr());
return false; return false;
} }
if (AxisInWorkingArea(new int[] { 1, 2, 3, 4 }))
{
LogInfo("选择轴在暂存区,请先手动复位。 取料入库失败:" + param.PosInfo.ToStr());
return false;
}
if (MoveInfo.MoveType.Equals(MoveType.None)) if (MoveInfo.MoveType.Equals(MoveType.None))
{ {
runStatus = RunStatus.Busy; runStatus = RunStatus.Busy;
MoveInfo.NewMove(MoveType.InStore, param); MoveInfo.NewMove(MoveType.InStore, param);
startInTime = DateTime.Now; startInTime = DateTime.Now;
//if (MiddleAxis.IsInPosition(Config.Middle_P1))
//{ int updownP = UpdownAxis.GetAclPosition();
if (UpdownAxis.IsInPosition(Config.Updown_P1))
//如果升降轴在待机点上方,上方为-
int upP1 = Config.Updown_P1 + 1000;
//if (UpdownAxis.IsInPosition(Config.Updown_P1))
if (UpdownAxis.IsInPosition(Config.Updown_P1) || (updownP <= upP1))
{ {
ToShelfMove(); ToShelfMove();
} }
...@@ -81,14 +89,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -81,14 +89,7 @@ namespace OnlineStore.DeviceLibrary
MoveInfo.NextMoveStep(StepEnum.II01_UpdownToP1); MoveInfo.NextMoveStep(StepEnum.II01_UpdownToP1);
UpdownAxis.AbsMove(MoveInfo, Config.Updown_P1, Config.Updown_P1_Speed); UpdownAxis.AbsMove(MoveInfo, Config.Updown_P1, Config.Updown_P1_Speed);
MoveLog($"开始入库{param.ShelfType}{MoveInfo.SLog}: 升降轴先返回P1{Config.Updown_P1}"); MoveLog($"开始入库{param.ShelfType}{MoveInfo.SLog}: 升降轴先返回P1{Config.Updown_P1}");
} }
//}
//else
//{
// MoveInfo.NextMoveStep(StepEnum.II00_MiddleToP1);
// MiddleAxis.AbsMove(MoveInfo, Config.Middle_P1, Config.Middle_P1_Speed);
// MoveLog($"开始入库{MoveInfo.SLog}: 料串{param.ShelfType},旋转轴先返回P1{Config.Middle_P1}");
//}
return true; return true;
} }
return false; return false;
...@@ -304,10 +305,14 @@ namespace OnlineStore.DeviceLibrary ...@@ -304,10 +305,14 @@ namespace OnlineStore.DeviceLibrary
else if (MoveInfo.IsStep(StepEnum.II46_UpdownToP4)) else if (MoveInfo.IsStep(StepEnum.II46_UpdownToP4))
{ {
if (!BatchMove_A.IsInScanCode()) if (!BatchMove_A.IsInScanCode())
{ {
int targetV = Config.Middle_P4_AUpper - Config.MiddleOffsetValue;
MoveInfo.NextMoveStep(StepEnum.II47_MiddleToP1); MoveInfo.NextMoveStep(StepEnum.II47_MiddleToP1);
MoveLog($" 入料->A侧 {MoveInfo.SLog}: 旋转轴 到P1(待机点){Config.Middle_P1}"); MoveLog($" 入料->A侧 {MoveInfo.SLog}: 旋转轴 到P4(偏移点){targetV}");
MiddleAxis.AbsMove(MoveInfo, Config.Middle_P1, Config.Middle_P1_Speed); MiddleAxis.AbsMove(MoveInfo, targetV, Config.Middle_P1_Speed);
//MoveLog($" 入料->A侧 {MoveInfo.SLog}: 旋转轴 到P1(待机点){Config.Middle_P1}");
//MiddleAxis.AbsMove(MoveInfo, Config.Middle_P1, Config.Middle_P1_Speed);
} }
else if (MoveInfo.IsTimeOut(20)) else if (MoveInfo.IsTimeOut(20))
{ {
...@@ -392,9 +397,13 @@ namespace OnlineStore.DeviceLibrary ...@@ -392,9 +397,13 @@ namespace OnlineStore.DeviceLibrary
//需要等A侧料串不扫码时再过去 //需要等A侧料串不扫码时再过去
if (!BatchMove_B.IsInScanCode()) if (!BatchMove_B.IsInScanCode())
{ {
MoveInfo.NextMoveStep(StepEnum.II67_MiddleToP1); int targetValue = Config.Middle_P5_BUpper + Config.MiddleOffsetValue;
MoveLog($" 入料->B侧 {MoveInfo.SLog}: 旋转轴 到P1(待机点){Config.Middle_P1}");
MiddleAxis.AbsMove(MoveInfo, Config.Middle_P1, Config.Middle_P1_Speed); MoveInfo.NextMoveStep(StepEnum.II67_MiddleToP1);
MoveLog($" 入料->B侧 {MoveInfo.SLog}: 旋转轴 到P5(偏移点){targetValue}");
MiddleAxis.AbsMove(MoveInfo, targetValue, Config.Middle_P1_Speed);
//MoveLog($" 入料->B侧 {MoveInfo.SLog}: 旋转轴 到P1(待机点){Config.Middle_P1}");
//MiddleAxis.AbsMove(MoveInfo, Config.Middle_P1, Config.Middle_P1_Speed);
} }
else if (MoveInfo.IsTimeOut(20)) else if (MoveInfo.IsTimeOut(20))
{ {
...@@ -488,14 +497,22 @@ namespace OnlineStore.DeviceLibrary ...@@ -488,14 +497,22 @@ namespace OnlineStore.DeviceLibrary
if (shelf.Equals(1)) if (shelf.Equals(1))
{ {
MoveInfo.NextMoveStep(StepEnum.II02_MIddleToP2); MoveInfo.NextMoveStep(StepEnum.II02_MIddleToP2);
MoveLog($"入库取料{shelf}{MoveInfo.SLog}: 旋转轴到P2(A料口取料点){Config.Middle_P2_ATake},等待{IO_Type.MAxis_Check_A}信号亮"); MoveLog($"入库取料{shelf}{MoveInfo.SLog}: 升降轴下降到P1{Config.Updown_P1},旋转轴到P2(A料口取料点){Config.Middle_P2_ATake},等待{IO_Type.MAxis_Check_A}信号亮");
if (!UpdownAxis.IsInPosition(Config.Updown_P1))
{
UpdownAxis.AbsMove(MoveInfo, Config.Updown_P1, Config.Updown_P1_Speed);
}
MiddleAxis.AbsMove(MoveInfo, Config.Middle_P2_ATake, Config.Middle_P2_Speed); MiddleAxis.AbsMove(MoveInfo, Config.Middle_P2_ATake, Config.Middle_P2_Speed);
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.MAxis_Check_A, IO_VALUE.HIGH)); MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.MAxis_Check_A, IO_VALUE.HIGH));
} }
else if (shelf.Equals(2)) else if (shelf.Equals(2))
{ {
MoveInfo.NextMoveStep(StepEnum.II05_MIddleToP3); MoveInfo.NextMoveStep(StepEnum.II05_MIddleToP3);
MoveLog($"入库取料{shelf}{MoveInfo.SLog}: 旋转轴到P3(B料口取料点){Config.Middle_P3_BTake},等待{IO_Type.MAxis_Check_B}信号亮"); MoveLog($"入库取料{shelf}{MoveInfo.SLog}: 升降轴下降到P1{Config.Updown_P1},旋转轴到P3(B料口取料点){Config.Middle_P3_BTake},等待{IO_Type.MAxis_Check_B}信号亮");
if (!UpdownAxis.IsInPosition(Config.Updown_P1))
{
UpdownAxis.AbsMove(MoveInfo, Config.Updown_P1, Config.Updown_P1_Speed);
}
MiddleAxis.AbsMove(MoveInfo, Config.Middle_P3_BTake, Config.Middle_P3_Speed); MiddleAxis.AbsMove(MoveInfo, Config.Middle_P3_BTake, Config.Middle_P3_Speed);
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.MAxis_Check_B, IO_VALUE.HIGH)); MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.MAxis_Check_B, IO_VALUE.HIGH));
} }
...@@ -569,8 +586,20 @@ namespace OnlineStore.DeviceLibrary ...@@ -569,8 +586,20 @@ namespace OnlineStore.DeviceLibrary
{ {
int ms = 5000; int ms = 5000;
string lastPosId = "";
//如果左侧是空右侧有料
if (BufferDataManager.AInStoreInfo == null && (BufferDataManager.BInStoreInfo != null))
{
lastPosId = BufferDataManager.BInStoreInfo.PosId;
}
else if (BufferDataManager.AInStoreInfo != null && (BufferDataManager.BInStoreInfo == null))
{
lastPosId = BufferDataManager.AInStoreInfo.PosId;
}
//从服务器获取库位号 //从服务器获取库位号
GetPosResult result = SServerManager.GetPosId(Name, codeList, pos.PlateH, pos.PlateW, pos.rfid, DeviceID); GetPosResult result = SServerManager.GetPosId(Name, codeList, pos.PlateH, pos.PlateW, pos.rfid, lastPosId);
LastResult = result.Result; LastResult = result.Result;
if (result.IsTimeOut) if (result.IsTimeOut)
{ {
...@@ -668,7 +697,11 @@ namespace OnlineStore.DeviceLibrary ...@@ -668,7 +697,11 @@ namespace OnlineStore.DeviceLibrary
LogInfo("报警中,无法开始出库:" + param.PosInfo.ToStr()); LogInfo("报警中,无法开始出库:" + param.PosInfo.ToStr());
return false; return false;
} }
if (AxisInWorkingArea(new int[] { 1, 2, 3, 4 }))
{
LogInfo("选择轴在暂存区,请先手动复位。出库失败:" + param.PosInfo.ToStr());
return false;
}
if (MoveInfo.MoveType.Equals(MoveType.None)) if (MoveInfo.MoveType.Equals(MoveType.None))
{ {
//获取位置是左侧还是右侧。 //获取位置是左侧还是右侧。
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!