非標框架(5)-軸參數類

   /// <summary>
    /// 軸參數
    /// </summary>
    public class AxisPrm : EntityBase<AxisKey>, ICloneable
    {
        public AxisPrm() : base()
        {

        }
        private AxisPrm(string name, AxisKey key) : base(key)
        {
            Name = name;
        }
        /// <summary>
        /// 普通軸構造函數
        /// </summary>
        /// <param name="name">軸名稱</param>
        /// <param name="cardNum">軸對應的控制卡編號</param>
        /// <param name="code">軸在這臺幾臺上的編號,由自己定義</param>
        /// <param name="key">軸在控制卡上的編號值,16軸卡就是1到16,這裏用枚舉值</param>
        public AxisPrm(string name, short cardNum, short code, AxisKey key) : this(name, key)
        {
            CardNum = cardNum;
            Code = code;
        }
        /// <summary>
        /// 龍門(Master)軸的構造函數
        /// </summary>
        public AxisPrm(string name, short cardNum, short code, short followCode, AxisKey key) : this(name, cardNum, code, key)
        {
            FollowAxisCode = followCode;
            Type = AxisType.Master;
        }
        /// <summary>
        /// 反轉(Reverse)軸的構造函數
        /// </summary>
        public AxisPrm(string name, AxisKey key, AxisKey reverseKey) : this(name, key)
        {
            ReverseAxisKey = reverseKey;
            Type = AxisType.Reverse;
        }
        /// <summary>
        /// TwoPos氣缸軸的構造函數
        public AxisPrm(string name, AxisKey key, IOName[] mov, IOName[] arrive) : this(name, key)
        {
            OutDo = mov;
            InDi = arrive;
            Type = AxisType.Cylinder_TwoPos;
        }

        private const string CategoryConstant = "固有參數";
        private const string CategoryLM = "龍門參數";
        private const string CategoryOther = "其他軸";
        private const string CategoryJogMotion = "Jog運動參數";
        private const string CategoryDotMotion = "點動運動參數";
        private const string CategoryLimit = "限位參數";

        #region 固有屬性
        /// <summary>
        /// 軸名字
        /// </summary>
        [JsonProperty]
        [ReadOnly(true)]
        [Category(CategoryConstant)]
        [Description("軸名字")]
        [DisplayName("軸名")]
        public string Name { get; set; }
        /// <summary>
        /// 軸類型
        /// </summary>
        [JsonProperty]
        [ReadOnly(true)]
        [Category(CategoryConstant)]
        [Description("軸類型")]
        [DisplayName("軸類型")]
        public AxisType Type { get; set; } = AxisType.Common;
        /// <summary>
        /// 編號
        /// </summary>
        [JsonProperty]
        [ReadOnly(true)]
        [Category(CategoryConstant)]
        [Description("軸編號")]
        [DisplayName("軸編號")]
        public short Code { get; set; }
        /// <summary>
        /// 所屬控制卡編號
        /// </summary>
        [JsonProperty]
        [ReadOnly(true)]
        [Category(CategoryConstant)]
        [Description("所屬控制卡編號")]
        [DisplayName("所屬控制卡編號")]
        public short CardNum { get; set; } = 0;
        /// <summary>
        /// 脈衝當量
        /// </summary>
        [JsonProperty]
        [Category(CategoryConstant)]
        [Description("脈衝當量")]
        [DisplayName("脈衝當量")]
        public double PulseEquiv { get; set; } = 1000;
        [JsonProperty]
        [Category(CategoryConstant)]
        [DisplayName("Encoder")]
        [Description("編碼器轉一圈脈衝數")]
        public int Encoder { get; set; } = 16777216;
        [JsonProperty]
        [Category(CategoryConstant)]
        [DisplayName("Gear")]
        [Description("編碼器轉一圈需發脈衝數")]
        public int Gear { get; set; } = 10000;
        /// <summary>
        /// 驅動器品牌
        /// </summary>
        [JsonProperty]
        [Category(CategoryConstant)]
        [Description("驅動器品牌")]
        [DisplayName("驅動器品牌")]
        public DriveType DriveType { get; set; } = DriveType.衆爲興;
        #endregion

        #region 龍門相關
        [JsonProperty]
        [Category(CategoryLM)]
        [Description("龍門學習長度/mm")]
        [DisplayName("學習長度")]
        [Browsable(false)]
        [JsonIgnore]
        public int LMLength { get; set; } = 100;
        [JsonProperty]
        [Category(CategoryLM)]
        [Description("龍門學習方向是否爲負")]
        [DisplayName("學習方向")]
        [Browsable(false)]
        [JsonIgnore]
        public bool DicIsNeg { get; set; } = false;
        [Category(CategoryLM)]
        [Description("龍門從軸軸號")]
        [DisplayName("從軸號")]
        [JsonIgnore]
        [Browsable(false)]
        public short FollowAxisCode { get; set; }
        #endregion

        #region 其他
        /// <summary>
        /// TwoPos氣缸軸獨有,輸出的運動指令
        /// </summary>
        [JsonProperty]
        [Browsable(false)]
        public IOName[] OutDo { get; set; }
        /// <summary>
        /// TwoPos氣缸軸獨有,到位信號
        /// </summary>
        [JsonProperty]
        [Browsable(false)]
        public IOName[] InDi { get; set; }
        /// <summary>
        /// Reverse軸特有,表示跟隨它反轉的軸號
        /// </summary>
        [JsonProperty]
        [Browsable(false)]
        public AxisKey ReverseAxisKey { get; set; }
        #endregion

        #region 回零相關
        [JsonProperty]
        [Category("回零相關")]
        [Description("回零模式")]
        [DisplayName("回零模式")]
        public AxisHomeType HomeMode { get; set; } = AxisHomeType.NegLimitIndex_1;
        [JsonProperty]
        [Category("回零相關")]
        [Description("高速回零速度")]
        [DisplayName("高速回零速度")]
        public double HomeVel { get; set; } = 20;
        [JsonProperty]
        [Category("回零相關")]
        [Description("最大高速回零速度")]
        [DisplayName("最大高速回零速度")]
        public double MaxHomeVel { get; set; } = 20;
        [JsonProperty]
        [Category("回零相關")]
        [Description("低速回零速度")]
        [DisplayName("低速回零速度")]
        public double HomeLowVel { get; set; } = 10;
        [JsonProperty]
        [Category("回零相關")]
        [Description("回零加速度")]
        [DisplayName("回零加速度")]
        public double HomeAcc { get; set; } = 100;
        [JsonProperty]
        [Category("回零相關")]
        [Description("原點偏移 / mm")]
        [DisplayName("原點偏移")]
        public double HomeOffset { get; set; } = 0;
        #endregion
        
        #region Dot運動參數
        [JsonProperty]
        [Category(CategoryDotMotion)]
        [Description("默認速度 mm/s,即定點移動")]
        [DisplayName("速度")]
        public double DefVel { get; set; } = 50;
        [JsonProperty]
        [Category(CategoryDotMotion)]
        [Description("默認起步速度 mm/s,即定點移動")]
        [DisplayName("起步速度")]
        public double DefStartVel { get; set; } = 0;
        [JsonProperty]
        [Category(CategoryDotMotion)]
        [Description("默認加速度 mm/s,即定點移動")]
        [DisplayName("加速度")]
        public double DefAcc { get; set; } = 4000;
        [JsonProperty]
        [Category(CategoryDotMotion)]
        [Description("默認減速度 mm/s^2,即定點移動")]
        [DisplayName("減速度")]
        public double DefDec { get; set; } = 4000;

        [JsonProperty]
        [Category(CategoryDotMotion)]
        [Description("默認最大速度 mm/s,即定點移動")]
        [DisplayName("最大速度")]
        public double MaxDefVel { get; set; } = 200;
        [JsonProperty]
        [Category(CategoryDotMotion)]
        [Description("默認最大加速度 mm/s,即定點移動")]
        [DisplayName("最大加速度")]
        public double MaxDefAcc { get; set; } = 4000;
        [JsonProperty]
        [Category(CategoryDotMotion)]
        [Description("默認最大減速度 mm/s^2,即定點移動")]
        [DisplayName("最大減速度")]
        public double MaxDefDec { get; set; } = 4000;
        #endregion

        #region Jog運動參數
        [JsonProperty]
        [Category(CategoryJogMotion)]
        [Description("默認Jog運動速度 mm/s")]
        [DisplayName("Jog速度")]
        public double DefJogVel { get; set; } = 100;
        [JsonProperty]
        [Category(CategoryJogMotion)]
        [Description("默認Jog起步速度 mm/s")]
        [DisplayName("Jog起步速度")]
        public double DefJogStartVel { get; set; } = 0;
        [JsonProperty]
        [Category(CategoryJogMotion)]
        [Description("默認Jog運動加速度 mm/s^2")]
        [DisplayName("Jog加速度")]
        public double DefJogAcc { get; set; } = 4000;
        [JsonProperty]
        [Category(CategoryJogMotion)]
        [Description("默認Jog運動減速度 mm/s^2")]
        [DisplayName("Jog減速度")]
        public double DefJogDec { get; set; } = 4000;
        [JsonProperty]
        [Category(CategoryJogMotion)]
        [Description("默認插補座標系[0,1]")]
        [DisplayName("插補座標系")]
        public short DefCrd { get; set; } = 0;
        [JsonProperty]
        [Category(CategoryJogMotion)]
        [Description("勻速時間 ms")]
        [DisplayName("勻速時間")]
        public double SmoothTime { get; set; } = 10;

        [JsonProperty]
        [Category(CategoryJogMotion)]
        [Description("默認最大Jog運動速度 mm/s")]
        [DisplayName("最大Jog速度")]
        public double MaxDefJogVel { get; set; } = 100;
        [JsonProperty]
        [Category(CategoryJogMotion)]
        [Description("默認最大Jog運動加速度 mm/s^2")]
        [DisplayName("最大Jog加速度")]
        public double MaxDefJogAcc { get; set; } = 4000;
        [JsonProperty]
        [Category(CategoryJogMotion)]
        [Description("默認最大Jog運動減速度 mm/s^2")]
        [DisplayName("最大Jog減速度")]
        public double MaxDefJogDec { get; set; } = 4000;
        #endregion

        #region 限位相關
        [JsonProperty]
        [Category(CategoryLimit)]
        [DisplayName("硬件正限位端口號")]
        [Description("查詢硬件正限位時的端口號")]
        public int PosLimitNum { get; set; } = 0;
        [JsonProperty]
        [Category(CategoryLimit)]
        [DisplayName("硬件負限位端口號")]
        [Description("查詢硬件負限位時的端口號")]
        public int NegLimitNum { get; set; } = 1;
        [JsonProperty]
        [Category(CategoryLimit)]
        [DisplayName("啓用軟限位")]
        [Description("啓用軟限位,0:禁用  1:啓用")]
        public bool IsSoftLimit { get; set; } = true;
        [JsonProperty]
        [Category(CategoryLimit)]
        [DisplayName("負軟限位")]
        [Description("負方向軟限位 mm")]
        public int SoftNegLimit { get; set; } = -1500;
        [JsonProperty]
        [Category(CategoryLimit)]
        [DisplayName("正軟限位")]
        [Description("正方向軟限位 mm")]
        public int SoftPosLimit { get; set; } = 1500;
        #endregion

        public object Clone()
        {
            return MemberwiseClone();
        }
    }
    /// <summary>
    /// 驅動器品牌枚舉
    /// </summary>
    public enum DriveType
    {
        [Browsable(false)]
        NULL = 0,
        匯川,
        Elmo,
        高創,
        衆爲興,
    }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章