HCAxisManager.cs 6.3 KB
using HuichuanLibrary;
using OnlineStore.LoadCSVLibrary;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace OnlineStore.DeviceLibrary
{
    public class HCAxisManager : AxisManager
    {
        public override bool OpenCard()
        {
            return HCBoardManager.OpenCard();
        }

        public override bool CloseCard()
        {
            return HCBoardManager.CloseCard();
        }
        public override bool AbsMove(string portName, short slvAddr, int targetPosition, int targetSpeed ,int ptpAcc ,int ptpDec )
        {
             return HCBoardManager.AbsMove((short)slvAddr, targetPosition, targetSpeed, ptpAcc, ptpDec);
        }
         
        public override void AlarmClear(string portName, short slvAddr)
        {
            HCBoardManager.ClearAxisSts((short)slvAddr);
        }
        public override bool OpenPort(string portName)
        {
            return true;
        }
        public override void ClearSpeed()
        {             
        }

        public override void CloseAllPort()
        {             
        }

        public override void ColsePort(string portName)
        {             
        }


        public override void InitSlvAddr(string portName, short slvAddr, int targetSpeed, int addSpeed, int delSpeed)
        {
        }

        /// <summary>
        /// 获取编码器位置
        /// </summary>
        /// <param name="portName"></param>
        /// <param name="slvAddr"></param>
        /// <returns></returns>
        public override int GetActualtPosition(string portName, short slvAddr)
        {
            return (int)HCBoardManager.GetAxisCurrPos(slvAddr);
        }
        /// <summary>
        /// 获取规划器位置
        /// </summary>
        /// <param name="portName"></param>
        /// <param name="slvAddr"></param>
        /// <returns></returns>
        public override int GetTargetPosition(string portName, short slvAddr)
        {
            return (int)HCBoardManager.GetAxisPrfPos(slvAddr);
        }
        public override int GetAlarmStatus(string portName, short slvAddr)
        {
          AxisSts axisS=  HCBoardManager.GetAxisSts(slvAddr);
            return axisS.ALM;
        }
        /// <summary>
        /// 获取轴状态
        /// </summary>
        /// <param name="portName"></param>
        /// <param name="slvAddr"></param>
        /// <returns></returns>
        public override string GetStatus(string portName, short slvAddr)
        {
             return HCBoardManager.GetAxisSts(slvAddr).ToStr();
        }
        public override int GetBusyStatus(string portName, short slvAddr)
        {
            AxisSts axisS = HCBoardManager.GetAxisSts(slvAddr);
            return axisS.BUSY;
        }

        public override int GetHomeEndStatus(string portName, short slvAddr)
        {
            return (int) HCBoardManager.GetHomeStatus(slvAddr); 
        }

        public override int GetHomeSingle(string portName, short slvAddr)
        {
            AxisSts axisS = HCBoardManager.GetAxisSts(slvAddr);
            return axisS.ORG;
        }

        public override int GetLimitNegativeSingle(string portName, short slvAddr)
        {
            AxisSts axisS = HCBoardManager.GetAxisSts(slvAddr);
            return axisS.NEL;
        } 
        public override int GetLimitPositiveSingle(string portName, short slvAddr)
        {
            AxisSts axisS = HCBoardManager.GetAxisSts(slvAddr);
            return axisS.PEL;
        }
        public override int GetInPositionSingle(string portName, short slvAddr)
        {
            AxisSts axisS = HCBoardManager.GetAxisSts(slvAddr);
            return axisS.INP;
        }
        public override void HomeMove(string portName, short slvAddr, int highVel, int lowVel, int acc)
        {
            HCBoardManager.StartHomeMove(slvAddr,(uint) highVel, (uint)lowVel, (uint)acc);
        } 
        public override bool IsHomeMoveEnd(string portName, short slvAddr)
        {
           return  HCBoardManager.HomeingIsEnd(slvAddr);
        }

        public override bool isInPosition(string portName, short slvAddr, int PPosition, int canErrorCount, bool isLog = false)
        {
            return HCBoardManager.IsInPosition(slvAddr, PPosition,canErrorCount );
        } 
        public override void RelMove(string portName, short slvAddr, int position, int targetSpeed  , int ptpAcc  , int ptpDec )
        {
            HCBoardManager.RelMove(slvAddr, position, targetSpeed, ptpAcc, ptpDec);
        }
     
        public override bool IsServeoOn(string portName, short slvAddr)
        {
            AxisSts axisS = HCBoardManager.GetAxisSts(slvAddr);
            return axisS.ServoOn.Equals(1);
        }

        public override void ServoOff(string portName, short slvAddr)
        {
            HCBoardManager.ServoOff(slvAddr);
        }

        public override void ServoOn(string portName, short slvAddr)
        {
            HCBoardManager.ServoOn(slvAddr);
        }

        public override void SpeedMove(string portName, short slvAddr, int speed)
        {
            HCBoardManager.SpeedMove(slvAddr, speed);
        } 
        public override void SuddenStop(string portName, short slvAddr)
        {
            short value = HCBoardManager.GetHomeStatus(slvAddr);
            if (value == 2)
            {
                HCBoardManager.FinishHome(slvAddr); 
            }
            HCBoardManager.AxisStop(slvAddr);
        }
        public override bool AbsMoveIsEnd(string portName, short axisNo, int targetPosition, int canErrorCount, out bool countError)
        {
            countError = false;
            bool isOk = HCBoardManager.MoveIsEnd(axisNo);
            if (isOk)
            {
                if (HCBoardManager.IsInPosition(axisNo, targetPosition, canErrorCount))
                {
                    return true;
                }
                else
                {
                    countError = true;
                }
            }
            return false;
        }
        /// <summary>
        /// 获取轴扭矩
        /// </summary>
        /// <param name="slvAddr"></param>
        /// <returns></returns>
        public short GetAxActTorq(short slvAddr)
        {
          return  HCBoardManager.GetAxActTorq(slvAddr);
        }
    }
}