[已答复] PID控制器设计

[复制链接]
907961636 发表于 2014-5-4 21:40:21
各位大神  帮小妹看下哈  我在做PID控制器设计的仿真  有点晕  希望大家帮忙看看哈  看看我的设计对不对  顺便问下  小妹实在不会对Kp,Ki,Kd的确定啊  希望大家告诉我怎么确定这三个参数啊?还有PID控制器的仿真模型怎么弄的啊?希望哪位好心人告诉下哈  不胜感激!
捕获.PNG

48 条回复


弋_Love 发表于 2014-5-4 23:08:50
这不就是PID控制器吗?

907961636 发表于 2014-5-5 09:46:40
弋_Love 发表于 2014-5-4 23:08
这不就是PID控制器吗?

可是仿真出来的波形不对  那麻烦你告诉我  比如我的被控对象  怎么确定三个参数啊?拜托啦!实在不会确定三个参数

弋_Love 发表于 2014-5-5 11:29:16
我的理解是PID3个参数的确定虽然有一个标准,但在实验中还是主要是试凑,先KP从小调到大,然后是ki kd 如果kp一个参数可以完成调试,一般情况下是不需要kd的吧,这是我的理解

907961636 发表于 2014-5-5 15:34:36
弋_Love 发表于 2014-5-5 11:29
我的理解是PID3个参数的确定虽然有一个标准,但在实验中还是主要是试凑,先KP从小调到大,然后是ki kd 如果 ...

多谢多谢  我自己再琢磨下 可是试凑的标准呢?看波形嘛?我怎么知道自己凑得对不对呀?求告知

弋_Love 发表于 2014-5-5 20:03:57
不是有个Scope 在那里边看

907961636 发表于 2014-5-5 21:56:36
弋_Love 发表于 2014-5-5 20:03
不是有个Scope 在那里边看

这个我当然知道的  我想知道在那看波形 仿真出来的波形是以什么标准的?也就是波形什么样后就不要再改参数啊?有没有标准啊?

弋_Love 发表于 2014-5-5 22:44:10
一般都有要求吧,到达稳态的时间啊,超调量啊稳态误差啊,根据这些来判断PID参数是否符合要求

my39366 发表于 2014-5-6 12:26:17
pidtool(sys)  ,然后把整定的参数给导出来   自己调太费劲了

dealerman 发表于 2014-5-6 12:26:58
你先可以通过要轨迹法确定增益K,再确定积分和微分系数。

dealerman 发表于 2014-5-6 13:41:02
还可以通过系统优化设计工具来确定PID参数。

凡尘清泉 发表于 2014-5-6 21:23:44
你这个涉及到pid控制器参数整定的问题了。有很多整定办法。采用优化算法来整定是一种办法。其他经典的整定方法如Z-N整定法等等。

fjhwin 发表于 2014-5-6 22:33:14
参数整定找最佳,从小到大顺序查,先是比例后积分,最后再把微分加, 
曲线振荡很频繁,比例度盘要放大,曲线漂浮绕大湾,比例度盘往小扳,        
曲线偏离回复慢,积分时间往下降,曲线波动周期长,积分时间再加长,        
曲线振荡频率快,先把微分降下来,动差大来波动慢,微分时间应加长,        
理想曲线两个波,前高后低4比1,    一看二调多分析,调节质量不会低。

lixianghua0428 发表于 2014-5-6 23:12:37
检验试凑的标准是从波形图上计算上升时间,超调量,稳定时间等是否满足你的设计要求,这个在自动控制原理里面有

yzhang50 发表于 2014-5-7 03:42:35
Simulink不是有自带的PID模块么。那个可以直接给你调PID参数的

13403071013 发表于 2014-5-7 10:58:07
从PID控制器的3个参数的作用可以看出3个参数直接影响控制效果的好坏,所以要取得较好的控制效果,就必须合理的选择控制器的参数。总之,比例控制主要用于偏差的“粗调”,保证控制系统的“稳”;积分控制主要用于偏差的“细调”,保证控制系统的“准”;微分控制主要用于偏差的“细调”,保证控制系统的“快” 。

