完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
%%%%Program
function [Kp,Ti,Td]=Z_N_PIDparameter(num,den,delay,t_start,t_end) h=.0001; t=t_start:h:t_end; if delay==0 %no delay sys=tf(num,den); else sys=tf(num,den,'iodelay',delay); %containing delay end k=dcgain(sys); %get the gain of the system y=step(sys,t); dy=diff(y)/h; %derivation [m,n]=max(dy); t_col=size(t,2); t_max=(t_end-t_start)*n/t_col; y_index=t_col*t_max/(t_end-t_start); y_tangentline=y(round(y_index)); b_intercept=y_tangentline-m*t_max; %b_intercept syms t; tk=solve(k-m*t-b_intercept); tk=double(tk); L=t_max; T=tk-t_max; alafa=k*L/T; Kp=1.2/alafa; Ti=2*L; Td=L/2; %%%%%%%%%%%%%%%%%%%% %%%%%%%%%%Function Help %%%%%%%%%%Example 1 % %Transfer function(containing timedelay): % 20 % exp(-0.5*s) * ------------------- % 1.6 s^2 + 4.4 s + 1 % % %[Kp,Ti,Td]=Z_N_PIDparameter(20,[1.6 4.4 1],0.5,0,30) %we can get % Kp = 0.1733 % Ti =3.0468 % Td =0.7617 % %%%%%%example 2 %Transfer function(no delay): % % 20 % ------------------- % 1.6 s^2 + 4.4 s + 1 % %[Kp,Ti,Td]=Z_N_PIDparameter(20,[1.6 4.4 1],0,0,30) %we can get % Kp = 0.2580 % Ti =2.0468 % Td =0.5117 % 对y求导的时候dy=diff(y)/h,后面为什么要除以h? y_index=t_col*t_max/(t_end-t_start);还有这一步,这个y_index是切点的y坐标吗? 后面变量好像也有点问题。 来点支援!!!! |
|
相关推荐 |
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
我用matlab的coder 封装了一个c语言的dll, 但是在用labview调用时,会出现识别不到库的问题,有大神遇到过吗
5348 浏览 0 评论
5671 浏览 0 评论
在matlab中如何计算含有第一类修正的贝塞尔函数的积分算不出的问题?
9478 浏览 0 评论
怎么利用matlab得到95%,80%和70%的置信区间,并生成不同区间下的功率误差贝塔分布?
10910 浏览 0 评论
请问simulink的s-function模块如何添加多输入输出接口
15236 浏览 2 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-18 07:25 , Processed in 0.777036 second(s), Total 72, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
3294