Browse Source

update robot

jiangjy 1 month ago
parent
commit
7145043f07

+ 34 - 1
FrameworkLocal/RTEquipmentLibrary/HardwareUnits/Robots/HRC100Robots/GM201LVPRobot/GM201LVPRobot.cs

@@ -570,8 +570,16 @@ namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Robots.HRC100Robots.G
                 }
                 if (_command == "RSTP")   //Reference registered position, read the save postion for station
                 {
+                    if (rdata.Length == 5)
+                    {
+                        return ParsePositionAxisDataV2(rdata);
+                    }
+                    if (rdata.Length ==7)
+                    {
+                        return ParsePositionAxisData(rdata);
+                    }
                     // return (rdata.Length > 6 && ParseRegisteredPositionData(rdata));
-                    return (rdata.Length ==7 && ParsePositionAxisData(rdata));
+                   
                 }
                 if (_command == "RSTR")   //Reference station item value
                 {
@@ -714,7 +722,32 @@ namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Robots.HRC100Robots.G
                 return false;
             }
         }
+        public bool ParsePositionAxisDataV2(string[] pdata)
+        {
+            try
+            {
+                ReadMemorySpec = pdata[0];
+                ReadTransferStation = pdata[1];
+                if (ReadStationItemValues.ContainsKey(pdata[2]))
+                    ReadStationItemValues.Remove(pdata[2]);
+                ReadStationItemValues.Add(pdata[2], pdata[3]);
 
+                if (ReadRobotParameterResult.ContainsKey(ReadTransferStation))
+                {
+                    ReadRobotParameterResult[ReadTransferStation] = $"{pdata[2]},{pdata[3]},{pdata[4]}";
+                }
+                else
+                {
+                    ReadRobotParameterResult.Add(ReadTransferStation, $"{pdata[2]},{pdata[3]},{pdata[4]}");
+                }
+                return true;
+            }
+            catch (Exception ex)
+            {
+                LOG.Write(ex);
+                return false;
+            }
+        }
         public bool ParseRegisteredPositionData(string[] pdata)
         {
             try

File diff suppressed because it is too large
+ 3852 - 3851
Furnace/FurnaceRT/Config/System.sccfg


+ 95 - 68
Furnace/FurnaceUI/Views/Maintenances/WaferRobotParameterViewModel.cs

@@ -1,29 +1,43 @@
-using Aitex.Core.Util;
-using Caliburn.Micro;
+using Aitex.Core.Common.DeviceData;
 using Caliburn.Micro.Core;
-using FurnaceUI.DataModule;
+using Caliburn.Micro;
 using FurnaceUI.Models;
-using MECF.Framework.Common.DataCenter;
-using MECF.Framework.Common.OperationCenter;
+using FurnaceUI.Views.Parameter;
 using MECF.Framework.UI.Client.CenterViews.Configs.SystemConfig;
-using MECF.Framework.UI.Client.ClientBase;
-using OpenSEMI.ClientBase;
+using SciChart.Core.Extensions;
 using System;
 using System.Collections.Generic;
+using System.Collections.ObjectModel;
 using System.Linq;
-using System.Text.RegularExpressions;
+using System.Text;
 using System.Threading.Tasks;
+using System.Xml.Linq;
+using MECF.Framework.Common.DataCenter;
+using MECF.Framework.Common.OperationCenter;
+using Microsoft.DwayneNeed.Win32.User32;
+using Aitex.Core.Util;
+using MECF.Framework.UI.Client.ClientBase;
+using OpenSEMI.ClientBase;
 using System.Windows;
+using System.Threading;
+using FurnaceUI.DataModule;
+using System.Text.RegularExpressions;
+using System.Security.Policy;
 
 namespace FurnaceUI.Views.Maintenances
 {
     public class WaferRobotParameterViewModel : FurnaceUIViewModelBase, ISupportMultipleSystem
     {
         public bool IsManagerPermission { get => this.Permission == 3; }
+        private const string WaferRobotParameter_PATH = "PM1.RecipeEditParameter";
+        public string SystemName { get; set; }
         private string _checkTypeParameter = "Speed";
         private string _checkAxis = "ZAxis";
         public Dictionary<string, string> SetValues { get; set; } = new Dictionary<string, string>();
         public Dictionary<string, string> ConfigDict { get; set; } = new Dictionary<string, string>();
+
+
+
         public Dictionary<string, string> ReadRobotParameterResultDict { get; set; }
         [Subscription("WaferRobot.Status")]
         public string WaferRobotStaus { get; set; }
@@ -32,11 +46,7 @@ namespace FurnaceUI.Views.Maintenances
         public bool IsShowRobotDownBtn
         {
             get { return _isShowRobotDownBtn; }
-            set
-            {
-                _isShowRobotDownBtn = value;
-                this.NotifyOfPropertyChange(nameof(IsShowRobotDownBtn));
-            }
+            set { _isShowRobotDownBtn = value; this.NotifyOfPropertyChange(nameof(IsShowRobotDownBtn)); }
         }
         public bool IsClickButton { get; set; }
         private ConfigNode _waferRobotParameterNode { get; set; }
@@ -46,108 +56,68 @@ namespace FurnaceUI.Views.Maintenances
         public List<ConfigNode> TableDataSource
         {
             get { return _tableDataSource; }
-            set
-            {
-                _tableDataSource = value;
-                NotifyOfPropertyChange(nameof(TableDataSource));
-            }
+            set { _tableDataSource = value; this.NotifyOfPropertyChange(nameof(TableDataSource)); }
         }
         private List<DisplayByWaferType> _topBtnGroupDatas = new List<DisplayByWaferType>();
         public List<DisplayByWaferType> TopBtnGroupDatas
         {
             get { return _topBtnGroupDatas; }
-            set
-            {
-                _topBtnGroupDatas = value;
-                NotifyOfPropertyChange(nameof(TopBtnGroupDatas));
-            }
+            set { _topBtnGroupDatas = value; this.NotifyOfPropertyChange(nameof(TopBtnGroupDatas)); }
         }
 
         private Visibility _parameterTableVisibility = Visibility.Visible;
         public Visibility ParameterTableVisibility
         {
             get { return _parameterTableVisibility; }
-            set
-            {
-                _parameterTableVisibility = value;
-                NotifyOfPropertyChange(nameof(ParameterTableVisibility));
-            }
+            set { _parameterTableVisibility = value; this.NotifyOfPropertyChange(nameof(ParameterTableVisibility)); }
         }
         private Visibility _positionAxisTableVisibility = Visibility.Collapsed;
         public Visibility PositionAxisTableVisibility
         {
             get { return _positionAxisTableVisibility; }
-            set
-            {
-                _positionAxisTableVisibility = value;
-                NotifyOfPropertyChange(nameof(PositionAxisTableVisibility));
-            }
+            set { _positionAxisTableVisibility = value; this.NotifyOfPropertyChange(nameof(PositionAxisTableVisibility)); }
         }
         private Visibility _positionConfigTableVisibility = Visibility.Collapsed;
         public Visibility PositionConfigTableVisibility
         {
             get { return _positionConfigTableVisibility; }
-            set
-            {
-                _positionConfigTableVisibility = value;
-                NotifyOfPropertyChange(nameof(PositionConfigTableVisibility));
-            }
+            set { _positionConfigTableVisibility = value; this.NotifyOfPropertyChange(nameof(PositionConfigTableVisibility)); }
         }
         private Visibility _downloadUploadVisibility = Visibility.Collapsed;
         public Visibility DownloadUploadVisibility
         {
             get { return _downloadUploadVisibility; }
-            set
-            {
-                _downloadUploadVisibility = value;
-                NotifyOfPropertyChange(nameof(DownloadUploadVisibility));
-            }
+            set { _downloadUploadVisibility = value; this.NotifyOfPropertyChange(nameof(DownloadUploadVisibility)); }
         }
         private Visibility _axisBtnVisibility = Visibility.Collapsed;
         public Visibility AxisBtnVisibility
         {
             get { return _axisBtnVisibility; }
-            set
-            {
-                _axisBtnVisibility = value;
-                NotifyOfPropertyChange(nameof(AxisBtnVisibility));
-            }
+            set { _axisBtnVisibility = value; this.NotifyOfPropertyChange(nameof(AxisBtnVisibility)); }
         }
         private bool _busyIndicatorVisibility = false;
         public bool BusyIndicatorVisibility
         {
             get { return _busyIndicatorVisibility; }
-            set
-            {
-                _busyIndicatorVisibility = value;
-                NotifyOfPropertyChange(nameof(BusyIndicatorVisibility));
-            }
+            set { _busyIndicatorVisibility = value; this.NotifyOfPropertyChange(nameof(BusyIndicatorVisibility)); }
         }
         private bool _allBtnIsEnable = true;
         public bool AllBtnIsEnable
         {
             get { return _allBtnIsEnable; }
-            set
-            {
-                _allBtnIsEnable = value;
-                NotifyOfPropertyChange(nameof(AllBtnIsEnable));
-            }
+            set { _allBtnIsEnable = value; this.NotifyOfPropertyChange(nameof(AllBtnIsEnable)); }
         }
         private Visibility _slotBtnVisibility = Visibility.Collapsed;
         public Visibility SlotBtnVisibility
         {
             get { return _slotBtnVisibility; }
-            set
-            {
-                _slotBtnVisibility = value;
-                NotifyOfPropertyChange(nameof(SlotBtnVisibility));
-            }
+            set { _slotBtnVisibility = value; this.NotifyOfPropertyChange(nameof(SlotBtnVisibility)); }
         }
         public void SwitchListView(object obj)
         {
             _checkTypeParameter = obj.ToString();
             TableDataSource.Clear();
-            _waferRobotParameterNode = FindNodeByName(_allRootNode, $"PM1.RecipeEditParameter.{SystemName}Parameter.{_checkTypeParameter}");
+            _waferRobotParameterNode = FindNodeByName(_allRootNode, $"{SystemName}.{SystemName}Parameter.{_checkTypeParameter}");
             _checkAxis = "";
             TopBtnGroupDatas = new List<DisplayByWaferType>();
             switch (_checkTypeParameter)
@@ -234,8 +204,11 @@ namespace FurnaceUI.Views.Maintenances
             }
             else
             {
+
                 foreach (var itemType in _waferRobotParameterNode.SubNodes)
                 {
+
+
                     foreach (var item in itemType.SubNodes)
                     {
                         var ptypeConfig = item.Items.Where(a => a.Name.Equals("Type")).FirstOrDefault();
@@ -254,6 +227,7 @@ namespace FurnaceUI.Views.Maintenances
                                 }
                                 else
                                 {
+
                                     var axisItem = item.Items.Where(a => a.Name.Equals("Axis")).FirstOrDefault();
 
                                     if (axisItem != null && _checkAxis.Contains(axisItem.DefaultValue))
@@ -267,19 +241,31 @@ namespace FurnaceUI.Views.Maintenances
                                 }
                             }
                         }
+
                     }
+
+
                 }
             }
