|
|
| <!--插入廣告JS代碼--> |
摘 要:采用DSP雖然可以實(shí)現(xiàn)無刷直流機(jī)的高性能實(shí)時(shí)控制,但僅靠DSP,很難再對系統(tǒng)的關(guān)鍵信息進(jìn)行深入的分析和處理。為此,本文采用PC機(jī)和DSP的主從結(jié)構(gòu),在Matlab環(huán)境下,設(shè)計(jì)了一種PC機(jī)和DSP控制系統(tǒng)的串行通信實(shí)現(xiàn)方案。該方案利用了Matlab強(qiáng)大的數(shù)值分析功能,不但可以實(shí)現(xiàn)電機(jī)轉(zhuǎn)速、電樞電流等信號的實(shí)時(shí)采集和分析,而且可以對控制系統(tǒng)參數(shù)進(jìn)行在線調(diào)試。該方案界面友好,結(jié)構(gòu)簡單,易于實(shí)現(xiàn)。實(shí)驗(yàn)結(jié)果表明,這種方案是可行的。
關(guān)鍵詞:無刷直流電動(dòng)機(jī)(BLDCM) DSP Matlab 串行通信
1 引言
TMS320LF2407(以下簡稱LF2407)DSP控制器集高速信號處理能力和適應(yīng)電機(jī)控制的外圍電路與一體,近年來在交流伺服系統(tǒng)中得到了廣泛的應(yīng)用,并取得了良好的效果[1][2]。但是,DSP在事件處理方面顯得有些不足,具體表現(xiàn)是I/O口較少以及人機(jī)界面不太友好,DSP軟件資源也沒有PC機(jī)豐富,這些因素限制了DSP的應(yīng)用。采用PC機(jī)和DSP主從結(jié)構(gòu)的串行通信技術(shù)能夠在一定程度上解決這些問題,使用這種方法可以很好地實(shí)現(xiàn)無刷直流機(jī)DSP控制系統(tǒng)的參數(shù)調(diào)試、轉(zhuǎn)速信號實(shí)時(shí)采集及處理。
目前國內(nèi)外有大量文獻(xiàn)介紹關(guān)于串行通信的實(shí)現(xiàn)方案,都取得了較好的效果,但大部分文獻(xiàn)介紹的是采用WINDOWS API函數(shù)或者VB、VC、DELPH來實(shí)現(xiàn)上位機(jī)的界面和串行通信[3][4][5]。然而,在無刷直流機(jī)速度控制系統(tǒng)中,為使調(diào)試者實(shí)時(shí)了解系統(tǒng)運(yùn) 行的信息,需要實(shí)時(shí)采集電機(jī)轉(zhuǎn)速、電樞電流等信息,并進(jìn)行數(shù)據(jù)分析和加工處理。顯然,利用現(xiàn)有的PC機(jī)與DSP串行通信方案,可以很方便地實(shí)現(xiàn)電機(jī)轉(zhuǎn)速、電樞電流等信息的實(shí)時(shí)采集。如果還要進(jìn)行復(fù)雜的數(shù)據(jù)分析和處理,就不太方便了?紤]到Matlab具有強(qiáng)大的數(shù)值分析計(jì)算功能,為減少在數(shù)據(jù)分析和處理上的工作量,可以直接使用Matlab實(shí)現(xiàn)PC機(jī)與與DSP之間的串行通信。這樣,不但可以實(shí)現(xiàn)PC機(jī)與與DSP控制系統(tǒng)間的信息交換,而且可以借助Matlab的工具箱,對控制系統(tǒng)的數(shù)據(jù)進(jìn)行分析、加工、處理。

