<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 測試測量 > 設(shè)計(jì)應(yīng)用 > 普通運(yùn)動(dòng)控制卡在LabVIEW平臺上的應(yīng)用

          普通運(yùn)動(dòng)控制卡在LabVIEW平臺上的應(yīng)用

          作者: 時(shí)間:2017-01-06 來源:網(wǎng)絡(luò) 收藏
          一、引言

            LabVIEW(LaboratoryVirtualInstrumentEngineeringWorkbench)是美國國家儀器公司(NationalInstruments)推出一種基于圖形語言的開發(fā)環(huán)境,編程非常方便,人機(jī)交互界面直觀友好,用戶可以創(chuàng)建獨(dú)立的可執(zhí)行文件,能夠脫離開發(fā)環(huán)境而單獨(dú)運(yùn)行,是目前最流行的虛擬儀器編程平臺,廣泛應(yīng)用于測試測量、過程控制、實(shí)驗(yàn)室研究與自動(dòng)化等方面。

          本文引用地址:http://www.ex-cimer.com/article/201701/336996.htm

            在運(yùn)動(dòng)控制方面,LabVIEW有專門的運(yùn)動(dòng)控制模塊,并且NI公司為其所有的運(yùn)動(dòng)控制卡配備相應(yīng)的驅(qū)動(dòng)程序,可以方便實(shí)現(xiàn)即插即用功能。如果用戶所使用的板卡不是NI公司的產(chǎn)品,又沒有提供與LabVIEW兼容的驅(qū)動(dòng)程序,就不能為LabVIEW所用。但是LabVIEW能夠通過調(diào)用Windows32動(dòng)態(tài)連接庫(DynamicLinkLibrary,簡稱DLL)來編寫與LabVIEW兼容的驅(qū)動(dòng)程序,實(shí)現(xiàn)該運(yùn)動(dòng)控制卡在LabVIEW環(huán)境下二次開發(fā),不僅可以大大降低成本、縮短開發(fā)周期,而且可以使界面美觀。

          二、應(yīng)用背景

            筆者在參與某二自由度運(yùn)動(dòng)平臺運(yùn)動(dòng)仿真項(xiàng)目的研制過程中,選用深圳眾為興數(shù)控技術(shù)有限公司生產(chǎn)的ADT850型四軸運(yùn)動(dòng)控制卡,該型號的卡提供多種版本W(wǎng)indows下的驅(qū)動(dòng)程序和在BorlandC++3.1、VB和VC等多種環(huán)境下開發(fā)所需的函數(shù)庫。雖然在這些編程環(huán)境中很容易實(shí)現(xiàn)所需的運(yùn)動(dòng)控制,但是,如果要開發(fā)出一個(gè)美觀的人機(jī)交互界面,將會(huì)有很大一部分時(shí)間花在程序主界面的編寫上。為此,我們利用LabVIEW強(qiáng)大的界面編輯功能以及它能夠調(diào)用Windows32動(dòng)態(tài)連接庫的特點(diǎn),首先在VC編譯環(huán)境中編譯出運(yùn)動(dòng)控制所需要的動(dòng)態(tài)鏈接庫文件,然后在LabVIEW環(huán)境中編寫程序主界面,最后在LabVIEW框圖程序中調(diào)用動(dòng)態(tài)鏈接庫文件來編寫所需的運(yùn)動(dòng)控制程序。其主要過程如圖1所示。


          圖1DLL生成與LabVIEW調(diào)用

          三、程序設(shè)計(jì)

            LabVIEW具有強(qiáng)大的外部接口能力,可用的外部接口包括:DDE、CIN、DLL、MATLABScript以及HiQScript等,其中DLL是其常用的外部接口。

            3.1動(dòng)態(tài)鏈接庫(DLL)的編寫

            DLL是基于Windows程序設(shè)計(jì)的一個(gè)非常重要的組成部分。DLL的編制與具體的編程語言及編譯器無關(guān),只要遵守DLL的開發(fā)規(guī)范和編程策略,并安排正確的調(diào)用接口,不管用何種編程語言編制的DLL都具有通用性,這就給我們編寫通用的DLL帶來了很大的方便。

            針對LabVIEW調(diào)用DLL的特點(diǎn)和運(yùn)動(dòng)控制的復(fù)雜性,我們所編寫的通用DLL中必須包含多個(gè)可供調(diào)用的函數(shù),這些函數(shù)都調(diào)用運(yùn)動(dòng)控制函數(shù)庫中的一個(gè)或多個(gè)函數(shù),DLL中每個(gè)可供調(diào)用的函數(shù)都對應(yīng)著某一具體任務(wù),稱其為功能函數(shù)。DLL中的功能函數(shù)主要有:板卡初始化函數(shù)、運(yùn)行條件初始化函數(shù)、兩軸運(yùn)行狀態(tài)函數(shù)、兩軸位置函數(shù)、脈沖發(fā)送函數(shù)、兩軸伸長計(jì)算函數(shù)、停止運(yùn)行函數(shù)、歸零函數(shù)以及板卡結(jié)束運(yùn)行函數(shù)等,每個(gè)功能函數(shù)一般都有自己獨(dú)立的接口。

            功能函數(shù)確定以后,在VisualC++6.0編譯器中建立一個(gè)Win32Dynamic-LinkLibrary文件,添加上運(yùn)動(dòng)控制卡隨帶的運(yùn)動(dòng)控制函數(shù)庫文件后,即可編譯成我們所需要的DLL文件。

            3.2動(dòng)態(tài)鏈接庫的調(diào)用

            LabVIEW中動(dòng)態(tài)鏈接庫的調(diào)用是通過CLF(CallLibraryFunction)節(jié)點(diǎn)實(shí)現(xiàn)的,CLF節(jié)點(diǎn)位于LabVIEW功能模板中的Advanced子模板中。

            在LabVIEW中調(diào)用DLL時(shí),則應(yīng)根據(jù)應(yīng)用程序的需要,確定參數(shù)個(gè)數(shù)和參數(shù)類型及調(diào)用規(guī)則,然后在LabVIEW中正確地配置DLL。首先從Advanced子模板中選擇CallLibraryFunctionNode圖標(biāo)并將其拖放到Diagram面板中適當(dāng)位置,然后右鍵單擊它,在彈出的菜單選項(xiàng)中選擇Configer…彈出CallLibraryFunction對話框。在此對話框中,第一個(gè)參數(shù)LibraryNameorPath中填入需要調(diào)用的動(dòng)態(tài)連接庫文件的文件名和路徑;第二個(gè)參數(shù)FunctionName是連接庫中要調(diào)用的函數(shù)名稱;第三個(gè)參數(shù)CallingConventions是對DLL的調(diào)用規(guī)則,可選擇C或stdcall,該項(xiàng)的選擇應(yīng)與用C++語言編寫的動(dòng)態(tài)庫的編譯模式相一致。如果C++的調(diào)用方式為extern“C”declspec(dllexport),那么CallingConventions的選項(xiàng)為“C”,如果調(diào)用方式為externdeclspec(dllexport)stdcall,則Conventions的選項(xiàng)為默認(rèn)值“stdcall”,否則發(fā)生不可預(yù)見的錯(cuò)誤而退出程序。接下來的Parameter和Type分別是參數(shù)名稱和參數(shù)類型,表示函數(shù)返回類型。左擊AddaParameterAfter按鈕,又多出了DataType和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ù)個(gè)數(shù)及其數(shù)據(jù)類型后,也就設(shè)置好了CLF節(jié)點(diǎn)的輸入輸出端口。每一個(gè)功能函數(shù)對應(yīng)著相應(yīng)功能的CLF節(jié)點(diǎn),我們可是像使用其它函數(shù)節(jié)點(diǎn)一樣來應(yīng)用這些CLF節(jié)點(diǎn)。針對某型二自由度運(yùn)動(dòng)平臺運(yùn)動(dòng)控制的特殊性,要求這兩個(gè)自由度完全獨(dú)立,互不相關(guān),這就不能采用多軸插補(bǔ)函數(shù)進(jìn)行脈沖輸出控制,只能是兩軸分別控制。

            整個(gè)LabVIEW框圖程序的結(jié)構(gòu)采用順序結(jié)構(gòu)(SequenceStructure),每一順序框都對應(yīng)某項(xiàng)固定的任務(wù)。圖2中三個(gè)順序框是整個(gè)框圖程序的前三框,從左到右其任務(wù)分別是板卡初始化、板卡驅(qū)動(dòng)成功與否和相關(guān)參數(shù)的初始化及其顯示,相關(guān)參數(shù)初始化順序框中采用While循環(huán)模式等待輸入,只有當(dāng)參數(shù)設(shè)定完成并按下確定鍵后程序才能繼續(xù)往下運(yùn)行。


          圖2程序初始化階段框圖


          上一頁 1 2 下一頁

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();