| | |
| | | } |
| | | |
| | | /// <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> |
| | |
| | | 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> |
| | |
| | | |
| | | #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() |
| | |
| | | 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(); |
| | |
| | | var tempOld = MonitorValues.DeepSerializeClone(); |
| | | MonitorCheckAndInvoke(tempNew, tempOld); |
| | | } |
| | | |
| | | AxisMovingOptionValues = new List<AxisMovingStatus>(newAxisMovingStatus); |
| | | MonitorValues = new List<IOItem>(newValues); |
| | | sw.Stop(); |
| | | |