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