From 809abe2aac4617cc838d36fec913f5268a066eb4 Mon Sep 17 00:00:00 2001 From: patrick <patrick.xu@broconcentric.com> Date: 星期六, 19 十月 2019 13:50:28 +0800 Subject: [PATCH] 1. 简化部分配置 2. 修改OmronFins驱动 --- src/A032.Process/ProcessControl.cs | 113 +++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 82 insertions(+), 31 deletions(-) diff --git a/src/A032.Process/ProcessControl.cs b/src/A032.Process/ProcessControl.cs index 7d26329..04638ee 100644 --- a/src/A032.Process/ProcessControl.cs +++ b/src/A032.Process/ProcessControl.cs @@ -179,7 +179,7 @@ ProcessState = DeviceState.DSOpen; - QueryRobotIO(); + //QueryRobotIO(); //Task.Run(() => //{ @@ -298,9 +298,43 @@ InitialAGVs(); 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 +355,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 +370,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 +388,9 @@ SeerAGVDriver agv = new SeerAGVDriver(); agv.InitialConfig = c; AGVDict[agv.InitialConfig.ID] = agv; + + agv.OnAGVPositoinChanged = OnAGVPositionChanged; + agv.OnAGVTaskStatusChanged = OnAGVTaskStatusChanged; }); } @@ -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,39 @@ } }); - #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); + }); + #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 +576,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 +589,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 +707,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 +1153,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 +1185,6 @@ camera.UploadOperationConfig(opConfig); camera.Snapshot(opConfig, out hImage); - - //SaveTempImage(cameraName, camera.ImageFilePath); - //SaveTempImage(camera, cameraId); if (cameraConifg.DelayAfter > 0) { -- Gitblit v1.8.0