+
             TableDataSource = data;
             GetDataOfConfigItems();
             ClearReadDicData();
+
         }
         private void PositionAxisNodeToTableDataSource(List<ConfigNode> data)
         {
             foreach (var itemType in _waferRobotParameterNode.SubNodes)
             {
+
+
                 data.Add(itemType);
+
+
+
+
             }
+
         }
 
         private void GetDataOfConfigItems()
@@ -294,6 +280,7 @@ namespace FurnaceUI.Views.Maintenances
                 List<string> getConfigs = new List<string>();
                 foreach (var item in TableDataSource)
                 {
+
                     foreach (var tableItem in item.Items)
                     {
                         var key = $"{tableItem.Path}.{tableItem.Name}";
@@ -311,10 +298,12 @@ namespace FurnaceUI.Views.Maintenances
 
         public async void Upload(object obj)
         {
+
             var selection = DialogBox.ShowDialog(DialogButton.Yes | DialogButton.No, DialogType.CONFIRM,
               $"Are you sure you want to Upload?");
             if (selection == DialogButton.No)
                 return;
+
             if (!IsClickButton)
             {
                 return;
@@ -333,6 +322,8 @@ namespace FurnaceUI.Views.Maintenances
             {
                 SetParameterUpload();
             }
+
+
             async void SetPositionAxisUpload()
             {
                 var allNames = TableDataSource.Select(a => a.Name).ToList();
@@ -359,14 +350,24 @@ namespace FurnaceUI.Views.Maintenances
                         InvokeClient.Instance.Service.DoOperation("System.SetConfig", $"{SystemName}.{SystemName}Parameter.PositionAxis.{item.Key}.ToDownAxis", CheckUnitData(dataConfig.Items[1].Unit, itemValues[0]));
                         InvokeClient.Instance.Service.DoOperation("System.SetConfig", $"{SystemName}.{SystemName}Parameter.PositionAxis.{item.Key}.RotateAxis", CheckUnitData(dataConfig.Items[2].Unit, itemValues[1]));
                         InvokeClient.Instance.Service.DoOperation("System.SetConfig", $"{SystemName}.{SystemName}Parameter.PositionAxis.{item.Key}.TelescopingAxis1", CheckUnitData(dataConfig.Items[3].Unit, itemValues[2]));
-                        InvokeClient.Instance.Service.DoOperation("System.SetConfig", $"{SystemName}.{SystemName}Parameter.PositionAxis.{item.Key}.TelescopingAxis2", CheckUnitData(dataConfig.Items[4].Unit, itemValues[3]));
-                        InvokeClient.Instance.Service.DoOperation("System.SetConfig", $"{SystemName}.{SystemName}Parameter.PositionAxis.{item.Key}.VariableSpacingAxis", CheckUnitData(dataConfig.Items[5].Unit, itemValues[4]));
+                        if (itemValues.Count>3)
+                        {
+                            InvokeClient.Instance.Service.DoOperation("System.SetConfig", $"{SystemName}.{SystemName}Parameter.PositionAxis.{item.Key}.TelescopingAxis2", CheckUnitData(dataConfig.Items[4].Unit, itemValues[3]));
+
+                        }
+                        if (itemValues.Count >4)
+                        {
+                            InvokeClient.Instance.Service.DoOperation("System.SetConfig", $"{SystemName}.{SystemName}Parameter.PositionAxis.{item.Key}.VariableSpacingAxis", CheckUnitData(dataConfig.Items[5].Unit, itemValues[4]));
+
+                        }
                     }
                 }
                 GetDataOfConfigItems();
                 BusyIndicatorVisibility = false;
                 AllBtnIsEnable = true;
+
             }
+
             async void SetPositionConfigUpload()
             {
 
@@ -406,6 +407,7 @@ namespace FurnaceUI.Views.Maintenances
 
             async void SetParameterUpload()
             {
+
                 var allNames = TableDataSource.Select(a => a.Name.Replace("P", "")).ToList();
                 string parameter = string.Join(";", allNames);
 
@@ -429,6 +431,7 @@ namespace FurnaceUI.Views.Maintenances
                     }
                 }
                 GetDataOfConfigItems();
+
                 BusyIndicatorVisibility = false;
                 AllBtnIsEnable = true;
             }
@@ -448,6 +451,7 @@ namespace FurnaceUI.Views.Maintenances
                     result.Add(number);
                 }
             }
