% clear ;
% clc ;
function [time,rin,yout]=PID_position(S)
%设一被控对象G(s)=5/(0.5*s^2+1*s),
% r ====> e ====>(Kp,Ki/s,Kd*s)====> u ====> y
%用位置式PID
%init
ts=0.001; %采样时间
sys=tf(5,[0.5,1, 0]) %tf是传递函数 即被控对象函数G();
dsys=c2d(sys,ts,'z') %把控制函数离散化取Z变换n阶定常离散系统差分方程
%dsys即Y(z)/U(z)
[num,den]=tfdata(dsys,'v');% 离散化后提取分子、分母
u_1=0.0;u_2=0.0;u_3=0.0;
y_1=0.0;y_2=0.0;y_3=0.0;
x=[0,0,0]';
error_1=0;
% S=input('输入信号选择\n1:阶跃信号, 2:方波信号 3:正弦信号 4.斜坡信号 5.抛物线信号\n'); %输入信号选择
% S=1;
%时间序列循环
for k=1:1:15000 %时间离散1500ms
time(k)=k*ts;
if S==1
% kp=0.02; Ki=Kp/Ti; kd=Kp*Td
kp=0.