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

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

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

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