领胜LDS 键盘AOI检测项目
wells.liu
2020-07-06 d007fd8d64ff33a1edb960fa33cf2312a955d933
板卡底层优化
2个文件已修改
93 ■■■■■ 已修改文件
src/Bro.Common.Model/Model/MotionCardRelated.cs 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/Bro.Device.GTSCard/GTSCardDriver.cs 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/Bro.Common.Model/Model/MotionCardRelated.cs
@@ -208,11 +208,6 @@
        public string AxisName { get; set; }
        /// <summary>
        /// 运动模式
        /// </summary>
        public MotionMode MoveMode { get; set; }
        /// <summary>
        /// 当前位置
        /// </summary>
        public int CurPosition { get; set; }
@@ -225,16 +220,16 @@
        /// <summary>
        /// 当前速度参数
        /// </summary>
        public VelocityPara CurVelocityPara { get; set; }
        public double CurVelocity { get; set; }
        /// <summary>
        /// 规划速度参数
        /// </summary>
        public VelocityPara VelocityPara { get; set; }
        public double PrfVelocity { get; set; }
        public string GetDisplayText()
        {
            return $"轴{AxisIndex}:{AxisName}-{MoveMode.ToString()}-当前:{CurPosition}-规划:{Destination}";
            return $"轴{AxisIndex}:{AxisName}-当前:{CurPosition}-规划:{Destination}";
        }
    }
src/Bro.Device.GTSCard/GTSCardDriver.cs
@@ -413,6 +413,41 @@
        }
        /// <summary>
        /// 获取规划速度
        /// </summary>
        /// <param name="axisNum">Axis number</param>
        /// <returns></returns>
        public double GetPrfVelocity(int axisNum)
        {
            double prfVel = 0;
            uint pclock = 0;
            var ret = GTSCardAPI.GT_GetPrfVel((short)IConfig.CardNum, (short)axisNum, out prfVel, 1, out pclock);
            if (ret != (short)GTSRetCode.GRCRunOK)
            {
                throw new Exception("轴" + axisNum + "获取规划速度异常,错误码:" + ret);
            }
            prfVel = prfVel / IConfig.AxisVelocityRatio;
            return prfVel;
        }
        /// <summary>
        /// 获取当前速度
        /// </summary>
        /// <param name="axisNum">Axis number</param>
        /// <returns></returns>
        public double GetVelocity(int axisNum)
        {
            double vel = 0;
            var ret = GTSCardAPI.GT_GetVel((short)IConfig.CardNum, (short)axisNum, out vel);
            if (ret != (short)GTSRetCode.GRCRunOK)
            {
                throw new Exception("轴" + axisNum + "获取当前速度异常,错误码:" + ret);
            }
            vel = vel / IConfig.AxisVelocityRatio;
            return vel;
        }
        /// <summary>
        /// Set Single Axis Do Jog Move  
        /// </summary>
        /// <param name="axisNum">AxisNo</param>
@@ -450,29 +485,6 @@
                OnExceptionRaised?.Invoke(ex);
                return false;
            }
        }
        /// <summary>
        /// Set Single Axis Do stop Jog Move
        /// </summary>
        /// <param name="axisNum">AxisNo</param>
        /// <returns></returns>
        public bool StopJog(int axisNum)
        {
            //停止运动
            MoveStop(axisNum, 0);
            //运动开始后 检查运动是否停止
            bool isStop = false;
            int repeatTime = 1000;
            do
            {
                isStop = IsStop((short)IConfig.CardNum, (short)axisNum);
                Thread.Sleep(50);
                repeatTime--;
            } while (!isStop && repeatTime > 0);
            return isStop;
        }
        /// <summary>
@@ -803,7 +815,24 @@
        #region IMonitor
        //public List<IOItem> MonitorValues { get; set; } = new List<IOItem>();
        public List<AxisMovingStatus> GetAxisMovingStatus()
        {
            List<AxisMovingStatus> axisMovingStatusesList = new List<AxisMovingStatus>();
            foreach (var axisConfig in IConfig.AxisSettings.FindAll(u => u.IsAxisEnabled))
            {
                AxisMovingStatus axisMovingStatus = new AxisMovingStatus();
                axisMovingStatus.AxisIndex = axisConfig.AxisIndex;
                axisMovingStatus.AxisName = axisConfig.AxisName;
                axisMovingStatus.CurPosition = Convert.ToInt32(GetPosition(axisMovingStatus.AxisIndex));
                axisMovingStatus.Destination = Convert.ToInt32(GetPrfPosition(axisMovingStatus.AxisIndex));
                axisMovingStatus.CurVelocity = GetVelocity(axisMovingStatus.AxisIndex);
                axisMovingStatus.PrfVelocity = GetPrfVelocity(axisMovingStatus.AxisIndex);
                axisMovingStatusesList.Add(axisMovingStatus);
            }
            return axisMovingStatusesList;
        }
        public List<IOItem> GetMonitorValues()
@@ -849,7 +878,8 @@
                        if (!IConfig.IsEnableMonitor)
                            return;
                        var newValues = GetMonitorValues();
                        if (newValues == null || newValues.Count == 0)
                        var newAxisMovingStatus = GetAxisMovingStatus();
                        if (newValues == null || newValues.Count == 0 || newAxisMovingStatus == null || newAxisMovingStatus.Count == 0)
                            continue;
                        Stopwatch sw = new Stopwatch();
@@ -860,6 +890,8 @@
                            var tempOld = MonitorValues.DeepSerializeClone();
                            MonitorCheckAndInvoke(tempNew, tempOld);
                        }
                        AxisMovingOptionValues = new List<AxisMovingStatus>(newAxisMovingStatus);
                        MonitorValues = new List<IOItem>(newValues);
                        sw.Stop();