Commit 907b095b LN

服务器通信功能修改

1 个父辈 67dc99ba
......@@ -171,11 +171,14 @@ namespace OnlineStore.ACSquareStore
private void btnOpenAxisBreak_Click(object sender, EventArgs e)
{
LogUtil.info("点击:" + btnRShelfForward.Text);
StoreManager.Store.ShelfForward(2);
}
private void btnCloseAxisBreak_Click(object sender, EventArgs e)
{
LogUtil.info("点击:" + btnRShelfBack.Text);
StoreManager.Store.ShelfBack(2);
}
......@@ -230,48 +233,48 @@ namespace OnlineStore.ACSquareStore
private void btnOpenDoor_Click(object sender, EventArgs e)
{
LogUtil.info("点击:" + btnOpenLDoor.Text);
// StoreManager.Store.OpenDoor(1);
IOManager.IOMove(IO_Type.LeftDoor_Close, IO_VALUE.LOW);
}
private void btnCloseDoor_Click(object sender, EventArgs e)
{
LogUtil.info("点击:" + btnCloseLDoor.Text);
// StoreManager.Store.CloseDoor(1);
IOManager.IOMove(IO_Type.LeftDoor_Close, IO_VALUE.HIGH);
}
private void btnOpenRDoor_Click(object sender, EventArgs e)
{
LogUtil.info("点击:" + btnOpenRDoor.Text);
// StoreManager.Store.OpenDoor(2);
IOManager.IOMove(IO_Type.RightDoor_Close, IO_VALUE.LOW);
}
private void btnCloseRDoor_Click(object sender, EventArgs e)
{
LogUtil.info("点击:" + btnCloseRDoor.Text);
// StoreManager.Store.OpenDoor(2);
IOManager.IOMove(IO_Type.RightDoor_Close, IO_VALUE.HIGH);
}
private void btnLShelfForward_Click(object sender, EventArgs e)
{
LogUtil.info("点击:" + btnLShelfForward.Text);
StoreManager.Store.ShelfForward(1);
}
private void btnLShelfBack_Click(object sender, EventArgs e)
{
LogUtil.info("点击:" + btnLShelfBack.Text);
StoreManager.Store.ShelfBack(1);
}
private void btnOpenB_Click(object sender, EventArgs e)
{
IOManager.IOMove(IO_Type.Axis_Brake, IO_VALUE.HIGH);
}
private void btnCloseB_Click(object sender, EventArgs e)
{
IOManager.IOMove(IO_Type.Axis_Brake, IO_VALUE.LOW);
}
private void btnLShelfStop_Click(object sender, EventArgs e)
{
LogUtil.info("点击:" + btnLShelfStop.Text);
StoreManager.Store.LeftShlefMove.Stop();
}
private void btnRShlefStop_Click(object sender, EventArgs e)
{
LogUtil.info("点击:" + btnRShlefStop.Text);
StoreManager.Store.RightShelfMove.Stop();
}
}
......
......@@ -62,3 +62,10 @@
1.界面进出轴P3显示错误。
2.入库时:前后轴先移动到库位,再移动升降轴。
3.出库去库位时:前后轴先移动到库位,再移动升降轴。
20200917
方仓的字段:
1 入库时的字段: door: 1为1号仓门入库 2为2号仓门入库
2 出库放到仓门口算出库完成,完成时发送 door=1为1号仓门 door=2为2号仓门
3 仓门状态上传: 字段为door1和doo2, 状态:opened为已打开, closed为已关闭, opening为打开中, closing为关闭中
4 开关门操作: 开门openDoor=1为1号仓门打开, =2为2号仓门打开, closeDoor=1为1号仓门关闭,=2为2号仓门关闭
\ No newline at end of file
......@@ -224,5 +224,14 @@ namespace OnlineStore.Common
public static string rfidLoc = "rfidLoc";
public static string barcode = "barcode";
/// <summary>
/// 1 入库时的字段: door: 1为1号仓门入库 2为2号仓门入库
/// 2 出库放到仓门口算出库完成,完成时发送 door = 1为1号仓门 door = 2为2号仓门
/// </summary>
public static string door = "door";
public static string door1 = "door1";
public static string door2 = "door2";
public static string openDoor= "openDoor";
public static string closeDoor= "closeDoor";
}
}
......@@ -32,20 +32,20 @@ namespace OnlineStore.Common
return;
}
log.Info(log.Logger.Name + " - " + msg);
log.Info( msg);
AddToBox(msg, Color.Black);
//clear();
}
public static void info(ILog log,string msg, Color color)
{
log.Info(log.Logger.Name + " - " + msg);
log.Info( msg);
AddToBox(msg, color);
}
public static void debug(ILog log, string msg, Color color)
{
log.Debug(log.Logger.Name + " - " + msg);
log.Debug( msg);
if (debug_opened)
{
AddToBox(msg, color);
......@@ -53,7 +53,7 @@ namespace OnlineStore.Common
}
public static void debug(ILog log, string msg)
{
log.Debug(log.Logger.Name + " - " + msg);
log.Debug( msg);
if (debug_opened)
{
AddToBox(msg, Color.Gray);
......@@ -93,7 +93,7 @@ namespace OnlineStore.Common
}
public static void error(ILog log, string errorMsg)
{
log.Error(log.Logger.Name + " - " + errorMsg);
log.Error( errorMsg);
AddToBox(errorMsg, Color.Red);
}
private static void AddToBox(string msg, Color color)
......
......@@ -27,6 +27,7 @@ namespace OnlineStore.DeviceLibrary
/// 记录最后一次 出库的posID,出库完成发送给服务器之后清除
/// </summary>
public string lastPosId = "";
public int lastDoor = 0;
public StoreStatus lastPosIdStatus = StoreStatus.StoreOnline;
/// <summary>
/// 轴列表
......@@ -1172,7 +1173,8 @@ namespace OnlineStore.DeviceLibrary
string posId = data[ParamDefine.posId];
string plateW = data[ParamDefine.plateW];
string plateH = data[ParamDefine.plateH];
InOutPosInfo inoutInfo = new InOutPosInfo(message, posId, plateH, plateW);
int door = Convert.ToInt32(data[ParamDefine.door]);
InOutPosInfo inoutInfo = new InOutPosInfo(message, posId, plateH, plateW,door);
//根据发送的posId获取位置列表
ACSquareSPosition position = CSVPositionReader<ACSquareSPosition>.GetPositon(posId);
......@@ -1504,14 +1506,24 @@ namespace OnlineStore.DeviceLibrary
else if (storeStatus.Equals(StoreStatus.OutStoreBoxEnd) || storeStatus.Equals(StoreStatus.InStoreEnd))
{
boxStatus.data.Add(ParamDefine.posId, lastPosId);
if (lastPosIdStatus.Equals(StoreStatus.OutStoreBoxEnd) || lastPosIdStatus.Equals(StoreStatus.InStoreEnd))
{
boxStatus.data.Add(ParamDefine.door, lastDoor.ToString());
}
}
else if (!lastPosId.Equals(""))
{
boxStatus.data.Add(ParamDefine.posId, lastPosId);
boxStatus.status = (int)lastPosIdStatus;
string doorP = "";
if (lastPosIdStatus.Equals(StoreStatus.OutStoreBoxEnd) || lastPosIdStatus.Equals(StoreStatus.InStoreEnd))
{
boxStatus.data.Add(ParamDefine.door, lastDoor.ToString());
doorP = "door【" + lastDoor + "】";
}
if (lastPosId != "")
{
LogUtil.info(LOGGER, "给服务器发送出入库完成消息:" + StoreName + ",status【" + lastPosIdStatus + "】posId【" + lastPosId + "】");
LogUtil.info(LOGGER, "给服务器发送出入库完成消息:" + StoreName + ",status【" + lastPosIdStatus + "】posId【" + lastPosId + "】" + doorP);
}
lastPosId = "";
}
......@@ -1525,7 +1537,9 @@ namespace OnlineStore.DeviceLibrary
// boxStatus.status = (int)StoreStatus.InStoreExecute;
//}
}
//3 仓门状态上传: 字段为door1和doo2, 状态: opened为已打开, closed为已关闭, opening为打开中, closing为关闭中
boxStatus.data.Add(ParamDefine.door1, GetDoorStatus(1));
boxStatus.data.Add(ParamDefine.door2, GetDoorStatus(2));
//温湿度
//ASTemperateParam param = HumitureServer.GetTemperateParam(Config.Temperate_Serveraddress);
......@@ -1559,11 +1573,13 @@ namespace OnlineStore.DeviceLibrary
Operation resultOperation = HttpHelper.Post(StoreManager.GetPostApi(server), lineOperation, false);
//发送状态信息到服务器
if (resultOperation == null || (resultOperation.op <= 0))
if (resultOperation == null )
{
//判断服务端是否返回出库操作
return;
}
if (resultOperation.op > 0)
{
if (resultOperation.op.Equals(1))
{
ReviceInStoreProcess("", resultOperation);
......@@ -1580,6 +1596,45 @@ namespace OnlineStore.DeviceLibrary
{
LogUtil.error("收到服务器命令:op=" + resultOperation.op + ",未找到对应处理");
}
}
else if (resultOperation.data != null)
{
//4 开关门操作: 开门openDoor = 1为1号仓门打开, = 2为2号仓门打开, closeDoor = 1为1号仓门关闭,= 2为2号仓门关闭
bool result = false;
Dictionary<string, string> dataMap = resultOperation.data;
if (dataMap.ContainsKey(ParamDefine.openDoor))
{
if (dataMap[ParamDefine.openDoor].Equals(1))
{
LogUtil.info(StoreName + "收到服务器命令:openDoor=1 ");
result= OpenDoor(1);
}
else if (dataMap[ParamDefine.openDoor].Equals(2))
{
LogUtil.info(StoreName + "收到服务器命令:openDoor=2");
result = OpenDoor(2);
}
}
else if (dataMap.ContainsKey(ParamDefine.closeDoor))
{
if (dataMap[ParamDefine.closeDoor].Equals(1))
{
LogUtil.info(StoreName + "收到服务器命令:closeDoor=1");
result =CloseDoor(1);
}
else if (dataMap[ParamDefine.closeDoor].Equals(2))
{
LogUtil.info(StoreName + "收到服务器命令:closeDoor=2");
result = CloseDoor(2);
}
}
if (!result)
{
LogUtil.info(StoreName + "收到服务器命令:执行失败:" + result);
}
}
TimeSpan span = DateTime.Now - time;
if (span.TotalMilliseconds > 10)
{
......
......@@ -288,8 +288,8 @@ namespace OnlineStore.DeviceLibrary
if (StoreManager.UseShelfCheck)
{ //料盘检测
InStoreLog(" 入库:SI_00 检测料盘信号");
StoreMove.NextMoveStep(StoreMoveStep.SI_00_TrayCheck);
InStoreLog("入库:检测料盘信号 ");
if (param.PosInfo.ShelfType.Equals(1))
{
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LeftShelf_Check, IO_VALUE.HIGH));
......@@ -311,8 +311,8 @@ namespace OnlineStore.DeviceLibrary
}
private void SI_02_Move()
{
InStoreLog("入库:SI_02_ 进出轴(叉子)动作至P1,关闭门锁=" + StoreMove.MoveParam.PosInfo.ShelfType);
StoreMove.NextMoveStep(StoreMoveStep.SI_02_InOutAxisHome);
StoreMove.NextMoveStep(StoreMoveStep.SI_02_InOutToP1);
InStoreLog("入库:进出轴(叉子)动作至P1,关闭门锁=" + StoreMove.MoveParam.PosInfo.ShelfType);
CloseDoor(StoreMove.MoveParam.PosInfo.ShelfType);
InOutBackToP1(StoreMove.MoveParam.MoveP.InOut_P1);
}
......@@ -333,38 +333,38 @@ namespace OnlineStore.DeviceLibrary
SI_02_Move();
}
else if (StoreMove.MoveStep == StoreMoveStep.SI_02_InOutAxisHome)
else if (StoreMove.MoveStep == StoreMoveStep.SI_02_InOutToP1)
{
InStoreLog("入库:SI_03 升降轴,前进轴 动作到P1 ,托架后退");
StoreMove.NextMoveStep(StoreMoveStep.SI_03_ReturnHome);
StoreMove.NextMoveStep(StoreMoveStep.SI_03_ToP1);
InStoreLog("入库:升降轴到P1[" + moveP.UpDown_P1 + "],前进轴到P1[" + moveP.Middle_P1 + "] ,托架后退");
ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P1, Config.UpDownAxis_P1_Speed);
ACAxisMove(Config.Middle_Axis, moveP.Middle_P1, Config.MiddleAxis_P1_Speed);
ShelfBack(StoreMove.MoveParam.PosInfo.ShelfType, StoreMove);
}
else if (StoreMove.MoveStep == StoreMoveStep.SI_03_ReturnHome)
else if (StoreMove.MoveStep == StoreMoveStep.SI_03_ToP1)
{
InStoreLog("入库:SI_05 叉子进入入料口,进出轴至P2(进料口取料点) ");
StoreMove.NextMoveStep(StoreMoveStep.SI_05_DeviceToDoor);
ACAxisMove(Config.InOut_Axis, StoreMove.MoveParam.MoveP.InOut_P2, Config.InOutAxis_P2_Speed);
StoreMove.NextMoveStep(StoreMoveStep.SI_05_InoutToP2);
InStoreLog("入库:叉子进入入料口,进出轴至P2(进料口取料点) [" + moveP.InOut_P2 + "] ");
ACAxisMove(Config.InOut_Axis, moveP.InOut_P2, Config.InOutAxis_P2_Speed);
}
else if (StoreMove.MoveStep == StoreMoveStep.SI_05_DeviceToDoor)
else if (StoreMove.MoveStep == StoreMoveStep.SI_05_InoutToP2)
{
//NeedCheckSafetyLight = 0;
InStoreLog("入库:SI_06 拿物品, 升降轴至P7(进料口取料缓冲点) ");
StoreMove.NextMoveStep(StoreMoveStep.SI_06_UpdownAxisUp);
InStoreLog("入库: 拿物品, 升降轴至P7(进料口取料缓冲点) [" + moveP.UpDown_P7 + "]");
ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P7, Config.UpDownAxis_P7_Speed);
}
else if (StoreMove.MoveStep == StoreMoveStep.SI_06_UpdownAxisUp)
{
InStoreLog("入库:SI_07 叉子 从入料口抽出,进出轴至P1(待机点) ");
StoreMove.NextMoveStep(StoreMoveStep.SI_07_InoutBack);
StoreMove.NextMoveStep(StoreMoveStep.SI_07_InOutToP1 );
InStoreLog("入库: 叉子 从入料口抽出,进出轴至P1(待机点) [" + moveP.InOut_P1 + "]");
InOutBackToP1(moveP.InOut_P1);
}
else if (StoreMove.MoveStep == StoreMoveStep.SI_07_InoutBack)
else if (StoreMove.MoveStep == StoreMoveStep.SI_07_InOutToP1 )
{
InStoreLog("入库:SI_08 判断是否拿到物料");
StoreMove.NextMoveStep(StoreMoveStep.SI_08_WaitShelfDI);
InStoreLog("入库: 判断是否拿到物料");
if (StoreManager.UseShelfCheck)
{
if (StoreMove.MoveParam.PosInfo.ShelfType.Equals(1))
......@@ -381,50 +381,50 @@ namespace OnlineStore.DeviceLibrary
//判断是否拿到料
else if (StoreMove.MoveStep == StoreMoveStep.SI_08_WaitShelfDI)
{
InStoreLog("入库:SI_09 移动到库位点,前后轴至P2(库位点),");
StoreMove.NextMoveStep(StoreMoveStep.SI_09_MoveToBag);
StoreMove.NextMoveStep(StoreMoveStep.SI_09_MiddleToP3);
InStoreLog("入库: 移动到库位点,前后轴至P2(库位点), [" + moveP.Middle_P2 + "]");
ACAxisMove(Config.Middle_Axis, moveP.Middle_P2, Config.MiddleAxis_P2_Speed);
// ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P3, Config.UpDownAxis_P3_Speed);
}
else if (StoreMove.MoveStep == StoreMoveStep.SI_09_MoveToBag)
else if (StoreMove.MoveStep == StoreMoveStep.SI_09_MiddleToP3)
{
InStoreLog("入库:SI_10 移动到库位点,升降轴至P3(库位入库前点) ");
StoreMove.NextMoveStep(StoreMoveStep.SI_10_UpdownToBag);
InStoreLog("入库: 移动到库位点,升降轴至P3(库位入库前点) [" + moveP.UpDown_P3 + "] ");
//ACAxisMove(Config.Middle_Axis, moveP.Middle_P2, Config.MiddleAxis_P2_Speed);
ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P3, Config.UpDownAxis_P3_Speed);
}
else if (StoreMove.MoveStep == StoreMoveStep.SI_10_UpdownToBag)
{
InStoreLog("入库:SI_11 叉子进入库位中,进出轴至P4(库位取放料点) ");
StoreMove.NextMoveStep(StoreMoveStep.SI_11_DeviceToBag);
StoreMove.NextMoveStep(StoreMoveStep.SI_11_InoutToP4);
InStoreLog("入库:叉子进入库位中,进出轴至P4(库位取放料点) [" + moveP.InOut_P4 + "] ");
ACAxisMove(Config.InOut_Axis, moveP.InOut_P4, Config.InOutAxis_P4_Speed);
}
else if (StoreMove.MoveStep == StoreMoveStep.SI_11_DeviceToBag)
else if (StoreMove.MoveStep == StoreMoveStep.SI_11_InoutToP4)
{
InStoreLog("入库:SI_12 放下物品,升降轴至P4(库位入料缓冲点), ");
// 5= 入仓位完成(料仓Box把料盘放入对应的库位中,装置还未恢复原始状态)
string posId = StoreMove.MoveParam != null ? StoreMove.MoveParam.PosInfo.PosId : "";
lastPosId = posId;
lastDoor = StoreMove.MoveParam.PosInfo.ShelfType;
lastPosIdStatus = StoreStatus.InStoreEnd;
storeStatus = StoreStatus.InStoreEnd;
//手动发给服务器状态,防止没有手动
//SendLineStatus(StoreID, posId, StoreStatus.InStoreEnd);
StoreMove.NextMoveStep(StoreMoveStep.SI_12_PutWareToBag);
StoreMove.NextMoveStep(StoreMoveStep.SI_12_PutWare);
InStoreLog("入库:放下物品,升降轴至P4(库位入料缓冲点) ["+ moveP.UpDown_P4 + "], 更新状态=InStoreEnd, "+ lastDoor);
ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P4, Config.UpDownAxis_P4_Speed);
}
else if (StoreMove.MoveStep == StoreMoveStep.SI_12_PutWareToBag)
else if (StoreMove.MoveStep == StoreMoveStep.SI_12_PutWare)
{
InStoreLog("入库:SI_13 叉子从库位中返回,进出轴动作至P1(待机点) ");
StoreMove.NextMoveStep(StoreMoveStep.SI_13_DeviceBackFromBag);
StoreMove.NextMoveStep(StoreMoveStep.SI_13_InoutToP1);
InStoreLog("入库:叉子从库位中返回,进出轴动作至P1(待机点) ["+ moveP.InOut_P1 + "] ");
InOutBackToP1(moveP.InOut_P1);
}
else if (StoreMove.MoveStep == StoreMoveStep.SI_13_DeviceBackFromBag)
else if (StoreMove.MoveStep == StoreMoveStep.SI_13_InoutToP1)
{
InStoreLog("入库:SI_14 检查叉子物料检测信号=low");
StoreMove.NextMoveStep(StoreMoveStep.SI_14_CheckTrayIsGo);
InStoreLog("入库:检查叉子物料检测信号=low");
if (StoreManager.UseShelfCheck)
{
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.TrayCheck_Fixture, IO_VALUE.LOW));
......@@ -432,8 +432,8 @@ namespace OnlineStore.DeviceLibrary
}
else if (StoreMove.MoveStep == StoreMoveStep.SI_14_CheckTrayIsGo)
{
InStoreLog("入库:SI_15 升降轴 返回待机点 ,托架前进");
StoreMove.NextMoveStep(StoreMoveStep.SI_15_UpdownBack);
InStoreLog("入库:升降轴 返回待机点P1["+ moveP.UpDown_P1 + "] ,托架前进");
// ACAxisMove(Config.Middle_Axis, moveP.Middle_P1, Config.MiddleAxis_P1_Speed);
ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P1, Config.UpDownAxis_P1_Speed);
ShelfForward(StoreMove.MoveParam.PosInfo.ShelfType);
......@@ -441,11 +441,9 @@ namespace OnlineStore.DeviceLibrary
else if (StoreMove.MoveStep == StoreMoveStep.SI_15_UpdownBack)
{
InStoreLog("入库:SI_15 前后轴 返回待机点 ");
StoreMove.NextMoveStep(StoreMoveStep.SI_16_GoBack);
InStoreLog("入库: 前后轴 返回待机点P1 ["+ moveP.Middle_P1 + "],打开门锁 ");
ACAxisMove(Config.Middle_Axis, moveP.Middle_P1, Config.MiddleAxis_P1_Speed);
// ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P1, Config.UpDownAxis_P1_Speed);
// ShelfForward(StoreMove.MoveParam.PosInfo.ShelfType);
}
else if (StoreMove.MoveStep == StoreMoveStep.SI_16_GoBack)
{
......@@ -498,8 +496,8 @@ namespace OnlineStore.DeviceLibrary
storeRunStatus = StoreRunStatus.Busy;
StoreMove.NewMove(StoreMoveType.OutStore, param);
StoreMove.NextMoveStep(StoreMoveStep.SO_01_DeviceBack);
OutStoreLog("出库:SO_01 叉子先运动到P1 , 开始");
StoreMove.NextMoveStep(StoreMoveStep.SO_01_InoutToP1);
OutStoreLog("出库: 叉子先运动到P1 , 开始");
InOutBackToP1(StoreMove.MoveParam.MoveP.InOut_P1);
return true;
}
......@@ -520,58 +518,64 @@ namespace OnlineStore.DeviceLibrary
{
return;
}
if (StoreMove.MoveStep == StoreMoveStep.SO_01_DeviceBack)
if (StoreMove.MoveStep == StoreMoveStep.SO_01_InoutToP1)
{
StoreMove.NextMoveStep(StoreMoveStep.SO_02_ToBagPosition);
OutStoreLog("出库:SO_02 走到库位, 前后轴至P2(库位点), ,托架后退");
// ComMoveToPosition(moveP.ComPress_P3,Config.CompAxis_P3_Speed);
ACAxisMove(Config.Middle_Axis, StoreMove.MoveParam.MoveP.Middle_P2, Config.MiddleAxis_P2_Speed);
// ACAxisMove(Config.UpDown_Axis, StoreMove.MoveParam.MoveP.UpDown_P5, Config.UpDownAxis_P5_Speed);
ShelfBack(StoreMove.MoveParam.PosInfo.ShelfType);
StoreMove.NextMoveStep(StoreMoveStep.SO_02_MiddleToP2);
OutStoreLog("出库: 走到库位, 前后轴至P2(库位点) [" + moveP.Middle_P2 + "]");
ACAxisMove(Config.Middle_Axis, moveP.Middle_P2, Config.MiddleAxis_P2_Speed);
}
else if (StoreMove.MoveStep == StoreMoveStep.SO_02_ToBagPosition)
else if (StoreMove.MoveStep == StoreMoveStep.SO_02_MiddleToP2)
{
StoreMove.NextMoveStep(StoreMoveStep.SO_03_UpdownMove);
OutStoreLog("出库:SO_03 走到库位, 升降轴至P5(库位出库前点) ");
// ComMoveToPosition(moveP.ComPress_P3,Config.CompAxis_P3_Speed);
// ACAxisMove(Config.Middle_Axis, StoreMove.MoveParam.MoveP.Middle_P2, Config.MiddleAxis_P2_Speed);
ACAxisMove(Config.UpDown_Axis, StoreMove.MoveParam.MoveP.UpDown_P5, Config.UpDownAxis_P5_Speed);
StoreMove.NextMoveStep(StoreMoveStep.SO_03_UpdownToP5);
OutStoreLog("出库: 走到库位, 升降轴至P5(库位出库前点) ["+ moveP.UpDown_P5 + "]");
ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P5, Config.UpDownAxis_P5_Speed);
// ShelfBack(StoreMove.MoveParam.PosInfo.ShelfType);
}
else if (StoreMove.MoveStep == StoreMoveStep.SO_03_UpdownMove)
else if (StoreMove.MoveStep == StoreMoveStep.SO_03_UpdownToP5)
{
StoreMove.NextMoveStep(StoreMoveStep.SO_04_DeviceToBag);
OutStoreLog("出库:SO_04 叉子进入库位中, 进出轴至P3(库位取放料点) ");
StoreMove.NextMoveStep(StoreMoveStep.SO_04_InoutToP3);
OutStoreLog("出库: 叉子进入库位中, 进出轴至P3(库位取放料点) ["+ moveP.InOut_P4 + "]");
ACAxisMove(Config.InOut_Axis, moveP.InOut_P4, Config.InOutAxis_P3_Speed);
}
else if (StoreMove.MoveStep == StoreMoveStep.SO_04_DeviceToBag)
else if (StoreMove.MoveStep == StoreMoveStep.SO_04_InoutToP3)
{
OutStoreLog("出库:SO_05 拿起物品,升降轴至P6(库位出料缓冲点) ");
StoreMove.NextMoveStep(StoreMoveStep.SO_05_BagWareToDevice);
StoreMove.NextMoveStep(StoreMoveStep.SO_05_GetWare);
OutStoreLog("出库: 拿起物品,升降轴至P6(库位出料缓冲点) ["+ moveP.UpDown_P6 + "]");
ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P6, Config.UpDownAxis_P6_Speed);
}
else if (StoreMove.MoveStep == StoreMoveStep.SO_05_BagWareToDevice)
else if (StoreMove.MoveStep == StoreMoveStep.SO_05_GetWare)
{
StoreMove.NextMoveStep(StoreMoveStep.SO_06_BagDeviceBack);
OutStoreLog("出库:SO_06 叉子从库位返回,进出轴至P1(待机点) ");
InOutBackToP1(moveP.InOut_P1);
if (IOManager.IOValue(IO_Type.LeftShelf_Check).Equals(IO_VALUE.LOW))
{
StoreMove.MoveParam.PosInfo.ShelfType = 1;
OutStoreLog(" 出库: 当前未设置ShelfType,默认ShelfType=" + StoreMove.MoveParam.PosInfo.ShelfType);
}
else
{
StoreMove.MoveParam.PosInfo.ShelfType = 2;
OutStoreLog("出库: 当前未设置ShelfType,默认ShelfType=" + StoreMove.MoveParam.PosInfo.ShelfType);
}
//把库位的物品放到取到叉子上之后是出仓完成
string posId = StoreMove.MoveParam != null ? StoreMove.MoveParam.PosInfo.PosId : "";
lastPosId = posId;
lastPosIdStatus = StoreStatus.OutStoreBoxEnd;
storeStatus = StoreStatus.OutStoreBoxEnd;
lastDoor = StoreMove.MoveParam.PosInfo.ShelfType;
StoreMove.NextMoveStep(StoreMoveStep.SO_06_InoutToP1);
OutStoreLog("出库: 叉子从库位返回,进出轴至P1(待机点)["+ moveP.InOut_P1 + "],更新状态=OutStoreBoxEnd, " + lastDoor);
InOutBackToP1(moveP.InOut_P1);
}
else if (StoreMove.MoveStep == StoreMoveStep.SO_06_BagDeviceBack)
else if (StoreMove.MoveStep == StoreMoveStep.SO_06_InoutToP1)
{
StoreMove.NextMoveStep(StoreMoveStep.SO_07_CheckHasTray);
OutStoreLog("出库:SO_07 判断是否拿到料");
OutStoreLog("出库: 判断是否拿到料");
if (StoreManager.UseShelfCheck)
{
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.TrayCheck_Fixture, IO_VALUE.HIGH));
}
}
else if (StoreMove.MoveStep == StoreMoveStep.SO_07_CheckHasTray)
{
......@@ -583,16 +587,15 @@ namespace OnlineStore.DeviceLibrary
}
StoreMove.NextMoveStep(StoreMoveStep.SO_08_UpdownBack);
OutStoreLog("出库:SO_08 升降轴至P2(进料口出料前点), 托架后退 ");
OutStoreLog("出库:升降轴至P2(进料口出料前点), ["+ moveP.UpDown_P2 + "] ");
ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P2, Config.UpDownAxis_P2_Speed);
// ACAxisMove(Config.Middle_Axis, moveP.Middle_P1, Config.MiddleAxis_P1_Speed);
ShelfBack(StoreMove.MoveParam.PosInfo.ShelfType, StoreMove);
}
else if (StoreMove.MoveStep == StoreMoveStep.SO_08_UpdownBack)
{
StoreMove.NextMoveStep(StoreMoveStep.SO_09_ToDoorPosition);
OutStoreLog("出库:SO_09 前后轴至P1(待机点) ");
OutStoreLog("出库:前后轴至P1(待机点) ["+ moveP.Middle_P1 + "] ");
// ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P2, Config.UpDownAxis_P2_Speed);
ACAxisMove(Config.Middle_Axis, moveP.Middle_P1, Config.MiddleAxis_P1_Speed);
// ShelfBack(StoreMove.MoveParam.PosInfo.ShelfType, StoreMove);
......@@ -601,39 +604,79 @@ namespace OnlineStore.DeviceLibrary
{
//SO_10_DeviceToDoorPro();
StoreMove.NextMoveStep(StoreMoveStep.SO_10_WaitNoTray);
OutStoreLog("出库:SO_10_WaitNoTray 等待托架无料 ");
if (StoreMove.MoveParam.PosInfo.ShelfType.Equals(1))
int shelfType = StoreMove.MoveParam.PosInfo.ShelfType;
OutStoreLog("出库:等待托架无料 [" + shelfType + "] ");
if (shelfType.Equals(1))
{
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LeftShelf_Check, IO_VALUE.LOW));
}
else
else if (shelfType.Equals(2))
{
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.RightShelf_Check, IO_VALUE.LOW));
}
if (StoreMove.MoveParam.PosInfo.ShelfType.Equals(0))
{
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LeftShelf_Check, IO_VALUE.LOW));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.RightShelf_Check, IO_VALUE.LOW));
StoreMove.OneWaitCanEndStep = true;
}
}
else if (StoreMove.MoveStep == StoreMoveStep.SO_10_WaitNoTray)
{
StoreMove.NextMoveStep(StoreMoveStep.SO_11_DeviceToDoor);
OutStoreLog("出库:SO_11 叉子进出料口,进出轴至P2(进料口取料点) ");
if (StoreMove.MoveParam.PosInfo.ShelfType.Equals(0))
{
if (IOManager.IOValue(IO_Type.LeftShelf_Check).Equals(IO_VALUE.LOW))
{
StoreMove.MoveParam.PosInfo.ShelfType = 1;
OutStoreLog(" 出库: 当前未设置ShelfType,默认ShelfType=" + StoreMove.MoveParam.PosInfo.ShelfType);
}
else if (IOManager.IOValue(IO_Type.RightShelf_Check).Equals(IO_VALUE.LOW))
{
StoreMove.MoveParam.PosInfo.ShelfType = 2;
OutStoreLog("出库: 当前未设置ShelfType,默认ShelfType=" + StoreMove.MoveParam.PosInfo.ShelfType);
}
else
{
StoreMove.NextMoveStep(StoreMoveStep.SO_10_WaitNoTray);
int shelfType = StoreMove.MoveParam.PosInfo.ShelfType;
OutStoreLog("出库: 再次 等待托架无料 [" + shelfType + "] ");
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LeftShelf_Check, IO_VALUE.LOW));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.RightShelf_Check, IO_VALUE.LOW));
StoreMove.OneWaitCanEndStep = true;
}
}
if (StoreMove.MoveParam.PosInfo.ShelfType > 0)
{
StoreMove.NextMoveStep(StoreMoveStep.SO_11_ShelfBack);
OutStoreLog("出库: 托架后退 [" + StoreMove.MoveParam.PosInfo.ShelfType + "] ");
ShelfBack(StoreMove.MoveParam.PosInfo.ShelfType, StoreMove);
}
}
else if (StoreMove.MoveStep == StoreMoveStep.SO_11_ShelfBack)
{
StoreMove.NextMoveStep(StoreMoveStep.SO_12_InoutToP2);
OutStoreLog("出库: 叉子进出料口,进出轴至P2(进料口取料点) ["+ moveP.InOut_P2 + "] ");
ACAxisMove(Config.InOut_Axis, moveP.InOut_P2, Config.InOutAxis_P2_Speed);
}
else if (StoreMove.MoveStep == StoreMoveStep.SO_11_DeviceToDoor)
else if (StoreMove.MoveStep == StoreMoveStep.SO_12_InoutToP2)
{
OutStoreLog("出库:SO_12 放下物品,升降轴至P8(进料口出料缓冲点) ");
StoreMove.NextMoveStep(StoreMoveStep.SO_12_DevicePutWare);
StoreMove.NextMoveStep(StoreMoveStep.SO_13_PutWare);
OutStoreLog("出库: 放下物品,升降轴至P8(进料口出料缓冲点) ["+ moveP.UpDown_P8 + "]");
ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P8, Config.UpDownAxis_P8_Speed);
}
else if (StoreMove.MoveStep == StoreMoveStep.SO_12_DevicePutWare)
else if (StoreMove.MoveStep == StoreMoveStep.SO_13_PutWare)
{
StoreMove.NextMoveStep(StoreMoveStep.SO_13_DeviceOutFromDoor);
OutStoreLog("出库:SO_13 叉子从出料口返回,,进出轴动作至P1(待机点) ");
StoreMove.NextMoveStep(StoreMoveStep.SO_14_InoutToP1);
OutStoreLog("出库: 叉子从出料口返回,,进出轴动作至P1(待机点) ["+ moveP.InOut_P1 + "] ");
InOutBackToP1(moveP.InOut_P1);
}
else if (StoreMove.MoveStep == StoreMoveStep.SO_13_DeviceOutFromDoor)
else if (StoreMove.MoveStep == StoreMoveStep.SO_14_InoutToP1)
{
StoreMove.NextMoveStep(StoreMoveStep.SO_14_CheckShelfDI);
OutStoreLog("出库:SO_14 判断物料信号是否正确 ");
StoreMove.NextMoveStep(StoreMoveStep.SO_15_CheckShelfDI);
OutStoreLog("出库: 判断物料信号是否正确 ");
if (StoreManager.UseShelfCheck)
{
if (StoreMove.MoveParam.PosInfo.ShelfType.Equals(1))
......@@ -647,15 +690,15 @@ namespace OnlineStore.DeviceLibrary
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.TrayCheck_Fixture, IO_VALUE.LOW));
}
}
else if (StoreMove.MoveStep == StoreMoveStep.SO_14_CheckShelfDI)
else if (StoreMove.MoveStep == StoreMoveStep.SO_15_CheckShelfDI)
{
StoreMove.NextMoveStep(StoreMoveStep.SO_15_GoBack);
OutStoreLog("出库:SO_15 升降轴到P1(待机点) ,托架前进,打开门锁");
StoreMove.NextMoveStep(StoreMoveStep.SO_16_GoBack);
OutStoreLog("出库: 升降轴到P1(待机点) ["+ moveP.UpDown_P1 + "] ,托架前进,打开门锁");
ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P1, Config.UpDownAxis_P1_Speed);
OpenDoor(StoreMove.MoveParam.PosInfo.ShelfType);
ShelfForward(StoreMove.MoveParam.PosInfo.ShelfType, StoreMove);
}
else if (StoreMove.MoveStep == StoreMoveStep.SO_15_GoBack)
else if (StoreMove.MoveStep == StoreMoveStep.SO_16_GoBack)
{
TimeSpan span = DateTime.Now - startOutStoreTime;
string posId = StoreMove.MoveParam != null ? StoreMove.MoveParam.PosInfo.PosId : "";
......@@ -798,12 +841,76 @@ namespace OnlineStore.DeviceLibrary
private void InStoreLog(string msg)
{
string posId = StoreMove.MoveParam != null ? StoreMove.MoveParam.PosInfo.PosId : "";
LogUtil.info(LOGGER, "【" + posId + "】" + msg, storeMoveColor);
LogUtil.info(LOGGER, "【" + posId + "】[" + StoreMove.MoveStep + "] " + msg, storeMoveColor);
}
private void OutStoreLog(string msg)
{
string posId = StoreMove.MoveParam != null ? StoreMove.MoveParam.PosInfo.PosId : "";
LogUtil.info(LOGGER, "【" + posId + "】" + msg, storeMoveColor);
LogUtil.info(LOGGER, "【" + posId + "】["+StoreMove.MoveStep+"] " + msg, storeMoveColor);
}
private bool OpenDoor(int doorType)
{
return OpenCloseDoor(doorType, IO_VALUE.LOW);
}
private bool CloseDoor(int doorType)
{
return OpenCloseDoor(doorType, IO_VALUE.HIGH);
}
private bool OpenCloseDoor(int doorType,IO_VALUE value)
{
if (doorType.Equals(1))
{
if (IOManager.IOValue(IO_Type.LeftDoor_Close).Equals(IO_VALUE.HIGH))
{
IOManager.IOMove(IO_Type.LeftDoor_Close, value);
return true;
}
else
{
LogUtil.info("OpenCloseDoor [" + doorType + "] [" + value + "] 失败");
return false;
}
}
else
{
if (IOManager.IOValue(IO_Type.RightDoor_Close).Equals(IO_VALUE.HIGH))
{
IOManager.IOMove(IO_Type.RightDoor_Close, value);
return true;
}
else
{
LogUtil.info("OpenCloseDoor [" + doorType + "] [" + value + "] 失败");
return false;
}
}
}
private string GetDoorStatus(int doorType)
{
////3 仓门状态上传: 字段为door1和doo2, 状态: opened为已打开, closed为已关闭, opening为打开中, closing为关闭中
if (doorType.Equals(1))
{
if (IOManager.IOValue(IO_Type.LeftDoor_Close).Equals(IO_VALUE.HIGH))
{
return "opened";
}
else
{
return "closed";
}
}
else
{
if (IOManager.IOValue(IO_Type.RightDoor_Close).Equals(IO_VALUE.HIGH))
{
return "opened";
}
else
{
return "closed";
}
}
}
}
}
......@@ -171,31 +171,31 @@ namespace OnlineStore.DeviceLibrary
/// <summary>
///出库:叉子先运动到P1
/// </summary>
SO_01_DeviceBack = 101,
SO_01_InoutToP1 = 101,
/// <summary>
/// 出库:前后轴至P2(库位点),托架后退)
/// </summary>
SO_02_ToBagPosition = 102,
SO_02_MiddleToP2 = 102,
/// <summary>
/// 出库:升降轴至P5(库位出库前点)
/// </summary>
SO_03_UpdownMove= 103,
SO_03_UpdownToP5= 103,
/// <summary>
/// 出库:叉子进入库位中, 轴3( 叉子) 至P3(库位取放料点)
/// </summary>
SO_04_DeviceToBag = 104,
SO_04_InoutToP3 = 104,
/// <summary>
///出库: 库位的物品放入叉子上,轴2( 上下) 至P6( 库位出料缓冲点),轴4( 压紧) 至P2(压紧点)
/// </summary>
SO_05_BagWareToDevice = 105,
SO_05_GetWare = 105,
/// <summary>
///出库:叉子从 库位返回,轴3( 叉子) 至P1( 待机点)
/// </summary>
SO_06_BagDeviceBack = 106,
SO_06_InoutToP1 = 106,
/// <summary>
/// 出库:检测叉子是否有料
......@@ -212,32 +212,36 @@ namespace OnlineStore.DeviceLibrary
/// </summary>
SO_09_ToDoorPosition = 109,
/// <summary>
/// 等待门口无料盘
/// 出库:等待门口无料盘
/// </summary>
SO_10_WaitNoTray = 110,
/// <summary>
/// 出库:托架后退
/// </summary>
SO_11_ShelfBack = 111,
/// <summary>
/// 出库:叉子进出料口,,轴3( 叉子) 至P2( 进料口取料点)
/// /// </summary>
SO_11_DeviceToDoor = 111,
SO_12_InoutToP2 = 112,
/// <summary>
/// 出库:把物品放下,,轴2( 上下) 至P8( 进料口出料缓冲点)轴4( 压紧) 至P1( 待机点)
/// </summary>
SO_12_DevicePutWare = 112,
SO_13_PutWare = 113,
/// <summary>
/// 出库:叉子从出料口返回,,轴3( 叉子) 动作至P1( 待机点)
/// </summary>
SO_13_DeviceOutFromDoor = 113,
SO_14_InoutToP1 = 114,
/// <summary>
/// 出库:判断物料信号
/// </summary>
SO_14_CheckShelfDI = 114,
SO_15_CheckShelfDI = 115,
/// <summary>
/// 出库:升降轴返回,, 轴2至P1( 待机点)
/// </summary>
SO_15_GoBack = 115,
SO_16_GoBack = 116,
///// <summary>
///// 等待拿走物品
///// </summary>
......@@ -254,16 +258,16 @@ namespace OnlineStore.DeviceLibrary
/// <summary>
/// 入库。。进出轴(叉子)先返回P1,关闭门锁
/// </summary>
SI_02_InOutAxisHome = 202,
SI_02_InOutToP1 = 202,
/// <summary>
/// 入库。。所有轴先回到待机点,轴2、轴1 动作到P1, 托架后退
/// </summary>
SI_03_ReturnHome = 203,
SI_03_ToP1 = 203,
/// <summary>
/// 入库。。叉子进入入料口,轴3( 叉子) 至P2( 进料口取料点)
/// </summary>
SI_05_DeviceToDoor = 205,
SI_05_InoutToP2 = 205,
/// <summary>
/// 入库。。把物品放入叉子上,轴2( 上下) 至P7( 进料口取料缓冲点)
/// </summary>
......@@ -273,7 +277,7 @@ namespace OnlineStore.DeviceLibrary
/// <summary>
/// 入库。。叉子 从入料口抽出,轴3( 叉子) 至P1( 待机点)
/// </summary>
SI_07_InoutBack = 207,
SI_07_InOutToP1 = 207,
/// <summary>
/// 入库。。等待物料信号到位
......@@ -282,7 +286,7 @@ namespace OnlineStore.DeviceLibrary
/// <summary>
/// 入库。。移动到库位点,前后轴 至P3(库位入库前点)
/// </summary>
SI_09_MoveToBag = 209,
SI_09_MiddleToP3 = 209,
/// <summary>
/// 入库。。移动到库位点,升降轴到库位
/// </summary>
......@@ -291,15 +295,15 @@ namespace OnlineStore.DeviceLibrary
/// <summary>
/// 入库。。叉子进入库位中, 进出轴至P4(库位取放料点)
/// </summary>
SI_11_DeviceToBag = 211,
SI_11_InoutToP4 = 211,
/// <summary>
/// 入库。。放下物品,轴2( 上下) 至P4( 库位入料缓冲点)
/// </summary>
SI_12_PutWareToBag = 212,
SI_12_PutWare = 212,
/// <summary>
/// 入库。。叉子从库位中返回,轴3( 叉子) 动作至P1( 待机点)
/// </summary>
SI_13_DeviceBackFromBag = 213,
SI_13_InoutToP1 = 213,
/// <summary>
/// 入库。判断料叉物料检测信号是否消失
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!