소스 검색

上相机检测流程优化及界面显示调整

优化视觉流程执行逻辑,增强异常处理和日志输出;完善未绑定校准ID时的兼容性;调整点位参数界面“流程”列显示条件,提升用户体验;代码格式及消息拼接细节优化。
徐孝锋 7 달 전
부모
커밋
1c6fd5d435

+ 31 - 2
TeamAAS-VM/Core/Management.cs

@@ -1557,11 +1557,40 @@ namespace TeamAAS_VP.Core
                         {
                             SendTaskMessage(Lang.触发上相机检测拍照, MessageLevel.Debug);
                             //相机的编号
-                            //Int16 cameraIndex = plc.ReadNode<Int16>(addressConfig.Out_UPCameracheckNum.Address);
+                            Int16 cameraIndex = plc.ReadNode<Int16>(addressConfig.Out_UPCameracheckNum.Address);
+                            SendTaskMessage(string.Format(Lang.编号0, cameraIndex), MessageLevel.Info);
 
+                            //视觉流程ID
+                            Guid procedureId = Guid.Empty;
+                            //获取锁付拍照的点位
+                            var pos = currentProduct.CheckCameraPoints.FirstOrDefault(p => p.Number == cameraIndex);
+                            if (pos != null)
+                            {
+                                procedureId = pos.VisionProcessID;
+                            }
 
+                            // 获取流程
+                            var process = _productService.GetCurrentProductProcedureModelById(procedureId);
+                            if (process == null)
+                            {
+                                SendTaskMessage(string.Format("未找到点位:{0}的视觉流程:{1}", cameraIndex, procedureId), MessageLevel.Alarm);
+                                await plc.WriteNodeAsync(addressConfig.Out_UPCameracheckStatus.Address, (Int16)2);
+                                return;
+                            }
 
-                            await plc.WriteNodeAsync(addressConfig.Out_UPCameracheckStatus.Address, (Int16)1);
+                            // 执行视觉任务
+                            var _cts = new CancellationTokenSource();
+                            var visionResult = await _remoteCommandService.ExecutePhotoGetSinglePoint(process, null, null, _cts.Token, cameraIndex, null);
+                            if (visionResult.IsSucceed)
+                            {
+                                await plc.WriteNodeAsync(addressConfig.Out_UPCameracheckStatus.Address, (Int16)1);
+                                SendTaskMessage($"点位{cameraIndex}检测OK", MessageLevel.Debug);
+                            }
+                            else
+                            {
+                                await plc.WriteNodeAsync(addressConfig.Out_UPCameracheckStatus.Address, (Int16)2);
+                                SendTaskMessage($"点位{cameraIndex}检测NG", MessageLevel.Error);
+                            }
                         }
                         else
                         {

+ 7 - 0
TeamAAS-VM/Services/RemoteCommandService.cs

@@ -1804,6 +1804,13 @@ namespace TeamAAS_VP.Services
 
                     SendTaskMessage(Lang.拍照OK, MessageLevel.Debug);
 
+                    if (procedure.CalibrationId== Guid.Empty)
+                    {
+                        //没有关联校准时,则执行检测任务
+                        await RecordPhotoCaptureAsync(procedure, robotCoord, true, new double[] { 0, 0, 0 }, new double[] { 0, 0, 0 }, string.Empty, positionIndex, remark);
+                        return (true, 0, 0, 0);
+                    }
+
                     // 3. 获取视觉输出结果
                     LogHelper.WriteLogInfo(Lang.开始获取视觉输出结果);
                     //获取相机校准

+ 12 - 10
TeamAAS-VM/ViewModels/Product/AdvancedProcedureViewModel.cs

@@ -56,11 +56,13 @@ namespace TeamAAS_VP.ViewModels.Product
         public ProcedureModel SelectProcedure
         {
             get { return _SelectProcedure; }
-            set { SetProperty(ref _SelectProcedure, value);
+            set
+            {
+                SetProperty(ref _SelectProcedure, value);
             }
         }
 
-        public CogToolBlockEditV2 ToolBlockEdit { get;set; }
+        public CogToolBlockEditV2 ToolBlockEdit { get; set; }
 
         private IRobot _Robot;
 
@@ -107,7 +109,7 @@ namespace TeamAAS_VP.ViewModels.Product
         public DelegateCommand VisionStaticAccuracyAnalyzerCommand =>
             _VisionStaticAccuracyAnalyzerCommand ?? (_VisionStaticAccuracyAnalyzerCommand = new DelegateCommand(ExecuteVisionStaticAccuracyAnalyzerCommand));
 
-        
+
         #endregion
 
         #region 事件
@@ -115,7 +117,7 @@ namespace TeamAAS_VP.ViewModels.Product
         #endregion
 
         public AdvancedProcedureViewModel(IRegionManager regionManager, IEventAggregator ea, IContainerProvider container, IDialogService dialogService,
-            IFeederService feederService, IRobotService robotService,ICameraService cameraService, ISystemDatabaseService systemDatabaseService)
+            IFeederService feederService, IRobotService robotService, ICameraService cameraService, ISystemDatabaseService systemDatabaseService)
         {
             _regionManager = regionManager;
             _eventAggregator = ea;
@@ -127,7 +129,7 @@ namespace TeamAAS_VP.ViewModels.Product
             _systemDatabaseService = systemDatabaseService;
             //订阅权限登录事件
             _eventAggregator.GetEvent<UserLoginNotification>().Subscribe(LoginChange);
-            
+
         }
 
         #region 方法
@@ -151,7 +153,7 @@ namespace TeamAAS_VP.ViewModels.Product
                 {
                     var management = _container.Resolve<Management>();
                     var Feeder = _feederService.GetFeeder(SelectProcedure.FeederId);
-                    
+
                     if (Feeder.FeederBrand == FeederBrand.AFAG)
                     {
                         _regionManager.RequestNavigate("ProductRegionContext", "AfagFeederParams", param);
@@ -164,7 +166,7 @@ namespace TeamAAS_VP.ViewModels.Product
             }
             catch (Exception ex)
             {
-                LogHelper.WriteLogError(ex.Message,ex);
+                LogHelper.WriteLogError(ex.Message, ex);
             }
         }
 
@@ -203,17 +205,17 @@ namespace TeamAAS_VP.ViewModels.Product
             try
             {
                 SelectProcedure.ToolBlock = ToolBlockEdit.Subject;
-                var image= Camera.Grab();
+                var image = Camera.Grab();
                 if (image != null)
                 {
                     ToolBlockEdit.Subject.Inputs["InputImage"].Value = image;
                     ToolBlockEdit.Subject.Run();
-                    
+
                     Message = $"{Lang.图像采集耗时}:{Camera.TotalTime.TotalMilliseconds.ToString("F2")} ms {Lang.工具运行耗时}:{ToolBlockEdit.Subject.RunStatus.TotalTime.ToString("F2")} ms";
                 }
                 else
                 {
-                    Message=Lang.图像采集失败耗时.Replace("{0}", Camera.TotalTime.TotalMilliseconds.ToString("F2")).Replace("{1}", Camera.ErrorMessage);  
+                    Message = Lang.图像采集失败耗时.Replace("{0}", Camera.TotalTime.TotalMilliseconds.ToString("F2")).Replace("{1}", Camera.ErrorMessage);
                 }
             }
             catch (Exception ex)

+ 1 - 1
TeamAAS-VM/Views/Product/PlcPointParams.xaml.cs

@@ -39,7 +39,7 @@ namespace TeamAAS_VP.Views.Product
             {
                 try
                 {
-                    var visible = VM.SelectedIndex == 3 ? System.Windows.Visibility.Visible : System.Windows.Visibility.Collapsed;
+                    var visible = VM.SelectedIndex == 3|| VM.SelectedIndex == 5 ? System.Windows.Visibility.Visible : System.Windows.Visibility.Collapsed;
                     this.Dispatcher.BeginInvoke(new Action(() =>
                     {
                         if (colProcedure != null)