張浩 張三林 石紹兵 李學(xué)斌 彭浩



摘 要:本文以DSP TMS320F28335為主控芯片,ADC和eQep模塊采樣的電壓、電流以及轉(zhuǎn)速等信號(hào)傳輸給TMS320F28335進(jìn)行處理,接著TMS320F28335通過串口將數(shù)據(jù)發(fā)送給上位機(jī)顯示。同時(shí)由Python編程實(shí)現(xiàn)的上位機(jī)軟件也能夠在其界面中控制電機(jī)的啟停、正反轉(zhuǎn)和加減速。
關(guān)鍵詞:串口 Python TMS320F28335
Three-phase AC Motor Control System based on Python Serial Port
Zhang Hao Zhang Sanlin Shi Shaobing Li Xuebin Peng Hao
Abstract:In this paper,DSP TMS320F28335 is used as the main control chip. The voltage,current and speed signals sampled by ADC and eQep modules are transmitted to the DSP for processing,and then the DSP sends the data to the host computer for display through the serial port. At the same time,the host computer software programmed using Python can also control the start and stop,forward and reverse rotation,acceleration and deceleration of the motor in its interface.
Key words:serial port,Python,TMS320F28335
交流異步電機(jī)是一種常用的電動(dòng)汽車驅(qū)動(dòng)電機(jī),具有調(diào)速性能好、成本低、可靠性高等特點(diǎn)。交流異步電機(jī)的控制性能影響著電動(dòng)汽車的動(dòng)力和續(xù)航里程,對(duì)交流異步電機(jī)的控制一般采用矢量控制策略。為了便于新能源汽車專業(yè)學(xué)生學(xué)習(xí)交流電機(jī)的控制原理,本文面向新能源汽車實(shí)驗(yàn)室建設(shè)項(xiàng)目,使用上下位機(jī)的架構(gòu)構(gòu)建了三相異步電機(jī)矢量控制平臺(tái)。
1 系統(tǒng)工作原理
使用DSP TMS320F28335對(duì)三相異步感應(yīng)電機(jī)進(jìn)行矢量控制[1-3]。DSP通過ADC和eQep模塊采樣電機(jī)驅(qū)動(dòng)板的電壓、電流和轉(zhuǎn)速,并將處理得到的信號(hào)通過串口發(fā)送給上位機(jī)。上位機(jī)軟件的顯示模塊負(fù)責(zé)接收,處理和顯示。而上位機(jī)軟件的控制模塊則負(fù)責(zé)控制電機(jī)的啟停,正反轉(zhuǎn)和加減速,將相應(yīng)指令下發(fā)給DSP,DSP處理后再通過ePWM模塊給驅(qū)動(dòng)板PWM信號(hào),實(shí)現(xiàn)對(duì)電機(jī)的控制。
2 硬件設(shè)計(jì)
系統(tǒng)硬件原理如圖1所示,此系統(tǒng)以TMS320F28335為核心,上位機(jī)通過串口通信(協(xié)議)下發(fā)轉(zhuǎn)速、轉(zhuǎn)矩等控制指令;下位機(jī)則通過串口通信將相關(guān)物理量狀態(tài)傳輸至可視化界面。
3 軟件設(shè)計(jì)
3.1 下位機(jī)軟件設(shè)計(jì)
基于TMS320F28335的主程序流程如圖2所示。系統(tǒng)上電后,經(jīng)過片上外設(shè)的初始化,系統(tǒng)進(jìn)入死循環(huán),等待中斷的發(fā)生。系統(tǒng)采用ePWM定時(shí)器來設(shè)定下位機(jī)軟件的控制周期。主中斷的控制流程如圖3所示,矢量控制算法在中斷程序中實(shí)現(xiàn)。為了接收上位機(jī)的指令,DSP通過片上SCI模塊接收串口數(shù)據(jù)包,并對(duì)其解碼及處理。為了使用戶得到實(shí)時(shí)的電機(jī)狀態(tài)信息,DSP以一定的時(shí)間間隔通過SCI模塊發(fā)送串口數(shù)據(jù)給上位機(jī)。
3.2 上位機(jī)軟件設(shè)計(jì)
本文選用Python語言作為上位機(jī)軟件的開發(fā)工具,它相較于其它語言更加易懂,便于開發(fā)[4,5]。Python是一種面向?qū)ο蟮母呒?jí)語言,但也可以很方便地進(jìn)行面向過程的設(shè)計(jì)。
本文使用Qt Designer來制作GUI可視化界面,實(shí)現(xiàn)人機(jī)交互。Qt是一個(gè)跨平臺(tái)的開源圖形界面應(yīng)用程序開發(fā)框架,支持多種操作系統(tǒng),具有良好的模塊化封裝機(jī)制,便于軟件開發(fā)[6]。Qt Designer是以所見即所得的方式制作用戶界面的,用戶界面如圖4所示。在界面的左端,是上位機(jī)軟件的控制部分,用戶可以通過控制按鈕來控制電機(jī)的啟停和正反轉(zhuǎn),并可對(duì)電機(jī)的速度進(jìn)行設(shè)置。界面的右端是電機(jī)各種狀態(tài)信息的實(shí)時(shí)顯示。在界面設(shè)計(jì)完成之后,需要利用PyUIC 工具將界面資源轉(zhuǎn)換為py腳本文件,以應(yīng)用在Python工程中。
在Python開發(fā)環(huán)境中,使用第三方庫Pyserial實(shí)現(xiàn)上位機(jī)與下位機(jī)之間的串口通信[7]。Pyserial功能強(qiáng)大,可方便地開發(fā)串口終端。通過Pyserial,可以實(shí)現(xiàn)串口設(shè)備號(hào)、波特率的設(shè)置,以及串口的打開、關(guān)閉和收發(fā)。用戶對(duì)串口的設(shè)置如圖4所示。在Pyserial中,接收下位機(jī)串口數(shù)據(jù)的指令是read命令,而向DSP發(fā)送數(shù)據(jù)使用write命令。
為了完成上下位機(jī)的通信,本文設(shè)計(jì)了用戶層的串口通信協(xié)議。通信協(xié)議是本次設(shè)計(jì)中最靈活的部分,該協(xié)議定義了數(shù)據(jù)包格式,即在數(shù)據(jù)包中,包的頭部字節(jié)串、尾部字節(jié)串、實(shí)際信息在數(shù)據(jù)包中的位置,以及對(duì)實(shí)際信息的打包規(guī)則和解析規(guī)則。這樣,串口發(fā)送端便可按照約定的數(shù)據(jù)包格式發(fā)送數(shù)據(jù),而接收端按照該格式解析出數(shù)據(jù)。上位機(jī)以有限狀態(tài)機(jī)的形式不斷接收來自下位機(jī)的字節(jié)數(shù)據(jù),并判別出數(shù)據(jù)包頭部和實(shí)際信息,當(dāng)接收完之后對(duì)數(shù)據(jù)進(jìn)行解析處理并在界面中顯示出來。
4 總結(jié)
本文設(shè)計(jì)了一款基于Python串口的三相交流電機(jī)控制系統(tǒng)。該系統(tǒng)的上位機(jī)通過串口通信方式,向下位機(jī)傳達(dá)控制指令并接收下位機(jī)反饋的信號(hào),經(jīng)多次實(shí)驗(yàn),發(fā)現(xiàn)該系統(tǒng)使用方便,并滿足對(duì)電機(jī)控制的實(shí)際需求。由于它是由各個(gè)模塊組裝起來的,易于開發(fā)與學(xué)習(xí),可應(yīng)用到實(shí)驗(yàn)室和教室,具有很強(qiáng)的參考性和實(shí)用性。
本項(xiàng)目的未來方向是進(jìn)一步地開發(fā)虛擬示波器模塊,使用戶能夠方便地觀察到關(guān)鍵時(shí)間窗口中的信號(hào)波形。
大學(xué)生創(chuàng)新創(chuàng)業(yè)訓(xùn)練計(jì)劃項(xiàng)目:三相交流感應(yīng)電機(jī)矢量控制實(shí)驗(yàn)平臺(tái)(201911736018)。
參考文獻(xiàn):
[1]李拓,杜慶楠. 基于TMS320F28335的三相感應(yīng)電機(jī)矢量控制系統(tǒng)的研究[J].軟件,2018,39(03):130-135.
[2]李少龍,文強(qiáng),董碩,等.基于TMS320F28335叉車異步電機(jī)FOC控制器設(shè)計(jì)[J]. 電子測(cè)量技術(shù),2019,42(17):59-64.
[3]李瑾.三相異步電機(jī)的矢量控制系統(tǒng)[J].湖北工程學(xué)院學(xué)報(bào),2018,38(03):85-87.
[4]黃建軍,李宥謀,劉婧,等. 基于Python語言的自動(dòng)化測(cè)試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 現(xiàn)代電子技術(shù),2017,(04):47-51.
[5]史記征,崔俊.基于Python 語言的串行通信實(shí)現(xiàn)方法分析[J].電腦知識(shí)與技術(shù):學(xué)術(shù)版,2019,015(016):24-26.
[6]于凱華,李華龍.基于QtDesigner插件機(jī)制的二次開發(fā)及應(yīng)用[J].電腦知識(shí)與技術(shù),2019,15(12):293-294.
[7]羅亮,陳紅,盧解卿. 談如何用Python控制Arduino[J]. 中國(guó)信息技術(shù)教育,2016(8):65-67.