public override void DoWork() { try { // 异常 if (_device.DeviceStatus() == FRT.DeviceError || _device.CommandStatus() == FRT.CommandError) { ISetTaskErr(); // LOG log.LOG(DataControl._mTaskTools.GetLogMessE(ITEM, Order, "设备故障或命令错误.")); return; } #region 调试 if (PublicParam.IsIgnoreFRT) //add调试判断 { if (_device.ActionStatus() == FRT.Stop) { // 发送指令 if (!DataControl._mSocket.SendToClient(ITEM.DEVICE, Order, out string result)) { throw new Exception(result); } DataControl._mSocket.SwithRefresh(ITEM.DEVICE, false); // LOG log.LOG(DataControl._mTaskTools.GetLogMess(ITEM, Order)); } else { Thread.Sleep(5000); // 完成任务 ISetTaskSuc(); // 解锁设备数据状态 DataControl._mTaskTools.DeviceUnLock(ITEM.DEVICE); // LOG log.LOG(DataControl._mTaskTools.GetLogMessS(ITEM, Order)); } return; } #endregion ARF _arf = new ARF(ITEM.LOC_TO); // 对接设备状态 if (!string.IsNullOrEmpty(ITEM.LOC_TO.Trim())) // 目标不为空即最终无货 { // 摆渡车辊台停止状态 if (_arf.CurrentStatus() == ARF.RollerStop) { // 摆渡车辊台上无货物 if (_arf.GoodsStatus() == ARF.GoodsNoAll) { return; } } // 固定辊台无货物 if (_device.GoodsStatus() == FRT.GoodsNoAll && _device.ActionStatus() == FRT.Stop) { // 完成任务 ISetTaskSuc(); // 解锁设备数据状态 DataControl._mTaskTools.DeviceUnLock(ITEM.DEVICE); // LOG log.LOG(DataControl._mTaskTools.GetLogMessS(ITEM, Order)); return; } else if (_device.GoodsStatus() == FRT.GoodsYesAll && _device.ActionStatus() == FRT.Stop && _arf.GoodsStatus() == ARF.GoodsYesAll && _arf.ActionStatus() == ARF.Stop) { return; // 固定辊台与摆渡车都有货,不启动辊台 } } else { // 摆渡车辊台上无货物,固定辊台上有货物 if (_arf.GoodsStatus() == ARF.GoodsNoAll && _device.GoodsStatus() != FRT.GoodsNoAll && _device.ActionStatus() == FRT.Stop) { // 完成任务 ISetTaskSuc(); // 解锁设备数据状态 DataControl._mTaskTools.DeviceUnLock(ITEM.DEVICE); // LOG log.LOG(DataControl._mTaskTools.GetLogMessS(ITEM, Order)); return; } else if (_device.GoodsStatus() == FRT.GoodsYesAll && _device.ActionStatus() == FRT.Stop && _arf.GoodsStatus() == ARF.GoodsYesAll && _arf.ActionStatus() == ARF.Stop) { return; // 固定辊台与摆渡车都有货,不启动辊台 } } // 发送指令 if (_device.ActionStatus() == FRT.Stop) { if (!DataControl._mSocket.SendToClient(ITEM.DEVICE, Order, out string result)) { throw new Exception(result); } DataControl._mSocket.SwithRefresh(ITEM.DEVICE, false); // LOG log.LOG(DataControl._mTaskTools.GetLogMess(ITEM, Order)); } } catch (Exception ex) { // LOG log.LOG(DataControl._mTaskTools.GetLogMessE(ITEM, Order, ex.ToString())); } }
public void Update() { if (isconnect != frt.IsAlive()) { ISConnect = frt.IsAlive(); } if (!frt.IsAlive()) { return; } if (actionsta != frt.ActionStatus()) { actionsta = frt.ActionStatus(); ActionStatus = ""; } if (devicesta != frt.DeviceStatus()) { devicesta = frt.DeviceStatus(); DeviceStatus = ""; } if (commandsta != frt.CommandStatus()) { commandsta = frt.CommandStatus(); CommandStatus = ""; } if (now_task != frt.CurrentTask()) { now_task = frt.CurrentTask(); Now_Task = ""; } if (finish_task != frt.FinishTask()) { finish_task = frt.FinishTask(); Finish_Task = ""; } if (loadstatus != frt.GoodsStatus()) { loadstatus = frt.GoodsStatus(); LoadStatus = ""; } if (rollerstatus != frt.CurrentStatus()) { rollerstatus = frt.CurrentStatus(); RollerStatus = ""; } if (rollerdirection != frt.RunDirection()) { rollerdirection = frt.RunDirection(); RollerDirection = ""; } if (errormsg != frt.ErrorMessage()) { errormsg = frt.ErrorMessage(); ErrorMsg = ""; } if (frt.GetUpdateTime(out string time)) { if (datatime != time) { DataTime = time; } } }
public override void DoWork() { try { // 异常 if (_device.DeviceStatus() == FRT.DeviceError || _device.CommandStatus() == FRT.CommandError) { ISetTaskErr(); // LOG log.LOG(String.Format(@"【Error】{0}:WMS任务ID[ {1} ],AGV任务ID[ {2} ],设备号[ {3} ], 异常信息[ {4} ].", ITEM.ITEM_ID, ITEM.WCS_NO, ITEM.ID, ITEM.DEVICE, "设备故障或命令错误")); return; } #region 调试 if (PublicParam.IsIgnoreFRT) //add调试判断 { if (_device.ActionStatus() == FRT.Stop) { // 发送指令 if (!DataControl._mSocket.SendToClient(ITEM.DEVICE, Order, out string result)) { throw new Exception(result); } DataControl._mSocket.SwithRefresh(ITEM.DEVICE, false); // LOG log.LOG(String.Format(@"【SendOrder】{0}:WMS任务ID[ {1} ],AGV任务ID[ {2} ],设备号[ {3} ], 指令[ {4} ].", ITEM.ITEM_ID, ITEM.WCS_NO, ITEM.ID, ITEM.DEVICE, DataControl._mStools.BytetToString(Order))); } else { Thread.Sleep(5000); // 完成任务 ISetTaskSuc(); // LOG log.LOG(String.Format(@"【Success】{0}:WMS任务ID[ {1} ],AGV任务ID[ {2} ],设备号[ {3} ], 指令[ {4} ].", ITEM.ITEM_ID, ITEM.WCS_NO, ITEM.ID, ITEM.DEVICE, DataControl._mStools.BytetToString(Order))); } return; } #endregion // 对接设备状态 if (!string.IsNullOrEmpty(ITEM.LOC_TO.Trim())) // 目标不为空即最终无货 { // 固定辊台无货物 if (_device.GoodsStatus() == FRT.GoodsNoAll && _device.ActionStatus() == FRT.Stop) { // 完成任务 ISetTaskSuc(); // LOG log.LOG(String.Format(@"【Success】{0}:WMS任务ID[ {1} ],AGV任务ID[ {2} ],设备号[ {3} ], 指令[ {4} ].", ITEM.ITEM_ID, ITEM.WCS_NO, ITEM.ID, ITEM.DEVICE, DataControl._mStools.BytetToString(Order))); return; } } else { // 固定辊台上有2#有货 或者 都有货 if ((_device.GoodsStatus() == FRT.GoodsYes2 || _device.GoodsStatus() == FRT.GoodsYesAll) && _device.ActionStatus() == FRT.Stop) { // 完成任务 ISetTaskSuc(); // LOG log.LOG(String.Format(@"【Success】{0}:WMS任务ID[ {1} ],AGV任务ID[ {2} ],设备号[ {3} ], 指令[ {4} ].", ITEM.ITEM_ID, ITEM.WCS_NO, ITEM.ID, ITEM.DEVICE, DataControl._mStools.BytetToString(Order))); return; } } // 发送指令 if (_device.ActionStatus() == FRT.Stop) { if (!DataControl._mSocket.SendToClient(ITEM.DEVICE, Order, out string result)) { throw new Exception(result); } DataControl._mSocket.SwithRefresh(ITEM.DEVICE, false); // LOG log.LOG(String.Format(@"【SendOrder】{0}:WMS任务ID[ {1} ],AGV任务ID[ {2} ],设备号[ {3} ], 指令[ {4} ].", ITEM.ITEM_ID, ITEM.WCS_NO, ITEM.ID, ITEM.DEVICE, DataControl._mStools.BytetToString(Order))); } } catch (Exception ex) { // LOG log.LOG(String.Format(@"【Error】{0}:WMS任务ID[ {1} ],AGV任务ID[ {2} ],设备号[ {3} ], 异常信息[ {4} ].", ITEM.ITEM_ID, ITEM.WCS_NO, ITEM.ID, ITEM.DEVICE, ex.ToString())); } }