1.3.2 连续系统的数字PID控制算法
本方法可实现D/A及A/D的功能,符合数字实时控制的真实情况,计算机及DSP的实时PID控制都属于这种情况。
【仿真之一】 采用M语言进行仿真
被控对象为一电机模型传递函数:
式中,J=0.0067;B=0.10。
采用M函数的形式,利用ODE45的方法求解连续对象方程,输入指令信号为yd(k)=0.50sin(2πt),采用PID控制方法设计控制器,kp=20.0、kd=0.50,仿真结果如图1-10所示。
图1-10 采用M语言的PID正弦跟踪
〖仿真程序〗
(1)控制主程序:chap1_6.m
(2)连续对象子程序:chap1_6plant.m
【仿真之二】 采用Simulink模块进行仿真
被控对象为三阶传递函数,采用Simulink模块与M函数相结合的形式,利用ODE45的方法求解连续对象方程,主程序由Simulink模块实现,控制器由M函数实现。输入指令信号为正弦信号0.05sin(2πt)。采用PID方法设计控制器,其中,kp=2.5,ki=0.02,kd=0.50。误差的初始化是通过时钟功能实现的,从而在M函数中实现了误差的积分和微分。仿真结果如图1-11所示。
图1-11 采用Simulink模块的PID正弦跟踪
〖仿真程序〗
(1)Simulink主程序:chap1_7.mdl
(2)控制器子程序:chap1_7ctrl.m
(3)作图程序:chap1_7plot.m
【仿真之三】 采用S函数的离散PID控制进行仿真
被控对象为三阶传递函数,在S函数中,采用初始化函数、更新函数和输出函数,即mdlInitializeSizes函数、mdlUpdates函数和mdlOutputs函数。在初始化中采用sizes结构,选择1个输出、2个输入。其中一个输入为误差信号,另一个输入为误差信号上一时刻的值。S函数嵌入在Simulink程序中,采样时间为1ms。仿真结果如图1-12所示。
图1-12 采用S函数进行仿真的PID正弦跟踪
〖仿真程序〗
(1)Simulink主程序:chap1_8.mdl
(2)PID控制器程序:chap1_8s.m
(3)作图程序:chap1_8plot.m