HCAxisManager.cs 5.0 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 
    {
        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)
        {
            HCLogUtil.LOGGER.Info($"slvAddr={slvAddr},targetPosition={targetPosition},targetSpeed={targetSpeed},ptpAcc={ptpAcc},ptpDec={ptpDec}");
            HCBoardManager.AbsMove((short)slvAddr, targetPosition, targetSpeed, ptpAcc, ptpDec);
        }

        public void AlarmClear(string portName, short slvAddr)
        {
            HCBoardManager.ClearAxisSts((short)slvAddr);
        }
        public bool OpenPort(string portName)
        {
            return true;
        }
        public void ClearSpeed()
        {
        }

        public void CloseAllPort()
        {
        }

        public void ColsePort(string portName)
        {
        }


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


        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);
            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 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)
        {
            AxisSts axisS = HCBoardManager.GetAxisSts(slvAddr);            
            HCLogUtil.LOGGER.Info(axisS.ToStr());
            return HCBoardManager.GetAxErrCode(slvAddr);
        }
    }
}