AxisManager.cs 4.3 KB
using OnlineStore.Common;
using OnlineStore.LoadCSVLibrary;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace OnlineStore.DeviceLibrary
{
    public abstract class AxisManager
    {

        public bool IsShowMsg = false;
        public static AxisManager instance;
        public static bool UseHCBoard = true;
        static AxisManager() {
            Init();
        }
        public static void Init()
        {
            UseHCBoard = ConfigAppSettings.GetIntValue(Setting_Init.UseHCBoard).Equals(1);

            if (UseHCBoard)
            {
                instance = new HCAxisManager();
            }
            else
            {
                //instance = new ACServerManager();
            }
        }

        #region 485通信方法
        /// <summary>
        /// 废弃方法
        /// </summary>
        public abstract bool OpenPort(string portName);
        /// <summary>
        /// 废弃方法
        /// </summary>
        public abstract void ColsePort(string portName);
        /// <summary>
        /// 废弃方法
        /// </summary>
        public abstract void CloseAllPort();
        /// <summary>
        /// 废弃方法
        /// </summary>
        public abstract void ClearSpeed();
        /// <summary>
        /// 废弃方法
        /// </summary>
        public abstract void InitSlvAddr(string portName, short slvAddr, int targetSpeed, int addSpeed, int delSpeed);

        public abstract bool IsServeoOn(string portName, short slvAddr);

        #endregion


        public abstract bool OpenCard();
        public abstract bool CloseCard();


        public abstract bool IsHomeMoveEnd(string portName, short slvAddr);

        public abstract bool AbsMoveIsEnd(string portName, short axisNo, int targetPosition, int canErrorCount, out bool countError);
        public abstract void ServoOn(string portName, short slvAddr);
        public abstract void ServoOff(string portName, short slvAddr); 
        public abstract void RelMove(string portName, short slvAddr, int position, int targetSpeed  , int ptpAcc , int ptpDec  ); 
        public abstract void HomeMove(string portName, short slvAddr, int highVel, int lowVel, int acc);

        public abstract void SpeedMove(string portName, short slvAddr, int speed);
        public abstract void SuddenStop(string portName, short slvAddr);
        public abstract bool isInPosition(string portName, short slvAddr, int PPosition, int canErrorCount, bool isLog = false);

        public abstract void AbsMove(string portName, short slvAddr, int targetPosition, int targetSpeed  , int ptpAcc , int ptpDec );

        public abstract void AlarmClear(string portName, short slvAddr);
        public abstract int GetTargetPosition(string portName, short slvAddr);

        public abstract int GetActualtPosition(string portName, short slvAddr); 

        public abstract int GetAlarmStatus(string portName, short slvAddr);
        public abstract int GetBusyStatus(string portName, short slvAddr);

        public abstract int GetHomeEndStatus(string portName, short slvAddr);

        public abstract int GetHomeSingle(string portName, short slvAddr);
        /// <summary>
        /// 负极限
        /// </summary> 
        public abstract int GetLimitNegativeSingle(string portName, short slvAddr);

        /// <summary>
        /// 正极限
        /// </summary> 
        public abstract int GetLimitPositiveSingle(string portName, short slvAddr);

        public abstract short GetErrorCode(string portName, short slvAddr);

        public void SuddenStop(ConfigMoveAxis configMoveAxis)
        {
            SuddenStop(configMoveAxis.DeviceName, configMoveAxis.GetAxisValue());
        }
        public int GetActualtPosition(ConfigMoveAxis configMoveAxis) {
            return GetActualtPosition(configMoveAxis.DeviceName, configMoveAxis.GetAxisValue());
        }

        public bool ServerOnStatus(string portName, short slvAddr) {
            return IsServeoOn(portName, slvAddr);
        }
        public bool isInPosition(ConfigMoveAxis configMoveAxis, int PPosition, bool isLog = false) {
            return isInPosition(configMoveAxis.DeviceName, configMoveAxis.GetAxisValue(), PPosition, configMoveAxis.CanErrorCountMax, isLog);
        }
    }
}