+
             return result;
         }
         private double CheckUnitData(string unitStr, string valueStr, bool isDivision = false)
@@ -472,15 +476,19 @@ namespace FurnaceUI.Views.Maintenances
                 return $"{(Math.Abs(setValue) * -1).ToString().PadLeft(length, '0')}";
 
             }
+
         }
         private async Task WaitForResultsAsync()
         {
             // Simulate waiting for results using a delay
             // In a real-world scenario, you might wait for an event or a specific condition
             await Task.Delay(TableDataSource.Count * 300);
+
             // Here you can add logic to check if the results are ready
             // For example, polling or using a completion source
         }
+
+
         private string GetAxisValue(string value)
         {
             return (double.Parse(value.TrimStart('0')) / 1000).ToString("f3");
@@ -526,9 +534,17 @@ namespace FurnaceUI.Views.Maintenances
                     parameter = parameter + $"{item.Name.Replace("P", "")},{setValue};";
 
                 }
+                //foreach (var item in SetValues)
+                //{
+
+                //    parameter = parameter + $"{item.Key.Replace("P", "")},{item.Value};";
+                //}
+
             };
             void SetPositionAxisDownload()
             {
+
+
                 setParameter = "SetPositionAxis";
                 foreach (var item in TableDataSource)
                 {
@@ -554,11 +570,14 @@ namespace FurnaceUI.Views.Maintenances
                     parameter = parameter + $"{item.Name.Replace("P", "")},{setValue};";
 
                 }
+
             };
         }
         public void ClearReadDicData()
         {
-            //InvokeClient.Instance.Service.DoOperation("CarrierRobot.ClearReadDicData");
+            InvokeClient.Instance.Service.DoOperation("CarrierRobot.ClearReadDicData");
+
+
         }
         public void SelectionChangedHandle(object obj)
         {
@@ -617,7 +636,7 @@ namespace FurnaceUI.Views.Maintenances
             {
                 WaferRobotParameterEditViewModel editViewModel = new WaferRobotParameterEditViewModel();
                 editViewModel.TableNodeItems = colData.Items;
-                var rtn = (windowManager as WindowManager)?.ShowDialogWithTitle(editViewModel,this, null, $"Edit {SystemName}Parameter");
+                var rtn = (windowManager as WindowManager)?.ShowDialogWithTitle(editViewModel, null, $"Edit {SystemName}Parameter");
                 if ((bool)rtn)
                 {
                     if (string.IsNullOrEmpty(editViewModel.setValue))
@@ -631,7 +650,9 @@ namespace FurnaceUI.Views.Maintenances
                     else
                     {
                         SetValues.Add(editViewModel._pName, editViewModel.setValue);
+
                     }
+
                 }
             }
             GetDataOfConfigItems();
@@ -639,16 +660,21 @@ namespace FurnaceUI.Views.Maintenances
         protected override void OnInitialize()
         {
             base.OnInitialize();
+
             InitData();
+
         }
         private void InitData()
         {
+
             _allRootNode = SystemConfigProvider.Instance.GetConfig(true);
             SwitchListView(_checkTypeParameter);
         }
         protected override void InvokeAfterUpdateProperty(Dictionary<string, object> data)
         {
             base.InvokeAfterUpdateProperty(data);
+            //         [Subscription("WaferRobot.ReadRobotParameterResultDict")]
+            //public Dictionary<string, string> ReadRobotParameterResultDict { get; set; }
             IsShowRobotDownBtn = (bool)QueryDataClient.Instance.Service.GetConfig("System.IsShowRobotDownBtn");
             var readData = QueryDataClient.Instance.Service.GetData($"{SystemName}.ReadRobotParameterResultDict");
             if (readData != null)
@@ -669,5 +695,6 @@ namespace FurnaceUI.Views.Maintenances
             else
                 return FindNodeByName(node, strName.Replace(strCates + ".", ""));
         }
+
     }
 }