圖1 無刷直流電機(jī)控制系統(tǒng)
2 無刷直流電機(jī)控制系統(tǒng)
基于DSP無刷直流電機(jī)轉(zhuǎn)速伺服控制系統(tǒng)如圖1所示,整個(gè)系統(tǒng)由無刷直流電機(jī)、電源整流濾波電路、逆變電路、功率驅(qū)動(dòng)電路、DSP控制器等部分組成。系統(tǒng)采用主從式結(jié)構(gòu),PC機(jī)作為上位機(jī),進(jìn)行實(shí)時(shí)監(jiān)控和命令的發(fā)送,以LF2407為核心構(gòu)成的伺服電機(jī)控制部分為下位機(jī)。系統(tǒng)采用電流、轉(zhuǎn)速雙閉環(huán)來實(shí)現(xiàn)電機(jī)轉(zhuǎn)速高精度伺服,采用PWM方式控制電機(jī)的電樞電流。上位機(jī)通過串口將參考轉(zhuǎn)速的大小和方向發(fā)送給下位機(jī),DSP根據(jù)參考轉(zhuǎn)速通過控制器來調(diào)整PWM的占空比,從而改變電機(jī)的電磁力矩,使得電機(jī)轉(zhuǎn)速跟蹤參考轉(zhuǎn)速的變化。由于LF2407是專為電機(jī)驅(qū)動(dòng)控制設(shè)計(jì)的DSP,整個(gè)系統(tǒng)的外圍器件很少,結(jié)構(gòu)簡單,具有高可靠性和可擴(kuò)充性。
3 串行通信的實(shí)現(xiàn)
DSP與PC機(jī)之間串行通信的實(shí)現(xiàn)包括通信硬件設(shè)計(jì)、上位機(jī)程序設(shè)計(jì)、下位機(jī)程序設(shè)計(jì)三個(gè)部分。
3.1 通信硬件設(shè)計(jì)
PC機(jī)的RS-232-C電路的電平與LF2407 的電平不兼容,必須通過電平轉(zhuǎn)換電路后才能連接。MAX232芯片能很好地完成這一功能,該芯片具有一個(gè)專有的低壓降發(fā)送器輸出級,只需要4個(gè)1μf的外接電容就可實(shí)現(xiàn),具體主電路如圖2所示。

3.2 上位機(jī)程序的設(shè)計(jì)
Matlab是一種解釋執(zhí)行的腳本語言,與VB非常類似,Matlab不僅可以解釋并執(zhí)行用戶的數(shù)值計(jì)算程序,還可以在腳本程序控制下生成圖形界面,使得應(yīng)用程序的界面更為友好。上位機(jī)程序界面就是通過這種方式實(shí)現(xiàn)的,限于篇幅,本文不多做闡述,只對Matlab下串口通信的具體實(shí)現(xiàn)做詳細(xì)敘述。

