涂文特
(貴州航天林泉電機(jī)有限公司,貴州貴陽550000)
?
基于LIN通信與Labview平臺(tái)的電機(jī)控制上位機(jī)系統(tǒng)設(shè)計(jì)
涂文特
(貴州航天林泉電機(jī)有限公司,貴州貴陽550000)
摘要:在Labviw平臺(tái)下,通過解析LIN通信LDF格式數(shù)據(jù)庫與文本配置文件,搭建電機(jī)控制上位機(jī)程序框架,設(shè)計(jì)了一款能夠?qū)崿F(xiàn)電機(jī)系統(tǒng)正??刂啤顟B(tài)顯示、耐久試驗(yàn)、數(shù)據(jù)記錄、波形顯示與存儲(chǔ)等功能的上位機(jī)軟件。該控制系統(tǒng)具備性能穩(wěn)定、低成本、高效率、高靈活性、可移植性優(yōu)異等優(yōu)點(diǎn),可靈活應(yīng)用于各種數(shù)據(jù)采集及處理項(xiàng)目中,解決了系統(tǒng)設(shè)計(jì)復(fù)雜和移植困難等問題,使用狀況驗(yàn)證了該系統(tǒng)的合理性與實(shí)用性。
關(guān)鍵詞:LabviewLIN電機(jī)控制上位機(jī)
0引言
電機(jī)設(shè)計(jì)完成后,還需經(jīng)過樣機(jī)試制,經(jīng)過測(cè)試找出電機(jī)性能上的偏差,進(jìn)而進(jìn)行測(cè)試、調(diào)試、定型[1]。因此除了要對(duì)電機(jī)和控制器系統(tǒng)進(jìn)行研制外,還需增加上位機(jī)控制系統(tǒng),輔助完成對(duì)電機(jī)及控制器的日常和耐久測(cè)試,并按需保存試驗(yàn)數(shù)據(jù)及波形。常見的控制系統(tǒng)上位機(jī)通常采用MFC、Labview、QT等平臺(tái)搭建設(shè)計(jì)[2,3]。其中MFC和QT平臺(tái)采用C++語言進(jìn)行編程,而Labview平臺(tái)則采用圖形化編程的G語言方式進(jìn)行設(shè)計(jì),且提供了豐富的擴(kuò)展函數(shù)庫,廣泛應(yīng)用于軍事、航天、航空等領(lǐng)域。LIN 是一種基于UART/SCI(通用異步收發(fā)器/串行通信接口)的低成本串行通信協(xié)議。該通信方式具備一主多從網(wǎng)絡(luò)節(jié)點(diǎn)、低成本、配置簡單、可預(yù)測(cè)EMC等特點(diǎn),廣泛應(yīng)用于汽車上低速通信部分,且提供信號(hào)處理、配置、識(shí)別和診斷功能。通過LIN通信方式在Labview平臺(tái)上搭建數(shù)據(jù)采集(DAQ)系統(tǒng),以實(shí)現(xiàn)電機(jī)運(yùn)行參數(shù)采集和進(jìn)行環(huán)境耐久試驗(yàn),控制系統(tǒng)具備開發(fā)簡單、可移植性強(qiáng)等優(yōu)點(diǎn)。
1程序框架設(shè)計(jì)
電機(jī)控制上位機(jī)主要實(shí)現(xiàn)與電機(jī)控制器的通信功能,并能發(fā)送電機(jī)啟停、給定速度、數(shù)據(jù)記錄、波形顯示等功能。以某電機(jī)控制平臺(tái)為例,上位機(jī)系統(tǒng)應(yīng)具備圖1中程序框架內(nèi)的實(shí)體內(nèi)容。在登錄界面中設(shè)置波特率、COM口、LDF數(shù)據(jù)庫路徑等參數(shù)。工作模式可在手動(dòng)與自動(dòng)模式之間進(jìn)行切換。手動(dòng)模式下可完成電機(jī)正常性能測(cè)試,當(dāng)需實(shí)現(xiàn)某項(xiàng)耐久環(huán)境類型的試驗(yàn)時(shí),可切換到自動(dòng)模式以達(dá)到無人值守等功能。此外,在上位機(jī)界面上應(yīng)具備電機(jī)實(shí)時(shí)狀態(tài)反饋,方便試驗(yàn)人員觀察電機(jī)運(yùn)行參數(shù)及波形。
圖1 上位機(jī)程序框架
2主要難點(diǎn)及LIN節(jié)點(diǎn)設(shè)計(jì)
2.1主要難點(diǎn)
編寫類似電機(jī)數(shù)據(jù)采集類型的上位機(jī)時(shí),通常存在以下難點(diǎn):
(1)多線程編程的處理
上位機(jī)平臺(tái)需要實(shí)時(shí)更新電機(jī)運(yùn)行狀態(tài)參數(shù),并顯示電機(jī)參數(shù)波形和存儲(chǔ)數(shù)據(jù)。通常需要調(diào)用多項(xiàng)函數(shù),較復(fù)雜的多線程處理以及函數(shù)的可重入性容易遺留過多的錯(cuò)誤機(jī)制處理,過多的占用系統(tǒng)內(nèi)存。
(2)可移植性差
編寫好一個(gè)上位機(jī)控制平臺(tái)后,由于通信協(xié)議字長、內(nèi)容等的改變,需要花費(fèi)較大的精力去修改數(shù)據(jù)處理、波形顯示、協(xié)議更新等函數(shù)。
(3)開發(fā)周期長
通常一個(gè)項(xiàng)目的控制器上位機(jī)開發(fā)需要一個(gè)月或者數(shù)月的時(shí)間才能完成數(shù)據(jù)庫的搭建、信號(hào)的存儲(chǔ)等功能。
2.2LIN節(jié)點(diǎn)設(shè)計(jì)
LIN規(guī)范提供了開放式的API函數(shù),通常下位機(jī)系統(tǒng)硬件上只需支持UART接口即可實(shí)現(xiàn)LIN通信功能。硬件上可使用UART接口連接LIN收發(fā)器(常見的如TJA1021等)。軟件上依次調(diào)用LIN規(guī)范提供的API函數(shù),調(diào)用l_sys_init()函數(shù)完成初始化功能,調(diào)用l_sfc_read_statu()函數(shù)完成狀態(tài)讀取,調(diào)用l_ifc_connect()函數(shù)完成接口連接,調(diào)用l_sch_set()函數(shù)完成進(jìn)度表的調(diào)度。
3具體功能實(shí)現(xiàn)
3.1LDF文件讀取
LIN數(shù)據(jù)庫文件可簡稱LDF文件。如下所示,LDF文件主要定義LIN協(xié)議版本號(hào)、配置語言版本號(hào)、總線速率、節(jié)點(diǎn)、信號(hào)、幀、調(diào)度表等內(nèi)容。
{
LIN_protocol_version = "2.1"; //協(xié)議版本
LIN_language_version = "2.1"; //配置語言版本
LIN_speed = 9.6 kbps; //總線速率
Nodes{ } //節(jié)點(diǎn)
Signals{ } //信號(hào)
Frames{ } //幀
Schedule_tables{ } //調(diào)度表
}
圖2 匹配模式處理
在Labview平臺(tái)下可通過建立配置文件,寫入LDF文件路徑,然后打開、讀取文本文件并建立匹配模式,運(yùn)用正則表達(dá)式[4-5]提取需要的信息并打包成簇。如圖2所示,讀取LDF文本文件之后,通過調(diào)用匹配模式函數(shù)去除“/*”和“*/”之間的注釋內(nèi)容,并輸入到后續(xù)接口。同理可按照此辦法提取信號(hào)、幀等關(guān)鍵信息作為后續(xù)控制的輸入?yún)?shù)。
3.2LIN通信建立
圖3 建立LIN通信
項(xiàng)目中采用了NI公司的USB8476S作為LIN通信與上位機(jī)平臺(tái)的通信設(shè)備,Labview中提供了支持該設(shè)備打開LIN通信信道的vi函數(shù)用于調(diào)用。如圖3所示通過ncOpen.vi、ncSetAttr.vi和ncAction.vi函數(shù)即可完成對(duì)LIN通信的開始和錯(cuò)誤處理。通過調(diào)用Labview中LIN通信子程序vi并按照LIN協(xié)議的通信標(biāo)準(zhǔn)可分別完成總線參數(shù)設(shè)置、總線數(shù)據(jù)寫入、總線數(shù)據(jù)讀出、總線關(guān)閉等步驟。
3.3波形顯示及存儲(chǔ)
Labview平臺(tái)提供了波形圖表圖形控件,只需將獲取到的數(shù)據(jù)添加到原圖形中,即可實(shí)現(xiàn)獲取數(shù)據(jù)的實(shí)時(shí)波形顯示。正常情況下電機(jī)控制需要將速度設(shè)定、啟動(dòng)控制、母線電壓、電流、運(yùn)行狀態(tài)、保護(hù)狀態(tài)等逐一顯示出來。如圖4所示,通過設(shè)定波形圖表顯示參數(shù),即可建立各參數(shù)坐標(biāo)軸及名稱坐標(biāo)軸,簡單直接。
圖4 波形前面板樣式
3.4電機(jī)控制及狀態(tài)前面板設(shè)計(jì)
在電機(jī)控制前面板上,需完成對(duì)電機(jī)啟動(dòng)、給定速度以及電機(jī)控制器反饋的電機(jī)實(shí)際運(yùn)行速度、電壓、電流、溫度等參數(shù)。通過在工具選板上拖拽布爾、字符型控件即可搭建圖5所示的控制前面板。
圖5 控制前面板
3.5功能調(diào)度
由于LIN通信[8]采用一主多從的方式,其通信具備自己的特點(diǎn)。圖6所示,主機(jī)任務(wù)主要有:調(diào)度總線上幀的傳輸次序、監(jiān)測(cè)數(shù)據(jù)、作為標(biāo)準(zhǔn)時(shí)鐘參考、處理錯(cuò)誤、接收從機(jī)節(jié)點(diǎn)發(fā)出的總線喚醒命令。從機(jī)任務(wù)不能夠主動(dòng)發(fā)送數(shù)據(jù),需要接收主機(jī)發(fā)送的幀頭(即幀的起始部分),根據(jù)幀頭所包含的信息判斷是否發(fā)送應(yīng)答(即幀中除幀頭外剩下的部分),接收應(yīng)答;既不接收也不發(fā)送應(yīng)答。以某項(xiàng)目為例,若主節(jié)點(diǎn)ID為0x01,從節(jié)點(diǎn)ID為0x02,則主節(jié)點(diǎn)在完成主任務(wù)時(shí)通過發(fā)送幀頭為0x01后,在總線上添加主任務(wù)數(shù)據(jù)幀。同理當(dāng)主節(jié)點(diǎn)往總線上發(fā)送了從節(jié)點(diǎn)任務(wù)后,從節(jié)點(diǎn)應(yīng)及時(shí)響應(yīng)并發(fā)送從節(jié)點(diǎn)數(shù)據(jù)幀。
因此電機(jī)控制上位機(jī)系統(tǒng)應(yīng)具備發(fā)送通信主幀、發(fā)送從機(jī)通信頭幀、獲取從機(jī)數(shù)據(jù)、顯示從機(jī)數(shù)據(jù)、顯示從機(jī)波形圖、存取相關(guān)參數(shù)、獲取控制狀態(tài)、改變控制狀態(tài)等功能。由于Labview滿足多線程工作,系統(tǒng)通過建立兩個(gè)while循環(huán)分別實(shí)現(xiàn)通信和數(shù)據(jù)處理功能,并在通信和數(shù)據(jù)處理功能內(nèi)細(xì)分處理數(shù)據(jù)接收和發(fā)送、數(shù)據(jù)處理和波形顯示功能。
圖6 LIN總線拓?fù)鋱D
3.6自動(dòng)模式簡介
圖7 模式詳情
當(dāng)切換到自動(dòng)模式下,可通過條件結(jié)構(gòu)更改條件參數(shù),選擇相應(yīng)條件下的數(shù)據(jù)配置數(shù)組,并整合成簇文件,輸入到后續(xù)通信內(nèi)容中。模式詳情數(shù)組如圖7所示。建立好模式詳情數(shù)組后,上位機(jī)按照所給定的時(shí)間、轉(zhuǎn)速、啟停指令,依次發(fā)送給電機(jī)控制下位機(jī)。下位機(jī)根據(jù)實(shí)時(shí)通信指令控制電機(jī)的運(yùn)行。
4試驗(yàn)驗(yàn)證
由于LIN總線支持一主多從網(wǎng)絡(luò)通信,因此可在總線上連接少于16個(gè)的從節(jié)點(diǎn)[6-7]。如圖8,搭建通信測(cè)試系統(tǒng),上位機(jī)控制系統(tǒng)選擇PC平臺(tái)即可,通過USB口連接到LIN總線上,并使用第三方檢測(cè)設(shè)備測(cè)試總線數(shù)據(jù)。其中第三方檢測(cè)軟硬件采用Vector公司的CANoe診斷工具。通過第三方軟硬件可方便的測(cè)試出總線上的數(shù)據(jù),并診斷錯(cuò)誤幀及通信時(shí)序。下位機(jī)控制器應(yīng)具備LIN通信功能,并及時(shí)上傳電機(jī)運(yùn)行相關(guān)數(shù)據(jù)。波特率可設(shè)置在20 kbps以下,通信周期選擇10 ms每幀。
圖8 通信測(cè)試
圖9 CANoe配置
CANoe配置如圖9所示,通過加載LDF數(shù)據(jù)庫文件,鼠標(biāo)右鍵選擇主節(jié)點(diǎn)Master和從節(jié)點(diǎn)Slave處于非激活狀態(tài)。
圖10 實(shí)測(cè)波形圖
以某電機(jī)控制器為例,測(cè)試結(jié)果波形圖如圖10,可以清楚的在波形圖上看到指令變化和實(shí)時(shí)數(shù)據(jù)波形,例如母線電壓(Voltage)波動(dòng),速度(Speed)波動(dòng)等。在CANoe軟件上通過在trace窗口也能夠?qū)崟r(shí)的觀察總線數(shù)據(jù)。整套系統(tǒng)工作穩(wěn)定可靠,可以正確的實(shí)現(xiàn)電機(jī)控制上位機(jī)指令的發(fā)送及總線數(shù)據(jù)的保持與處理。且整套系統(tǒng)圖形化編程過程明朗,配置簡單。通過修改配置文件即可實(shí)現(xiàn)其他LIN協(xié)議或者通信方式的上位機(jī)制作,有較好的工程實(shí)踐性。
5結(jié)論
通過Labview平臺(tái)設(shè)計(jì)電機(jī)控制上位機(jī)系統(tǒng)具備開發(fā)周期短、性能穩(wěn)定等優(yōu)點(diǎn),且能夠很好的移植到各種嵌入式平臺(tái)。LIN通信作為一種單總線通信方式,具備一主多從、高EMC可靠性、診斷方便、規(guī)范開放的優(yōu)點(diǎn),能夠很好的應(yīng)用于電機(jī)控制及各種儀表器盤控制領(lǐng)域。在Labview平臺(tái)下,通過讀取LIN配置文件,解析并處理通信數(shù)據(jù)具備經(jīng)濟(jì)實(shí)用等優(yōu)點(diǎn)。采用軟件編寫的上位機(jī)可替代專有的控制測(cè)試設(shè)備,并且可擴(kuò)充接入多項(xiàng)傳感器數(shù)據(jù)的采集。本系統(tǒng)已長期應(yīng)用于某電機(jī)控制器產(chǎn)品的控制,系統(tǒng)穩(wěn)定。
參考文獻(xiàn)
[1]孫譯文. 基于LABVIEW軟件的數(shù)據(jù)采集與分析系統(tǒng)設(shè)計(jì)[J].電工電氣,2010(1)16-18,21.
[2]吳勇,熊振華,等.基于RTX和MFC的后封裝平臺(tái)數(shù)據(jù)采集和控制系統(tǒng)[J].系統(tǒng)工程與電子技術(shù),2004,26(9):1257-1261.
[3]譚大鵬,李培玉,等.基于Qt/E的嵌入式工業(yè)監(jiān)測(cè)輕型圖形用戶界面構(gòu)件庫開發(fā)[J].計(jì)算機(jī)集成制造技術(shù),2009,15(2):399-405.
[4]楊忠仁,饒程,鄒建,等. 基于LABVIEW數(shù)據(jù)采集系統(tǒng)[J].重慶大學(xué)學(xué)報(bào),2004,27(2):32-35.
[5]劉君華, 等. 虛擬儀器圖形化編程語言[M].西安:西安電子科技大學(xué)出版社,2010.
[6]張新豐,楊殿閣,陸良,等. LIN總線的動(dòng)態(tài)調(diào)度算法設(shè)計(jì)與應(yīng)用[J].農(nóng)業(yè)機(jī)械學(xué)報(bào),2009,40(3):21-25.
中圖分類號(hào):TM306
文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1002-6886(2016)03-0087-04
作者簡介:涂文特(1986-),男,工學(xué)碩士學(xué)歷,研究方向:電機(jī)驅(qū)動(dòng)及伺服控制。
收稿日期:2015-10-27
Design of a host computer system for motor control based on LIN communication and Labview
TU Wente
Abstract:Through analysis of LDF and the text configuration file of LIN communication, we built a host computer program framework on Labview platform, and designed a host computer software with the functions of motor system control, status display, endurance test, data record and storage, waveform display, etc. The system has stable performance, low cost, high efficiency, high flexibility and good portability, thus can be used in various data collection and processing projects, and can solve the problems of complexity in design and difficulty in porting. The practice has confirmed the rationality and practicality of the system.
Keywords:Labview; LIN; motor control; host computer