MATLAB/Simulink的直流电机调速系统C代码生成※
2015-07-02周丹曾宇航
周丹,曾宇航
(1.西南科技大学,绵阳621010;2.重庆大学)
引 言
电机在国民经济生产中有着举足轻重的地位,为了使电机适应不同的工况,需要开发电机控制系统对其转速转矩等进行有效快速的控制。但是传统的电机控制系统开发是一个复杂而繁琐的过程,本文介绍一种相对简单的电机控制系统开发流程。利用MATLAB/Simulink搭建异步电机的矢量控制模型完成控制参数的调整,在MATLAB环境下将已建好的控制模型配合TI DSP芯片完成控制模型的仿真开发和代码生成,最后根据整个模型绘制电路板,完成硬件电路,验证仿真模型及生成代码的正确性与系统的可行性。
1 直流电机MATLAB/Simulink仿真模型
1.1 转速负反馈单闭环直流调速系统模型
根据图1所示的转速负反馈单闭环直流调速系统静态结构图,构造出直流电机转速负反馈单闭环直流调速系统的模型。
图1 转速负反馈单闭环直流调速系统静态结构图
由于在实际硬件设计中,可以用光电码盘直接测算转速,所以无需将转速转换为电压,直接将测算转速作为反馈量与给定转速相对比,完成整个调节过程,构造的仿真模型略——编者注。
完成仿真模型的构建后进行仿真试验,检验模型的转速调节能力和抗干扰能力,包括恒转矩变转速调节仿真和恒转速变转矩调节仿真。仿真结果分别如图2和3所示。
(1)恒转矩变转速仿真
转矩给定为30 N/m,初始转速为500 rpm,到2 s时阶跃至1000 rpm,到4 s时再次阶跃到500 rpm。
(2)恒转速变转矩仿真
图2 恒转矩变转速仿真结果
图3 恒转速变转矩仿真结果
转速给定为500 rpm,初始转矩为30 N/m,到2 s时阶跃至300 N/m,到4 s时再次阶跃到30 N/m。
根据以上仿真结果可知,系统具有较好的调节速度和准确度,但是由于是单闭环调速系统,纹波系数较大,不过用于验证和演示,其波动范围尚在可接受范围内,所以可以根据此模型构建MATLAB代码自动生成模型并进行硬件实验验证。
1.2 MATLAB配置
为实现MATLAB自动生成CCS代码,首先要完成MATLAB对于CCS的路径配置和相关的必要配置,首先在MATLAB命令行窗口里面输入指令:xmakefilesetup,进入配置界面,配置步骤如图4所示。
Tool Directories配置完成后,根据电脑软件安装检验每一项路径是否正确,若默认设置不正确,可点击configuration旁的new按钮新建自己的设置,完成设置后单击ok按钮,关闭窗口。
完成上述步骤后,在MATLAB中输入check EnvSetup('ccsv5','f28027','check'),会出现6个配置表,全部配置完成后如下所示:
图4 CCS版本选择及路径配置
这样便表示配置成功,如果无法实现自动配置,则根据每一项中的变量和对应地址,在计算机中手动添加系统变量即可。
1.3 代码生成模型
整个控制系统要实现转速采集,当前采集转速作为反馈量与给定转速进行比较,通过Pin1模块进行PI调节,控制输出PWM的占空比来调节输出电压,达到控制转速的要求。控制系统程序执行流程图如图5所示。
图5 控制系统程序执行流程图
根据图5所示的程序执行流程图搭建调速系统C代码生成模型,模型略——编者注。模型中,以I/O口模块作为光电码盘计数输入口,通过MATLAB Function完成计数和计数采样时间判断,在采样周期结束时,触发Function-Call Subsystem1将计数值转换成转速,与给定转速对比完成输出PWM的脉宽调节,从而达到调节转速的目的。由于在MATLAB的TI C2000中采用ePWM模块的中断作为定时器比较方便,所以选择ePWM作为中断源,每0.001 s触发一次中断,进入中断完成中断计数,计数500次(0.5 s)为一个采样周期。
上述模型构建选择simulation/Model configuration Parameters完成最后的配置。图6和图7中圈出为需要设置的地方,其余选项默认即可。
图6 Solver配置
图7中Target selection中需要配置的3个选项根据个人所需和使用的DSP型号完成配置;Toolchain需要根据使用的CCS版本配置,完成以上所有配置后,选择simulink中的bulid model完成代码自动生成。
图7 Code Generation配置
2 代码正确性验证
2.1 硬件电路
根据代码生成模型构建硬件电路:GPIO口选用了GPIO02,PWM输出选择的是ePWM1A,20分度的光电码盘完成测速,L298N作为电机驱动,电机电源选择7.2 V直流电源。硬件电路原理图略——编者注。
2.2 CCS配置
首先按照图8新建工程文件,并将MATLAB生成的文件夹中所有的.asm、.c、.h文件复制到工程中,并根据生成代码所需头文件配置头文件路径,如图9所示。
图8 新建工程文件
完成以上步骤后,编译代码并烧录,即可验证代码的正确性。
2.3 验证结果
图10所示为电机转速波形图,此图为CCS连接到DSP上运行时所显示的DSP采集的转速。在某一时刻突增负载,之后保持一段时间后减去负载,可以看出调速系统响应十分迅速,同时转速波形与仿真波形都有较大的纹波系数,不过仍在可接受范围之内。
图9 头文件配置添加
为了验证DSP采集转速的准确性,使用了另外一块TMS320F28027编程采集转速,并用数码管显示,两者比对证明了生成的DSP代码是正确的。验证转速数码管显示略——编者注。通过程序烧录后的实验验证,证明了MATLAB建模生成C代码的正确性和可行性。
图10 电机转速波形图
结 语
本文介绍一种新的电机控制系统的开发流程,讲解使用MATLAB结合CCS完成TI系列DSP的开发过程,这种开发过程相较于以往需先查阅芯片数据手册、然后人工编程完成开发,省去了代码编写的过程,大大缩短了开发周期。不过需要对MATLAB比较了解,并且在代码生成模型的搭建中要有正确清晰的逻辑,才能保证生成代码正确可行。如果掌握了这种开发方式,能为今后的学习工作带来很多的便利。
编者注:本文为期刊缩略版,全文见本刊网站www.mesnet.com.cn。
[1]周渊深.交直流调速系统与MATLAB仿真[M].北京:中国电力出版社,2007.
[2]刘杰,周宇博.基于模型的设计:MSP430/F28027/F28335DSP篇[M].北京:国防工业出版社,2011.
[3]克尼汉.C程序设计语言[M].2版.宝文,译.北京:机械工业出版社,2004.
[4]TI公司.TMS320F28027使用手册,2012.