摘 要: 針對(duì)目前步進(jìn)電機(jī)運(yùn)行特性測試系統(tǒng)成本高、無上位機(jī)對(duì)步進(jìn)電機(jī)進(jìn)行控制和測試數(shù)據(jù)進(jìn)行處理顯示等問題,以LabVIEW及運(yùn)動(dòng)控制卡為核心,設(shè)計(jì)了一種步進(jìn)電機(jī)測試系統(tǒng),簡要介紹了測試系統(tǒng)的硬件組成,詳細(xì)介紹了LabVIEW調(diào)用和設(shè)置運(yùn)動(dòng)控制卡函數(shù)及采集數(shù)據(jù)的方法。
關(guān)鍵詞: 步進(jìn)電機(jī);LabVIEW;運(yùn)動(dòng)控制卡;數(shù)據(jù)采集
步進(jìn)電機(jī)是一種能夠快速啟動(dòng)、可正反轉(zhuǎn)和制動(dòng)的執(zhí)行元件,具有驅(qū)動(dòng)簡單、控制精度較高、成本低廉等優(yōu)點(diǎn),被廣泛應(yīng)用于生產(chǎn)和生活的各個(gè)場合。通常步進(jìn)電機(jī)在使用之前應(yīng)先了解其準(zhǔn)確的運(yùn)行特性。目前工業(yè)中步進(jìn)電機(jī)的運(yùn)行特性測試常采用以PLC為控制系統(tǒng)核心的方案,這種方案能自動(dòng)實(shí)現(xiàn)數(shù)據(jù)的采集、顯示和處理[1],但它的成本較高。工業(yè)中需要一款成本較低、使用方便、操作簡單的運(yùn)行測試系統(tǒng)。
LabVIEW是美國NI公司研發(fā)的一款用于測控領(lǐng)域的軟件,它允許使用圖形方式編程,摒棄了晦澀難懂的文本代碼,其在硬件驅(qū)動(dòng)、數(shù)據(jù)采集、數(shù)據(jù)分析和數(shù)據(jù)顯示方面有著優(yōu)越的表現(xiàn),使之廣泛的應(yīng)用于工業(yè)自動(dòng)化、測試測量、運(yùn)動(dòng)控制、圖像處理等領(lǐng)域[2-3]。利用LabVIEW結(jié)合運(yùn)動(dòng)控制卡實(shí)現(xiàn)步進(jìn)電機(jī)的運(yùn)行特性測試且也能自動(dòng)實(shí)現(xiàn)數(shù)據(jù)的采集、處理和顯示。LabVIEW結(jié)合運(yùn)動(dòng)控制卡的方案與以PLC為控制系統(tǒng)核心的方案相比成本低、數(shù)據(jù)采集、數(shù)據(jù)分析及顯示簡單,且LabVIEW編程比PLC編程方便、直觀、具有良好的人機(jī)交互界面。
1 實(shí)現(xiàn)方法
1.1 系統(tǒng)組成
步進(jìn)電機(jī)測試系統(tǒng)硬件結(jié)構(gòu)框圖如圖1所示。
測試平臺(tái)中步進(jìn)電機(jī)為被測對(duì)象,磁粉制動(dòng)器利用磁滯原理,通過控制勵(lì)磁電流的輸入產(chǎn)生一定的力矩來模擬電機(jī)的加載裝置,扭矩傳感器用于測試電機(jī)特性時(shí)采集電機(jī)的模擬轉(zhuǎn)矩大小。LabVIEW作為系統(tǒng)的核心,調(diào)用運(yùn)動(dòng)控制卡中的多個(gè)函數(shù)來控制電機(jī)的轉(zhuǎn)速和轉(zhuǎn)向及采集編碼器反饋的實(shí)際位置值,并將采集到數(shù)據(jù)進(jìn)行快速處理和顯示。
1.2 測試軟件的關(guān)鍵技術(shù)
在運(yùn)動(dòng)控制卡函數(shù)庫中主要包括的函數(shù)有:控制卡和軸設(shè)置函數(shù)、運(yùn)動(dòng)指令函數(shù)、制動(dòng)函數(shù)、位置和狀態(tài)設(shè)置函數(shù)、位置和狀態(tài)查詢函數(shù)、I/O口操作函數(shù)和一些其他函數(shù)[4]。LabVIEW能否正確的調(diào)用并設(shè)置這些函數(shù)是整個(gè)測試系統(tǒng)軟件設(shè)計(jì)的關(guān)鍵部分。
LabVIEW可以通過調(diào)用函數(shù)庫節(jié)點(diǎn)(CLN)來調(diào)用運(yùn)動(dòng)控制卡中的動(dòng)態(tài)鏈接庫(DDL)中的函數(shù)。調(diào)用步驟為:在程序后面板選擇“函數(shù)”→“互連接口”→“庫與可執(zhí)行程序”→“調(diào)用庫函數(shù)節(jié)點(diǎn)”。雙擊庫函數(shù)節(jié)點(diǎn),在函數(shù)選項(xiàng)卡中輸入庫名及選擇所需的函數(shù),在參數(shù)選項(xiàng)卡中設(shè)置和增加對(duì)應(yīng)函數(shù)的參數(shù)。參數(shù)的設(shè)置直接關(guān)系到應(yīng)用程序接口(API)函數(shù)調(diào)用的成敗。如果API函數(shù)中參數(shù)原型為基本數(shù)據(jù)類型,LabVIEW參數(shù)的設(shè)置則非常簡單,即選擇對(duì)應(yīng)的數(shù)據(jù)類型后將參數(shù)的傳遞方式設(shè)置為“數(shù)值”。
通常LabVIEW中使用的數(shù)據(jù)類型與API函數(shù)中使用的數(shù)據(jù)類型不一致。而錯(cuò)誤數(shù)據(jù)類型的使用有時(shí)會(huì)造成LabVIEW運(yùn)行崩潰,所以正確理解API函數(shù)的數(shù)據(jù)類型與LabVIEW的數(shù)據(jù)類型對(duì)程序正常運(yùn)行具有重要意義。表1所示為幾種常用的API函數(shù)數(shù)據(jù)類型與LabVIEW數(shù)據(jù)類型的對(duì)應(yīng)關(guān)系。
如果API函數(shù)中參數(shù)原型為指針類型,LabVIEW則有兩種傳遞方式。一種方式是選擇參數(shù)類型為“數(shù)組”,數(shù)組格式為“數(shù)組數(shù)據(jù)指針”。此種方式的輸入方式為數(shù)組,數(shù)組的長度可以根據(jù)其需要指定[3]。另一種方式是選擇參數(shù)類型為“數(shù)值”,傳遞方式為“指針”。此種方式不需要輸入任何參數(shù),只需要在調(diào)用API函數(shù)后通過一個(gè)數(shù)字拆分函數(shù)將測試過程中反饋回來的數(shù)據(jù)讀取。例如:讀取編碼器反饋的實(shí)際位置值函數(shù)(get_encoder),其語法為int get_encoder(int ch,long*en_pos),其中ch為軸號(hào),en_pos為一個(gè)指向?qū)嶋H位置的長整型指針。LabVIEW中函數(shù)選項(xiàng)卡設(shè)置如圖2所示,參數(shù)選項(xiàng)卡設(shè)置如圖3所示。
1.3 數(shù)據(jù)采集
步進(jìn)電機(jī)運(yùn)行特性測試程序開發(fā)的過程中除了正確調(diào)用運(yùn)動(dòng)控制卡函數(shù)外,編碼器反饋信號(hào)的采集也尤為重要。
程序在執(zhí)行過程中需不斷地讀取編碼器反饋值,并在電機(jī)停止后自動(dòng)地將測試值進(jìn)行處理并顯示出來。運(yùn)動(dòng)控制卡中g(shù)et_encoder函數(shù)專門用于讀取編碼器的反饋值,為了實(shí)現(xiàn)不斷讀取編碼器反饋值,則將get_encoder函數(shù)放入for循環(huán)結(jié)構(gòu)中。雖然控制卡中寄存器的更新速度為1/32 M,但for循環(huán)中的采集程序執(zhí)行速度遠(yuǎn)遠(yuǎn)低于1/32 M且速度未知,則考慮在for循環(huán)中加入定時(shí)結(jié)構(gòu)且定時(shí)時(shí)間必須大于程序執(zhí)行時(shí)間。經(jīng)多次試驗(yàn),假如系統(tǒng)以電機(jī)轉(zhuǎn)速0.01 r/s為最低轉(zhuǎn)速,則將定時(shí)時(shí)間設(shè)置為10 ms。又因?yàn)長abVIEW中for循環(huán)結(jié)構(gòu)的循環(huán)次數(shù)是固定的,為了實(shí)現(xiàn)電機(jī)停止后程序能自動(dòng)及時(shí)地將測試結(jié)果顯示出來,則根據(jù)采集到數(shù)據(jù)在for循環(huán)外做判斷以停止采集程序和處理結(jié)果并顯示。數(shù)據(jù)采集程序如圖4所示。
2 程序示例
本文以步進(jìn)電機(jī)任意加減速曲線測試為例,展示了LabVIEW調(diào)用運(yùn)動(dòng)控制卡函數(shù)控制步進(jìn)電機(jī)及采集編碼器反饋值的過程。程序流程圖如圖5所示。
程序在調(diào)用初始化函數(shù)init_board后默認(rèn)的將軸的最大速度設(shè)置為板卡允許的最大速度80 000 r/s。因?yàn)榭刂瓶ǖ妮敵雒}沖頻率=脈沖分辨率×倍率,所以為了獲得比較好的速度精度程序初始化之后應(yīng)先調(diào)用set_maxspeed函數(shù)來設(shè)置需要達(dá)到的最大輸出脈沖頻率,設(shè)置后脈沖分辨率將重新設(shè)置。程序在調(diào)用讀取軸反饋信息函數(shù)get_encoder前應(yīng)先調(diào)用set-getpos_mode函數(shù)和set_encoder_mode函數(shù)來設(shè)置編碼器反饋信號(hào)的模式及get_encoder函數(shù)獲取的位置值的來源。以步進(jìn)電機(jī)任意加減速曲線測試為例的程序后面板如圖6所示,前面板如圖7所示。
綜上所述,依托于LabVIEW函數(shù)庫調(diào)用技術(shù)以及運(yùn)動(dòng)控制卡可以實(shí)現(xiàn)步進(jìn)電機(jī)的運(yùn)動(dòng)控制及運(yùn)行特性的測試,系統(tǒng)人機(jī)交互界面良好,可準(zhǔn)確地對(duì)采集數(shù)據(jù)進(jìn)行計(jì)算處理、顯示及存儲(chǔ),且各項(xiàng)運(yùn)行參數(shù)方便可調(diào)。本文對(duì)步進(jìn)電機(jī)的運(yùn)動(dòng)控制及運(yùn)行特性測試系統(tǒng)而言,具有成本低、使用方便、操作簡單等特點(diǎn)。
參考文獻(xiàn)
[1] 蔡祖光,史鐵林.步進(jìn)電動(dòng)機(jī)矩頻特性測試方法研究[J].電子器件,2012(2):190-193.
[2] 楊樂平,李海濤.LabVIEW程序設(shè)計(jì)與應(yīng)用[M].北京:電子工業(yè)出版社,2005.
[3] 陳樹學(xué),劉萱.LabVIEW寶典[M].北京:電子工業(yè)出版社,2011.
[4] 周志明.基于運(yùn)動(dòng)控制卡的步進(jìn)電機(jī)控制系統(tǒng)[J].煤礦機(jī)械,2004(3):95-97.