非標框架(2)-運控卡接口

   /// <summary>
    /// 控制卡所有操作的接口
    /// </summary>
    public interface ICardExecuter : IAxisOperate, IIOOperate
    {
        /// <summary>
        /// 品牌
        /// </summary>
        CardBrand Brand { get; }

        /// <summary>
        /// 驗證返回的結果
        /// </summary>
        Result GetResult(int rc);
        Result GetLibVer(short cardNum, out int varNum, out int motionVer, out int firmWareVer);
        /// <summary>
        /// 打開運動卡
        /// </summary>
        /// <param name="cardNum">當前控制卡卡號</param>
        Result Open(short cardNum = 0);
        /// <summary>
        /// 加載必要的ini配置文件
        /// </summary>
        Result LoadConfig(short cardNum);
        Result WriteEtherCAT(short cardNum, int axis, int index, int subIndex, byte[] data);
        //Result ReadEtherCAT(short cardNum,int axis,int index,int subIn
        Result WriteEtherCAT(short cardNum, int axis, int index, int subIndex, byte data, int length);
        Result ReadEtherCAT(short cardNum, int axis, int index, int subIndex, ref byte[] data);
        /// <summary>
        /// 關閉運動卡
        /// </summary>
        /// <param name="cardNum">當前控制卡卡號</param>
        Result Close(short cardNum = 0);
        /// <summary>
        /// 按組設置編碼器的計數方向
        /// </summary>
        /// <param name="cardNum">當前控制卡卡號</param>
        /// <param name="sense">按組設置編碼器的方向,0-正邏輯,1-負邏輯</param>
        Result SetEncSns(ushort sense, short cardNum = 0);
        /// <summary>
        /// 復位運動控制器
        /// </summary>
        /// <param name="cardNum">當前控制卡卡號</param>
        Result Reset(short cardNum = 0);
        /// <summary>
        /// 讀取規劃速度,衆爲興爲最大速度值
        /// </summary>
        Result GetPrfVel(short profile, out double pValue, short cardNum = 0);
        /// <summary>
        /// 執行XY直線插補
        /// </summary>
        Result LnXY(short crd, short xCode, short yCode, double xPos, double yPos, double synVel, double synAcc, short cardNum);
        Result LnXYZ(short crd, short xCode, short yCode, short zCode, double xPos, double yPos, double zPos, double synVel, double synAcc, short cardNum);
        Result StartLnXY(int[] axisCode, PointD[] posArray,
            double[] vel, double acc, double startVel, int smoothTime, short cardNum);
        int GetLnXYIndex(short cardNum);
        int GetLnZIndex(short cardNum);
        void WaitLnXYEnd(short cardNum);
        Result StartLnZ(short axisCode, double[] posArray, double[] vel,
            double acc, double startVel, int smoothTime, short cardNum);
        void WaitLnZEnd(short cardNum);

        /// <summary>
        /// 獲得插補執行狀態
        /// </summary>
        Result GetCrdState(short crd, out bool isRun, short cardNum);
        /// <summary>
        /// 設置軸跟隨驅動模式(龍門雙驅)
        /// </summary>
        Result SetFollowAxis(short master, short slave, short cardNum = 0);
        /// <summary>
        /// 獲取位置比較長度
        /// </summary>
        /// <param name="cmp">比較器索引 0:OUT16  1:OUT17  2:OUT18  3:OUT19</param>
        /// <param name="length">位置比較器餘量</param>
        /// <returns></returns>
        Result GetXDLen(int cmp, out int length, short cardNum = 0);
        /// <summary>
        /// 獲取位置比較狀態
        /// </summary>
        /// <param name="cmp">比較器索引 0:OUT16  1:OUT17  2:OUT18  3:OUT19</param>
        /// <param name="couSucess">位置比較器已完成比較點數</param>
        /// <returns></returns>
        Result GetXDSts(int cmp, out int couSucess, short cardNum = 0);
        /// <summary>
        /// 設置位置比較誤差範圍
        /// </summary>
        /// <param name="cmp">比較器索引 0:OUT16  1:OUT17  2:OUT18  3:OUT19</param>
        /// <param name="area">位置比較器位置比較矩形區域</param>
        /// <returns></returns>
        Result SetXDArea(int cmp, int[] area, short cardNum = 0);
        /// <summary>
        /// 設置位置比較觸發模式
        /// </summary>
        /// <param name="cmp">比較器索引 0:OUT16  1:OUT17  2:OUT18  3:OUT19</param>
        /// <param name="axis">位置比較觸發軸號</param>
        /// <param name="source">位置比較源 0:邏輯位置 1:編碼器位置</param>
        /// <param name="mode">比較器觸發 IO 輸出模式 0:反轉 1:脈衝輸出</param>
        /// <param name="level">輸出端口常態,即觸發前輸出端口狀態  0:低電平 1:高電平</param>
        /// <returns></returns>
        Result SetXDMode(int cmp, int xd, int[] axis, int source, int mode, int level, int cardNum = 0);
        /// <summary>
        /// 獲取位置比較觸發模式
        /// </summary>
        /// <param name="cmp">比較器索引 0:OUT16  1:OUT17  2:OUT18  3:OUT19</param>
        /// <param name="axis">位置比較觸發軸號</param>
        /// <param name="enable">是否啓用位置比較 0:不啓用  1:啓用</param>
        /// <param name="xd">位置比較維數</param>
        /// <param name="source">位置比較源 0:邏輯位置 1:編碼器位置</param>
        /// <param name="mode">比較器觸發 IO 輸出模式 0:反轉 1:脈衝輸出</param>
        /// <param name="level">輸出端口常態,即觸發前輸出端口狀態  0:低電平 1:高電平</param>
        /// <returns></returns>
        Result GetXDMode(int cmp, int[] axis, out int enable, out int xd, out int source,
            out int mode, out int level, int cardNum = 0);
        /// <summary>
        /// 清除位置比較點位
        /// </summary>
        /// <param name="cmp">比較器索引 0:OUT16  1:OUT17  2:OUT18  3:OUT19</param>
        /// <returns></returns>
        Result ClearXDCmp(int cmp, short cardNum = 0);
        /// <summary>
        /// 添加位置比較點
        /// </summary>
        /// <param name="cmp">比較器索引 0:OUT16  1:OUT17  2:OUT18  3:OUT19</param>
        /// <param name="pos">位置點</param>
        /// <param name="time_h">位置比較輸出打開時間</param>
        /// <param name="time_l">位置比較輸出關閉時間</param>
        /// <returns></returns>
        Result AddXDCmp(int cmp, int[] pos, double time_h, double time_l, short cardNum = 0);
        /// <summary>
        /// 重置位置比較
        /// </summary>
        /// <param name="cmp">比較器索引 0:OUT16  1:OUT17  2:OUT18  3:OUT19</param>
        /// <returns></returns>
        Result ResetXDCmp(int cmp, short cardNum = 0);
    }
    /// <summary>
    /// 控制卡品牌的枚舉
    /// </summary>
    public enum CardBrand
    {
        /// <summary>
        /// 衆爲興
        /// </summary>
        ADT_6320E = 0,
        /// <summary>
        /// 衆爲興
        /// </summary>
        ADT_6320E_C = 1,
        /// <summary>
        /// 雷賽
        /// </summary>
        DMC_E3032 = 2,
    }
    /// <summary>
    /// 運動單位
    /// </summary>
    public enum MotionUnit
    {
        /// <summary>
        /// 毫米
        /// </summary>
        MM,
        /// <summary>
        /// 脈衝
        /// </summary>
        Pulse,
    }

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