基于 Python 串口的三相交流电机控制系统

2021-08-09 01:48张浩张三林石绍兵李学斌彭浩
时代汽车 2021年14期
关键词:三相上位数据包

张浩 张三林 石绍兵 李学斌 彭浩

摘 要:本文以DSP TMS320F28335为主控芯片,ADC和eQep模块采样的电压、电流以及转速等信号传输给TMS320F28335进行处理,接着TMS320F28335通过串口将数据发送给上位机显示。同时由Python编程实现的上位机软件也能够在其界面中控制电机的启停、正反转和加减速。

关键词:串口 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

交流异步电机是一种常用的电动汽车驱动电机,具有调速性能好、成本低、可靠性高等特点。交流异步电机的控制性能影响着电动汽车的动力和续航里程,对交流异步电机的控制一般采用矢量控制策略。为了便于新能源汽车专业学生学习交流电机的控制原理,本文面向新能源汽车实验室建设项目,使用上下位机的架构构建了三相异步电机矢量控制平台。

1 系统工作原理

使用DSP TMS320F28335对三相异步感应电机进行矢量控制[1-3]。DSP通过ADC和eQep模块采样电机驱动板的电压、电流和转速,并将处理得到的信号通过串口发送给上位机。上位机软件的显示模块负责接收,处理和显示。而上位机软件的控制模块则负责控制电机的启停,正反转和加减速,将相应指令下发给DSP,DSP处理后再通过ePWM模块给驱动板PWM信号,实现对电机的控制。

2 硬件设计

系统硬件原理如图1所示,此系统以TMS320F28335为核心,上位机通过串口通信(协议)下发转速、转矩等控制指令;下位机则通过串口通信将相关物理量状态传输至可视化界面。

3 软件设计

3.1 下位机软件设计

基于TMS320F28335的主程序流程如图2所示。系统上电后,经过片上外设的初始化,系统进入死循环,等待中断的发生。系统采用ePWM定时器来设定下位机软件的控制周期。主中断的控制流程如图3所示,矢量控制算法在中断程序中实现。为了接收上位机的指令,DSP通过片上SCI模块接收串口数据包,并对其解码及处理。为了使用户得到实时的电机状态信息,DSP以一定的时间间隔通过SCI模块发送串口数据给上位机。

3.2 上位机软件设计

本文选用Python语言作为上位机软件的开发工具,它相较于其它语言更加易懂,便于开发[4,5]。Python是一种面向对象的高级语言,但也可以很方便地进行面向过程的设计。

本文使用Qt Designer来制作GUI可视化界面,实现人机交互。Qt是一个跨平台的开源图形界面应用程序开发框架,支持多种操作系统,具有良好的模块化封装机制,便于软件开发[6]。Qt Designer是以所见即所得的方式制作用户界面的,用户界面如图4所示。在界面的左端,是上位机软件的控制部分,用户可以通过控制按钮来控制电机的启停和正反转,并可对电机的速度进行设置。界面的右端是电机各种状态信息的实时显示。在界面设计完成之后,需要利用PyUIC 工具将界面资源转换为py脚本文件,以应用在Python工程中。

在Python开发环境中,使用第三方库Pyserial实现上位机与下位机之间的串口通信[7]。Pyserial功能强大,可方便地开发串口终端。通过Pyserial,可以实现串口设备号、波特率的设置,以及串口的打开、关闭和收发。用户对串口的设置如图4所示。在Pyserial中,接收下位机串口数据的指令是read命令,而向DSP发送数据使用write命令。

为了完成上下位机的通信,本文设计了用户层的串口通信协议。通信协议是本次设计中最灵活的部分,该协议定义了数据包格式,即在数据包中,包的头部字节串、尾部字节串、实际信息在数据包中的位置,以及对实际信息的打包规则和解析规则。这样,串口发送端便可按照约定的数据包格式发送数据,而接收端按照该格式解析出数据。上位机以有限状态机的形式不断接收来自下位机的字节数据,并判别出数据包头部和实际信息,当接收完之后对数据进行解析处理并在界面中显示出来。

4 总结

本文设计了一款基于Python串口的三相交流电机控制系统。该系统的上位机通过串口通信方式,向下位机传达控制指令并接收下位机反馈的信号,经多次实验,发现该系统使用方便,并满足对电机控制的实际需求。由于它是由各个模块组装起来的,易于开发与学习,可应用到实验室和教室,具有很强的参考性和实用性。

本项目的未来方向是进一步地开发虚拟示波器模块,使用户能够方便地观察到关键时间窗口中的信号波形。

大学生创新创业训练计划项目:三相交流感应电机矢量控制实验平台(201911736018)。

参考文献:

[1]李拓,杜庆楠. 基于TMS320F28335的三相感應电机矢量控制系统的研究[J].软件,2018,39(03):130-135.

[2]李少龙,文强,董硕,等.基于TMS320F28335叉车异步电机FOC控制器设计[J]. 电子测量技术,2019,42(17):59-64.

[3]李瑾.三相异步电机的矢量控制系统[J].湖北工程学院学报,2018,38(03):85-87.

[4]黄建军,李宥谋,刘婧,等. 基于Python语言的自动化测试系统的设计与实现[J]. 现代电子技术,2017,(04):47-51.

[5]史记征,崔俊.基于Python 语言的串行通信实现方法分析[J].电脑知识与技术:学术版,2019,015(016):24-26.

[6]于凯华,李华龙.基于QtDesigner插件机制的二次开发及应用[J].电脑知识与技术,2019,15(12):293-294.

[7]罗亮,陈红,卢解卿. 谈如何用Python控制Arduino[J]. 中国信息技术教育,2016(8):65-67.

猜你喜欢
三相上位数据包
满足法规要求的车载终端数据包加密方案分析
一场史无前例的乐队真人秀
三相异步电动机在维修电工中的难点研究
C#串口高效可靠的接收方案设计
油田三相分离器效能分析
油田三相分离器效能分析
采用并联通用内模的三相APF重复控制策略
基础油“上位”
网络数据包的抓取与识别
基于VC的PLC数据采集管理系统