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