ADT8940控制卡是基于PCI總線的控制卡,它提供了豐富的運動控制函數,可方便基于XY平臺的數控系統、機器人系統、雕刻切割系統、座標測量系統的應用(具體在系統中主要用到了單軸運動、兩軸聯動、三軸聯動、兩軸直線插補,三軸直線插補等功能。對于XY兩軸插補,只需設置X軸的速度曲線,三軸插補需要設置X軸的速度,Z軸的倍率及驅動速度應與X軸設置相同,同時Z軸的初始速度也應設為X軸的驅動速度)。 下面簡單介紹系統中所用庫函數的功能和使用方法。 a. 初始化卡常用函數 int adt8940_initial(void)—該函數用于檢測運動控制卡和復位運動控制卡,這是調用其他函數的前提。函數返回值為ADT8940運動控制卡的數量,返回值<=0,表示初始化失敗。 int set_range(int cardno, int axis, long value)—該函數用于設定倍率,倍率是決定速度,加減速度和加減速度變化率的參數。 int set_pulse_mode(int cardno,int axis,int value,int logic,int dir_logic)—該函數用于設置輸出脈沖的工作方式,運動控制卡提供獨立脈沖和雙脈沖的工作方式。 int set_command_pos(int cardno,int axis,long value)—該函數用于設定邏輯計數器的值。 int set_actual_pos(int cardno,int axis,long value)—該函數用于設定實位計數器的值。 b. 運動控制常用函數 int set_startv(int cardno,int axis,long value)—設定起始速度。 int set_speed(int cardno,int axis,long value)—設定驅動速度。 int set_acc(int cardno,int axis,long value)—設定加速度。 int pmove(int cardno,int axis,long pulse)—單軸驅動函數,連續向不同軸發送此指令,即可實現多軸聯動。 int inp_move2(int cardno,int no,long pulse1,long pluse2)—兩軸插補函數,no的取值決定是前兩軸還是后兩軸插補。 int inp_move3(int cardno,long pulse1,long pluse2,long pulse3)—兩軸插補函數。 c. 狀態檢查函數 int get_status(int cardno,int axis,int *value)—獲取單軸驅動狀態,該函數主要用于單軸運動和多軸聯動的場合。 int get_inp_stauts(int cardno,int no,int *value)—獲取插補驅動狀態。 int get_inp_status2(int cardno,int no,int *value)—獲取連續插補允許寫狀態,通過使用該函數可以在當前插補未結束的情況下,插入下一條插補指令,以便保證插補的連續性。 d. 參數檢查函數 int get_command_pos(int cardno,int axis,long *value)—獲取邏輯計數器的值。 Int get_actual_pos(int cardno,int axis,long *value)—獲取 實位計數器(通常為編碼器和光柵尺)的值。 int get_speed(int cardno,int axis,long *speed)—獲取運動軸的速度 e. 開關量操作函數 int read_bit(int cardno,int number)—讀單個輸入點狀態。 int write_bit(int cardno,int number,int value)—輸出單點。 以上函數的詳細說明,請參見ADT8940運動控制卡說明書。