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

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

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

        public int GetActualtPosition(string portName, short slvAddr)
        {
            return (int)HCBoardManager.GetAxisCurrPos(slvAddr);
        }

        public int GetAlarmStatus(string portName, short slvAddr)
        {
          AxisSts axisS=  HCBoardManager.GetAxisSts(slvAddr);
            return axisS.ALM;
        }

        public int GetBusyStatus(string portName, short slvAddr)
        {
            AxisSts axisS = HCBoardManager.GetAxisSts(slvAddr);
            //HCLogUtil.info(axisS.ToStr());
            return axisS.BUSY;
        }

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

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

        public int GetLimitNegativeSingle(string portName, short slvAddr)
        {
            AxisSts axisS = HCBoardManager.GetAxisSts(slvAddr);
            return axisS.NEL;
        } 
        public int GetLimitPositiveSingle(string portName, short slvAddr)
        {
            AxisSts axisS = HCBoardManager.GetAxisSts(slvAddr);
            return axisS.PEL;
        }

        public int GetTargetPosition(string portName, short slvAddr)
        {
            return (int)HCBoardManager.GetAxisPrfPos(slvAddr);
        }

        public void HomeMove(string portName, short slvAddr, int highVel, int lowVel, int acc)
        {
            HCBoardManager.StartHomeMove(slvAddr,(uint) highVel, (uint)lowVel, (uint)acc);
        } 
        public bool IsHomeMoveEnd(string portName, short slvAddr)
        {
           return  HCBoardManager.HomeingIsEnd(slvAddr);
        }

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

        public int AxisStsINP(string portName, short slvAddr)
        {
            return HCBoardManager.GetAxisSts(slvAddr).INP;
        }
        public void ServoOff(string portName, short slvAddr)
        {
            HCBoardManager.ServoOff(slvAddr);
        }

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

        public void SpeedMove(string portName, short slvAddr, int speed,int acc=0, int dec=0)
        {
            HCBoardManager.SpeedMove(slvAddr, speed, acc, dec);
        } 
        public void SuddenStop(string portName, short slvAddr)
        {
            HCBoardManager.AxisStop(slvAddr);
        }
        public 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;
        }
        public short GetErrorCode(string portName, short slvAddr)
        {
            return HCBoardManager.GetAxErrCode(slvAddr);
        }
    }
}