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