精华内容
下载资源
问答
  • 但由于控制系统的复杂性和非线性等因素,使 PI D控制器参数受到了影响,因此如何整定 PI D控 制器的参数成为当前乃至今后的研究热点。文章概述了 PI D的理论,讨论了一些常用 PI D 整定方法, 并对新技术进行了探索。
  • 文章目录单回路控制系统整定参数整定要求常用整定方法理论计算方法理论计算整定法工程整定方法经验法(试凑法)临界比例带法(边界稳定法)衰减曲线法响应曲线法(动态特性参数法) 单回路控制系统整定 参数整定要求 通过...

    pdf版本的下载地址: 过程控制课程设计-单回路控制系统参数整定(访问密码:3834)

    单回路控制系统整定方法的学习与实践

    参数整定要求

    1. 通过整定选择合适的参数,首先要保证系统稳定,这时最基本的要求
    2. 在热工生产过程中,通常要求控制系统有一定稳定裕度,即要求过程有一定的衰减比,一般为4:1~10:1
    3. 在保证稳定的前提下,要求控制过程有一定的快速性和准确性.所谓快速性就是要求控制系统的动态偏差(余差)尽量的小,而快速性就是要求控制过程的时间尽可能地短.

    常用整定方法

    理论计算方法

    理论计算整定法

    当闭环特征方程为二阶时,可以通过理论计算求出各参数与衰减比的对应关系
    在这里插入图片描述
    如上图: 被控对象的传递函数为 G ( s ) = 25 ( 4 s + 1 ) ( 20 s + 1 ) G(s)=\frac{25}{(4s+1)(20s+1)} G(s)=(4s+1)(20s+1)25,采用比例控制器为 G c ( s ) = 1 δ G_c(s)=\frac{1}{\delta} Gc(s)=δ1,求解合适的比例带 δ \delta δ值,使得系统衰减比为4:1;
    解: 易求得系统闭环传递函数为
    G c ( s ) G ( s ) 1 + G c ( s ) G ( s ) = 1 δ 25 ( 4 s + 1 ) ( 20 s + 1 ) 1 + 1 δ 25 ( 4 s + 1 ) ( 20 s + 1 ) = 25 δ ( 4 s + 1 ) ( 20 s + 1 ) + 25 \frac{G_c(s)G(s)}{1+G_c(s)G(s)}=\frac{\frac{1}{\delta} \frac{25}{(4s+1)(20s+1)}}{1+\frac{1}{\delta} \frac{25}{(4s+1)(20s+1)}}=\frac{25}{\delta (4s+1)(20s+1) + 25} 1+Gc(s)G(s)Gc(s)G(s)=1+δ1(4s+1)(20s+1)25δ1(4s+1)(20s+1)25=δ(4s+1)(20s+1)+2525
    已知衰减率 φ \varphi φ
    φ = 1 − e − 2 π α ω \varphi = 1- e^{-2 \pi \frac{\alpha}{\omega}} φ=1e2πωα
    系统闭环特征方程为
    s 1 , 2 = − 24 ± 2 4 2 − 320 ( 1 + 25 δ ) 160 = − α + j ω s_{1,2} = \frac{-24 \pm \sqrt{24^2 - 320(1+\frac{25}{\delta})}}{160} = -\alpha + j \omega s1,2=16024±242320(1+δ25) =α+jω
    α = 24 160 \alpha=\frac{24}{160} α=16024, ω = 1 160 320 ( 1 + 25 δ ) − 2 4 2 \omega=\frac{1}{160}\sqrt{320(1+\frac{25}{\delta})-24^2} ω=1601320(1+δ25)242 ,将其代入上式可得比例带 δ \delta δ
    δ = 0.665 = 66.5 % \delta = 0.665 = 66.5\% δ=0.665=66.5%

    工程整定方法

    经验法(试凑法)

    试凑法的整定步骤如下所述:

    1. 先采用比例作用,设置积分时间 T 1 = ∞ T_1=\infty T1=,微分时间 T D = 0 T_D=0 TD=0,根据经验设置比例带 δ \delta δ,将系统投入闭环运行,稳定后做阶跃扰动试验,改变比例带 δ \delta δ值,使被调量的阶跃响应曲线出现4:1衰减震荡,记录此时的比例带 δ \delta δ.
    2. 比例积分作用: 在1)的基础上,首先将 δ \delta δ增大10%~20%,做阶跃扰动试验,然后将积分时间 T i T_i Ti由大到小的变化,直到得到4:1衰减曲线为止.先增加比例带的原因是加入积分后,系统稳定性,比原来单纯比例调节时要降低,增加 δ \delta δ补偿加积分作用后而引起得稳定性的降低.
    3. 积分时间保持不变,加入比例带,观察控制过程有无改善,如有改善则继续调整,直到满意为止.否则,将原比例带减小一些,再调整积分时间,力求改善控制过程.如此反复试凑,直到找到满意的比例带和积分时间为止.
    4. 最后再加入微分作用,将微分时间 T D T_D TD由小到大的调整.观察每次实验过程,直到满意为止.
      根据上述思路,写出代码如下:
    % 返回pid参数为[kp, ti, td]的闭环控制系统的回路方程
    function gg = getLoop([kp, ti, td])
        % 构建方程
    	g = tf(25, conv([4 1], [20 1]));		% 开环系统
    	gc_p = tf(kp, 1);			% p控制
    	gc_i = tf(kp, [ti 0]);		% i控制
    	gc_d = tf([kp*td 0], 1);	% d控制
    	gc = parallel(parallel(gc_p, gc_i), gc_d);	% pid控制器
    	gg = feedback(series(g, gc), 1);		% 总控制系统
    end
    % 计算pid参数为[kp, ti, td]的闭环控制系统的阶跃响应衰减比
    function delta = getDelta([kp, ti, td])
        % 得到控制系统阶跃响应曲线
    	gg = getLoop([kp, ti, td]);
    	Y = step(gg);
    	% 计算衰减比
    	V = findpeaks(Y);
    	delta = (V(1)-Y(end))/(V(2)-Y(end));
    end
    % 主函数
    % 初始化pid参数
    kp=1; ti=1e32; td=0;
    % 定义状态值,方便debug
    status = 0;		% 状态: 0-未整定,1-整定好p,2-整定好i,3-整定好d,整定完成
    % 整定p, 调整衰减比接近4:1	
    while getDelta([kp, ti, td])>4
    	% getDelta([kp, ti, td])
    	kp = kp*1.01;	% kp增大,衰减比减小
    end
    status = 1
    % 整定i, 调整衰减比接近4:1	
    kp = kp * 0.9;	% 减小kp,补偿引入积分作用造成的稳定性下降
    while getDelta([kp, ti, td])>4
    	% getDelta([kp, ti, td])
    	ti = ti*0.9;
    end
    status = 2
    % 整定d, 调整衰减比接近4:1
    kp = kp * 0.9;	% 减小kp,补偿引入积分作用造成的稳定性下降
    while getDelta([kp, ti, td])>4
    	td
    	getDelta([kp, ti, td])
    	td = td*1.1;
    end
    status = 3
    

    下图体现了四步整定之后,闭环控制系统的阶跃响应曲线:
    在这里插入图片描述
    由图中曲线可知,每一步整定完成之后,闭环控制系统的准确性和快速性都略有上升.

    临界比例带法(边界稳定法)

    临界比例带法的应用较为广泛,将控制器设置为纯比例作用,将系统自动投入运行并将比例带由大到小进行改变,直到产生等幅振荡为止,此时控制系统处于边界稳定状态,记录下此刻的比例带 δ c r \delta _{cr} δcr和振荡周期 T c r T_{cr} Tcr,然后根据下表中的经验公式进行计算,算出控制器的各个参数.

    控制规律 δ \delta δ T i T_i Ti T d T_d Td
    P2 δ c r \delta _{cr} δcr--
    PI2.2 δ c r \delta _{cr} δcr0.85 T c r T_{cr} Tcr-
    PID1.7 δ c r \delta _{cr} δcr0.5 T c r T_{cr} Tcr0.125 T c r T_{cr} Tcr

    具体步骤如下所述:

    1. 将控制器的积分时间置于最大,即 T 1 = ∞ T_1 = \infty T1=,微分时间 T D = 0 T_D = 0 TD=0,比例带 δ \delta δ置于一个较大的数值
    2. 将控制系统投入闭环运行,待系统稳定之后,逐步减小比例带,直到系统出现等幅振荡,记录此时的比例带 δ c r \delta _{cr} δcr和振荡周期 T c r T_{cr} Tcr
    3. 将比例带 δ c r \delta _{cr} δcr和振荡周期 T c r T_{cr} Tcr代入上表,计算控制系统各个参数.
      根据上述步骤写出代码如下:
    % 初始pid参数
    kp=1; ti=1e32; td=1e-32;
    getDelta([kp, ti, td])
    % step(getLoop([kp, ti, td]))
    % 整定p, 调整衰减比接近1:1	
    if getDelta([kp, ti, td]) > 1
    	while getDelta([kp, ti, td]) > 1
    		getDelta([kp, ti, td])
    		kp = kp*1.01;	% kp增大,衰减比减小
    	end
    elseif getDelta([kp, ti, td]) < 1
    	while getDelta([kp, ti, td]) < 1
    		% getDelta([kp, ti, td])
    		kp = kp*0.99;	% kp增大,衰减比减小
    	end
    end
    % 计算临界比例带
    [Y, T] = step(getLoop([kp, ti, td]));
    [pks, locs] = findpeaks(Y);
    tcr = T(locs(2))-T(locs(1));
    % 计算对应的三种控制参数
    % history(1, :) = [kp, ti, td];
    % history(2, :) = [kp/2, 1e32, 1e-32];
    % history(3, :) = [kp/2.2, 0.85*tcr, 1e-32];
    history(4, :) = [kp/1.7, 0.5*tcr, 0.125*tcr];
    % 绘制图片
    % step(getLoop(history(2, :))); hold on;
    % step(getLoop(history(3, :))); hold on;
    step(getLoop(history(1, :))); hold on;
    step(getLoop(history(4, :))); hold on;
    legend('initial respond','respond after setting pid')
    

    我们仍对上边的系统进行整定,我们先将系统比例带设置由大到小,直到系统等幅振荡.此时闭环系统阶跃响应如下:
    在这里插入图片描述
    因为我们是模拟实际情况查找比例带,而不是由公式对临界比例带进行计算,因此此时系统的衰减比实际上为0.9992,而非1. 代入上边表格数据时,我发现了一个bug,按照上面表格进行计算,闭环系统采用p控制,pi控制都会导致系统闭环不稳定,而采用pid控制能使系统闭环稳定.整定后的系统的快速性大为改善,然而其准确性略有下降.
    在这里插入图片描述

    衰减曲线法

    如果在生产过程中不允许出现等幅振荡,则只能退而求其次,采用衰减曲线法.我们只能退而求其次,选择衰减曲线法,将上边方法中的等幅振荡过程改为4:1震荡过程.其具体步骤与上边临界比例带法类似如下:

    1. 设置控制器的积分时间 T i = ∞ T_i = \infty Ti=,微分时间 T D = 0 T_D=0 TD=0,比例带 δ \delta δ置于较大的数值
    2. 将系统投入闭环运行,待数值稳定之后,做阶跃扰动试验,观察控制过程,若过渡时间衰减率 φ \varphi φ大于要求的数值,则应逐步减小比例带值,直到系统过度曲线出现 φ = 0.75 \varphi=0.75 φ=0.75 φ = 0.9 \varphi=0.9 φ=0.9为止.记录此时的比例带 δ s \delta_s δs,在 φ = 0.75 \varphi=0.75 φ=0.75时的衰减曲线上求取衰减周期 T s T_s Ts,或在 φ = 0.9 \varphi=0.9 φ=0.9的衰减曲线上求取上升时间 t r t_r tr
    3. 将比例带 δ \delta δ和振荡周期 T T T代入上表,计算控制系统各个参数
      φ \varphi φ控制规律 δ \delta δ T I T_I TI T D T_D TD φ \varphi φ控制规律 δ \delta δ T I T_I TI T D T_D TD
      0.75P δ s \delta_s δs--0.9P δ s \delta_s δs--
      0.75PI 1.2 δ s 1.2 \delta_s 1.2δs 0.5 T s 0.5T_s 0.5Ts-0.9PI 1.2 δ s 1.2\delta_s 1.2δs 2 t r 2t_r 2tr-
      0.75PID 0.8 δ s 0.8\delta_s 0.8δs 0.3 T s 0.3T_s 0.3Ts 0.1 T s 0.1T_s 0.1Ts0.9PID 0.8 δ s 0.8 \delta_s 0.8δs 1.2 t r 1.2t_r 1.2tr 0.4 t r 0.4t_r 0.4tr

    对于衰减率 φ = 0.75 \varphi=0.75 φ=0.75的情况,其实现代码如下:

    % 初始pid参数
    kp=1; ti=1e32; td=1e-32;
    history(1, :) = [kp, ti, td];	% 记录初始值
    % 整定p, 调整衰减比接近4:1	
    if getDelta([kp, ti, td])>4
    	while getDelta([kp, ti, td])>4
    		% getDelta([kp, ti, td])
    		kp = kp*1.01;	% kp增大,衰减比减小
    	end
    elseif getDelta([kp, ti, td])<4
    	while getDelta([kp, ti, td])<4
    		% getDelta([kp, ti, td])
    		kp = kp*0.99;	% kp增大,衰减比减小
    	end
    end
    % 计算临界比例带
    [Y, T] = step(getLoop([kp, ti, td]));
    [pks, locs] = findpeaks(Y);
    ts = T(locs(2))-T(locs(1)); 
    % 记录不同比值
    history(2, :) = [kp, 1e32, 1e-32];			% p控制
    history(3, :) = [kp/1.2, 0.5*ts, 1e-32]		% pi控制
    history(4, :) = [kp/0.8, 0.3*ts, 0.1*ts]	% pid控制
    % 绘图
    step(getLoop(history(1, :))); hold on;
    step(getLoop(history(2, :))); hold on;
    step(getLoop(history(3, :))); hold on;
    step(getLoop(history(4, :))); hold on;
    legend('initial respond','respond after setting p','respond after setting pi','respond after setting pid')
    

    将所得到的结果绘制在坐标轴上,得到图像如下. 由此可见,在引入积分控制后,控制系统的准确度有所下降.但加入pid控制之后,总体的控制效果比初始情况大为改善.
    在这里插入图片描述
    对于衰减率 φ = 0.9 \varphi=0.9 φ=0.9的情况下,其实现代码如下:

    % 初始pid参数
    kp=1; ti=1e32; td=1e-32;
    history(1, :) = [kp, ti, td];	% 初始值
    % 整定p, 调整衰减比接近10:1	
    if getDelta([kp, ti, td])>10
    	while getDelta([kp, ti, td])>10
    		% getDelta([kp, ti, td])
    		kp = kp*1.01;	% kp增大,衰减比减小
    	end
    elseif getDelta([kp, ti, td])<10
    	while getDelta([kp, ti, td])<10
    		% getDelta([kp, ti, td])
    		kp = kp*0.99;	% kp增大,衰减比减小
    	end
    end
    % 计算临界比例带
    [Y, T] = step(getLoop([kp, ti, td]));
    [pks, locs] = findpeaks(Y);
    tr = T(locs(1)); 
    % 记录不同比值
    history(2, :) = [kp, 1e32, 1e-32];			% p控制
    history(3, :) = [kp/1.2, 2*tr, 1e-32]		% pi控制
    history(4, :) = [kp/0.8, 1.2*tr, 0.4*tr]	% pid控制
    step(getLoop(history(1, :))); hold on;
    step(getLoop(history(2, :))); hold on;
    step(getLoop(history(3, :))); hold on;
    step(getLoop(history(4, :))); hold on;
    legend('initial respond','respond after setting p','respond after setting pi','respond after setting pid')
    

    将所得到的结果绘制在坐标轴上,得到图像如下. 我们得到的结果与衰减率 φ = 0.75 \varphi=0.75 φ=0.75的情况类似,得到结论: 在引入积分控制后,控制系统的准确度有所下降.但加入pid控制之后,总体的控制效果比初始情况大为改善.
    在这里插入图片描述

    响应曲线法(动态特性参数法)

    前面三种方法都是针对系统的闭环特性进行整定,而响应曲线法是根据系统的开环状态下,通过阶跃扰动试验得到pid控制的各种参数.
    下面是响应曲线法的执行步骤:

    1. 给对象一个阶跃输入,记录其输出.
    2. 判断对象是否有自平衡能力:
      • 若对象由自平衡能力,过响应曲线拐点P作切线交稳态值渐近线 y ( ∞ ) y(\infty) y()于A点,交时间轴于C点,过直线段上任意一点A作时间垂线并交于B点,则
        τ = 0 C , T = C B , ε = A B T \tau = 0C, T=CB, \varepsilon = \frac{AB}{T} τ=0C,T=CB,ε=TAB
      • 若对象无自平衡能力,做响应曲线渐近线交时间轴于C,过直线段上任一点A做时间垂线并交于B,则
        τ = 0 C , ε = A B C B \tau=0C, \varepsilon = \frac{AB}{CB} τ=0C,ε=CBAB
    3. 查下表,确定控制器的整定参数
      控制规律 δ \delta δ T I T_I TI T D T_D TD
      P ε τ \varepsilon \tau ετ--
      PI 1.2 ε τ 1.2 \varepsilon \tau 1.2ετ 3.3 τ 3.3 \tau 3.3τ-
      PID 0.8 ε τ 0.8 \varepsilon \tau 0.8ετ 2 τ 2 \tau 2τ 0.5 τ 0.5 \tau 0.5τ

    根据上述步骤,我们写出代码如下:

    % 初始化开环系统
    g = tf(25, [80 24 1]);
    [Y, T] = step(g);
    % 寻找拐点P及其斜率
    [val, minindex] = min(diff(Y, 2));
    PX = T(minindex)
    PY = val;
    k = (Y(minindex+1) - Y(minindex))/(T(minindex+1) - T(minindex));
    % 找到点C
    CX = PX - PY/k;
    CY = 0;
    AY = Y(end);
    AX = PX + (AY - PY) / k;
    % 计算 tau,epsilon
    tau = CX;
    epsilon = AY / (AX - CX);
    % 记录pid参数
    history(1, :) = [1, 1e32, 1e-32];					% 不加pid控制
    history(2, :) = [epsilon*tau, 1e32, 1e-32];			% p控制 
    history(3, :) = [epsilon*tau, 3.3*tau, 1e-32];		% pi控制
    history(4, :) = [epsilon*tau, 2*tau, 0.5*tau];		% pid控制
    step(getLoop(history(1, :))); hold on;
    step(getLoop(history(2, :))); hold on;
    step(getLoop(history(3, :))); hold on;
    step(getLoop(history(4, :))); hold on;
    legend('initial respond','respond after setting p','respond after setting pi','respond after setting pid');
    

    执行上述代码,我们得到结果如下:
    在这里插入图片描述
    由上图可见,p控制,pi控制的效果并不是很好,但是引入pid控制之后,系统的动态特性大为改善,这时因为我们所选的被控对象的惯性较大.

    各种整定方法的总结与比较

    下面对四种工程整定方法做出总结并加以比较,在本次实验中,我们共使用了四种整定方法:

    1. 经验法: 花费时间长,难以总结出一般规律
    2. 临界比例带法: 方法简单且易用,但是实际情况下难以实现,且整定后的系统容易发生不稳定振荡.
    3. 衰减曲线法: 衰减曲线法作为临界比例带法的改进,方法较简单,且在实际情况下有条件实现,但是在实际整定过程中难以实现完美的4:1衰减模型
    4. 响应曲线法: 简单省时,可以直接通过开环特性整定闭环系统,但是计算误差较大.
      在实际的编程中,我们发现各种程序的运行效率由高到低如下: 响应曲线法>临界比例带法>衰减曲线法>经验法.经验法中因为需要大量试凑,所以程序的运行时间实在太长,且我这个小破电脑还动不动死机.
      在临界比例带正定方法的实现过程中,我们遗憾地发现出现了系统不稳定,因此我们在这里对pid控制方法的稳定想加以总结:
    5. P控制: 比例控制的放大系数 K p K_p Kp的大小应适当.
      • K p K_p Kp过小,则控制通道难以屏蔽干扰通道的效果,使得总体上的控制效果较差.
      • K p K_p Kp过大,则系统容易出现不稳定震荡.
    6. PI控制: 引入积分控制,控制系统的稳定性会下降.因此我们在试凑法中整定 T i T_i Ti之前要适当增加比例带 δ \delta δ.
    7. PID控制: 引入微分控制后,系统的稳定性增加,因此可以适当降低比例带 δ \delta δ.

    单回路整定系统软件的开发

    创建图形界面

    在这里插入图片描述
    开环传递函数面板定义被控系统的开环传递函数,numden分别为被控系统的分子和分母,点击set向程序注入开环传递函数,点击draw绘制不使用pid调节器时闭环系统的阶跃响应曲线. 系统的开环传递函数可以在程序运行时随时更改.

    编写后台函数

    后台函数分别是整定方法面板五个按钮的回调函数,它们都是由第一部分实现各个控制系统整定方法修改而成.
    在这里插入图片描述
    其中main为程序主界面,shicoufa为使用试凑法整定控制系统,linjiebilidaifa为使用临界比例带法整定控制系统,shuaijianquxianfa75percentage为使用衰减曲线法( φ = 75 % \varphi=75\% φ=75%)整定控制系统,shuaijianquxianfa90percentage为使用衰减曲线法( φ = 90 % \varphi=90\% φ=90%)整定控制系统,xiangyingquxianfa为使用响应曲线法整定控制系统

    总结与展望

    在本次实验中,我系统学习了如何使用MATLAB整定控制系统,同时也学会了如何进行MATLAB的GUI程序开发.
    但是本次实验还存在两个不足:

    1. 没能对经典的控制系统进行更加深入的修改,例如使用临界比例带法整定控制系统参数时,经典解法计算出的p控制pid控制系统闭环不稳定,而我没能成功地更精细修改参数使之稳定
    2. 程序运行时间过长,没能进行更细致的优化.
      在今后的学习生活中,我会更加注重实践,将书本知识与实践结合起来,加深对知识的掌握.

    MATLAB源代码(含GUI界面)以及排版后的word课设报告的下载地址: 单回路PID控制参数的整定_火电厂热工自动控制的课程设计

    pdf版本的下载地址: 过程控制课程设计-单回路控制系统参数整定(访问密码:3834)

    展开全文
  • PID温度控制参数整定方法

    万次阅读 多人点赞 2015-12-22 16:44:32
    PID温度控制,Ziegler-Nichols参数整定

    最近做了一个温度控制相关的项目,在此记录一下,方便以后查找,同时也供大家参考,欢迎指正,所有数据均为实验数据,绝对真实。


    1.      位置式PID控制公式原型:u(t) = kp * e(t) + ki * [e(1) + e(2) + ....+ e(t)] + kd * [e(t) - e(t-1)]

     

    2.      控制对象:加热/制冷器(在2分钟内不能再加热至冷之间切换)控制密封的腔体(空间体积大小15cm*20cm*65cm)温度。

     

    3.      控制原理:利用MCU的输出比较模块(OCM)产生PWM波驱动H桥电路(通过目标温度和环境温度对比决定加热或者制冷)。

     

    4.      PID参数整定

    因温度控制属于滞后控制系统,可采用工业控制中常用的滞后控制参数整定模型(Ziegler-Nichols参数整定方法)

    控制器

    Ti

    Td

    Kp

    Ki

    Kd

    P

    ×

    ×

    0.5Kc

    ×

    ×

    PD

    ×

    0.15Pc

    0.65Kc

    ×

    Kp*Td/T

    PI

    0.85Pc

    ×

    0.45Kc

    Kp*T/Ti

    ×

    PID

    0.5Pc

    0.15Pc

    0.65Kc

    Kp*T/Ti

    Kp*Td/T







    参数说明:

    Kc:      只采用比例环节控制条件下,控制系统的稳态误差尽量达到最小时的Kp值。

    Pc:      只采用比例环节控制条件下,控制系统的震荡周期。

    Ti:       控制系统的积分时间。

    Td:     控制系统的微分时间。

    T:        PID控制采样计算周期。

    Kp、Ki、Kd:被整定的参数。


    1):获取合适的Kc值,设置Ki,Kd为0。在当前温度进入目标温度3.5°内开始进行PID控制,之前采用90%恒定功率加热。


    图一(Kc =5)


    图二(Kc =9)

     

    图三(Kc =20)

    从上述的四组数据中可以看到,当Kc=5时,控制系统的稳态误差是最小的。在目标范围正负3°之间,选取Kc = 5.

    2):计算Pc值。从上述的图一(将.csv格式的数据文件在excel中转换图表,将鼠标放在曲线上,会自动显示此点的坐标,如图所示),取4个震荡周期一共720个点,得出一个震荡周期为Pc=720*5/4= 900s。

    3):根据个人需要采用哪种PID组合来计算Ti、Td、Kp、Ki、Kd。温度控制是属于滞后控制,而PID控制中的,微分项是具有超前调节的作用,因此必须引入;积分项对误差的作用取决于时间的积分,随着时间的增加,积分项会增大。这样,即便误差很小,积分项也会随着时间的增加而加大,推动控制器的输出向稳态误差减小的方向变化,直到稳态误差等于零。我采用的是PID组合来控制。得出Ti=900*0.5=450s。Td=900*0.15=135s。

    Kp=5*0.65=3.25Ki= Kp*T/Ti=3.25*5/450=0.036Kd= Kp*Td/T=3.25*135s /5=88

    4):采用PID控制温度,无论高温低温,稳态误差均在正负0.5°范围之内。如下所示:




    一般根据模型计算的参数不一定是适合所有的控制系统(这里实验得到的最佳Kd值为120,而我们算出来的是88),根据特定的环境调节参数范围,找到最优参数,因本系统是滞后系统,微分项起主导作用,我暂时还只做了调整kd值的实验,Ki一般反应在系统达到稳态的时候是否存在稳定误差,从实验结果得出,稳态误差几乎可以忽略。

    零下一度的目标温度,连续8小时的温度控制数据:

     

    附录://PWM频率为1Khz,定时器的计数周期为5000(mPID.MaxDuty = 5000*90%),PID返回值和上次的的定时器技术值决定本次的占空比。

    INT32 PID_calculate(double CurTemp)

    {

        INT32 RetValue;

        doubleresult_value;

     

        // Keep previouserror

        mPID.PrevError =mPID.Error;

     

        // calculatecurrent error

        mPID.Error =mPID.Target - CurTemp;

     

        // calculateintegral

        mPID.SumError +=mPID.Error;

     

        if(mPID.Kd >0.0001)

        {

            result_value =mPID.Kp * mPID.Error + mPID.SumError * mPID.Ki +

                    mPID.Kd* (mPID.Error - mPID.PrevError);

        }

        else

        {

            result_value =mPID.Kp * mPID.Error + mPID.SumError * mPID.Ki;

        }

        RetValue =(INT32)result_value;

        return RetValue;

    }

    //Timer interrupt enable control flag, execute temperaturecontrol.

    //

    void TemperatureControl()

    {

        INT32 ret = 0;

        if(mPID.type ==HEAT)

        {

            INT32 DutyValue= OC4RS;

            if(fabs(mPID.Current- mPID.Target) <= PIDControlStartPoint)

            {

               PIDControlStartPoint = 12;

                ret =PID_calculate(mPID.Current);

            }

            elseif(fabs(mPID.Current - mPID.Target) <= TempControlStartPoint)

            {

                OC4RS = INITPWMPERIOD16 * 50 / 100.0;

                ret = 0;

                return ;

            }

            else

            {

                ret = 0;

            }

           

            if( (DutyValue+ ret) > mPID.MaxDuty)

                OC4RS =mPID.MaxDuty;

            else if(DutyValue+ ret < mPID.MinDuty)

                OC4RS =mPID.MinDuty;

            else

               OC4RS +=ret;

        }

        else if(mPID.type== COOL)

        {

            INT32 DutyValue= OC3RS;

           if(fabs(mPID.Current - mPID.Target) <= PIDControlStartPoint)

            {

               PIDControlStartPoint = 12;

                ret =PID_calculate(mPID.Current);

                ret = -ret;// must be negative

            }

            elseif(fabs(mPID.Current - mPID.Target) <= TempControlStartPoint)

            {

               if(mPID.Target > 5.1)

                   OC3RS =INITPWMPERIOD16 * 70 / 100.0;

                else

                   OC3RS =INITPWMPERIOD16 * 78 / 100.0;

               

                ret = 0;

                return ;

            }

            else

            {

                ret = 0;

            }

           

            if( (DutyValue+ ret) > mPID.MaxDuty)

                OC3RS =mPID.MaxDuty;

            elseif(DutyValue + ret < mPID.MinDuty)

                OC3RS =mPID.MinDuty;

            else

               OC3RS +=ret;

        }

        else

        {}

    }

     

     


    展开全文
  • ODrive应用 #7 控制器&参数整定

    千次阅读 2019-12-03 12:44:22
    控制器 电机控制器为级联式,采用位置,速度和电流控制回路,如下图所示。 当控制模式设置为位置控制时,整个循环都会运行。 在速度控制模式下运行时,位置控制部分将不被使用,并将速度命令直接输入到第二级输入中...

    控制器

    电机控制器为级联式,采用位置,速度和电流控制回路,如下图所示。 当控制模式设置为位置控制时,整个循环都会运行。 在速度控制模式下运行时,位置控制部分将不被使用,并将速度命令直接输入到第二级输入中。 同理,在电流控制模式下,仅使用电流控制回路。
    在这里插入图片描述
    每个控制回路都是基于PID控制器。PID控制器是一种被广泛应用的控制方式,可以适用于控制大部分系统。 这种灵活性使得ODrive可以用于控制各种机械系统。

    位置环:

    位置环控制器是一个具有单个比例增益的P环路。

    pos_error = pos_setpoint - pos_feedback
    vel_cmd = pos_error * pos_gain + vel_feedforward
    

    速度环:

    速度环控制器是一个PI环路。

    vel_error = vel_cmd - vel_feedback
    current_integral += vel_error * vel_integrator_gain
    current_cmd = vel_error * vel_gain + current_integral + current_feedforward
    

    电流环:

    电流环控制器是一个PI环路。

    current_error = current_cmd - current_fb
    voltage_integral += current_error * current_integrator_gain
    voltage_cmd = current_error * current_gain + voltage_integral (+ voltage_feedforward when we have motor model)
    

    可以通过阅读ODrive源码中的 "controller.cpp"文件来获取更多信息。

    参数整定

    调整电机控制器是释放ODrive潜力的必不可少的步骤。通过调整,控制器可以快速响应系统中的干扰或变化(例如施加的外力或设定值的变化)而不会变得不稳定。 正确设置三个调整参数(称为增益)可确保ODrive能够以最有效的方式控制电动机。 这三个参数是:

    • <axis>.controller.config.pos_gain = 20.0 [(counts/s) / counts]
    • <axis>.controller.config.vel_gain = 5.0 / 10000.0 [A/(counts/s)]
    • <axis>.controller.config.vel_integrator_gain = 10.0 / 10000.0 [A/((counts/s) * s)]

    我们即将推出带有自动调整功能的版本。 但在此之前还是需要手动调节,以下是一个粗略的调整过程:

    • 设置 vel_integrator_gain为 0
    • 逐渐减小另外两个值使系统达到稳定状态
    • 逐渐增加vel_gain ,每次增加 30% 左右,直到电机出现轻微的震荡
    • 设置 vel_gain 为出现轻微震动时值的 50%
    • 逐渐增加 pos_gain ,每次增加 30% 左右,直到您看到有些过冲
    • 逐渐减小 pos_gain ,直到过冲消失
    • 可以将积分器vel_integrator_gain设置为0.5 * 带宽 * vel_gain,其中“带宽”是您的系统的控制带宽。 例如,您发送一条运动控制指令,假设您的调整使它以100ms的建立时间(从设定值更改到系统到达新设定值的时间)跟踪命令; 这意味着带宽为1/(100ms)=1/(0.1s)=10hz。 在这种情况下,您应该设置vel_integrator_gain = 0.5 * 10 * vel_gain

    实时绘图功能对于调整控制器参数帮助很大,例如,可以通过在odrivetool中运行以下命令来以曲线的形式实时显示设置位置和实际位置:

    start_liveplotter(lambda:[odrv0.axis0.encoder.pos_estimate, odrv0.axis0.controller.pos_setpoint])

    如果您有任何问题或疑问,欢迎您加入ODrive社区或QQ群 851421965 进行交流。

    展开全文
  • PID控制是工业过程中最常用的控制方法,但在实际生产过程中,被控过程往往是多变量、耦合的,常规PID控制器参数往往整定不良、性能欠佳,对运行工况的适应性较差。为此,将迭代反馈理论和继电整定方法有机结合起来...
  • PID调节器参数整定方法很多,常见的工程整定方法临界比例度法、衰减曲线法和经验法。云润仪表以图文形式分别介绍调节器参数整定方法。 临界比例度法一个调节系统,在阶跃干扰作用下,出现既不发散也不衰减的等幅...

    PID调节器参数整定方法很多,常见的工程整定方法有临界比例度法、衰减曲线法和经验法。云润仪表以图文形式分别介绍调节器参数整定方法。

    临界比例度法
    一个调节系统,在阶跃干扰作用下,出现既不发散也不衰减的等幅震荡过程,此过程成为等幅振荡过程,如下图所示。此时调节器的比例度为临界比例度δk,被调参数的工作周期为为临界周期Tk
    自动调节系统等幅震荡过程图例

    临界比例度法整定PID参数步骤
    1、将调节器积分时间设定为无穷大、微分时间设定为零(即Ti=∞,Td=0),比例度适当取值,调节系统按纯比例作用投入。稳定后,适当减小比例度,在外界干扰作用下,观察过程变化情况,寻取系统等幅振荡临界状态,得到临界参数。

    2、根据临界比例度δk和为临界周期Tk
    按下表计算出调节器参数整定值
                    临界比例度法PID参数整定经验公式

    调节规律调节器参数
    比例度δ,单位:%积分时间Ti,单位:min微分时间Td,单位:min
    Pδk------
    PI2.2×δk0.85×Tk---
    PID1.7×δk0.5×Tk0.125×Tk


    3、将计算所得的调节器参数输入调节器后再次运行调节系统,观察过程变化情况。多数情况下系统均能稳定运行状态,如果还未达到理想控制状态,进需要对参数微调即可。

    衰减曲线法
    衰减曲线法整定调节器参数通常会按照4:1和10:1两种衰减方式进行,两种方法操作步骤相同,但分别适用于不同工况的调节器参数整定。

    4:1衰减曲线法整定调节器参数
    纯比例度作用下的自动调节系统,在比例度逐渐减小时,出现4:1衰减振荡过程,此时比例度为4:1衰减比例度δs,两个相邻同向波峰之间的距离为4:1衰减操作周期TS,如下图所示
    自动调节系统4:1衰减过程

    4:1衰减曲线法整定PID参数步骤如下:
    1、将调节器积分时间设定为无穷大、微分时间设定为零(即
    Ti=∞,Td=0),比例度适当取值,调节系统按纯比例作用投入。系统稳定后,逐步减小比例度,根据工艺操作的许可程度加2%-3%的干扰,观察调节过程变化情况,直到调节过程变化达到规定的4:1衰减比为止,得到4:1衰减情况下的比例度δs衰减操作周期TS

    2、根据δsTs值按以下公式计算出调节器整定参数
                   4:1衰减曲线法PID参数整定经验公式

    调节规律调节器参数
    比例度δ,单位:%积分时间Ti,单位:min微分时间Td,单位:min
    Pδs------
    PI0.2×δs0.5×Ts---
    PID0.8×δs0.3×Ts0.1×Ts

    3、将比例度放在比计算值略大的数值上,逐步引入积分和微分作用。
    4、将比例度降至计算值上,观察运行,适当调整。

    10:1衰减曲线法整定调节器参数
    在部分调节系统中,由于采用4:1衰减比仍嫌振荡比较厉害,则可采用10:1的衰减过程,如下图所示。这种情况下由于衰减太快,要测量操作周期比较困难,但可测取从施加干扰开始至第一个波峰飞升时间Tr
    自动调节系统10:1衰减过程

    10:1衰减曲线法整定调节参数步骤和4
    :1衰减曲线法完全一致,仅采用的整定参数和经验公式不同。
                      10:1衰减曲线法PID参数整定经验公式

     

    调节规律调节器参数
    比例度δ,单位:%积分时间Ti,单位:min微分时间Td,单位:min
    Pδss------
    PI1.2×δssTr---
    PID0.8×δss1.2×Tr0.4×Tr

    http://www.yunrun.com.cn/News/573.html

    展开全文
  • 而电机软启动的方式具备无冲击电流、启动参数可调、软停机功能、轻载节能等优点逐渐被广泛应用。各启动方式对电网的影响示意图如图1所示。  目前,软启动方式主要采用晶闸管交流调压的方法。在电动机起动...
  • 而电机软启动的方式具备无冲击电流、启动参数可调、软停机功能、轻载节能等优点逐渐被广泛应用。各启动方式对电网的影响示意图如图1所示。  目前,软启动方式主要采用晶闸管交流调压的方法。在电动机起动...
  • 四轴飞行的串级PID参数整定经验

    千次阅读 多人点赞 2017-11-27 11:22:48
    串级PID即将两个PID控制器按照串联的方式连接起来,前一个的输出作为后一个的输入两者共同控制控制对象。对于四旋翼来讲最普通的就是外环角度环,内环角速度环,两者怎么联系呢?
  • PID控制的理解与参数整定

    千次阅读 2020-03-11 12:09:26
    PID控制器的一般结构 当控制器为比例控制器(P)时,可以减少因扰动而引起的稳态误差,但不能将稳态误差减少...由于理论上的控制器有的时候产生的信号过大,可能破坏硬件系统,所以在控制器的输出端通常要加一个驱...
  • pid参数整定计算

    万次阅读 2017-06-25 12:31:32
    之前推送过一篇关于PID的知识,感觉意犹未尽,今天再给大家奉上一篇关于PID算法及参数整定的知识! 传送门:单片机的PID控制!关于PID控制这篇说得很明白! 1.位置表达式 位置式表达式是指任一时刻PID控制器...
  • 目前,常用的解耦设计方法,前馈解耦、偏差解耦以及内模控制。 采用前馈解耦方法 由电机在旋转坐标系下的数学模型可以得到uqu_quq​和udu_dud​表达式: 对其取拉氏变换,得到 由此可以画出电机模型的传递函数:...
  • 关注、星标公众号,不错过精彩内容直接来源:21ic电子网之前给大家分享过PID基础理论的文章:重温经典PID算法PID原理和参数调试今天进一步分享一些PID相关细节内容。在过程控制中,按...
  • PID参数整定——Z-N方法

    万次阅读 多人点赞 2017-03-08 11:36:28
    PID参数整定的Z-N法,在经验法的基础上更快对参数进行整定
  • PID控制整定算法

    千次阅读 2019-03-25 19:10:46
     PID是比例、积分、微分的简称,PID控制的难点不是编程,而是控制器参数整定参数整定的关键是正确地理解各参数的物理意义,PID 控制的原理可以用人对炉温的手动控制来理解。阅读本文不需要高深的数学知识。 ...
  • PID参数整定一些总结

    千次阅读 2020-06-12 17:34:01
    PID参数整定法总结 PID控制规律 2、PID传递函数 3、各环节的作用 比例环节作用: 系统一旦出现偏差,比例环节立即产生调节作用以减小系统偏差,比例作用大 ,可以加快调节,减少误差,但是过大的比例,使系统的...
  • 最快的PID参数整定口诀

    万次阅读 2017-02-17 09:17:32
    参数整定找最佳从小到大顺序查  先是比例后积分最后再把微分加  曲线振荡很频繁比例度盘要放大  曲线漂浮绕大湾比例度盘往小扳  曲线偏离回复慢积分时间往下降  曲线波动周期长积分时间再加长...
  • 数据中心断路器整定值计算(二)

    千次阅读 2019-08-27 19:50:56
    在我的上一篇文章《低压系统第一个断路器的参数设计》中探讨的是断路器的极限分断能力的选型和接地故障保护电流的计算,后来在其它刊物发表这篇文章的时候,我将文章的名称改为《数据中心断路器整定值计算(一)》,...
  • PID 参数整定过程

    千次阅读 2017-06-08 15:08:12
    目前,PID控制及其控制器或智能PID控制器(仪表)已经很多,产品已在工程实际中得到了广泛的应用,各种各样的PID控制器产品,各大公司均开发了具有PID参数整定功能的智能调节器(intelligent regulator),其中...
  • 基于遗传算法的PID参数整定研究 在获得对象模型的基础上设计PID参数常用的原理,经典的经验试凑法、临界比例度法、极点配置原理、零极点相消原理、幅相裕度法等;现代的则往往借助于计算机,利用最优化方法或...
  • 详细讲解关于Simulink中单相Boost PFC设计过程和参数整定,补充了UC3854在Saber中的仿真。
  • PSO粒子群算法调节PID控制器参数

    千次阅读 2020-03-09 19:05:41
    概述 PSO(粒子群算法)在处理连续问题上有着较强的能力,因此很适合用来做参数优化,而PID控制器由三...而一个控制效果好的PID控制器应针对不同类型输入都较快的响应速度,较小的超调以及稳态误差。因此我们将经...
  •  参数整定找,从小到大顺序查,先是比例后积分,再把微分加,曲线振荡很频繁,比例度盘要放大,曲线漂浮绕大湾,比例度盘往小扳,曲线偏离回复慢,积分时间往下降,曲线波动周期长,积分时间再加长,
  • PID控制器开发笔记之十二:模糊PID控制器的实现

    万次阅读 多人点赞 2018-11-10 19:14:06
    在现实控制中,被控系统并非是线性时不变的,往往需要动态调整PID的参数,而模糊控制正好能够满足这一需求,所以在接下来的这一节我们将讨论模糊PID控制器的相关问题。模糊PID控制器是将模糊算法与PID控制参数的自...
  • 基于MATLAB的PID控制器参数整定及仿真.pdf 基于MATLAB的PID控制器设计.pdf 基于MATLAB/Simulink环境下的PID参数整定.pdf 基于OV7620摄像头智能车道路信息视频采集及处理研究.pdf 基于单片机PID算法的直流电机测控...
  • 继电反馈自整定算法

    千次阅读 2020-01-23 17:53:18
    导读 PID算法是工业上一种常用的控制算法,因其容易理解、实现简单、鲁棒性强等特性而得到广泛应用,除此之外,许多智能算法都需要以PID为基础才能真正应用到实际生产中。...近几年来,控制器的功...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 27,156
精华内容 10,862
关键字:

常用控制器需要整定的参数有