對于Windows系統(tǒng)而言,硬件設(shè)備的驅(qū)動(dòng)程序有著嚴(yán)格的規(guī)范,可以用C和匯編語言開發(fā),而Matlab本身是個(gè)跨平臺軟件,并不具有直接訪問硬件的能力。但是在Matlab 6中,提供了對系統(tǒng)串行口的支持,這是通過類serial來實(shí)現(xiàn)的。Matlab對串口的支持不如VC等高級語言完善,如果要以中斷方式對串口事件進(jìn)行響應(yīng),必須采用比較復(fù)雜的事件和回調(diào)函數(shù)機(jī)制,同時(shí)由于類serial建立在Java的基礎(chǔ)上,實(shí)現(xiàn)起來效率比較低。但是對于PC機(jī)和DSP之間的串口通信任務(wù),Matlab的串口對象已經(jīng)足夠應(yīng)付了。實(shí)驗(yàn)也取得了比較滿意的效果。
在Matlab中建立串口對象的語法為:s=serial('port','p1',v1,'p2','v2',……)
其中port是端口的名字,一般是‘com1’或‘com2’;px為屬性名,vx為屬性值。一般來說,需要設(shè)定的屬性有如下幾個(gè):
BaudRate:串口傳輸?shù)牟ㄌ芈,試?yàn)中取為“38400”
Parity: 串口傳輸?shù)钠媾夹r?yàn)位,試驗(yàn)中取值為“none”
DataBits: 串口傳輸?shù)臄?shù)據(jù)位數(shù),試驗(yàn)中取值為“8”
StopBits: 串口傳輸?shù)耐V刮,?shí)驗(yàn)中取值為“1” ''
語句handles.com1=serial('com1','baudrate',38400,'parity','none','databits',8,'stopbits',1)就以波特率38400,無奇偶校驗(yàn)位,數(shù)據(jù)位8位,停止位1位,建立了串口對象com1,handles.com1可以認(rèn)為是該設(shè)備的句柄。隨后可以用文件操作的方式直接對handles.com1進(jìn)行打開、關(guān)閉和讀寫操作。通常使用的函數(shù)為:fopen、fclose、fprintf和fread等。
串行通信雙方DSP均需要進(jìn)行數(shù)據(jù)的接受和發(fā)送。本系統(tǒng)在通信過程中,點(diǎn)擊界面上的發(fā)送按鈕,上位機(jī)將把給定的轉(zhuǎn)速大小、方向和相關(guān)的控制器參數(shù)發(fā)給DSP,點(diǎn)擊接受按鈕,上位機(jī)將接收來自DSP的電機(jī)繞組電流、電壓和轉(zhuǎn)速信息,并顯示出來。
3.2 下位機(jī)程序的設(shè)計(jì)
本系統(tǒng)所用的DSP為TI公司專為數(shù)字電機(jī)控制而設(shè)計(jì)的TMS320LF2407A,具有可編程串行通信接口模塊(SCI),支持CPU與其它使用標(biāo)準(zhǔn)格式的異步外設(shè)之間的數(shù)字通信。DSP與上位機(jī)的接收和發(fā)送都是通過此模塊進(jìn)行的。SCI接收器和發(fā)送器均為雙緩沖結(jié)構(gòu),有各自的使能位和中斷位,且相互獨(dú)立。支持全雙工工作方式。為確保數(shù)據(jù)的完整性,SCI對接收的數(shù)據(jù)進(jìn)行間斷檢測、奇偶性、超時(shí)以及幀錯(cuò)誤檢測。通過16位波特率寄存器,可以選擇65535種不同的波特率[6]。
本系統(tǒng)中上位機(jī)每次將確定個(gè)數(shù)的
圖3(a) 下位機(jī)接收程序流程圖 圖3(b) 下位機(jī)發(fā)送程序流程圖 |
一組數(shù)據(jù)發(fā)送給下位機(jī),發(fā)送數(shù)據(jù)的個(gè)數(shù)設(shè)為n,下位機(jī)直到接收完了整組數(shù)據(jù),即一次接收到n個(gè)數(shù)據(jù)后才更新電機(jī)的參考轉(zhuǎn)速的大小、方向以及控制系統(tǒng)的參數(shù)等。DSP在主程序的等待狀態(tài)時(shí)檢測需要發(fā)給上位機(jī)的數(shù)據(jù)是否更新以及發(fā)送器此時(shí)是否為空,僅當(dāng)數(shù)據(jù)已經(jīng)更新,發(fā)送器又為空時(shí),下位機(jī)才向上位機(jī)發(fā)送數(shù)據(jù)。下位機(jī)接收和發(fā)送數(shù)據(jù)程序流程圖如圖3(a)、3(b)所示。DSP串行通信模塊SCI的專用寄存器參數(shù)設(shè)置如下:SPLK #0fh,SCICCR ;一個(gè)停止位,無奇偶校驗(yàn)位,8個(gè)數(shù)據(jù)位
SPLK #23h,SCICTL1 ;使能發(fā)送器和接受器
SPLK #02h,SCICTL2 ;使能接收器中斷觸發(fā)
SPLK #00h,SCIHBAUD ;
SPLK #81h,SCILBAUD ;設(shè)置波特率為38400b/s
SPLK #00h,SCIPRI ;設(shè)置SCI接受中斷的優(yōu)先級為高
4 結(jié)論
通過上面所介紹的設(shè)計(jì)思想和方法,在Matlab環(huán)境下,實(shí)現(xiàn)了無刷直流電機(jī)DSP控制系統(tǒng)PC機(jī)的串行通信。采用DSP和PC的主從結(jié)構(gòu)既能發(fā)揮DSP的數(shù)值處理能力,又具有良好的人機(jī)接口界面,方便了無刷直流電機(jī)控制系統(tǒng)的參數(shù)調(diào)試。同時(shí)在Matlab環(huán)境下,利用Matlab功能強(qiáng)大的工具箱,對采集來的轉(zhuǎn)速、電流等數(shù)據(jù)的處理非常便捷。實(shí)驗(yàn)結(jié)果表明該方案界面友好,結(jié)構(gòu)簡單,性能可靠,易于實(shí)現(xiàn)。
參考文獻(xiàn)
[1] 汪銳, 許靜宇. 基于DSP芯片的永磁無刷直流電機(jī)控制器[J]. 微電機(jī), 2000, 33(4): 27-29
[2] 謝洪友, 呂恬生. 基于數(shù)字信號處理器的無刷直流電機(jī)控制系統(tǒng) [J]. 機(jī)電工程,2003,19(2): 43-45
[3] 許國平, 盧慧芬. 利用VB6.0實(shí)現(xiàn)PC機(jī)與DSP之間的串行數(shù)據(jù)通信[J]. 計(jì)算機(jī)應(yīng)用, 2001, 27(9): 7-10
[4] 汪大全, ****. 基于VC6.0實(shí)現(xiàn)DSP與PC之間的串行通信[J]. 現(xiàn)代電子技術(shù),2002,15(6): 29-31
[5] 張鵬, 李漢強(qiáng), 丁琳. 矢量控制系統(tǒng)中DSP與PC機(jī)通信的實(shí)現(xiàn)[J]. 武漢理工大學(xué)學(xué)報(bào),2002,26(2): 214-216
[6] 劉和平, 王維俊等. TMS320LF240xDSP C語言開發(fā)應(yīng)用. 北京:北京航空航天大學(xué)出版社,2003