孫 勇
(北京理工大學(xué)機(jī)電學(xué)院智能機(jī)器人研究所,北京100081)
本系統(tǒng)硬件設(shè)計(jì)工作包括基于NI-ELVIS工作平臺(tái)上的開(kāi)關(guān)電路如何設(shè)計(jì)實(shí)現(xiàn)電路的通斷進(jìn)而控制步進(jìn)電機(jī)驅(qū)動(dòng)器工作與否,步進(jìn)電機(jī)驅(qū)動(dòng)器與開(kāi)關(guān)電路、所需電信號(hào)的連接設(shè)計(jì);軟件系統(tǒng)設(shè)計(jì)包括前面版設(shè)計(jì)和程序框圖設(shè)計(jì),程序框圖設(shè)計(jì)又分為手動(dòng)控制程序框圖設(shè)計(jì)和自動(dòng)控制程序框圖設(shè)計(jì)兩部分。編程工作通過(guò)軟件LabVIEW來(lái)完成。
硬件設(shè)計(jì)大體分為控制和驅(qū)動(dòng)兩部分。控制部分就是開(kāi)關(guān)電路,由于需要控制機(jī)械手四自由度的運(yùn)動(dòng),所以要搭建4路相同的開(kāi)關(guān)電路;驅(qū)動(dòng)部分就是通過(guò)步進(jìn)電機(jī)驅(qū)動(dòng)器來(lái)驅(qū)動(dòng)步進(jìn)電機(jī)的轉(zhuǎn)動(dòng)。
由于本次課題是機(jī)械手的虛擬儀器控制系統(tǒng)設(shè)計(jì),所以這里搭建的電路并不是獨(dú)立控制機(jī)械手的運(yùn)動(dòng),而是要配合PC機(jī)內(nèi)的LabVIEW軟件程序?qū)崿F(xiàn)控制功能。NI-ELVIS工作平臺(tái)是一個(gè)很好的“橋梁”,可以完美地實(shí)現(xiàn)電路與PC機(jī)的數(shù)據(jù)交互,再配合功能強(qiáng)大的PCI-6251數(shù)據(jù)采集卡就可以運(yùn)行軟件程序通過(guò)NI-ELVIS工作平臺(tái)上的端口讀入與寫(xiě)出需要的電信號(hào)供給電路使用。由于電路中需要多種直流電源,所以還要外接一個(gè)電源箱以供應(yīng)電壓需求。
開(kāi)關(guān)電路是基于NI-ELVIS工作平臺(tái)上的面包板搭建而成的,主要由電磁式電壓繼電器、三極管以及若干電阻構(gòu)成。電磁式電壓繼電器根據(jù)電壓的大小而做出動(dòng)作。
本次設(shè)計(jì)共有四路開(kāi)關(guān)電路,分別控制機(jī)械手3個(gè)步進(jìn)電機(jī)工作與否以及夾持端的動(dòng)作,毎個(gè)開(kāi)關(guān)電路均由5V繼電器,s8050三極管以及50Ω、1.5kΩ的電阻構(gòu)成。將高低電平輸出端即NI-ELVIS工作平臺(tái)上的DO口通過(guò)1.5kΩ的限流電阻接入三極管的基極,然后由ELVIS平臺(tái)提供的直流5V作為VCC通過(guò)50Ω電阻接在三極管的集電極,發(fā)射極接地,再將三極管集電極接入繼電器的電壓輸入端。最后將工作平臺(tái)上的脈沖序列發(fā)生端口即counter_0接入繼電器常閉端的一個(gè)管腳,另一管腳接入步進(jìn)電機(jī)驅(qū)動(dòng)器的脈沖輸入端。這樣當(dāng)DO端口為低電平時(shí)三極管截止,原電路等效為VCC為5V的50Ω電阻與繼電器串聯(lián)分壓電路,由于繼電器負(fù)載為120Ω,所以繼電器分得電壓為U=5V×12/17=3.5V,達(dá)到繼電器吸合電壓,繼電器常開(kāi)端閉合,常閉端斷開(kāi)。當(dāng)輸入端為高電平時(shí)三極管導(dǎo)通,繼電器被短路,分得電壓為0,小于繼電器釋放電壓,所以常開(kāi)端斷開(kāi),常閉端導(dǎo)通,實(shí)現(xiàn)了開(kāi)關(guān)功能。通過(guò)控制脈沖序列的通斷控制步進(jìn)電機(jī)驅(qū)動(dòng)器的工作與否,進(jìn)而控制機(jī)械手上的步進(jìn)電機(jī)。開(kāi)關(guān)電路原理圖如圖1所示。
機(jī)械手的夾持端需提供一個(gè)24V的電壓才可以通過(guò)電壓的通斷控制其動(dòng)作,當(dāng)繼電器配以三極管的開(kāi)關(guān)電路導(dǎo)通時(shí)夾持端夾緊,當(dāng)開(kāi)關(guān)電路斷開(kāi)時(shí)夾持端釋放。
主程序流程圖如圖2所示。
總體設(shè)計(jì)控制系統(tǒng)分為自動(dòng)控制系統(tǒng)和手動(dòng)控制系統(tǒng),用case結(jié)構(gòu)實(shí)現(xiàn)。程序設(shè)計(jì)中除了使用case結(jié)構(gòu)、while循環(huán)以及其他基本的邏輯程序語(yǔ)言外還利用了DAQmx數(shù)據(jù)采集工具包和NIELVES工具包中的子VI進(jìn)行程序的編寫(xiě)。
前面板和框圖一樣都是由圖形對(duì)象組成,這些圖形對(duì)象就是G語(yǔ)言的元素。前面板包含了各種類(lèi)型的控件和指示器(即輸入和輸出)。前面板也就是操作界面,操作人員可通過(guò)在操作界面控制控件的輸入控制機(jī)械手的動(dòng)作,還可以通過(guò)前面板的狀態(tài)指示燈看出機(jī)械手的運(yùn)動(dòng)狀態(tài)。
在前面板放置一個(gè)水平搖桿布爾控件,布爾控件的功能是輸出邏輯真或假。水平搖桿控件用以操作人員切換是進(jìn)入自動(dòng)控制系統(tǒng)還是手動(dòng)控制系統(tǒng)。
操作界面的左半部分設(shè)定為手動(dòng)控制區(qū),在手動(dòng)控制區(qū)內(nèi)放置7個(gè)指示燈布爾控件。不經(jīng)過(guò)修改的指示燈控件是一種顯示控件,但是可以在框圖上將其轉(zhuǎn)化成輸入控件并改變其機(jī)械動(dòng)作為保持轉(zhuǎn)換直到釋放,實(shí)現(xiàn)的效果相當(dāng)于按下按鈕時(shí)輸出“真”,當(dāng)停止下按時(shí)控件自動(dòng)彈起輸出“假”。這7個(gè)布爾控件就相當(dāng)于按鈕,操作人員通過(guò)這些按鈕控制機(jī)械手的四自由度運(yùn)動(dòng)。分別控制機(jī)械手順時(shí)針或逆時(shí)針轉(zhuǎn)動(dòng)、上下移動(dòng)、左右移動(dòng)以及抓取這7個(gè)機(jī)械動(dòng)作。
操作界面的右半部分設(shè)定為自動(dòng)控制區(qū),在自動(dòng)控制區(qū)內(nèi)放置6個(gè)數(shù)值輸入控件,其中3個(gè)代表目標(biāo)零件的位置坐標(biāo),另3個(gè)數(shù)值輸入控件用以輸入終點(diǎn)坐標(biāo),即機(jī)械手需要將零件物體移到的終點(diǎn)位置坐標(biāo)。本次設(shè)計(jì)中對(duì)空間建立的坐標(biāo)系為柱面坐標(biāo)系,由軟件編程確定機(jī)械手的固定位置為原點(diǎn),那么空間內(nèi)任意一點(diǎn)就可通過(guò)角度、徑長(zhǎng)和高度這3個(gè)量唯一確定其坐標(biāo)。在6個(gè)坐標(biāo)輸入控件下端放置一個(gè)普通按鈕控件,其機(jī)械動(dòng)作設(shè)定為釋放時(shí)觸發(fā)。此按鈕的作用是檢測(cè)所輸入的6個(gè)位置坐標(biāo)是否超出機(jī)械手工作范圍,當(dāng)超出時(shí)會(huì)有對(duì)話框彈出提示重新輸入數(shù)據(jù),這樣機(jī)械手就不會(huì)盲目執(zhí)行命令,提高了效率避免不必要的工作。
在自動(dòng)區(qū)和主動(dòng)區(qū)之間還放置了2組指示燈,分別用以指示自動(dòng)或手動(dòng)控制下機(jī)械手的位置狀態(tài),當(dāng)機(jī)械手處于極限位置時(shí)就會(huì)觸碰限位開(kāi)關(guān),由限位開(kāi)關(guān)電路會(huì)輸出一個(gè)高電平,這時(shí)對(duì)應(yīng)的指示燈會(huì)亮以提示操作人員機(jī)械手到達(dá)極限位置。前面板布局如圖3所示。
圖1 開(kāi)關(guān)電路原理圖
圖2 主程序框圖
圖3 前面板布局
首先介紹程序框圖中手動(dòng)控制和自動(dòng)控制都用到的程序,由于采用步進(jìn)電機(jī)驅(qū)動(dòng)器來(lái)驅(qū)動(dòng)機(jī)械手上的步進(jìn)電機(jī)工作,所以需要產(chǎn)生頻率為3 000Hz到5 000Hz的脈沖序列信號(hào),通過(guò)DAQmx實(shí)現(xiàn)程序框圖編寫(xiě)如圖4所示;通過(guò)NI-ELVIS工具包可以實(shí)現(xiàn)8位數(shù)字高低電平的輸出,高電平為5V低電平為0,其中4路高低電平配合三極管和繼電器組成的開(kāi)關(guān)電路形成開(kāi)關(guān)控制,1路高低電平連接驅(qū)動(dòng)器方向辯向端控制步進(jìn)電機(jī)方向,連續(xù)高低電平輸出程序框圖如圖5所示。
2.2.1 手動(dòng)控制程序框圖設(shè)計(jì)
手動(dòng)控制程序的設(shè)計(jì)主要通過(guò)case結(jié)構(gòu)實(shí)現(xiàn)。在前面板(用戶操作界面)放置7個(gè)布爾按鈕控件,布爾控件的功能是可以通過(guò)機(jī)械動(dòng)作按下或彈起決定輸出1個(gè)1位二進(jìn)制數(shù)1或0,再將7個(gè)控件建立成數(shù)組,即控件輸出的是一個(gè)7位二進(jìn)制數(shù),那么最多可產(chǎn)生128種情況,即有128種控件輸出,再將7位二進(jìn)制數(shù)轉(zhuǎn)化為十進(jìn)制數(shù)作為case結(jié)構(gòu)的輸入。當(dāng)脈沖信號(hào)序列供給一個(gè)步進(jìn)電機(jī)驅(qū)動(dòng)器時(shí),由于負(fù)載原因脈沖高電平會(huì)被拉低,所以同一時(shí)間脈沖信號(hào)只能供給一個(gè)步進(jìn)電機(jī)驅(qū)動(dòng)器,進(jìn)而同一時(shí)間只有一個(gè)步進(jìn)電機(jī)在工作,那么機(jī)械手所有的運(yùn)動(dòng)情況就有14種,即在抓取端松弛狀態(tài)下的x方向的正向和反向移動(dòng),z方向上的正向和反向移動(dòng),繞z旋轉(zhuǎn)方向上的正向和反向轉(zhuǎn)動(dòng)以及停止和抓取端抓緊狀態(tài)下的上述7個(gè)運(yùn)動(dòng),所以共14種運(yùn)動(dòng)狀態(tài)。
7個(gè)布爾控件由上至下分別代表右轉(zhuǎn)、左轉(zhuǎn)、向前、向后、向上、向下以及抓取,再將其建立成數(shù)組,由上到下依次為7位二進(jìn)制數(shù)的低位到高位。只需在每個(gè)運(yùn)動(dòng)case內(nèi)提供8位由邏輯真或假組成的二進(jìn)制數(shù)組給NI ELVIS DIO-WRITE子VI output端,并選擇VI輸出類(lèi)型為8位布爾數(shù)組(Boolean Array)。再通過(guò)NI-ELVIS工作平臺(tái)DO口就可以提供給開(kāi)關(guān)電路的輸入端對(duì)應(yīng)程序內(nèi)布爾數(shù)組的高低電平(真為高電平,假為低電平)控制繼電器的吸合或斷開(kāi),進(jìn)而控制步進(jìn)電機(jī)工作與否。這樣就實(shí)現(xiàn)了程序系統(tǒng)與硬件系統(tǒng)的統(tǒng)一,達(dá)到了預(yù)期目的。
手動(dòng)程序中還需通過(guò)NI-ELVIS工具包內(nèi)的子VI編寫(xiě)8位數(shù)字高低電平寫(xiě)出程序。通過(guò)DAQmx數(shù)據(jù)采集工具包內(nèi)的子VI編寫(xiě)脈沖序列發(fā)生程序。無(wú)論是高低電平寫(xiě)出程序還是脈沖序列發(fā)生程序都需要置于while循環(huán)內(nèi)以能夠連續(xù)循環(huán)地執(zhí)行程序,所以會(huì)有連續(xù)高低電平和連續(xù)脈沖信號(hào)生成。While循環(huán)的條件端子設(shè)為真是停止,并為其創(chuàng)建輸入控件,當(dāng)按下時(shí)停止按鈕會(huì)自動(dòng)彈起隨即程序停止運(yùn)行。當(dāng)程序正確運(yùn)行時(shí),會(huì)在NIELVIS平臺(tái)的8個(gè)DO口輸出8為高低電平,在平臺(tái)的counter_0out端口輸出連續(xù)脈沖序列。
圖4 連續(xù)脈沖生成框圖
圖5 連續(xù)高低電平輸出框圖
2.2.2 自動(dòng)控制程序框圖設(shè)計(jì)
程序框圖設(shè)計(jì)的總體思想就是利用狀態(tài)機(jī)實(shí)現(xiàn)事件間的切換,每個(gè)事件中編寫(xiě)不同運(yùn)動(dòng)狀態(tài)程序,也就是寫(xiě)入不同的高低電平控制使機(jī)械手完成各個(gè)動(dòng)作,當(dāng)完成了預(yù)定的動(dòng)作后便進(jìn)入下個(gè)事件(狀態(tài))完成事件內(nèi)的動(dòng)作,如此循環(huán)就可以實(shí)現(xiàn)機(jī)械手的一系列連續(xù)的動(dòng)作,如定點(diǎn)搬運(yùn)等功能。
要實(shí)現(xiàn)定點(diǎn)搬運(yùn)功能,除了高低電平連續(xù)輸出程序、連續(xù)脈沖序列發(fā)生這些基本的程序外,還需要在自動(dòng)控制程序的狀態(tài)機(jī)構(gòu)架內(nèi)嵌一個(gè)脈沖計(jì)數(shù)程序,顧名思義該程序可以對(duì)脈沖源進(jìn)行脈沖個(gè)數(shù)的自動(dòng)計(jì)數(shù)。但是當(dāng)在一個(gè)循環(huán)內(nèi)執(zhí)行脈沖個(gè)數(shù)讀取程序時(shí),計(jì)數(shù)器無(wú)法在你需要的時(shí)候清零,只有當(dāng)跳出循環(huán)時(shí)才會(huì)由任務(wù)擦除子VI清除脈沖計(jì)數(shù)任務(wù),這時(shí)計(jì)數(shù)器則清零,所以基于上述原因必須在整個(gè)大while循環(huán)中再添加一個(gè)子while循環(huán)以實(shí)現(xiàn)脈沖計(jì)數(shù)清零工作。也就是將脈沖計(jì)數(shù)程序放于子循環(huán)中,當(dāng)需要計(jì)數(shù)器清零時(shí),也就是狀態(tài)機(jī)切換狀態(tài)時(shí)則程序跳出子循環(huán)實(shí)現(xiàn)計(jì)數(shù)器清零并進(jìn)入下一個(gè)狀態(tài),但總程序依然在執(zhí)行不會(huì)因跳出子循環(huán)而終止,因?yàn)樵谧友h(huán)外還有一個(gè)大循環(huán)在運(yùn)行。由于步進(jìn)電機(jī)每接收到一個(gè)脈沖就會(huì)轉(zhuǎn)動(dòng)一個(gè)步距角,所以可以通過(guò)硬件計(jì)算一個(gè)脈沖下機(jī)械手轉(zhuǎn)動(dòng)的角度以及移動(dòng)的距離,在每個(gè)運(yùn)動(dòng)狀態(tài)的case內(nèi)可以通過(guò)簡(jiǎn)單的邏輯編程即通過(guò)脈沖計(jì)數(shù)器程序所得的脈沖數(shù)乘以實(shí)際中機(jī)械手上步進(jìn)電機(jī)在一個(gè)脈沖下的步距角參數(shù)值得出該運(yùn)動(dòng)狀態(tài)下機(jī)械手已移動(dòng)的距離或轉(zhuǎn)過(guò)的角度與相應(yīng)的輸入數(shù)據(jù)作比較,然后就可以通過(guò)類(lèi)似于C語(yǔ)言中if,break的邏輯程序來(lái)決定是繼續(xù)保持當(dāng)前的運(yùn)動(dòng)狀態(tài)還是跳轉(zhuǎn)到下一個(gè)運(yùn)動(dòng)狀態(tài)。程序框圖如圖6所示。
圖6 脈沖計(jì)數(shù)程序框圖
本次設(shè)計(jì)最終能夠通過(guò)軟件程序控制硬件完成預(yù)定的功能,在操作界面中可通過(guò)手動(dòng)控制人為控制機(jī)械手的運(yùn)動(dòng);在自動(dòng)控制程序中無(wú)需操作人員對(duì)其時(shí)時(shí)的操作,只需設(shè)定好路徑則機(jī)械手可自動(dòng)完成簡(jiǎn)單的裝配功能。
本系統(tǒng)加以改進(jìn)后還可面向碼頭集裝箱搬運(yùn)系統(tǒng)應(yīng)用、面向中小型物流系統(tǒng)應(yīng)用,也可作為教學(xué)科研演示設(shè)備進(jìn)行推廣。傳統(tǒng)機(jī)械手系統(tǒng)工作方式為手動(dòng)和自動(dòng)兩種,自動(dòng)模式通常通過(guò)程序固化到微控制器中,該模式比較單一。本系統(tǒng)控制程序基于LabVIEW8.5編寫(xiě),可在操作界面進(jìn)行自定義模式修改,操作用戶可自行修改,無(wú)需專業(yè)人員親臨現(xiàn)場(chǎng),為用戶增加了便利性,項(xiàng)目開(kāi)發(fā)周期縮短且維護(hù)成本降低。
[1]Robert H Bishop.Labview 8使用教程[M].北京:電子工業(yè)出版社,2008.
[2]柏林,王見(jiàn),秦樹(shù).虛擬儀器及其在機(jī)械測(cè)試中的應(yīng)用[M].北京:科學(xué)出版社,2008.
[3]李念強(qiáng).數(shù)據(jù)采集技術(shù)與系統(tǒng)設(shè)計(jì)[M].北京:機(jī)械工業(yè)出版社,2009.
[4]李光提,李淑君,李汝莘.步進(jìn)電機(jī)的虛擬儀器控制系統(tǒng)[J].山東農(nóng)業(yè)大學(xué)學(xué)報(bào):自然科學(xué)版,2009(1):103-106.
[5]陸祥生.機(jī)械手理論及應(yīng)用[M].北京:中國(guó)鐵道出版社.1985.
[6]宋玟琪,萬(wàn)光珉,楊宗正.機(jī)械手的基本知識(shí)[J].機(jī)械學(xué)報(bào),1980,12(4):245-252.
[7]李強(qiáng),姚紅兵.基于LabVIEW的振動(dòng)虛擬測(cè)試系統(tǒng)的設(shè)計(jì)[J].虛擬技術(shù)學(xué)報(bào),2009(3):12-13.
[8]柏林,王見(jiàn),秦樹(shù)人.虛擬儀器及其在機(jī)械測(cè)試中的應(yīng)用[M].北京:科學(xué)出版社,2007.
[9]北京中科泛華測(cè)控技術(shù)有限公司.計(jì)算機(jī)虛擬儀器圖形編程LabVIEW 實(shí)驗(yàn)教材[M].北京:北京大學(xué)出版社,2006.
[10]劉君華.虛擬儀器圖形化編程語(yǔ)言LabVIEW教程[M].西安:西安電子科技大學(xué)出版,2001.