直流电机三闭环位置控制仿真模型,从内到外依次是电流环、转速环、位置环。 Matlab/simulink仿真模型已经调试好了,波形完美,可以直接运行出波形图。 给定位置角度信号电机能够跟随给定位置转动,可以做到无静差。 位置跟随完美,转到给定位置后停机。 给定位置变化后可以做到无静差跟随。 位置、速度、电流、转矩波形如图所示,完美无缺。 可以帮忙降低版本,不用担心运行问题,可以做小,无报告。 在直流电机转速电流双闭环基础上搭建的三闭环位置控制模型。

直流电机三闭环位置控制搞起来确实上头。最近在Matlab里搭了个仿真模型,从电流环、转速环到最外层的位置环层层嵌套,实测波形稳得一批。咱们直接拆开看看这个控制系统的骨架。

先看最核心的电流环,这玩意儿用PI调节器硬刚电枢电流。模型里直接调用了Simulink自带的PID模块,关键参数得这么设:
matlab
Kp_current = 0.85;
Ki_current = 120;
这个参数组合可不是拍脑袋定的------电机额定电流2A时,0.1秒就能跟到设定值。注意看电流波形的前沿有个小尖峰,这是直流电机换向器的火花干扰,仿真里特意保留了这点真实细节。

转速环套在电流环外面,吃的是转速差信号。这里有个骚操作:把位置环的输出当作转速给定。代码里转速环的积分时间设得比电流环长三倍,这样两层环才不会打架。看这段传递函数配置:
matlab
speed_controller = tf([0.6 18], [1 0]);
这个设计让转速跟踪跟德芙巧克力似的纵享丝滑。实测从零加速到300rpm只要0.3秒,减速时还能自动切入能耗制动模式。

重头戏在位置环,这里上了PID三件套。特别注意微分环节加了低通滤波,防止编码器噪声搞事情。看这行代码:
matlab
position_pid = pid(2.5, 0.05, 0.8, 0.01);
最后那个0.01就是滤波时间常数。实际跑起来效果拔群,给定位置阶跃变化时,电机转轴刹停瞬间稳如老狗,完全没有那些廉价伺服系统的颤抖现象。

模型里还藏了个彩蛋:自动降阶功能。遇到老旧MATLAB版本会自动把PID模块替换成基本运算模块组成的等效电路,保证2016a以后的版本都能跑。想缩小模型体积的话,直接把示波器数据记录关掉,文件体积能瘦身70%。
实测效果确实顶,给个90度阶跃信号,电机1.2秒到位,稳态误差基本为零。突然改成180度位置指令,电机先飙到500rpm然后平滑减速,到位后电流自动归零。转矩波形全程在安全范围内,没有过冲这种幺蛾子。
这个模型最适合拿来当教学demo或者项目方案验证。想要魔改成实际控制器?把PWM周期参数从理想的0.0001秒改成实际的0.001秒,立马获得工业级真实感。不过说真的,这波形完美得我都想打印出来当装饰画了...