運(yùn)動控制卡是一種基于工業(yè)PC機(jī)、用于各種運(yùn)動控制場合(包括位移、速度、加速度等)的上位控制單元。它的出現(xiàn)主要是因?yàn)椋海?)為了滿足新型數(shù)控系統(tǒng)的標(biāo)準(zhǔn)化、柔性、開放性等要求;(2)在各種工業(yè)設(shè)備(如切割、雕刻、噴涂、點(diǎn)膠、焊接等)、國防裝備(如跟蹤定位系統(tǒng)等)、智能醫(yī)療裝置等設(shè)備的自動化控制系統(tǒng)研制和改造中,急需一個(gè)運(yùn)動控制模塊的硬件平臺;(3)PC機(jī)在各種工業(yè)現(xiàn)場的廣泛應(yīng)用,也促使配備相應(yīng)的控制卡以充分發(fā)揮PC機(jī)的強(qiáng)大功能。
1 數(shù)控系統(tǒng)組織結(jié)構(gòu)及控制原理圖
采用PC+運(yùn)動控制卡的簡易數(shù)控系統(tǒng),其主要組成及其控制流程圖如圖1所示。
通過上述組織結(jié)構(gòu)圖不難看出:一個(gè)完整的數(shù)控系統(tǒng)主要有“執(zhí)行結(jié)構(gòu)”和“上位控制”兩部分組成?!皥?zhí)行機(jī)構(gòu)”主要包括: 步進(jìn)電機(jī),伺服電機(jī),以及由繼電器輸出控制的交流馬達(dá)、汽缸、液壓缸等,“執(zhí)行機(jī)構(gòu)”通過機(jī)械聯(lián)結(jié)裝置將運(yùn)動傳遞到刀具或工件,進(jìn)而實(shí)現(xiàn)機(jī)械部件的運(yùn)動;“上位控制”單元主要包括:PC機(jī),運(yùn)動控制卡,數(shù)控應(yīng)用軟件和輔助工具軟件。
[IMG=數(shù)控系統(tǒng)控制原理圖]/uploadpic/THESIS/2007/11/2007111313432332399V.jpg[/IMG]
圖1 數(shù)控系統(tǒng)控制原理
“上位控制”單元是數(shù)控系統(tǒng)的“指揮中心”,“執(zhí)行機(jī)構(gòu)”的所有動作都受“上位控制”的統(tǒng)一調(diào)度,從而確保了各部件協(xié)調(diào)動作。在“上位控制”對“執(zhí)行機(jī)構(gòu)”實(shí)施控制的過程中,運(yùn)動控制卡起了關(guān)鍵性的作用,她是PC機(jī)和執(zhí)行機(jī)構(gòu)聯(lián)系的橋梁,是執(zhí)行機(jī)構(gòu)的直接控制者,所以運(yùn)動控制卡性能的優(yōu)劣將直接影響整個(gè)數(shù)控系統(tǒng)的性能。
深圳眾為興數(shù)控技術(shù)有限公司是一家專業(yè)從事數(shù)控硬件產(chǎn)品和應(yīng)用系統(tǒng)開發(fā)的公司,運(yùn)動控制卡作為公司的一項(xiàng)核心產(chǎn)品,其性能指標(biāo)一直穩(wěn)居在國內(nèi)的先進(jìn)行列,基于運(yùn)動控制卡自主研發(fā)的數(shù)控應(yīng)用系統(tǒng)滲透到了植毛鉆孔機(jī),水射流切割、火焰切割、異形玻璃切割、噴涂機(jī)、雕刻機(jī)、焊接機(jī)、醫(yī)療機(jī)械等領(lǐng)域。下面詳細(xì)討論運(yùn)動控制卡在異型玻璃切割行業(yè)中的應(yīng)用。
2 異形玻璃切割系統(tǒng)
2.1 行業(yè)概述
傳統(tǒng)的玻璃切割采用手工和簡易機(jī)械切割方式,在玻璃僅僅用于門窗的時(shí)代,上述切割方式已經(jīng)綽綽有余。然而隨著科技和生活水平的不斷提高,玻璃在電子產(chǎn)品、工藝品、裝飾品、家庭日用品等領(lǐng)域的應(yīng)用越來越普及,利用傳統(tǒng)方式去切割厚度很厚,面積大,形狀復(fù)雜,精度要求高的玻璃非常困難,而且效率很低。傳統(tǒng)切割方式在玻璃切割領(lǐng)域中的應(yīng)用已經(jīng)走到了盡頭,取而代之的最佳方式莫過于將數(shù)控技術(shù)應(yīng)用到玻璃切割中。
深圳眾為興數(shù)控技術(shù)有限公司結(jié)合自身所長,自主開發(fā)了異形玻璃切割系統(tǒng),該系統(tǒng)在玻璃切割行業(yè)中已經(jīng)得到了廣泛的應(yīng)用。
2.2 系統(tǒng)設(shè)計(jì)
(1)硬件方案
因PLC和其他控制器存在圖形處理麻煩、存儲容量和內(nèi)存容量小等缺陷,所以最終采用PC+運(yùn)動控制卡硬件方案。
運(yùn)動控制卡是基于PC機(jī)各種總線的步進(jìn)電機(jī)或數(shù)字式伺服電機(jī)的上位控制單元,總線形式也是多種多樣,通常使用的是基于ISA總線,PCI總線和PC104總線的。隨著PC機(jī)的發(fā)展,主板上ISA插槽已經(jīng)越來越少,而PC104總線插槽僅出現(xiàn)在價(jià)格昂貴的工控主板上,PCI總線已經(jīng)成為普通PC機(jī)的主流。
綜合玻璃切割工藝,加工過程中需要使用到兩軸聯(lián)動、三軸聯(lián)動、、兩軸直線插補(bǔ)、三軸直線插補(bǔ)和自動加減速等功能,所以選擇PCI插槽的ADT8940四軸運(yùn)動控制卡作為運(yùn)動控制單元。
(2)軟件方案
ADT8940運(yùn)動控制卡具有開放式結(jié)構(gòu)、使用簡便、功能豐富、可靠性高等特點(diǎn),其所有功能都是以庫函數(shù)形式出現(xiàn),用戶只管調(diào)用,無須了解具體的實(shí)現(xiàn)方式,所以可以在短期內(nèi),開發(fā)出既滿足性能要求,又能大幅度降低成本的系統(tǒng)。
在傳統(tǒng)數(shù)控系統(tǒng)中,通常需要專業(yè)人員手工編輯G代碼,或者使用Mastercam等專業(yè)性很強(qiáng)的繪圖工具生成G代碼,G代碼是系統(tǒng)唯一能夠識別的加工指令,這對操作人員提出了很高的要求。為了開發(fā)出通用性強(qiáng),性價(jià)比高的系統(tǒng),我們分析了目前比較通用的各種繪圖工具,決定在兼容傳統(tǒng)的G代碼的基礎(chǔ)上,增加目前通用性強(qiáng)的DXF文件(AutoCAD)和PLT(AutoCAD、CoreDraw)文件作為切割加工的原始數(shù)據(jù),從而解決了客戶使用G代碼的煩惱。
VC中提供的數(shù)據(jù)鏈表模板類,可以很方便地管理數(shù)據(jù),加上VC有強(qiáng)大的圖形處理功能,可以方便地將數(shù)據(jù)文件格式轉(zhuǎn)化成圖形格式,直觀地反映出來。所以選用VC作為軟件開發(fā)工具。
(3)功能規(guī)劃及設(shè)計(jì)要點(diǎn)
解析功能—系統(tǒng)具有對DXF、PLT、CNC、NC文件的解析功能,從而自動生成加工過程中所需要的數(shù)據(jù)。解析總體思路采用短直線逼近法來模擬實(shí)際軌跡,解析精度可調(diào),用戶可以根據(jù)實(shí)際需要進(jìn)行設(shè)定。
編輯功能—在玻璃切割中,經(jīng)常需要批量切割排列規(guī)則的方形和圓形工件,如果通過繪圖方式很不方便。為了增強(qiáng)系統(tǒng)的通用性和靈活性,系統(tǒng)中增加了方形和圓形工件的排版和編輯功能,以方便的實(shí)現(xiàn)方形和圓形工件的切割加工。
回零功能—系統(tǒng)上電啟動,每個(gè)軸正常需要回零,確保系統(tǒng)找到機(jī)械零點(diǎn),通常用原點(diǎn)接近開關(guān)作為原點(diǎn)信號。
設(shè)定起點(diǎn)—在機(jī)械零點(diǎn)的基礎(chǔ)上,人為設(shè)定的加工零點(diǎn)。設(shè)定加工起點(diǎn)的目的,主要是為了提高加工效率。
抬刀功能—在切割加工過程中,如果刀具在工件中旋轉(zhuǎn)較大角度,既會影響刀具的使用壽命,同時(shí)還會在拐角處留下圓角。為避免上述現(xiàn)象的發(fā)生,用戶可以通過設(shè)定抬刀角度,確保刀具旋轉(zhuǎn)角度在超出抬刀角度的情況下,刀具先抬起,然后旋轉(zhuǎn),接著下刀進(jìn)行后續(xù)切割。
變速功能—在加工過程中,如果采用統(tǒng)一速度進(jìn)行高速切割加工,那么在拐角較大處,就會留下不規(guī)則的弧形,影響產(chǎn)品的加工精度。為此,系統(tǒng)增加了拐角減速功能。
暫停記憶—系統(tǒng)在暫停時(shí),會自動記憶當(dāng)前的位置,以保證繼續(xù)加工時(shí),所有運(yùn)動軸都能準(zhǔn)確回到暫停時(shí)的位置,確保加工的準(zhǔn)確性。
手動功能—為提高手動調(diào)機(jī)的靈活性,系統(tǒng)采用了手持盒控制和鍵盤控制和鼠標(biāo)控制三種方式來實(shí)現(xiàn)各運(yùn)動軸的移動,同時(shí)還提供了指定坐標(biāo)移動法,確保各運(yùn)動軸運(yùn)動到指定位置。
IO診斷—該功能主要用于裝機(jī)調(diào)試和故障檢測中。機(jī)器安裝完畢,必須保證所有的輸入和輸出信號正常后,方可進(jìn)行加工,否則將會帶來安全隱患和加工出現(xiàn)異常的現(xiàn)象。
保護(hù)功能—系統(tǒng)使用了三級保護(hù)措施,一級保護(hù)采用硬件限位開關(guān),二級保護(hù)采用軟件限位,三級保護(hù)采用了急停關(guān)閉所有電機(jī)驅(qū)動器使能的應(yīng)急方案,確保了系統(tǒng)加工過程的安全。
(4)運(yùn)動控制卡操作
ADT8940控制卡是基于PCI總線的控制卡,它提供了豐富的運(yùn)動控制函數(shù),可方便基于XY平臺的數(shù)控系統(tǒng)、機(jī)器人系統(tǒng)、雕刻切割系統(tǒng)、座標(biāo)測量系統(tǒng)的應(yīng)用(具體在系統(tǒng)中主要用到了單軸運(yùn)動、兩軸聯(lián)動、三軸聯(lián)動、兩軸直線插補(bǔ),三軸直線插補(bǔ)等功能。對于XY兩軸插補(bǔ),只需設(shè)置X軸的速度曲線,三軸插補(bǔ)需要設(shè)置X軸的速度,Z軸的倍率及驅(qū)動速度應(yīng)與X軸設(shè)置相同,同時(shí)Z軸的初始速度也應(yīng)設(shè)為X軸的驅(qū)動速度)。
下面簡單介紹系統(tǒng)中所用庫函數(shù)的功能和使用方法。
(1)初始化卡常用函數(shù)
int adt8940_initial(void)—該函數(shù)用于檢測運(yùn)動控制卡和復(fù)位運(yùn)動控制卡,這是調(diào)用其他函數(shù)的前提。函數(shù)返回值為ADT8940運(yùn)動控制卡的數(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ú)立脈沖和雙脈沖的工作方式。
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ù)器的值。
(2)運(yùn)動控制常用函數(shù)
int set_startv(int cardno,int axis,long value)—設(shè)定起始速度。
int set_speed(int cardno,int axis,long value)—設(shè)定驅(qū)動速度。
int set_acc(int cardno,int axis,long value)—設(shè)定加速度。
int pmove(int cardno,int axis,long pulse)—單軸驅(qū)動函數(shù),連續(xù)向不同軸發(fā)送此指令,即可實(shí)現(xiàn)多軸聯(lián)動。
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ù)。
(3)狀態(tài)檢查函數(shù)
int get_status(int cardno,int axis,int *value)—獲取單軸驅(qū)動狀態(tài),該函數(shù)主要用于單軸運(yùn)動和多軸聯(lián)動的場合。
int get_inp_stauts(int cardno,int no,int *value)—獲取插補(bǔ)驅(qū)動狀態(tài)。
int get_inp_status2(int cardno,int no,int *value)—獲取連續(xù)插補(bǔ)允許寫狀態(tài),通過使用該函數(shù)可以在當(dāng)前插補(bǔ)未結(jié)束的情況下,插入下一條插補(bǔ)指令,以便保證插補(bǔ)的連續(xù)性。
(4)參數(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)動軸的速度
(5)開關(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ì)說明,請參見ADT850運(yùn)動控制卡說明書。
(6)軟件設(shè)計(jì)
在需要調(diào)用運(yùn)動控制函數(shù)的地方,正確調(diào)用相應(yīng)函數(shù),最后組合成完整的異形玻璃切割系統(tǒng)。
3 結(jié)束語
運(yùn)動控制卡作為運(yùn)動控制系統(tǒng)的核心部件,“上位控制”單元的性能決定了整套系統(tǒng)的運(yùn)動控制功能的強(qiáng)弱。根據(jù)不同的應(yīng)用場合,根據(jù)各自的應(yīng)用條件,為您的運(yùn)動控制系統(tǒng)選擇一款適用的“管家”吧!
第二屆伺服與運(yùn)動控制論壇論文集
第三屆伺服與運(yùn)動控制論壇論文集