3. 开环控制模型:建立电机开环模型、PWM生成模块、电压驱动仿真
好,咱们进入第三章。这一章我打算带大家亲手搭建一个电机开环控制模型。说白了,就是让电机转起来,但不去管它转得准不准、稳不稳。你可能会问:“开环控制这么简单,有什么好讲的?”嗯,别急。开环控制虽然基础,但它是所有闭环控制的地基。我在项目中见过太多人一上来就搞PID,结果电机根本转不起来,最后发现是PWM配置错了。
所以,咱们先把地基打牢。这一章的核心就三件事:电机模型、PWM生成、电压驱动仿真。走起。
3.1 电机开环模型:从物理方程到Simulink模块
先说说电机模型。我习惯用直流电机来举例,因为它的数学模型最直观。直流电机的电压平衡方程是这样的:
V = R * i + L * di/dt + e
其中,V是电枢电压,R是电枢电阻,i是电枢电流,L是电枢电感,e是反电动势。反电动势又和转速成正比:e = Ke * ω,Ke是反电动势常数,ω是角速度。
转矩方程呢?T = Kt * i,Kt是转矩常数。对于理想直流电机,Ke = Kt,这个特性很有意思。
机械运动方程:
T - T_load = J * dω/dt + B * ω
J是转动惯量,B是阻尼系数,T_load是负载转矩。
把这些方程组合起来,就是完整的电机模型。在Simulink里,我一般用状态空间模块或者自己搭积分器。我个人更推荐自己搭,因为调试起来更灵活。你看,把电压方程和运动方程联立,状态变量选电流和转速,输入是电压和负载转矩,输出就是转速和电流。
核心要点:开环模型的关键是参数准确。电阻、电感、转动惯量这些参数,最好从电机手册里查,或者实测。我曾经吃过一次亏,用了手册上的典型值,结果仿真和实测差了30%。后来老老实实拿万用表和示波器测了一遍,才把模型校准。
3.2 PWM生成模块:如何用Simulink产生驱动信号
电机模型搭好了,接下来要给它喂电。但电机不能直接接直流电压,得用PWM。为什么?因为效率高,而且控制方便。
PWM生成的核心思想很简单:比较三角波和参考电压。三角波频率就是PWM的开关频率,参考电压就是你想输出的平均电压。
在Simulink里,我通常这样搭:
- 用Repeating Sequence模块生成三角波,幅值设为1,频率设为10kHz(这个频率比较常用)。
- 用Constant模块给定参考电压,范围0~1,对应0%~100%占空比。
- 用Relational Operator模块比较两者,当三角波小于参考电压时输出1,否则输出0。
代码实现?其实Simulink里不用写代码,但如果你用C语言实现,大概是这样的:
// 伪代码:PWM生成
if (triangle_wave < reference_voltage) {
pwm_out = 1;
} else {
pwm_out = 0;
}
嗯,就这么简单。但要注意,实际项目中PWM还要考虑死区时间。死区时间是为了防止上下桥臂直通短路。我建议在仿真阶段就加上死区,养成好习惯。死区时间一般设为开关周期的1%~2%,比如10kHz的PWM,死区设1~2微秒。
小技巧:在Simulink里模拟死区,可以用Transport Delay模块加一个延时,然后用逻辑门处理。或者直接用PWM Generator模块,它自带死区配置。我个人习惯用后者,省事。
3.3 电压驱动仿真:把PWM信号喂给电机模型
模型和PWM都有了,接下来把它们连起来跑仿真。这一步其实最考验细节。
PWM输出的是0和1的数字信号,但电机模型需要连续的电压输入。所以中间要加一个电压源模型。我一般用Controlled Voltage Source模块,把PWM信号乘以母线电压(比如24V),就得到了实际的电机端电压。
仿真参数怎么设?
- 求解器:用固定步长,步长设为PWM周期的1/10~1/20。比如10kHz的PWM,周期100微秒,步长设5~10微秒。
- 仿真时间:先跑0.1秒看看稳态,再跑1秒看动态响应。
- 负载:开环仿真可以不加负载,或者加一个恒定负载。
跑完仿真,看什么?看转速波形。开环控制下,转速应该随着占空比线性变化。比如占空比50%,转速应该是空载转速的一半。如果不对,检查模型参数或者PWM配置。
注意:开环仿真时,电机启动瞬间电流会很大。这是因为反电动势还没建立起来。我在第一次仿真时,电流直接冲到了额定电流的10倍,吓我一跳。后来加了软启动,才把电流压下来。所以,仿真时记得观察电流波形,别只看转速。
3.4 实战案例:一个完整的开环控制仿真
说了这么多,咱们来一个完整的例子。假设电机参数如下:
| 参数 | 值 | 单位 |
|---|---|---|
| 电枢电阻 R | 0.5 | Ω |
| 电枢电感 L | 0.002 | H |
| 反电动势常数 Ke | 0.05 | V/(rad/s) |
| 转动惯量 J | 0.0001 | kg·m² |
| 阻尼系数 B | 0.0001 | N·m·s/rad |
| 母线电压 Vbus | 24 | V |
| PWM频率 | 10 | kHz |
仿真步骤:
- 搭建电机模型:用积分器和增益模块实现电压方程和运动方程。
- 生成PWM:三角波频率10kHz,参考电压设为0.5(对应50%占空比)。
- 电压驱动:PWM信号乘以24V,得到电机端电压。
- 设置仿真:固定步长10微秒,仿真时间0.2秒。
- 运行仿真,观察转速和电流波形。
结果应该是什么?转速从0开始上升,大约0.05秒后稳定在240 rad/s左右(空载转速 = 24V / 0.05 = 480 rad/s,50%占空比就是240 rad/s)。电流在启动瞬间冲到约48A,然后迅速下降到接近0(空载电流很小)。
如果波形不对,别慌。先检查模型连接,再检查参数。我遇到过最奇葩的问题,是把电感和电阻的值写反了,结果电流波形像过山车。所以,仿真前一定要核对参数。
总结一下:开环控制模型是电机控制的基础。这一章我们做了三件事:搭电机模型、生成PWM、做电压驱动仿真。下一章,我们会在这个基础上加入闭环控制,让电机转得更准。但在此之前,我建议你把开环仿真跑熟,把每个模块的作用搞清楚。相信我,这一步省不了。
好,这一章就到这里。有什么问题,欢迎在评论区交流。咱们下一章见。