李冬冬 吳思遠(yuǎn) 王浩全 唐志鴻
(華南理工大學(xué)廣州學(xué)院,廣東 廣州 510800)
隨著計(jì)算機(jī)技術(shù)、大規(guī)模集成電路技術(shù)和通信技術(shù)的不斷發(fā)展,電子測(cè)量技術(shù)領(lǐng)域發(fā)生了巨大的變化;各式各樣的軟件進(jìn)入我們的視野,讓人目不暇接,繪圖軟件便是其中一種。常用的繪圖軟件有很多,例如Photoshop、Adobe image、Auto CAD等,它們功能齊全,能夠繪制各類圖形。但是想要輸出圖像的話,則一般需要用到打印機(jī),如此一來(lái),成本便會(huì)上升,而且也會(huì)有所不便。虛擬儀器系統(tǒng)概念是對(duì)傳統(tǒng)儀器概念的重大突破,是計(jì)算機(jī)系統(tǒng)與儀器系統(tǒng)技術(shù)相結(jié)合的產(chǎn)物。它利用計(jì)算機(jī)系統(tǒng)的強(qiáng)大功能,結(jié)合相應(yīng)的硬件,大大突破傳統(tǒng)儀器在數(shù)據(jù)處理、顯示、傳送、處理等方面的限制,使用戶可以方便地對(duì)其進(jìn)行維護(hù)、拓展、升級(jí)等,其中Lab-VIEW就廣為儀器使用者稱道,本系統(tǒng)就是基于Lab VIEW的繪圖軟件,具有各種繪制所需的基本功能,因?yàn)槠鋸?qiáng)大的拓展性,Lab VIEW能夠非常方便地與單片機(jī)、Arduino等成本低廉的控制芯片相連接,使得我們能夠輕松集成現(xiàn)有的測(cè)量設(shè)備,最終以較少的成本加速產(chǎn)品上市的時(shí)間。本系統(tǒng)應(yīng)用于咖啡拉花環(huán)節(jié),可以根據(jù)客戶選定的圖案進(jìn)行加工,把客戶選定的圖案在咖啡表面上還原出來(lái)。
系統(tǒng)使用Lab VIEW開(kāi)發(fā),用戶可以在繪圖界面畫(huà)出自己想要的圖案。該圖案經(jīng)過(guò)程序轉(zhuǎn)化后發(fā)送給下位機(jī),例如拉花機(jī)構(gòu),由下位機(jī)將圖案繪制出來(lái)。系統(tǒng)流程圖如圖1所示。
圖1 系統(tǒng)流程圖
本系統(tǒng)的使用界面簡(jiǎn)潔友好,設(shè)有繪圖區(qū)、畫(huà)筆屬性選項(xiàng)菜單欄、圖形選項(xiàng)操作菜單欄和修改按鈕。
圖形選項(xiàng)菜單欄里可以選擇一些常用圖形,用于輔助作圖,例如,直線、矩形和圓等。用戶可以根據(jù)自己的需要,選擇好相對(duì)應(yīng)的屬性后即可開(kāi)始作圖,整個(gè)過(guò)程簡(jiǎn)單易懂。
整個(gè)程序主要由三部分組成:圖像初始化部分、圖像繪制部分以及路線存儲(chǔ)部分。
圖像初始化主要用于清空VI(Virtual Instrument,虛擬儀器)之前運(yùn)行留下來(lái)的圖像,通過(guò)順序結(jié)構(gòu)使程序在運(yùn)行時(shí)首先執(zhí)行初始化操作,對(duì)圖像的各項(xiàng)相關(guān)值賦予初始值,因此,當(dāng)系統(tǒng)開(kāi)始運(yùn)行的時(shí)候,繪圖區(qū)域會(huì)把上一次的圖像清空,方便進(jìn)行下一次圖像的繪制[1],程序如圖2所示。
圖2 圖像初始化程序
圖像繪制程序的核心結(jié)構(gòu)是事件結(jié)構(gòu)。我們將繪圖時(shí)會(huì)出現(xiàn)的情況分為8種,即8個(gè)事件,分別是鼠標(biāo)按下、鼠標(biāo)移動(dòng)、鼠標(biāo)釋放、鼠標(biāo)離開(kāi)、鼠標(biāo)進(jìn)入、“操作”按鈕的狀態(tài)改變、“清除”按鈕的狀態(tài)改變、“停止”按鈕的狀態(tài)改變[2]。
我們將不同功能的子程序放入到相對(duì)應(yīng)的事件當(dāng)中,當(dāng)程序開(kāi)始運(yùn)行時(shí),前面板時(shí)刻監(jiān)控著鼠標(biāo)的位置和機(jī)械動(dòng)作,以及界面上菜單欄和按鈕的狀態(tài)。根據(jù)鼠標(biāo)的機(jī)械動(dòng)作和按鈕的狀態(tài)變化進(jìn)入到對(duì)應(yīng)的事件當(dāng)中,從而執(zhí)行事件中的子程序。
設(shè)置光標(biāo)VI:更改前面板中的光標(biāo)外觀。通過(guò)連線數(shù)據(jù)至圖標(biāo)輸入端可確定要使用的多態(tài)實(shí)例,也可以手動(dòng)選擇實(shí)例。
當(dāng)鼠標(biāo)在繪圖區(qū)域按下時(shí),觸發(fā)“鼠標(biāo)按下”事件,根據(jù)“操作”菜單欄里的選項(xiàng)進(jìn)入到相應(yīng)的事件,例如通過(guò)繪制點(diǎn)函數(shù),當(dāng)繪制點(diǎn)和線的時(shí)候,鼠標(biāo)畫(huà)下第一點(diǎn),程序首先會(huì)記錄鼠標(biāo)在繪圖區(qū)域的坐標(biāo)位置,接著根據(jù)該坐標(biāo)記錄圖畫(huà)的第一點(diǎn)的坐標(biāo),并把坐標(biāo)提取出來(lái)存放在數(shù)組,以提供后續(xù)路線規(guī)劃所需參數(shù)[3],程序如圖3所示。
圖3 鼠標(biāo)按下事件
當(dāng)鼠標(biāo)保持按下動(dòng)作在繪圖區(qū)域移動(dòng)時(shí),觸發(fā)“鼠標(biāo)移動(dòng)”事件,根據(jù)“操作”菜單欄里的選項(xiàng)進(jìn)入到相應(yīng)的事件,例如通過(guò)繪制多條直線函數(shù),畫(huà)出多條直線,圖像會(huì)記錄鼠標(biāo)的移動(dòng)軌跡,并將它反映在畫(huà)面上,程序如圖4所示。
圖4 鼠標(biāo)移動(dòng)事件
當(dāng)鼠標(biāo)釋放時(shí),標(biāo)志著這一筆結(jié)束,觸發(fā)“鼠標(biāo)釋放”事件,記錄圖畫(huà)最后一點(diǎn)。最后,當(dāng)鼠標(biāo)離開(kāi)繪圖區(qū)域時(shí),觸發(fā)“鼠標(biāo)離開(kāi)”事件,光標(biāo)形態(tài)回復(fù)正常[4]。
使用者每畫(huà)一筆,這些程序都將依次執(zhí)行一次,如此循環(huán),從而可以繪出一幅完整的圖。
為了能讓下位機(jī)能夠?qū)⒗L圖區(qū)的圖案還原到現(xiàn)實(shí)世界當(dāng)中,我們需要將圖案坐標(biāo)存儲(chǔ)起來(lái),并加以規(guī)劃。
路線存儲(chǔ)程序主要用到移位寄存器和數(shù)組,移位寄存器用于將上一次循環(huán)的值傳遞至下一次循環(huán),而數(shù)組則是用于順序存儲(chǔ)圖案坐標(biāo),整個(gè)存儲(chǔ)程序穿插在圖像繪制程序。
使用者在進(jìn)行畫(huà)圖的同時(shí),路線儲(chǔ)存部分的程序也在進(jìn)行,通過(guò)移位寄存器,將圖像每一筆的坐標(biāo)按照使用者的繪畫(huà)順序儲(chǔ)存到數(shù)組里,再將這些數(shù)組進(jìn)行一系列算法處理,從而達(dá)到路線規(guī)劃的目的。使用者每新畫(huà)一筆時(shí),程序會(huì)添加一個(gè)特殊數(shù)字進(jìn)入到數(shù)組里,用來(lái)達(dá)到區(qū)分?jǐn)帱c(diǎn)的目的。例如,下位機(jī)識(shí)別到該數(shù)字時(shí),可得知這一筆已經(jīng)結(jié)束,需要另起一筆。同時(shí),系統(tǒng)中的“清除”功能也是根據(jù)它來(lái)實(shí)現(xiàn),使用者在使用“清除”功能時(shí),通過(guò)搜索一維數(shù)組函數(shù),程序會(huì)識(shí)別該特殊數(shù)字,通過(guò)刪除數(shù)組元素函數(shù),清除掉使用者不需要的上一筆,從而達(dá)到修改圖畫(huà)的作用,如圖5所示。
圖5 清除程序
經(jīng)過(guò)路線存儲(chǔ)程序,將我們所需要的圖像坐標(biāo)以數(shù)組的形式,按順序打包好發(fā)送至下位機(jī),下位機(jī)直接對(duì)該數(shù)組進(jìn)行運(yùn)動(dòng)算法處理得到運(yùn)動(dòng)參數(shù)。獲取到所需的相關(guān)參數(shù)后,我們以NI公司開(kāi)發(fā)的myRIO作為控制器來(lái)進(jìn)行坐標(biāo)轉(zhuǎn)化[5]。
myRIO作為NI“口袋實(shí)驗(yàn)室”系列針對(duì)嵌入式控制學(xué)習(xí)及應(yīng)用的設(shè)備,成本低廉、小巧便攜、可以隨時(shí)隨地開(kāi)展學(xué)習(xí)和工程創(chuàng)新實(shí)踐。myRIO包含模擬輸入、模擬輸出、數(shù)字I/O線、板載加速度計(jì)、Xilinx FPGA以及雙核ARM Cortex-A9處理器,一些型號(hào)還支持WIFI功能。
我們的運(yùn)動(dòng)控制平臺(tái)是一個(gè)三軸平臺(tái),步進(jìn)電機(jī)通過(guò)聯(lián)軸器帶動(dòng)絲桿旋轉(zhuǎn),絲桿上的滑塊通過(guò)絲杠螺母機(jī)構(gòu),將電機(jī)的旋轉(zhuǎn)運(yùn)動(dòng)轉(zhuǎn)化為絲桿的直線運(yùn)動(dòng)。
為了能夠準(zhǔn)確地控制步進(jìn)電機(jī)的步數(shù),使它能夠按照要求的軌跡運(yùn)動(dòng),我們采用for循環(huán)結(jié)構(gòu)。通過(guò)改變循環(huán)次數(shù)可以達(dá)到控制電機(jī)脈沖數(shù)量從而控制運(yùn)動(dòng)距離的目的,再通過(guò)絲杠螺母機(jī)構(gòu),將步進(jìn)電機(jī)的旋轉(zhuǎn)運(yùn)動(dòng)轉(zhuǎn)化為直線運(yùn)動(dòng),由此可準(zhǔn)確控制滑塊的移動(dòng)距離,滿足運(yùn)動(dòng)轉(zhuǎn)化的需要[6]。
我們知道,電機(jī)運(yùn)轉(zhuǎn)的速度較慢時(shí),它的受控性較好,所達(dá)到的精度也相對(duì)較高。反之,電機(jī)的速度較高時(shí),根據(jù)電機(jī)本身的質(zhì)量,受控性及精度下降的程度將有所不同。為了能夠?qū)崿F(xiàn)精細(xì)作圖和快速作圖,我們通過(guò)改變循環(huán)時(shí)間,即for循環(huán)一次所需要的時(shí)間,來(lái)控制電機(jī)的運(yùn)轉(zhuǎn)速度,從而達(dá)到精細(xì)作圖和快速作圖的目的,如圖6所示。
圖6 for循環(huán)控制電機(jī)脈沖數(shù)量
以畫(huà)自由直線的算法為例,通過(guò)圖像坐標(biāo)轉(zhuǎn)換來(lái)進(jìn)行實(shí)際路線的運(yùn)動(dòng)控制,我們采用了微積分的思想,先將一段自由的線段細(xì)分為無(wú)數(shù)段微小的直線,再將這些單位直線進(jìn)行積分運(yùn)算,便能將這段自由直線還原出來(lái)。
我們所得到的像素坐標(biāo)數(shù)組由x和y組成,我們先使用索引數(shù)組控件,把打包好的數(shù)組拆分為由x坐標(biāo)和y坐標(biāo)單獨(dú)組成的兩組數(shù)組。
將兩個(gè)數(shù)組內(nèi)的所有元素每?jī)蓚€(gè)前后相減,所得到的結(jié)果便是控制x軸的電機(jī)和控制y軸的電機(jī)分別需要行進(jìn)的單位距離,通過(guò)控制xy軸的電機(jī)的同步運(yùn)動(dòng),三軸平臺(tái)便能按照指定的自由線段的軌跡運(yùn)動(dòng)。
由此可知,距離是程序的變量,但是在步進(jìn)電機(jī)程序中,我們是通過(guò)改變循環(huán)次數(shù)和循環(huán)時(shí)間來(lái)控制電機(jī)的脈沖數(shù)量從而控制運(yùn)動(dòng)的距離,所以我們還需要增加時(shí)間變量。在此,我們使用了公式節(jié)點(diǎn)函數(shù)來(lái)實(shí)現(xiàn)增加時(shí)間變量的要求。
由簡(jiǎn)單的距離公式S=V*t可知距離、速度和時(shí)間三者之間的關(guān)系,我們通過(guò)輸入時(shí)間變量,經(jīng)過(guò)算法轉(zhuǎn)化為速度輸出給步進(jìn)電機(jī),同時(shí)還將上位機(jī)的圖像比例與實(shí)際繪圖比例相匹配。
當(dāng)自由線段的形態(tài)呈弧形時(shí),通過(guò)改變電機(jī)的轉(zhuǎn)向及轉(zhuǎn)速來(lái)控制弧度的大小,最后將xy軸坐標(biāo)拆分模塊、步進(jìn)電機(jī)控制模塊和運(yùn)動(dòng)算法模塊相結(jié)合,便能實(shí)現(xiàn)圖像坐標(biāo)到實(shí)際運(yùn)動(dòng)坐標(biāo)的轉(zhuǎn)化。
基于Lab VIEW的圖像繪制系統(tǒng)基本功能齊全,操作界面簡(jiǎn)潔明了,而且因?yàn)長(zhǎng)ab VIEW其強(qiáng)大的拓展性,使得Lab-VIEW易于與各種下位機(jī)模塊相連接,能夠快速且方便地對(duì)一些實(shí)驗(yàn)平臺(tái)進(jìn)行檢測(cè),這不管對(duì)一些專業(yè)教學(xué)還是一些面向?qū)W生實(shí)驗(yàn)平臺(tái)的操作都有一定的實(shí)用價(jià)值。
[1]陳樹(shù)學(xué).Lab VIEW寶典[M].北京:電子工業(yè)出版社,2011.
[2]阮奇楨.我和Lab VIEW[M].北京:北京航空航天大學(xué)出版社,2012
[3]劉君華.基于Lab VIEW的虛擬儀器的設(shè)計(jì)[M].北京:電子工業(yè)出版社,2003.
[4]鄧振杰,齊建玲.基于Lab VIEW構(gòu)建虛擬儀器系統(tǒng)[J].華北航天工業(yè)學(xué)院學(xué)報(bào),2001,11(3):14-21.
[5]劉君華.虛擬儀器圖形化編程語(yǔ)言Lab VIEW教程[M].西安:電子科技大學(xué)出版社,2000.
[6]戴鵬飛,王勝開(kāi).測(cè)試工程與Lab VIEW應(yīng)用[M].北京:電子工業(yè)出版社,2006.