From 6428fad15dbe79e30a48ffc9aabe31e03a45426c Mon Sep 17 00:00:00 2001 From: patrick <patrick.xu@broconcentric.com> Date: 星期四, 05 十二月 2019 12:50:13 +0800 Subject: [PATCH] 1. 添加部分log信息 2. 修改部分机器人动作流程 3. 开放OperationConfig的InputData参数 --- src/A032.Process/ProcessControl_Method.cs | 47 +++++++++++++++++++++++++++++++++++++---------- 1 files changed, 37 insertions(+), 10 deletions(-) diff --git a/src/A032.Process/ProcessControl_Method.cs b/src/A032.Process/ProcessControl_Method.cs index 451d2bd..dc0d8c8 100644 --- a/src/A032.Process/ProcessControl_Method.cs +++ b/src/A032.Process/ProcessControl_Method.cs @@ -27,11 +27,11 @@ List<TaskAssignInfo> taskAssignedList = new List<TaskAssignInfo>(); #region AGV浜嬩欢 - private void OnAGVBatterLvlChanged(SeerAGVDriver agv, float batterLvl) + private void OnAGVBatteryLvlChanged(SeerAGVDriver agv, float preBatteryLvl, float batteryLvl) { var bind = Config.AGVBindCollection.FirstOrDefault(u => u.AGVId == agv.Id); SeerAGVInitialConfig iConfig = agv.InitialConfig as SeerAGVInitialConfig; - if (batterLvl <= iConfig.BatteryLvlToCharge) + if (batteryLvl <= iConfig.BatteryLvlToCharge && preBatteryLvl > iConfig.BatteryLvlToCharge) { Task.Run(() => { @@ -57,9 +57,14 @@ return; } - if (batterLvl >= iConfig.BatteryLvlChargeDone) + if (batteryLvl >= iConfig.BatteryLvlChargeDone && preBatteryLvl < iConfig.BatteryLvlChargeDone) { - bind.SetAGVStatus(TaskStatus.Available); + var position = Config.PositionCollection.FirstOrDefault(u => u.PositionCode == agv.CurrentPosition); + + if (position != null && position.Description == PathPositionDefinition.Charge) + { + bind.SetAGVStatus(TaskStatus.Available); + } return; } } @@ -105,19 +110,25 @@ //} bind.SetAGVStatus(TaskStatus.Available); + LogAsync(DateTime.Now, $"AGV鍒颁綅{positionCode}", ""); PathPosition position = Config.PositionCollection.FirstOrDefault(p => p.PositionCode == bind.AGVDest); switch (position.Description) { case PathPositionDefinition.LoadEmptyTray: + LogAsync(DateTime.Now, $"AGV瀹屾垚锛屽噯澶囦笂绌篢ray", ""); Robot_LoadEmptyTray(bind.Id, position); break; case PathPositionDefinition.LoadFullTray: + LogAsync(DateTime.Now, $"AGV瀹屾垚锛屽噯澶囦笂婊ray", ""); + Robot_LoadFullTraySnap(bind.Id, position); break; case PathPositionDefinition.UnloadEmptyTray: + LogAsync(DateTime.Now, $"AGV瀹屾垚锛屽噯澶囦笅绌篢ray", ""); Robot_UnloadEmptyTraySnap(bind.Id, position); break; case PathPositionDefinition.UnloadFullTray: + LogAsync(DateTime.Now, $"AGV瀹屾垚锛屽噯澶囦笅婊ray", ""); Robot_UnloadFullTraySnap(bind.Id, position); break; default: @@ -183,8 +194,11 @@ if (machineEmptyTrayDict[msg.Para2] < Config.Machine_EmptyTrayNum) { - bind.RobotIOHandle.Reset(); - bind.RobotIOHandle.WaitOne(); + //bind.RobotIOHandle.Reset(); + //bind.RobotIOHandle.WaitOne(); + bind.Robot.MonitorHandle.WaitOne(); + //bind.Robot.IOChangedHandle.WaitOne(); + Thread.Sleep((bind.Robot.InitialConfig as AuboRobotInitialConfig).ScanInterval); if (!bind.IsFullTrayFull) { @@ -206,12 +220,19 @@ { bind.CurrentFullTray = int.Parse(msg.Datas[1]); - bind.RobotIOHandle.Reset(); - bind.RobotIOHandle.WaitOne(); + //bind.RobotIOHandle.Reset(); + //bind.RobotIOHandle.WaitOne(); + bind.Robot.MonitorHandle.WaitOne(); + //bind.Robot.IOChangedHandle.WaitOne(); + Thread.Sleep((bind.Robot.InitialConfig as AuboRobotInitialConfig).ScanInterval); if (!bind.IsFullTrayEmpty) { Camera_UnloadFullTray(robot.Id, msg.Para2); + } + else + { + bind.RobotStatus = TaskStatus.Available; } } break; @@ -387,6 +408,7 @@ [ProcessMethod("", "Robot_Monitor_FullTrayFull", "鏈哄櫒浜虹洃鍚簨浠�-婊ray鍖哄煙鏀炬弧", true)] public ProcessResponse Robot_Monitor_FullTrayFull(IOperationConfig config, IDevice device) { + //(device as AuboRobotDriver).IOChangedHandle.Reset(); bool isFullTrayFull = config.InputPara[0] == 1; var bind = Config.AGVBindCollection.FirstOrDefault(u => u.RobotId == device.Id); if (isFullTrayFull) @@ -425,7 +447,9 @@ bind.IsFullTrayTaskAssigned = false; } - bind.RobotIOHandle.Set(); + //(device as AuboRobotDriver).IOChangedHandle.Set(); + + //bind.RobotIOHandle.Set(); return new ProcessResponse(true); } @@ -433,11 +457,13 @@ [ProcessMethod("", "Robot_Monitor_FullTrayEmpty", "鏈哄櫒浜虹洃鍚簨浠�-婊ray鍖哄煙娓呯┖", true)] public ProcessResponse Robot_Monitor_FullTrayEmpty(IOperationConfig config, IDevice device) { + //(device as AuboRobotDriver).IOChangedHandle.Reset(); bool isFullTrayEmpty = config.InputPara[0] == 0; var bind = Config.AGVBindCollection.FirstOrDefault(u => u.RobotId == device.Id); bind.IsFullTrayEmpty = isFullTrayEmpty; - bind.RobotIOHandle.Set(); + //(device as AuboRobotDriver).IOChangedHandle.Set(); + //bind.RobotIOHandle.Set(); return new ProcessResponse(true); } @@ -1194,6 +1220,7 @@ bind.RobotStatus = TaskStatus.Running; bind.Robot.SendMsg(RobotMsgAction.Move, RobotMsgParas.LineSnap, position.PositionNo); + //LogAsync(DateTime.Now, "Robot杩愬姩鑷充笅婊ray鎷嶇収", ""); } //[ProcessMethod("", "Camera_UnloadFullTray", "鐩告満鎿嶄綔鍗歌浇婊ray", true)] -- Gitblit v1.8.0