halleyhit 发表于 2014-5-7 15:13:45
simulink有自己的pid模块,可以自动调节三个k的参数

huangche 发表于 2014-5-7 20:01:13
也可以ziegle-nochols法 先调整Kp达到临界震荡状态求出KP和Tr再根据表格求出其它3个参数,最后可能还学要微调。关键在于尝试,没有一个最优标准,因为每个系统对系统的性能要求都不一样

gaojiawangzuqiu 发表于 2014-5-8 10:27:47
pid正定  一般使用Z-N方法,这是我去年学习pid的时候编写的一个pid参数正定的函数,你看看  希望对你有帮助
%%%%%April 11 2013
%%%%%First I am so sorry to say that I have to edit this document in English
%%%%%because Chinese is not suitable for MATLAB.
%%%%%This function returns the PID parameters Kp,Ti,Td using Z_N method.
%%%%%The input arguments num,den and delay indicate numerator,denominator
%%%%%and delay time of the transfer function.       
%%%%%The t_start and t_end stand for the start and end time we want to show.
%%%%%This function is based on my previous program and improved by the method       
%%%%%provided by ZhouBinbin and other my classmates whom I want to give my        
%%%%%sincere thanks to.
%%%%%Here I have to say sorry to my fridends who have read my previous codes.
%%%%%I belive that my previous codes give a great confusion to you especially
%%%%%the parts of convertion between index and t because of my non-standard
%%%%%variables' names and  redundant variables.If you  hardly understand this parts,you can                
%%%%%consult the conding and decode parts in the Genetic Algorithm.
%%%%%If you still do not understand,you can ignore it and calculate the PID        
%%%%%parameters smoothly we need.
%%%%%The Function Help in the end of the grogram can help you use this                
%%%%%function smoothly soon.
%%%%%Please contact me if you have any questions about this program or you        
%%%%%have cool ideas to improve and strong this program.
%%%%%I am very appreciative if you can find the bugs or faults in this                
%%%%%program and send them to me.



%%%%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
%

wan_stone 发表于 2014-5-8 21:08:38
simulink 里面有个集成的PID控制模块  可以自动生成一组PID系数,你可以试试  然后再在那个的基础上调试 应该可以更快捷的达到你的目的   

柚籽 发表于 2014-5-9 14:33:05
11楼说也对,可以使用Simulink优化工具来调节你的参数。
做了个简单的视频,可以参考:
https://www.ilovematlab.cn/home.p ... forward=1&id=57

二哈哈369 发表于 2014-5-9 16:26:47
茫茫数字海洋,试凑那么容易啊。妹妹,找本控制系统计算机辅助设计,好好看看,这是基本的控制设计。最简单的就是Z-N法。

二哈哈369 发表于 2014-5-9 16:28:35
907961636 发表于 2014-5-5 15:34
多谢多谢  我自己再琢磨下 可是试凑的标准呢?看波形嘛?我怎么知道自己凑得对不对呀?求告知 ...

试凑也是知道了一个大概的值之后,再在这个值得范围内上下波动去寻找一个合适的范围。

树AA 发表于 2014-5-9 17:02:57
我说一下我的经验,欢迎大家指正
首先要确定系统性能指标,然后如果你知道传递函数了,直接建议你先看看siso的帮助文档,看完之后用这个工具就可以得到一个不错的参数了。

糖小缸 发表于 2014-5-9 18:02:36
柚籽 发表于 2014-5-9 14:33
11楼说也对,可以使用Simulink优化工具来调节你的参数。
做了个简单的视频,可以参考:
http://www.ilovema ...

我们做朋友吧!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
相关文章
热门教程
站长推荐
快速回复 返回顶部 返回列表