From 7971d855ba2cf9772b46a7f67e2b669c0afcb91b Mon Sep 17 00:00:00 2001 From: patrick <patrick.xu@broconcentric.com> Date: 星期二, 22 十月 2019 11:30:35 +0800 Subject: [PATCH] 1. 添加标定操作及界面 2. 修改配置界面方法调用参数 3. SeerAGV添加电池信息监听 4. 添加AGV电池充电操作 5. 修改AGV状态变化操作,添加操作锁 --- src/A032.Process/ProcessControl.cs | 122 +++++++++++++++++++++++++++++----------- 1 files changed, 89 insertions(+), 33 deletions(-) diff --git a/src/A032.Process/ProcessControl.cs b/src/A032.Process/ProcessControl.cs index 7d26329..dfd85ab 100644 --- a/src/A032.Process/ProcessControl.cs +++ b/src/A032.Process/ProcessControl.cs @@ -179,7 +179,7 @@ ProcessState = DeviceState.DSOpen; - QueryRobotIO(); + //QueryRobotIO(); //Task.Run(() => //{ @@ -263,6 +263,7 @@ }); } + //Dictionary<string, MethodInfo> InvokeMethodDict = new Dictionary<string, MethodInfo>(); public List<ProcessMethodAttribute> CollectProcessMethods() { List<ProcessMethodAttribute> resultList = new List<ProcessMethodAttribute>(); @@ -274,6 +275,7 @@ if (attr != null) { resultList.Add(attr); + //InvokeMethodDict[attr.MethodCode] = m; } }); @@ -287,20 +289,51 @@ StationConfig = LoadStationConfig(configPath); #region 涓埆閰嶇疆鐨勭壒鍒鐞� - #endregion _warningRemains.CollectionChanged -= _warningRemains_CollectionChanged; _warningRemains.CollectionChanged += _warningRemains_CollectionChanged; InitialPLCs(); - InitialRobots(); InitialAGVs(); + InitialRobots(); InitialCameras(); + InitialAGVBindUnit(); + InitialMachineTrayNums(); AutoFacRegister(); LogAsync(DateTime.Now, "Process Initialized", ""); + } + + private void InitialMachineTrayNums() + { + machineEmptyTrayDict = Config.PositionCollection.Where(u => u.Description == PathPositionDefinition.UnloadEmptyTray).ToDictionary(p => p.PositionNo, p => 0); + + machineFullTrayDict = Config.PositionCollection.Where(u => u.Description == PathPositionDefinition.LoadFullTray).ToDictionary(p => p.PositionNo, p => 0); + } + + private void InitialAGVBindUnit() + { + Config.AGVBindCollection.ForEach(u => + { + if (AGVDict.ContainsKey(u.AGVId)) + { + u.AGV = AGVDict[u.AGVId]; + } + + if (RobotDict.ContainsKey(u.RobotId)) + { + u.Robot = RobotDict[u.RobotId]; + } + + if (CameraDict.ContainsKey(u.CameraId)) + { + u.Camera = CameraDict[u.CameraId]; + } + + //u.OnMethodInvoke = OnBindUnitTaskInvoke; + }); } private void InitialCameras() @@ -321,11 +354,11 @@ plc.InitialConfig = c; PLCDict[plc.InitialConfig.ID] = plc; - plc.OnMonitorAlarm -= Plc_OnMonitorAlarm; - plc.OnMonitorInvoke -= Plc_OnMonitorInvoke; + plc.OnMonitorAlarm -= OnMonitorAlarm; + plc.OnMonitorInvoke -= OnMonitorInvoke; - plc.OnMonitorAlarm += Plc_OnMonitorAlarm; - plc.OnMonitorInvoke += Plc_OnMonitorInvoke; + plc.OnMonitorAlarm += OnMonitorAlarm; + plc.OnMonitorInvoke += OnMonitorInvoke; }); } @@ -336,6 +369,14 @@ AuboRobotDriver robot = new AuboRobotDriver(); robot.InitialConfig = c; RobotDict[robot.InitialConfig.ID] = robot; + + robot.OnMsgReceived = OnRobotMsgReceived; + + robot.OnMonitorAlarm -= OnMonitorAlarm; + robot.OnMonitorInvoke -= OnMonitorInvoke; + + robot.OnMonitorAlarm += OnMonitorAlarm; + robot.OnMonitorInvoke += OnMonitorInvoke; }); } @@ -346,6 +387,10 @@ SeerAGVDriver agv = new SeerAGVDriver(); agv.InitialConfig = c; AGVDict[agv.InitialConfig.ID] = agv; + + agv.OnAGVPositoinChanged = OnAGVPositionChanged; + agv.OnAGVTaskStatusChanged = OnAGVTaskStatusChanged; + agv.OnAGVBatteryLvlChanged = OnAGVBatterLvlChanged; }); } @@ -447,7 +492,7 @@ /// </summary> protected Dictionary<string, HDevEngineTool> _halconToolDict = new Dictionary<string, HDevEngineTool>(); - private void InitialProcessMethods() + public virtual void InitialProcessMethods() { _processMethodDict = new Dictionary<string, MethodInfo>(); var methods = this.GetType().GetMethods().ToList(); @@ -458,7 +503,7 @@ { _processMethodDict[attr.MethodCode] = m; - #region 鍒濆鍖朒alconTool + #region 鍒濆鍖朒alconTool 鏍规嵁processMethod鐨勭壒鎬ф潵閰嶇疆 //if (attr.DeviceType.EndsWith("Camera")) //{ // if (StationConfig.ProcessOpConfigDict.Keys.Contains(attr.MethodCode)) @@ -484,29 +529,44 @@ } }); - #region 鍒濆鍖朒alconTool + #region 鍒濆鍖朒alconTool 鏍规嵁閰嶇疆鐨勬帴鍙g被鍨嬫潵閰嶇疆 _halconToolDict = new Dictionary<string, HDevEngineTool>(); Config.PLCConfigCollection.SelectMany(plcConfig => plcConfig.MonitorSetCollection).Select(ms => ms.OpConfig).ToList().ForEach(c => + { + InitialHalconTool(c as IHalconToolPath); + }); + + Config.VisionConfigCollection.ForEach(c => + { + InitialHalconTool(c as IHalconToolPath); + }); + + Config.ProcessOpConfigDict.Values.ToList().ForEach(c => + { + InitialHalconTool(c as IHalconToolPath); + }); + #endregion + } + + private void InitialHalconTool(IHalconToolPath toolPath) + { + //IHalconToolPath toolPath = c as IHalconToolPath; + if (toolPath != null) + { + toolPath.GetHalconToolPathList().ForEach(path => { - IHalconToolPath toolPath = c as IHalconToolPath; - if (toolPath != null) + if (!string.IsNullOrWhiteSpace(path) && !_halconToolDict.ContainsKey(path)) { - toolPath.GetHalconToolPathList().ForEach(path => - { - if (!string.IsNullOrWhiteSpace(path)) - { - string directoryPath = Path.GetDirectoryName(path); - string fileName = Path.GetFileNameWithoutExtension(path); + string directoryPath = Path.GetDirectoryName(path); + string fileName = Path.GetFileNameWithoutExtension(path); - HDevEngineTool tool = new HDevEngineTool(directoryPath); - tool.LoadProcedure(fileName); + HDevEngineTool tool = new HDevEngineTool(directoryPath); + tool.LoadProcedure(fileName); - _halconToolDict[path] = tool; - } - }); + _halconToolDict[path] = tool; } }); - #endregion + } } public List<IDevice> GetDeviceList() @@ -521,9 +581,8 @@ return list; } - #region PLC鐩戝惉 - - private void Plc_OnMonitorInvoke(DateTime dt, MonitorSet monitorSet) + #region IMonitor鐩戝惉 + private void OnMonitorInvoke(DateTime dt, IDevice device, MonitorSet monitorSet) { IOperationConfig config = monitorSet.OpConfig; string methodCode = monitorSet.MethodCode; @@ -535,7 +594,7 @@ try { //鏈塈OperationConfig鍙傛暟鐨勮皟鐢� - res = _processMethodDict[methodCode].Invoke(this, new object[] { config }); + res = _processMethodDict[methodCode].Invoke(this, new object[] { config, device }); reTryTimes = -1; } catch (Exception invokeEX) //娴佺▼鍔ㄤ綔寮傚父澶辫触 @@ -653,7 +712,7 @@ #endregion } - private void Plc_OnMonitorAlarm(DateTime dt, WarningSet warning, bool isAlarmRaised) + private void OnMonitorAlarm(DateTime dt, IDevice device, WarningSet warning, bool isAlarmRaised) { } @@ -1099,7 +1158,7 @@ protected Dictionary<string, Queue<string>> CameraBitmapDict = new Dictionary<string, Queue<string>>(); //protected Dictionary<string, Bitmap> CameraBitmapDict = new Dictionary<string, Bitmap>(); - protected HObject CollectHImage(CameraBase camera, IOperationConfig opConfig, string cameraId, string methodCode) + protected HObject CollectHImage(CameraBase camera, IOperationConfig opConfig, string methodCode) { HObject hImage = null; @@ -1131,9 +1190,6 @@ camera.UploadOperationConfig(opConfig); camera.Snapshot(opConfig, out hImage); - - //SaveTempImage(cameraName, camera.ImageFilePath); - //SaveTempImage(camera, cameraId); if (cameraConifg.DelayAfter > 0) { -- Gitblit v1.8.0