被控对象为三阶传递函数,采用Simulink模块与M函数相结合的形式,利用ODE45的方法求解连续对象方程,主程序由Simulink模块实现,控制器由M函数实现。输入指令信号为正弦信号0.05sin(2Tt)。采用PID方法设计控制器,其中kp = 2.5,ki =0.02,kd =0.50。误差的初始化是通过时钟功能实现的,从而在M函数中实现了误差的积分和微分。PID正弦跟踪结果如图所示。
仿真图:
控制器子程序:chap1_7ctrl.m
function [u]=pidsimf(ul,u2)
persistent pidmat errori error_1
t=u1;
if t==0
errori=0;
error_1=0;
end
kp=2.5;ki=0.020;kd=0.50;
error=u2;
errord=error-error_1;
errori=errori+error;
u=kp*error+kd* errord+ki*errori;
error_1=error;
作图程序:
close all;
plot(t,y(:, 1),r',ty(:,2),'k:',linewidth',2);
xlabel( 'time(s));ylabel('yd,y');
legend(Ideal position signal','Position tracking');