| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177 | using MECF.Framework.Common.Device.Galil;using MECF.Framework.Common.TwinCat;using System;using System.Collections.Generic;using System.Linq;using System.Reflection;using System.Text;using System.Threading.Tasks;namespace PunkHPX8_RT.Devices.AXIS{    public class GalilCommonAxis    {        #region 常量        private const string IS_SWITCH_ON = "IsSwitchOn";        private const string STOP_CODE = "StopCode";        private const string MOTOR_POSITION = "MotorPosition";        private const string POSITION_ERROR = "PositionError";        private const string ACTUAL_TORQUE = "ActualTorque";        private const string ACTUAL_VELOCITY = "Velocity";        private const string FORWARD_LIMIT = "ForwardLimit";        private const string TARGET_POSITION = "ReferencePosition";        #endregion        #region 内部变量        private string _module;        private string _name;        private JetAxisBase _axis;        #endregion        /// <summary>        /// 构造函数        /// </summary>        /// <param name="_module"></param>        /// <param name="name"></param>        public GalilCommonAxis(string module,string name,JetAxisBase jetAxisBase)        {            _module = module;            _name = name;            _axis = jetAxisBase;        }        /// <summary>        /// 订阅变量        /// </summary>        public void SubscriptionVariable()        {            _axis.AxisSubscribeUpdateVariable(IS_SWITCH_ON);            _axis.AxisSubscribeUpdateVariable(STOP_CODE);            _axis.AxisSubscribeUpdateVariable(MOTOR_POSITION);            _axis.AxisSubscribeUpdateVariable(POSITION_ERROR);            _axis.AxisSubscribeUpdateVariable(ACTUAL_TORQUE);            _axis.AxisSubscribeUpdateVariable(ACTUAL_VELOCITY);            _axis.AxisSubscribeUpdateVariable(FORWARD_LIMIT);            _axis.AxisSubscribeUpdateVariable(TARGET_POSITION);        }        /// <summary>        /// 上电        /// </summary>        /// <returns></returns>        public bool WriteSwitchOn()        {            return GalilControllerCfgManager.Instance.SetAxisCommand(_module, _name, "SH", null);        }        /// <summary>        /// 下电        /// </summary>        /// <returns></returns>        public bool WriteSwitchOff()        {            return GalilControllerCfgManager.Instance.SetAxisCommand(_module, _name, "MO", null);        }        /// <summary>        /// 写入相对位置        /// </summary>        /// <param name="referencePosition"></param>        /// <returns></returns>        public bool WriteReferencePosition(int referencePosition)        {            return GalilControllerCfgManager.Instance.SetAxisCommand(_module, _name, "PR", referencePosition);        }        /// <summary>        /// 写入绝对位置        /// </summary>        /// <param name="referencePosition"></param>        /// <returns></returns>        public bool WriteAbsolutePosition(int absolutePosition)        {            return GalilControllerCfgManager.Instance.SetAxisCommand(_module, _name, "PA", absolutePosition);        }        /// <summary>        /// 写入速度        /// </summary>        /// <param name="referencePosition"></param>        /// <returns></returns>        public bool WriteSpeed(int speed)        {            return GalilControllerCfgManager.Instance.SetAxisCommand(_module, _name, "SP", speed);        }        /// <summary>        /// 写入加速度        /// </summary>        /// <param name="referencePosition"></param>        /// <returns></returns>        public bool WriteAcceleration(int acceleration)        {            return GalilControllerCfgManager.Instance.SetAxisCommand(_module, _name, "AC", acceleration);        }        /// <summary>        /// 写入减速度        /// </summary>        /// <param name="referencePosition"></param>        /// <returns></returns>        public bool WriteDeceleration(int deceleration)        {            return GalilControllerCfgManager.Instance.SetAxisCommand(_module, _name, "DC", deceleration);        }        /// <summary>        /// 停止        /// </summary>        /// <returns></returns>        public bool WriteStop()        {            return GalilControllerCfgManager.Instance.SetAxisCommand(_module, _name, "ST", null);        }        /// <summary>        /// 开始运动        /// </summary>        /// <returns></returns>        public bool WriteStartMotion()        {            return GalilControllerCfgManager.Instance.SetAxisCommand(_module, _name, "BG", null);        }        /// <summary>        /// Home 电机        /// </summary>        /// <returns></returns>        public bool WriteHomeAxisCommand()        {            return GalilControllerCfgManager.Instance.SetAxisCommand(_module, _name, "HM", null);        }        /// <summary>        /// Home 电机        /// </summary>        /// <returns></returns>        public bool WriteFIAxisCommand()        {            return GalilControllerCfgManager.Instance.SetAxisCommand(_module, _name, "FI", null);        }        /// <summary>        /// Home 电机        /// </summary>        /// <returns></returns>        public bool WriteCNCommand(string cn)        {            return GalilControllerCfgManager.Instance.SetSystemCommand(_module, _name, "CN", cn);        }        /// <summary>        /// 手动置零        /// </summary>        /// <returns></returns>        public bool WriteDP(int dp)        {            bool result = GalilControllerCfgManager.Instance.SetAxisCommand(_module, _name, "DP", dp);            if (result)            {                return GalilControllerCfgManager.Instance.SetAxisCommand(_module, _name, "DE", dp);            }            return false;        }    }}
 |