张松松,卢 刚,李声晋,周 勇
(西北工业大学,陕西西安710072)
无刷直流电动机因其优越的性能引起了人们的足够重视,在各个领域得到了广泛应用。对控制要求低的场合一般采用基于霍尔位置传感器的无刷直流电动机,对控制要求比较高的场合则采用基于旋转变压器(以下简称旋变)的无刷直流电动机。本文的控制对象是基于旋变式的无刷直流电动机,其控制芯片是TI公司的TMS320F28335。该芯片是32位浮点DSP控制器,其性能较好,有多篇论文对其进行了详细介绍,不再累述。本文主要是通过研究无刷直流电动机控制器与上位机的数据通讯,在软件上来实现AD速度指令范围的调整,研究设计了上位机监控平台和与之相对应的下位机接口程序,实验结果验证了编写的上位机监控平台和电机程序符合本文的设计要求。
系统分为硬件和软件两部分,硬件是由我们设计研发的基于TMS320F28335控制的无刷直流电动机控制器,软件部分包括编写的上位机监控界面程序和与之相对应的下位机程序。限于篇幅,本文不展开介绍硬件设计的原理,着重介绍上位机监控界面的AD速度指令范围调整功能的实现。
硬件部分是整个实验的基础,其硬件框架如图1所示。
图1 硬件电路原理框架图
如图1所示,无刷直流电动机控制器以DSP控制芯片TMS320F28335为控制核心,通过电路板上的激励电路给电机激励信号,旋变检测到转子的角位置信息-正余弦信号;正余弦信号经差分电路处理后输入至旋变信号解算芯片,由其输出的转子角位置数字信号经锁存器输入到DSP;锁存器工作时所需要的时钟控制信号由解算芯片控制,输入使能是由DSP在程序上实现的。DSP根据转子的角位置和由外界给定的或者程序中默认的速度指令来控制SPWM信号输出,SPWM控制信号需经过电流缓冲芯片的电流缓冲输出到MOS功率管的驱动控制芯片,从而控制电机转动。DSP在程序上不仅实现了对SPWM控制信号的输出,同时还通过输出控制信号到功率模块驱动控制芯片控制其是否工作,这两个环节在程序上控制电机是否转动。当电机旋转发生故障时,功率模块驱动控制芯片会通过电流缓冲芯片向DSP发送FAULT故障信号,以确保电机及控制器的安全。因需要电机在不同的转速下转动,因此需要外界给定一个可以调节的指令,本文采取的是增加调速旋钮来手动调节电机转速,由AD指令调速模块来实现的。
因RS422信号抗干扰能力比较强,传输距离远,因此与上位机进行SCI数据通讯时控制器输出的是RS422信号可实现远程监控。计算机(上位机)串口接收的为RS232信号,因此需要在计算机与控制器之间接RS422-RS232转换器。除SCI通讯之外,控制器还可以进行SPI通讯和CAN通讯,本文并未涉及。
软件部分的功能主要是实现AD速度指令范围调整、旋变零点调整、上位机调速、AD调速、母线电压监控、电机三相电流监控和旋变信号观察。软件框架及操作流程如图2所示,限于篇幅,本文仅介绍AD速度指令范围调整功能,交付用户之前,需将其他程序屏蔽只保留AD调速程序,此部分将在后续的篇幅中介绍,在此不再详述。
图2 软件原理框架及操作流程
上位机与下位机的数据通讯分为上位机向下发送和由下位机向上位机发送两部分,其原理分别如图3(a)、图3(b)所示。上位机与下位机之间的数据通讯是以数据包的形式发送和接收的,因发送的数据类型不同,需要人为定义一个通讯协议。一个数据包括五部分:包头、指令字符、高8位二进制数据、低8位二进制数据和CRC校验码。包头是接收数据包的标志;指令字符是将发送的16位二进制数据分类,由此部分定义数据通讯协议;CRC校验码是为了防止发送数据错误。在上位机向下发送时一定要加延时,否则会出现发送紊乱,上位机显示屏的数据显示是通过画图定时器中断来画图的。下位机向上位机发送时要注意设定的定时器中断的时间,产生一次定时中断并不是只发送个数据包,要将中断时间设置的稍微长一点,以防止卡死在定时器中断函数中。
图3 上位机与下位机的数据通讯
在此之前曾用LabVIEW 8.6编写过上位机界面程序,但因掌握的技术不是很成熟,编写的上位机界面程序在运行时所占内存比较大,且在串口通讯部分不是很理想,因此本文的上位机界面程序采用CVI8.5 编写。
CVI8.5的串口通讯设置是通过界面和C语言程序来实现的,程序流程如图4所示。
图4 串口通讯设置程序流程
在串口设置中,最重要的部分是串口参数设置和安装回调函数COM_rec这两部分。串口参数设置需要与下位机的串口设置一致;安装回调函数的作用是让上位机在接收到数据包的包头后产生中断,进入函数COM_rec进行解包分类处理,其原理如图5所示。
图5 回调函数COM_rec程序流程
在编写回调函数时要注意存放接收数据的数组COM_data的大小,如果太小则会使上位机卡死,因此尽量取得大一些。在解包完成后注意将高8位与低8位这两部分合成,顺序不能颠倒。解包完成后需要对其进行分类处理,此部分是依照由下位机向上位机发送数据的通讯协议表来编写,通讯协议表是根据需要编写的,限于篇幅,不予介绍。
用户通过调速旋钮实际上是通过调整电位计来调速,即电机控制中常见的AD指令调速。AD调速电路将电位计上的电压等比例转换到DSP芯片可接受的范围,DSP通过AD模块采集电压,将其转换为AD数据,因AD调速电路中使用的元器件因制造工艺问题会有一定的偏差,导致采集的值与理论上计算值有偏差。因此,此部分功能是调整AD速度指令的范围,使得速度指令的零点(速度指令为正则正转,为负则反转,为零则停转)与调速旋钮的中点相对应。当速度指令最大值与最小值的绝对值的差在10以内,则认定速度指令的零点与旋钮的中点对齐。AD速度指令范围调整原理流程如图6所示。
图6 AD速度指令范围调整程序流程
电机控制器程序是由C语言编写,通过SEED-XDS560PLUS程序下载仿真器将程序烧入TMS320F28335控制芯片中。本文主要研究设计了数据上传和接收程序、AD速度指令范围调整程序。数据上传和接收程序原理请见上位机与下位机数据通讯原理部分,此处不在详述。除本文所研究的程序之外,完整的电机控制程序还包括系统配置程序、读取AD程序、旋变信号解算程序、电机极对数选择程序、SPWM波产生程序和测速程序等,有些程序是在原有程序技术的基础上移植过来的,稍有改动,本文不再累述,此处只简单介绍下位机AD速度指令范围调整程序的原理。
如图7所示,全局变量speed_zhiling就是要调整的速度指令,改变其值可以改变SPWM幅值,从而控制输出正弦波。程序可分为三部分,前面是针对电机转动的情况下的处理,即将速度缓慢降为零;中间是指令范围调整主体部分;后面是调整结束处理部分。AD速度指令范围调整是在上位机的配合下完成的,因此整个程序由两个函数组成,前两部分放在一个函数中,属于调整函数;后面的部分单独一个函数,属于结束处理函数。在调试时,旋钮一定要按图2所述的操作办法重复几次。由AD模块读取的值一定要经过数字滤波处理,否则会出现带毛刺的波形,造成测试不准确。
图7 电机AD速度指令范围调整程序流程
通过SEED-XDS560PLUS程序下载仿真器将程序烧入TMS320F28335控制芯片,断电之后,断开与仿真连接器的连接,将其与计算机相连,给控制器上电,运行上位机。
对不同的旋钮,AD调整参数是不同的。即使是同一个旋钮在同一位置时读取的AD值也会有一点偏差,这跟电位计的制造精度有关,但在实验的允许误差之内。在实验的过程中调整的AD速度指令的最大与最小值的绝对值的差值完全可以在10以内,实验结果如图8所示。
图8 AD参数为2 222时调整的实验结果
图8的实验结果表明了本文不仅实现了上位机与电机控制器的数据通信,同时还完成了AD速度指令范围调整功能。
[1] 王建新,杨世风,隋美丽.LabWindows/CVI测试技术及工程应用[M].北京:化学工业出版社,2006.
[2] Texas Instrument Incorporated.TMS320C28X 系列 DSP的 CPU与外设(上)、(下)[M].张卫宁,译.北京:清华大学出版社,2004.
[3] 宗波,蒋晓春,王轩.DSP芯片SCI模块在电力电子控制装置中的应用[J].中国科技信息,2010(3):108-110.
[4] 訾兰.TMS320F28335 SCI基于 RS-422标准的应用[J].导航,2010(2):55-58.