请问这个pI控制器的p参数是如何算出来的,求具体过程,谢谢

请问这个pI控制器的p参数是如何算出来的,求具体过程,谢谢,第1张

PID控制器的参数整定是控制系统设计的核心内容。它是根据被控过程的特性确定PID控制器的比例系数、积分时间和微分时间的大小。PID控制器参数整定的方法很多,概括起来有两大类:一是理论计算整定法。它主要是依据系统的数学模型,经过理论计算确定控制器参数。这种方法所得到的计算数据未必可以直接用,还必须通过工程实际进行调整和修改。二是工程整定方法,它主要依赖工程经验,直接在控制系统的试验中进行,且方法简单、易于掌握,在工程实际中被广泛采用。PID控制器参数的工程整定方法,主要有临界比例法、反应曲线法和衰减法。三种方法各有其特点,其共同点都是通过试验,然后按照工程经验公式对控制器参数进行整定。但无论采用哪一种方法所得到的控制器参数,都需要在实际运行中进行最后调整与完善。 一种增量式PID: △U(k)=Ae(k)-Be(k-1)+Ce(k-2) A=Kp(1+T/Ti+Td/T) B=Kp(1+2Td/T)C=KpTd/TT采样周期 Td微分时间 Ti积分时间

指点谈不上,大家交流一下。

我是这样做的,在实际应用中感觉还行(一个用控制风机频率来实现加温结果恒定的系统):

第一步:先用被控对象目标测量值与设定值都除以量程,(相当于换成百分比了,程序里过程为LAD2,15-16行,F8:27—F8:31/850---F8:35,设定F8:77-F8:33/850—F8:37);

第二步:用换成百分比的设定值减测量值,(LAD3中第1行,F8:11存储),用相减的结果乘以I值(F8:73存储I值,积分系数);

第三步:再计算一个换成百分比的设定值减测量值,乘以01后乘以I值后除以P值,然后将此数值和主程序值相加(F8:15,初始切换到自动PID调节时此值为0,见LAD2第18行,自动后每个周期加一次此数),同时把结果也存储到F8:15中(如果调节目标的测量值和实际值之差小于02,则将F8:15赋值0,相当于不再累加LAD2第59行);

第四步:将第二步和第四步的值相减存储于F8:17中,并判断其是否大于1,大于1则赋值1;(F8:15和值系数也需要这样一个判读和赋值,不过基本上不可能)

第五步:将计算结果在主程序中(LAD2第20行)乘以输出幅度(输出为风机频率,最大50赫兹),然后在在上一周期输出值基础上累加(LAD2第61行)。

第六步:将上述计算结果换算成模块的输出信号值(先除以输出幅度,变换为百分比,标度变换系数12483)

上述内容自己看着都别扭,简单点讲就是将调节目标的实际值和设定值转换为百分比后取差,然后将差值的1/10×I÷P后再求差,结果累加到输出上去。P值越大,差值越大,I值越大,差值越小,每个扫描周期累加一次,直到实际值和设定值接近。

我用的PLC是AB的MicroLogix1200系列,不知道你能打开不?

PID广泛应用于工业生产各个环节,然而对于不同PID结构会有一些差异,导致在调参时若按照常规的经验调试,结果将会有非常大的不同。

串联型PID的三个环节由比例,积分和微分项串级而成,结构简图如下:

其传递函数为:

若使用后向欧拉法将其离散化,即将:

带入式(1-1)中,可得到:

其中:

式(1-3)即为串联型PID的离散化增量式实现。利用递推的方法可得到绝对式实现如下:

并联型PID的三个环节由比例,积分和微分项并联而成,其结构简图如下:

其传递函数为:

串联型与并联型二者的系数有所不同,其关系如下:

使用后向欧拉离散化,可得到并联型PID的离散化增量式实现如下:

若使用Tustin方式离散化,即将:

带入式(2-1)中,并将 置为0,可得到:

此即为并联型PI的离散化增量式实现。同样利用递推的方法可以得到绝对式实现如下:

标准型PID与上述二者都不同,其结构简图如下:

其传递函数为:

此时有:

使用后向欧拉离散化方法,可得到标准型PID的离散化增量式实现:

若使用Tustin方式离散化,并将 置0,则得到标准型PI的离散化增量式实现:

式(3-4)即为TI的快速电流环(FCL)中速度优化型PI控制器实现原理。值得注意的是,FCL中的各变量均为标幺值,因此实际实现需要稍作转换,即:

其中:

最后,使用同样的递推法,可以得到绝对式实现:

<div id="refer-anchor-1"></div>

你好,在Excel编写坐标增量很简单!公式:ΔX=平距COS(

方位角

PI()/180))ΔY=平距SIN(方位角PI()/180))如果还有什么不明白的请咨询本团!谢谢!

typedef struct{  

    float limit;    //输出限幅  

    float target;   //设置量  

    float feedback; //实测量  

    float Kp;       //比例系数

    float Ki;       //积分系数

    float Kd;       //微分系数

    float eSum;     //误差积分

    float e0;       //当前误差  

    float e1;       //上一次误差  

}PIDType;  

  

#define max(a, b)           (a>b a:b)  

#define min(a, b)           (a<b a:b)  

#define range(x, a, b)      (min(max(x, a), b))  

  

float pid_pos_update(PIDType p)  

{  

    float pe, ie, de;  

    float out=0;  

    //计算当前误差  

    p->e0 = p->target - p->feedback;  

    //误差积分  

    p->eSum += p->e0;  

    //误差微分  

    de = p->e0 - p->e1;  

    pe = p->e0;  

    ie = p->eSum;  

    p->e1 = p->e0;  

    //数据增量  

    out = pe(p->Kp) + ie(p->Ki) + de(p->Kd);  

    //输出限幅  

    out = range(out, -p->limit, p->limit);  

    return out;  

}

C++中用宏来定义pi,可以这样:

#define PI 31415926

说明:

宏定义的格式是:

#define 宏名 字符串

对照上面的定义,宏名是PI,字符串是31415926。

编译器在编译程序时,先使用宏名代表的字符串把所有宏名替换,然后再进行编译。

注意点:

宏定义后面不需要分号;

宏名的命名和标准变量的命名规则相同,不允许数字开头。

作为编程习惯,一边用全大写字母作为宏名,比如:MAX_ITEM, MIN_NUM等等。

对于算术表达式的宏定义,最好用小括号括起来,比如:

#define MAX_NUM (2+4)

如果程序里有4MAX_NUM,预编译被替代后就是4(2+4),想想如果没有括号,就会替代成42+4,两者的结果截然不同,所以一定要注意这种定义。

C代码和运行结果如下:

可见在给定精度下,输出π的近似值为3141393,望采纳~

附源码:

#include <stdioh>

#define E 1e-4

int main() {

double pi = 0;

int i, sign = 1; // sign表示正负号

for (i = 1; 10 / i >= E; i += 2) {

pi += sign 10 / i;

sign = -sign;

}

pi = pi 4;

printf("%lf\n", pi);

return 0;

}

以上就是关于请问这个pI控制器的p参数是如何算出来的,求具体过程,谢谢全部的内容,包括:请问这个pI控制器的p参数是如何算出来的,求具体过程,谢谢、在PLC编程中如何实现PI算式、串联型PID,并联型PID与标准型PID简要说明等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10635062.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存