摘 要:介紹了一種在LabVIEW平臺上使用普通運(yùn)動控制卡實(shí)現(xiàn)快速開發(fā)多軸運(yùn)動控制程序的方法沃缘。該方法首先應(yīng)用運(yùn)動普通控制卡提供的函數(shù)庫編譯成通用動態(tài)鏈接庫文件翰守,然后使用LabVIEW與外部代碼進(jìn)行連接的動態(tài)連接庫機(jī)制調(diào)用這個文件,實(shí)現(xiàn)實(shí)時的運(yùn)動控制话肖。實(shí)踐證明北秽,該方法不僅可以很好地發(fā)揮運(yùn)動控制卡的性能,而且可以借助LabVIEW強(qiáng)大的界面編輯功能狼牺,縮短程序開發(fā)周期羡儿,美化人機(jī)界面。
關(guān)鍵詞:LabVIEW;運(yùn)動控制卡;動態(tài)鏈接庫 一是钥、引言 LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是美國國家儀器公司(National Instruments)推出一種基于圖形語言的開發(fā)環(huán)境,編程非常方便渺因,人機(jī)交互界面直觀友好幅类,用戶可以創(chuàng)建獨(dú)立的可執(zhí)行文件,能夠脫離開發(fā)環(huán)境而單獨(dú)運(yùn)行妙裸,是目前最流行的虛擬儀器編程平臺姨桩,廣泛應(yīng)用于測試測量、過程控制睁去、實(shí)驗(yàn)室研究與自動化等方面戚促。 在運(yùn)動控制方面,LabVIEW有專門的運(yùn)動控制模塊殃宜,并且NI公司為其所有的運(yùn)動控制卡配備相應(yīng)的驅(qū)動程序睡誉,可以方便實(shí)現(xiàn)即插即用功能。如果用戶所使用的板卡不是NI公司的產(chǎn)品挟撑,又沒有提供與LabVIEW兼容的驅(qū)動程序伤很,就不能為LabVIEW所用。但是LabVIEW能夠通過調(diào)用Windows32動態(tài)連接庫(Dynamic Link Library嫩坷,簡稱DLL)來編寫與LabVIEW兼容的驅(qū)動程序肺樟,實(shí)現(xiàn)該運(yùn)動控制卡在LabVIEW環(huán)境下二次開發(fā),不僅可以大大降低成本、縮短開發(fā)周期么伯,而且可以使界面美觀疟暖。 二、應(yīng)用背景 筆者在參與某二自由度運(yùn)動平臺運(yùn)動仿真項(xiàng)目的研制過程中田柔,選用深圳眾為興數(shù)控技術(shù)有限公司生產(chǎn)的ADT850型四軸運(yùn)動控制卡俐巴,該型號的卡提供多種版本W(wǎng)indows下的驅(qū)動程序和在BorlandC++3.1、VB和VC等多種環(huán)境下開發(fā)所需的函數(shù)庫凯楔。雖然在這些編程環(huán)境中很容易實(shí)現(xiàn)所需的運(yùn)動控制窜骄,但是,如果要開發(fā)出一個美觀的人機(jī)交互界面摆屯,將會有很大一部分時間花在程序主界面的編寫上邻遏。為此,我們利用LabVIEW強(qiáng)大的界面編輯功能以及它能夠調(diào)用Windows32動態(tài)連接庫的特點(diǎn)虐骑,首先在VC編譯環(huán)境中編譯出運(yùn)動控制所需要的動態(tài)鏈接庫文件准验,然后在LabVIEW環(huán)境中編寫程序主界面,最后在LabVIEW框圖程序中調(diào)用動態(tài)鏈接庫文件來編寫所需的運(yùn)動控制程序疆虑。其主要過程如圖1所示躏叽。
圖1 DLL生成與LabVIEW調(diào)用 三、程序設(shè)計 LabVIEW具有強(qiáng)大的外部接口能力澄月,可用的外部接口包括:DDE淹佃、CIN、DLL脂惊、MATLAB Script以及HiQ Script等旁囤,其中DLL是其常用的外部接口。 3.1 動態(tài)鏈接庫(DLL)的編寫 DLL是基于Windows程序設(shè)計的一個非常重要的組成部分喝园。DLL的編制與具體的編程語言及編譯器無關(guān)缭越,只要遵守DLL的開發(fā)規(guī)范和編程策略,并安排正確的調(diào)用接口省瓜,不管用何種編程語言編制的DLL都具有通用性秋鹅,這就給我們編寫通用的DLL帶來了很大的方便。 針對LabVIEW調(diào)用DLL的特點(diǎn)和運(yùn)動控制的復(fù)雜性彤笼,我們所編寫的通用DLL中必須包含多個可供調(diào)用的函數(shù)析崎,這些函數(shù)都調(diào)用運(yùn)動控制函數(shù)庫中的一個或多個函數(shù),DLL中每個可供調(diào)用的函數(shù)都對應(yīng)著某一具體任務(wù)讼撒,稱其為功能函數(shù)浑厚。DLL中的功能函數(shù)主要有:板卡初始化函數(shù)、運(yùn)行條件初始化函數(shù)根盒、兩軸運(yùn)行狀態(tài)函數(shù)钳幅、兩軸位置函數(shù)物蝙、脈沖發(fā)送函數(shù)、兩軸伸長計算函數(shù)敢艰、停止運(yùn)行函數(shù)诬乞、歸零函數(shù)以及板卡結(jié)束運(yùn)行函數(shù)等,每個功能函數(shù)一般都有自己獨(dú)立的接口钠导。 功能函數(shù)確定以后震嫉,在Visual C++6.0編譯器中建立一個Win32 Dynamic-Link Library文件,添加上運(yùn)動控制卡隨帶的運(yùn)動控制函數(shù)庫文件后牡属,即可編譯成我們所需要的DLL文件票堵。 3.2 動態(tài)鏈接庫的調(diào)用 LabVIEW中動態(tài)鏈接庫的調(diào)用是通過CLF(Call Library Function)節(jié)點(diǎn)實(shí)現(xiàn)的,CLF節(jié)點(diǎn)位于LabVIEW功能模板中的Advanced子模板中逮栅。 在LabVIEW中調(diào)用DLL時悴势,則應(yīng)根據(jù)應(yīng)用程序的需要,確定參數(shù)個數(shù)和參數(shù)類型及調(diào)用規(guī)則安蔚,然后在LabVIEW中正確地配置DLL泞霹。首先從Advanced子模板中選擇Call Library Function Node圖標(biāo)并將其拖放到Diagram面板中適當(dāng)位置,然后右鍵單擊它眼栽,在彈出的菜單選項(xiàng)中選擇Configer…彈出Call Library Function對話框俱菜。在此對話框中,第一個參數(shù)Library Name or Path中填入需要調(diào)用的動態(tài)連接庫文件的文件名和路徑;第二個參數(shù)Function Name是連接庫中要調(diào)用的函數(shù)名稱;第三個參數(shù)Calling Conventions是對DLL的調(diào)用規(guī)則贸渐,可選擇C或stdcall恕琅,該項(xiàng)的選擇應(yīng)與用C++語言編寫的動態(tài)庫的編譯模式相一致。如果C++的調(diào)用方式為extern “C” declspec(dllexport)当盘,那么Calling Conventions的選項(xiàng)為“C”檩渐,如果調(diào)用方式為extern declspec(dllexport)stdcall,則Conventions的選項(xiàng)為默認(rèn)值“stdcall”业抵,否則發(fā)生不可預(yù)見的錯誤而退出程序。接下來的Parameter和Type分別是參數(shù)名稱和參數(shù)類型支读,表示函數(shù)返回類型厦碎。左擊Add a Parameter After按鈕,又多出了Data Type和Pass兩項(xiàng)扇雕,它們分別是數(shù)據(jù)類型轉(zhuǎn)換和參數(shù)傳遞方式拓售,這是配置所調(diào)用函數(shù)形參所必須的選項(xiàng)。 3.3 程序?qū)崿F(xiàn) 根據(jù)以上所編寫的功能函數(shù)配置好CLF節(jié)點(diǎn)的參數(shù)個數(shù)及其數(shù)據(jù)類型后镶奉,也就設(shè)置好了CLF節(jié)點(diǎn)的輸入輸出端口础淤。每一個功能函數(shù)對應(yīng)著相應(yīng)功能的CLF節(jié)點(diǎn),我們可是像使用其它函數(shù)節(jié)點(diǎn)一樣來應(yīng)用這些CLF節(jié)點(diǎn)哨苛。針對某型二自由度運(yùn)動平臺運(yùn)動控制的特殊性鸽凶,要求這兩個自由度完全獨(dú)立,互不相關(guān),這就不能采用多軸插補(bǔ)函數(shù)進(jìn)行脈沖輸出控制玻侥,只能是兩軸分別控制决摧。 整個LabVIEW框圖程序的結(jié)構(gòu)采用順序結(jié)構(gòu)(Sequence Structure),每一順序框都對應(yīng)某項(xiàng)固定的任務(wù)凑兰。圖2中三個順序框是整個框圖程序的前三框掌桩,從左到右其任務(wù)分別是板卡初始化、板卡驅(qū)動成功與否和相關(guān)參數(shù)的初始化及其顯示姑食,相關(guān)參數(shù)初始化順序框中采用While循環(huán)模式等待輸入波岛,只有當(dāng)參數(shù)設(shè)定完成并按下確定鍵后程序才能繼續(xù)往下運(yùn)行。
圖2 程序初始化階段框圖 圖3所示是緊接在圖2后面的順序框道竖,也是程序框圖的第四個順序框锅吝,這是整個框圖程序的主體部分。順序框中嵌入一個While循環(huán)钙瘫,While循環(huán)中又嵌入一個順序結(jié)構(gòu)阔垢,其前一框的作用是運(yùn)動模式選擇及運(yùn)動控制,這也是整個程序框圖的核心部分侯砸,后一框的作用是數(shù)據(jù)顯示部分挨奶。 運(yùn)動模式選擇包括自由度的選擇和自動與手動模式選擇。自由度選擇和運(yùn)行模式選擇均采用選擇結(jié)構(gòu)(Case Structure)俗衍,自由度的選擇結(jié)構(gòu)框內(nèi)又嵌入了運(yùn)行模式選擇結(jié)構(gòu)框粥萍,即每個自由度的運(yùn)動都有自動和手動兩種方式。選擇手動方式時簸隅,手動位移可以通過拖動前面板上的手動進(jìn)度條來確定犀挠,而選擇自動方式時,其運(yùn)行軌跡是一正弦曲線撰钥,這條曲線的形狀由所設(shè)定的幅度值燎字、頻率值和相角值來確定。另外阿宅,無論在哪一種模式下運(yùn)行候衍,都可以通過調(diào)節(jié)前面板上速度系數(shù)進(jìn)度條來調(diào)節(jié)兩軸各自的運(yùn)行速度。每個自由度的運(yùn)動控制部分都包括手動控制和自動控制兩部分洒放,且都可以按照一般編譯器中的邏輯關(guān)系和數(shù)據(jù)關(guān)系通過調(diào)用不同的CLF節(jié)點(diǎn)來實(shí)現(xiàn)蛉鹿。數(shù)據(jù)顯示部分主要是實(shí)時顯示兩自由度的值和對應(yīng)軸的伸長值。
圖3 程序核心部分框圖 圖4是整個框圖程序的最后三個順序框往湿,其中妖异,前一框的任務(wù)是得到停止指令后返回兩軸的當(dāng)前位置,并立即發(fā)出返回零點(diǎn)位置的指令;中間一框中嵌入了一個While循環(huán)领追,目的是循環(huán)檢測并顯示兩軸的運(yùn)行狀態(tài)以及當(dāng)前位置他膳,一旦檢測到所有軸已經(jīng)回到零點(diǎn)位置并已全部停止運(yùn)行响逢,就自動跳出While循環(huán),開始執(zhí)行最后一框程序矩乐,即執(zhí)行板卡結(jié)束運(yùn)行函數(shù)龄句。
圖4 程序結(jié)束階段框圖 圖5為程序的前面板,這是程序正常運(yùn)行時的主控界面也是唯一的界面恋猜。在這個界面上畦洞,可以進(jìn)行自由度的選擇、手動自動的選擇贰嚷、手動位移設(shè)定铡捉、自動運(yùn)行模式下的正弦軌跡曲線的設(shè)定、兩軸運(yùn)行速度的設(shè)定以及運(yùn)行控制泵位。另外劲徙,界面上的兩個Grphy圖還能實(shí)時顯示兩自由度變化曲線和兩軸運(yùn)行軌跡曲線,板卡驅(qū)動狀態(tài)和兩軸運(yùn)行狀態(tài)的正常與否以三個指示燈的形式顯示出來辙肿。
圖5 程序主界面 四秘挥、結(jié)束語 一般來講,很多運(yùn)動控制卡的二次開發(fā)多采用VC++诀甫、VB或C++ Builder等編譯軟件編寫功缤,有時編寫界面就占了程序編寫工作的很大一部分,不利于提高效率哪蒙。本文利用LabVIEW界面開發(fā)簡單以及LabVIEW可以調(diào)用動態(tài)鏈接庫等功能斜劳,實(shí)現(xiàn)了在LabVIEW平臺下快速開發(fā)普通運(yùn)動控制卡的運(yùn)動控制程序。這種方法不僅可以采用價格相對較低的普通運(yùn)動控制卡较幌,而且能避免繁瑣的界面編程揍瑟,縮短周期,提高效率乍炉,降低成本绢片。本文所引用的程序已在某二自由度運(yùn)動平臺控制系統(tǒng)上通過測試并已得到應(yīng)用,運(yùn)行平穩(wěn)岛琼、準(zhǔn)確杉畜。 本文作者創(chuàng)新點(diǎn):利用LabVIEW調(diào)用通用動態(tài)連接庫的功能,采用新的方法來對普通運(yùn)動控制卡進(jìn)行二次開發(fā)衷恭,這種新方法不僅可以縮短開發(fā)周期,而且可以降低成本纯续。 參考文獻(xiàn): [1> 燕廷随珠,馬增強(qiáng)等.基于LabVIEW數(shù)據(jù)采集與處理軟件編程技巧[J>.微計算機(jī)信息, 2005猬错,21-6:153-154 [2> 楊樂平窗看,李海濤等.LabVIEW高級程序設(shè)計[M>.北京:清華大學(xué)出版社茸歧,2003-08 [3> 李國厚.虛擬儀器技術(shù)及其開發(fā)與應(yīng)用[J>.自動化與儀表,2002浴祥,23-7:4-6 |
聲明:本網(wǎng)站所收集的部分公開資料來源于互聯(lián)網(wǎng)晶会,轉(zhuǎn)載的目的在于傳遞更多信息及用于網(wǎng)絡(luò)分享,并不代表本站贊同其觀點(diǎn)和對其真實(shí)性負(fù)責(zé)预蒜,也不構(gòu)成任何其他建議禀瓜。本站部分作品是由網(wǎng)友自主投稿和發(fā)布、編輯整理上傳论燎,對此類作品本站僅提供交流平臺丹仅,不為其版權(quán)負(fù)責(zé)。如果您發(fā)現(xiàn)網(wǎng)站上所用視頻褥甜、圖片贺壮、文字如涉及作品版權(quán)問題,請第一時間告知拯骤,我們將根據(jù)您提供的證明材料確認(rèn)版權(quán)并按國家標(biāo)準(zhǔn)支付稿酬或立即刪除內(nèi)容大愁,以保證您的權(quán)益!聯(lián)系電話:010-58612588 或 Email:editor@mmsonline.com.cn婚蛮。
- 暫無反饋
編輯推薦
- 2025新年特刊:打造新質(zhì)生產(chǎn)力,智啟未來新篇章
- 定義制造業(yè)未來的數(shù)控加工中心技術(shù)專題
- 航空航天及交通領(lǐng)域先進(jìn)制造技術(shù)應(yīng)用專題
- 解碼消費(fèi)電子產(chǎn)品生產(chǎn)的數(shù)字化之路技術(shù)專題
- 精密智能機(jī)床岖免,助力制造升級技術(shù)專題
- 汽車輕量化驅(qū)動下的零部件加工應(yīng)用專題
- 高性能銑刀實(shí)現(xiàn)高精加工生產(chǎn)技術(shù)專題
- 航空航天發(fā)動機(jī)解決方案專題
- 高效齒輪加工生產(chǎn)技術(shù)方案專題
- 金屬加工液的性能不止?jié)櫥夹g(shù)應(yīng)用專題