張冀 張春雷 瞿佳偉
摘要:操作軟件是現(xiàn)代電氣運(yùn)動(dòng)控制系統(tǒng)的重要組成部分。為使人們更加方便地通過運(yùn)動(dòng)控制器控制電機(jī)進(jìn)行電氣運(yùn)動(dòng),通過研究運(yùn)動(dòng)控制系統(tǒng)各部件之間的通信與控制原理,以及運(yùn)動(dòng)控制過程中所需功能,基于Qt Creator設(shè)計(jì)并實(shí)現(xiàn)了一款運(yùn)動(dòng)編程平臺(tái)軟件,不僅可滿足基本操作控制需求,而且具有填表式編程功能。在定制設(shè)計(jì)的三軸運(yùn)動(dòng)控制系統(tǒng)實(shí)驗(yàn)臺(tái)上進(jìn)行操作測(cè)試實(shí)驗(yàn),驗(yàn)證了該編程軟件操作的有效性和控制便捷性。
關(guān)鍵詞:填表式編程;電氣運(yùn)動(dòng)控制;軟件設(shè)計(jì);Qt Creator
DOIDOI:10.11907/rjdk.181423
中圖分類號(hào):TP319
文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-7800(2018)010-0110-04
英文摘要Abstract:The operating software is an important part of modern electrical motion control systems. In order to make it easier for people to control the motor through the motion controller for electrical motion, by studying the communication and control principles between the various components of the motion control system, and the functions normally required in the motion control process, Qt Creator is designed and implemented. It is a motion programming platform software that not only satisfies basic operation control but also has a form-filling programming function. The operation test experiments on the custom-designed three-axis motion control system test bench verified the operational effectiveness and control convenience of the programming software.
英文關(guān)鍵詞Key Words:filling programming;electric motion control;software design;Qt Creator
0 引言
運(yùn)動(dòng)控制系統(tǒng)(Motion Control System)多種多樣,一個(gè)典型的現(xiàn)代電氣運(yùn)動(dòng)控制系統(tǒng)硬件由上位計(jì)算機(jī)、運(yùn)動(dòng)控制器、功率驅(qū)動(dòng)裝置、電動(dòng)機(jī)、執(zhí)行機(jī)構(gòu)和傳感器反饋檢測(cè)裝置等部分組成 [1]。其中上位計(jì)算機(jī)直接發(fā)出操控命令,且該命令首先傳給運(yùn)動(dòng)控制器,運(yùn)動(dòng)控制器根據(jù)此命令解析成相應(yīng)時(shí)序信號(hào)直接控制設(shè)備(如電動(dòng)機(jī))并獲取設(shè)備狀況 [2]。運(yùn)動(dòng)控制器不時(shí)讀取設(shè)備狀態(tài)數(shù)據(jù)(一般為模擬量),并將數(shù)據(jù)轉(zhuǎn)換成數(shù)字信號(hào)反饋給上位計(jì)算機(jī)。上位計(jì)算機(jī)與運(yùn)動(dòng)控制器都需要編程,而且各有專門的開發(fā)系統(tǒng)[3]。
在各個(gè)用戶之間的上位計(jì)算機(jī)系統(tǒng)普遍相同的情況下,人們?cè)絹碓节呄蛴谥贿x擇某一款作用于通用計(jì)算機(jī)系統(tǒng)的操作軟件,控制運(yùn)動(dòng)控制器以間接控制電機(jī)運(yùn)動(dòng)。因此,設(shè)計(jì)一款上位計(jì)算機(jī)操作軟件便成為運(yùn)動(dòng)控制過程中必不可少的一部分[4]。
大多數(shù)上位計(jì)算機(jī)軟件只包含基本的參數(shù)設(shè)置和手動(dòng)控制功能,或者僅根據(jù)實(shí)際環(huán)境需要(比如某一周期的往復(fù)運(yùn)動(dòng)、實(shí)時(shí)的加減速運(yùn)動(dòng)等)設(shè)計(jì)與其對(duì)應(yīng)的操作軟件[5]。操作人員需要其它特定功能時(shí),軟件開發(fā)人員就要根據(jù)需求特別定制,這一重新研發(fā)定制過程因?yàn)殚_發(fā)周期長,需耗費(fèi)很多時(shí)間與精力。為增加操作軟件的易用性與通用性,在收集整理常用功能后,本文基于Qt Creator軟件,設(shè)計(jì)并實(shí)現(xiàn)了一款不僅滿足基本操作控制,而且具有填表式編程功能的獨(dú)立式上位計(jì)算機(jī)軟件。操作人員通過該軟件能自主設(shè)計(jì)滿足不同功能的程序,該程序一旦導(dǎo)入運(yùn)動(dòng)控制器中,電機(jī)便能脫離人工進(jìn)行獨(dú)立式運(yùn)動(dòng)。
1 軟件總體設(shè)計(jì)
運(yùn)動(dòng)控制過程中的實(shí)時(shí)控制與功能指令編輯以人機(jī)交互形式實(shí)現(xiàn)。實(shí)時(shí)控制指操作人員在手動(dòng)控制的情況下可以隨時(shí)修改運(yùn)動(dòng)控制器中電機(jī)的運(yùn)行參數(shù),控制電機(jī)的基本運(yùn)動(dòng)以及監(jiān)控其運(yùn)行狀態(tài)。功能指令編輯指操作人員在根據(jù)自身需要選擇編輯好的運(yùn)動(dòng)指令集后,下載到運(yùn)動(dòng)控制器中,讓其控制電機(jī)進(jìn)行與指令內(nèi)容相符合的自動(dòng)控制。軟件具有獨(dú)立工作特點(diǎn),在功能指令編輯完成并下載后,軟件能夠脫離人為操作,完全按照所編輯的指令進(jìn)行工作[6]。
軟件采用模塊化設(shè)計(jì)。由于Qt Creator自身具有ui界面設(shè)計(jì)的Qt Designer功能,因此可將該軟件在Qt Creator上的實(shí)現(xiàn)分為界面設(shè)計(jì)和功能實(shí)現(xiàn)兩個(gè)模塊,軟件架構(gòu)如圖1所示。
2 軟件界面設(shè)計(jì)
本著簡(jiǎn)潔明了、使用方便快捷的原則,編程軟件主界面設(shè)計(jì)如圖2所示。主界面包含“連接控制器”總開關(guān)、打開與手動(dòng)控制相關(guān)的子界面按鈕(“手動(dòng)操作”和“參數(shù)設(shè)置”按鈕)、打開與自動(dòng)控制相關(guān)的子界面按鈕(“程序編輯”按鈕)以及打開運(yùn)動(dòng)控制器程序升級(jí)和上位計(jì)算機(jī)軟件升級(jí)的子界面按鈕(“關(guān)于”按鈕)4大部分。
在軟件運(yùn)行初始化或點(diǎn)擊“程序編輯”按鈕,便會(huì)在主界面的右端顯示其對(duì)應(yīng)的子界面,在子界面的左端是一個(gè)可自由增刪行數(shù)的表格(操作人員進(jìn)行程序編輯的區(qū)域),子界面的右端是在編輯程序過程中需要的一些常用功能,如對(duì)程序進(jìn)行讀入、修改、新建、刪除、保存、下載等操作。
在子界面左端表格中,第1列為指令集,包含系統(tǒng)操作、流程控制、輸出口操作、回零運(yùn)動(dòng)、直線點(diǎn)位運(yùn)動(dòng)、獨(dú)立插補(bǔ)運(yùn)動(dòng)6種類型,為便于區(qū)分,每種指令集都設(shè)置不同顏色;第2列為選擇第1列指令集后與其對(duì)應(yīng)的各種常用指令,如“直線點(diǎn)位運(yùn)動(dòng)”對(duì)應(yīng)有“設(shè)置點(diǎn)位速度”、“三軸相對(duì)運(yùn)動(dòng)”、“YZ獨(dú)立運(yùn)動(dòng)”等等,共設(shè)計(jì)了49種常用功能指令;第3至第5列為各個(gè)指令需要填寫的參數(shù);第6列為方便操作人員記錄而提供的備注欄。最主要的15種功能指令及參數(shù)填寫格式如表1所示。
點(diǎn)擊“手動(dòng)操作”和“參數(shù)設(shè)置”按鈕,在主界面的右端會(huì)顯示其對(duì)應(yīng)的子界面,主要包含基本的點(diǎn)動(dòng)操作、各個(gè)軸的運(yùn)動(dòng)位置顯示、輸入輸出口狀態(tài)與選擇、有關(guān)速度和位移的參數(shù)設(shè)置以及參數(shù)的保存與讀取。
3 軟件功能實(shí)現(xiàn)
軟件功能實(shí)現(xiàn)包含與運(yùn)動(dòng)控制器建立通信、設(shè)置界面上各個(gè)按鈕單擊的槽函數(shù)、讀寫各類文件以及向運(yùn)動(dòng)控制器發(fā)送指令4大功能,需按一定順序?qū)崿F(xiàn),流程如圖3所示。
運(yùn)動(dòng)控制器通信模塊指建立在該運(yùn)動(dòng)控制器的通信協(xié)議上,并且通過Qt Creater的程序編寫,實(shí)現(xiàn)該軟件與運(yùn)動(dòng)控制器的通信。只有在建立好通信的基礎(chǔ)上,軟件才能實(shí)時(shí)向運(yùn)動(dòng)控制器發(fā)送命令,并將運(yùn)動(dòng)控制器的機(jī)器狀態(tài)傳輸?shù)骄幊誊浖7]。按鈕信號(hào)槽模塊指利用Qt Creater特有的信號(hào)和槽機(jī)制取代某些凌亂的函數(shù)指針,使編寫的程序更為簡(jiǎn)潔明了。
界面上點(diǎn)擊按鈕或觸發(fā)某個(gè)事件都可發(fā)出信號(hào),信號(hào)再與單個(gè)或多個(gè)槽函數(shù)(用程序編寫的函數(shù)體)連接,這時(shí)無論第一個(gè)信號(hào)什么時(shí)候發(fā)射,系統(tǒng)都將立刻發(fā)射第二個(gè)信號(hào),信號(hào)與槽構(gòu)造了一個(gè)強(qiáng)大的部件編程機(jī)制[8]。
3.1 讀寫文件模塊
各類軟件都會(huì)涉及到文件的讀寫操作,因?yàn)橹挥袑?duì)文件操作才能實(shí)現(xiàn)各種信息的長時(shí)間保存[9],本軟件涉及對(duì)INI配置文件、BIN二進(jìn)制文件與TXT文本文件的讀寫。
INI配置文件是一種按照特定方式排列的文件。每一個(gè)INI文件構(gòu)成都非常類似,由若干段落(Section)組成,在每個(gè)帶括號(hào)的標(biāo)題下是若干個(gè)單詞開頭的關(guān)鍵詞(keyword)和一個(gè)等號(hào),等號(hào)右邊就是關(guān)鍵字對(duì)應(yīng)的值(value)[10]。本軟件中的INI文件主要用于參數(shù)設(shè)置界面各參數(shù)的保存與讀取。讀寫INI配置文件流程如圖4所示。在處理INI文件時(shí),創(chuàng)建一個(gè)專門的類(class)負(fù)責(zé)INI文件的讀寫工作,這個(gè)類暴露適當(dāng)?shù)慕涌诠┩獠空{(diào)用。一般的INI文件尺寸很小,因此以文本的方式將整個(gè)文件讀入一個(gè)string變量中。
BIN二進(jìn)制文件為無格式而有數(shù)據(jù)類型,與TXT文本文件儲(chǔ)存方式有根本不同。二進(jìn)制文件目前廣泛使用IEEE標(biāo)準(zhǔn)浮點(diǎn)格式儲(chǔ)存實(shí)型數(shù)據(jù),使用ASCII編碼儲(chǔ)存字符型數(shù)據(jù)[11]。利用二進(jìn)制文件在儲(chǔ)存實(shí)型數(shù)字時(shí)能節(jié)約很大空間;因內(nèi)存中參加計(jì)算的數(shù)據(jù)都是用二進(jìn)制無格式儲(chǔ)存起來的,故使用二進(jìn)制儲(chǔ)存文件也非??旖荩粚?duì)于一些比較精確的數(shù)據(jù)使用二進(jìn)制儲(chǔ)存不會(huì)造成有效位丟失[12]。該軟件中的BIN二進(jìn)制文件操作主要用于將編輯好的程序指令轉(zhuǎn)換成二進(jìn)制數(shù)據(jù),運(yùn)動(dòng)控制器通過讀取該二進(jìn)制文件識(shí)別出各種不同類型的運(yùn)動(dòng)指令。建立BIN二進(jìn)制文件及向其寫入內(nèi)容流程如圖5所示。
TXT文本文件內(nèi)容是線性儲(chǔ)存的,列用空格或Tab間隔,行用回車和換行符間隔。文本文件讀寫與二進(jìn)制文件讀寫流程類似,不同之處在于創(chuàng)建文件時(shí),后綴名使用“.txt”,以及寫入內(nèi)容時(shí),使用QTextStream數(shù)據(jù)流形式。
3.2 指令傳輸模塊
指令傳輸模塊定義每條指令具有不同的表達(dá)方式,將編輯好的程序指令轉(zhuǎn)換成二進(jìn)制并寫入二進(jìn)制文件。上位計(jì)算機(jī)與運(yùn)動(dòng)控制器建立通信,將該二進(jìn)制文件迅速傳輸給運(yùn)動(dòng)控制器,方便運(yùn)動(dòng)控制器解析程序的運(yùn)動(dòng)指令[13]。
例如在“回零運(yùn)動(dòng)”指令集中的“啟動(dòng)回零”指令為0x03000204,該指令定義為16進(jìn)制形式,高8位的03代表該指令包含3個(gè)參數(shù),低8位的02代表指令類型(啟動(dòng)回零),04代表指令類別(回零運(yùn)動(dòng))。每條指令根據(jù)其作用都具有嚴(yán)格意義上的不同定義,每個(gè)定義在運(yùn)動(dòng)控制器程序上也都有對(duì)應(yīng)的模式識(shí)別。
以“啟動(dòng)回零”這條指令為例。在按程序編輯表格順序時(shí),如果識(shí)別到程序中有“啟動(dòng)回零”這一指令,便立刻執(zhí)行定義的MC_CMD_StartHome()函數(shù)。定義了一個(gè)名為dwCmd的數(shù)組,數(shù)組第一個(gè)元素為指令的16進(jìn)制定義,數(shù)組的其它元素為指令的3個(gè)參數(shù)(這3個(gè)參數(shù)就是界面上表格中的參數(shù)1、參數(shù)2、參數(shù)3內(nèi)容),執(zhí)行定義的WriteData()函數(shù)。向BIN二進(jìn)制文件寫入內(nèi)容,WriteData()函數(shù)即向二進(jìn)制文件中分別寫入dwCmd數(shù)組內(nèi)容和數(shù)組第一個(gè)元素(指令的定義)。
4 實(shí)驗(yàn)操作測(cè)試
在定制的三軸電氣運(yùn)動(dòng)控制系統(tǒng)實(shí)驗(yàn)臺(tái)上進(jìn)行軟件測(cè)試,如圖6所示。測(cè)試前先用Keil軟件單獨(dú)編寫運(yùn)動(dòng)控制器所需的各個(gè)模塊控制程序代碼,利用J-Link工具將完整無誤的控制程序燒入運(yùn)動(dòng)控制器作為運(yùn)行系統(tǒng),還需在PC電腦上安裝運(yùn)動(dòng)控制器驅(qū)動(dòng)。利用一根USB串口線連接運(yùn)動(dòng)控制卡和PC電腦(上位計(jì)算機(jī)與運(yùn)動(dòng)控制器之間采用RS232串口通信原理),便可打開研發(fā)的軟件實(shí)時(shí)向運(yùn)動(dòng)控制器發(fā)送指令,將設(shè)計(jì)的軟件下載到運(yùn)動(dòng)控制器以控制整個(gè)系統(tǒng)實(shí)驗(yàn)平臺(tái)。
點(diǎn)擊圖2所示的主界面“下載程序”,便可將程序轉(zhuǎn)換成二進(jìn)制內(nèi)容傳輸?shù)竭\(yùn)動(dòng)控制器中。運(yùn)動(dòng)控制器接收并識(shí)別二進(jìn)制內(nèi)容后,立刻通過各驅(qū)動(dòng)器控制對(duì)應(yīng)的電機(jī)進(jìn)行運(yùn)動(dòng)。實(shí)驗(yàn)表明:上位計(jì)算機(jī)與運(yùn)動(dòng)控制器之間能有效通信;指令傳輸實(shí)時(shí)、運(yùn)動(dòng)控制準(zhǔn)確,程序編輯具多樣性。
5 結(jié)語
本文利用Qt Creater設(shè)計(jì)并實(shí)現(xiàn)了三軸獨(dú)立式電氣運(yùn)動(dòng)控制器的填表式編程平臺(tái)軟件。通過在定制系統(tǒng)實(shí)驗(yàn)平臺(tái)上多次實(shí)驗(yàn),表明這款軟件能降低操作人員時(shí)間與精力,實(shí)用性強(qiáng)。除實(shí)驗(yàn)臺(tái)上所用皮帶輪直線模組和步進(jìn)電機(jī)外,該軟件還適用于絲桿導(dǎo)軌和伺服電機(jī)的工作環(huán)境,對(duì)軟件稍作修改則可適用于許多軸的電氣運(yùn)動(dòng)控制,該軟件的設(shè)計(jì)思想還適用于運(yùn)動(dòng)控制的其它領(lǐng)域。
參考文獻(xiàn):
[1] 郗志剛,周宏甫.運(yùn)動(dòng)控制器的發(fā)展與現(xiàn)狀[J].機(jī)床電器,2005(4):5-10.
[2] 張學(xué)飛,蔣益興,李健.基于C8051F350型單片機(jī)的振動(dòng)信號(hào)采集系統(tǒng)[J].儀表技術(shù)與傳感器,2009(10):52-53,57.
[3] 黃霆.基于LabVIEW的突發(fā)誤碼儀的上位機(jī)設(shè)計(jì)與實(shí)現(xiàn)[D].武漢:武漢科技大學(xué),2011.
[4] 林勇強(qiáng),王勇,馮屹朝.開放式運(yùn)動(dòng)控制器技術(shù)現(xiàn)狀與發(fā)展趨勢(shì)[J].信息技術(shù),2010,34(5):184-186.
[5] 劉綠山.嵌入式四軸運(yùn)動(dòng)控制器的設(shè)計(jì)與研究[D].廣州:廣東工業(yè)大學(xué),2007.
[6] 陳景波,盧達(dá),王玲玲.全自動(dòng)電腦橫機(jī)上位機(jī)軟件的設(shè)計(jì)[J].紡織學(xué)報(bào),2011,32(2):131-135.
[7] 朱振茂.無線網(wǎng)絡(luò)實(shí)時(shí)監(jiān)測(cè)系統(tǒng)上位機(jī)軟件的設(shè)計(jì)與實(shí)現(xiàn)[D].大連:大連海事大學(xué),2008.
[8] 吳春華.基于ARM和uClinux的嵌入式系統(tǒng)的構(gòu)建研究[D].杭州:浙江大學(xué),2005.
[9] 趙鐵柱.分布式文件系統(tǒng)性能建模及應(yīng)用研究[D].廣州:華南理工大學(xué),2011.
[10] 唐振軍.VC++讀寫軟件配置參數(shù)的若干方法[J].電腦編程技巧與維護(hù),2010(9):31-37.
[11] 馮輝.DICOM二進(jìn)制文件解讀的VC++實(shí)現(xiàn)[J].醫(yī)學(xué)影像學(xué)雜志,2003(7):538-539.
[12] 謝華成,張昆朋,范黎林,等.基于文件分割的二進(jìn)制大對(duì)象存取算法[J].計(jì)算機(jī)應(yīng)用,2011,31(10):2612-2616.
[13] 柯艷,李杰,孔祥雷,等.基于USB2.0的多路數(shù)據(jù)采集系統(tǒng)上位機(jī)軟件設(shè)計(jì)[J].測(cè)試技術(shù)學(xué)報(bào),2010,24(4):351-356.
(責(zé)任編輯:杜能鋼)