「百说不如一练」如何自己动手写一个PID控制算法?
前言
一般来说,各家品牌的PLC都是自带PID功能的,直接调用即可。要求不高的调节场合,直接使用默认参数即可。有些控制要求较高的场合,除了耐心也要讲究一些技巧,不过学会PID通用调试方法,什么控制器都不怕!当然也可以通过下面的(模型+动态图)更直观的学习PID控制。西门子PLC有三种PID功能,可以参考PID功能选型以及故障处理。不过今天重点来说明下,如何自己动手做一个PID控制算法:根据PID的通用算法公式分别用C语言和梯形图来编程实现。(以下图片源自网络)
一、PID控制算法公式
二、C语言程序
直接上C语言代码:
三、梯形图程序
再上PLC梯形图:
其实根据PID算法公式,实现的方法有很多,可以用各种不同的编程语言来实现,欢迎朋友们留言说说你们是如何实现的?
PLC中的PID控制到底是什么?看我为你细细道来。
PID运算指令:
该指令助计符,指令代码,操作数,程序步如下表:
指令含义:
D0为设定值即为我们给定的值,D1为当前值,D100为PID在运算中所需要的一些参数,这里共有25个数据从:D100~D124,D150表示的为输出值。
PID计算公式:
含义:
在这里我们要注意PID调节可分为:比例调节,积分调节,微分调节。
比例调节: 是按比例反应系统的偏差,系统一旦出现了偏差,比例调节立即产生调节作用用以减少偏差。我们举例来说就是:比如我们现在装一桶水,一桶水为10L,一次加2L,那么按照比例调节的话5次就加满了。但是如果这个桶有个洞,每次加水就漏0.5L。那么加满就会漏掉2.5L,这就是稳态误差。也是比例积分的不足, 比例积分会产生稳态误差,并且调节不了。(我们在市面上看到很多变频空调就是这样,调节恒温在20度,其实就只有19度,也就是这个原因)
积分调节: 是使系统消除稳态误差,提高无差度。因为有误差,积分调节就进行,直至无差,积分调节停止,积分调节输出一常值。还是用上面这个例子来举例,当我们发现加到10L后发现漏掉了2.5L,只有7.5L。因为每次加水的话会有0.5的误差,那么如果我们引入了积分调节的话, 就会在每次加水的时候再多加0.5L,这样加5次后,原来漏掉的2.5L水就被补回来了。
微分误差: 微分作用反映系统偏差信号的变化率,具有预见性,能预见偏差变化的趋势,因此能产生超前的控制作用,在偏差还没有形成之前,已被微分调节作用消除。这个我们可以这样理解,当我们加入了微分误差后,比如你想多加水,那么程序知道后就会减少水加入,如果你想少加水,那么程序就会控制多加水。
如果我们把这三种调节方式加起来就变成了我们所说的PID控制 。
下面我们来看看使用这条指令的注意事项:
(1)该参数表需占用25个数据寄存器
因而首元件号不可大于D7925。本指令在编程时可多次使用,但应注意各PID环节占用的数据寄D不可重复。PID指令有特定出错码出错标志为M8067.相应的出错码存放在D8067.
(2) PID参数表占用[S3]指定的首元件
开始的连续25个数据寄存器。请用保持型数据寄存器以保持所设参数。参数表中一部分是必须由用户在PID运算前用指令写入的,一部分留作内部运算用,还有一部分是存放运算结果的
[S3]:采样时间(TS: ) 1~32767 (ms)
[S3]+1动作方向(ACT) ,bito---0:正动作,1:逆动作
正动作 是指当前值大于设定值SV时.加大执行量。例如空调控制,空调未启动时室温上升,超过设定值,则启动空调。
逆动作 是指当前值小于设定值SV时加大执行量。例如加热炉,当炉温低于设定值时必须投入加热装置以升高炉温.
1:输入量报警ON1:输出量报警ON
bit1 —0:输入量报警—1;输出量报警ON
bit2—0:输出量报警OFF—1;输出量报警ON
bit3—保留
bit4—O:自动调谐0FF—1;自动调谐ON
bit5 O:输出值上下限设定OFF
1;输出值上下限设定ON
bit6~bit15保留
另外,请不要使bit5和bit2同时处于0N
[S3]+2输入滤波常数(a ) 0~99%
0时没有输入滤波
[S3]+3比例增益(KP)—1~32767(%)
[s3]+4积分时间(TI)—0~32767(%),0时作为无穷大处理(无积分)
[s3]+5微分增益(KD) 1~100 (%),0时无微分增益
[s3]+6微分时间(TD),3~32767 ( X 10ms) 0时无微分处理
[S3]+7一[S3]+19
P1D运算的内部处理占用
[S3]+20—过程量最大增量值
0~ 32767([S3]+1的bitl=1时有效)
[S3]+21—过程量最大减量值
0~ 32767([S3]+1的bitl=1时有效)
[S3]+22—输出增量报警设定值
0~32767([3]+1的bit2=1, bit5=0时有效)另外,输出上限设定值一32768~32767
([S3]+1的bit2=0. bit5=1时有效)
[S3]+23 输出减量报警设定值
0~ 32767([S3]+1的bit2=1, bit5-0时有 效)另外,输出下限设定值一3276832767
([3]+1的bit2=0. bit5=1 时有效)
调试PID参数:
1、确定比例增益Kp
确定比例增益Kp时,首先去掉PID调节器的的积分项和微分项,即令积分时间常数和微分时间常数都为零,使PID调节器成为纯比例调节。
2、确定积分时间常数Ti
比例系数确定之后,设定一个较大的积分时间常数Ti,然后逐渐减小,直至系统出现振荡,然后再反过来,逐渐增大,直至系统振荡消失。
3、确定微分时间常数Td
微分时间常数Td一般不用设定,为0即可,此时PID调节转换为PI调节。
4、系统空载、带载联调
对PID参数进行微调,直到满足性能要求。
喜欢更多PLC知识,关注小编不迷路噢!
相关问答
plc控制变频器pid参数设置?
变频调速恒压供水变频器参数设置:1、系统的水压反馈信号P2,接到PLC,2、系统启动后,PLC比较P和P2,经过PID后得到P1,P1送至变频器,同时PLC的DO控制...
电气比例阀怎么用PLC的PID模拟控制来编程控制?给我个例子就好啊?
这个程序我可以给你设计,设计的思路是,在圆筒上装一个金属,用接近开关(中间可以加PID控制。把分先给我,我会和你联系。这个程序我可以给你设计,设计的思路是...
关于PLC的PID应用,目标值、设定值、与输出值的关系?
PID是闭环控制系统,这个系统根据反馈的过程值来调整输出值,使过程值向目标值(设定值)靠拢。输出值是根据目标值和过程值的差值变化的,不是根据单独的目标值...
plc如何自己编写pid功能?
回答如下:编写PLCPID功能的基本步骤如下:1.确定PID算法的具体实现方式,包括比例系数、积分时间和微分时间等参数。2.读取输入信号,例如温度、压力等变量...
三菱PLCPID控制?
三菱PLC可以通过PID指令来实现PID控制。PID控制是一种常用的闭环控制方法,可以根据系统的反馈信号来调整控制器的输出,以达到控制目标。在三菱PLC中,可以使用P...
欧姆龙PLCPID指令怎么使用?
欧姆龙PLC中使用PID指令需要首先定义PID控制器的参数,如比例增益、积分时间和微分时间。然后,在PLC程序中调用PID指令,将输入信号、目标值和输出信号连接到PID...
plc能进行pid运算吗?
是的,PLC可以进行PID运算。PID是指比例、积分和微分控制,是一种经典的控制算法,在工业自动化中被广泛应用。PLC通过编程实现PID算法,能够根据输入信号和设定...
模糊PID在PLC上实现?
你好,这个问题要从2个角度回答:1、首先探讨这么做是否可行:这么做是完全能实现的,但不能只用梯形图编程。OMRON的PID(190)、PIDAT(191)调节指令,涉及...你...
pid三个参数的调整方法?
1、PID就是通过系统误差利用比例、积分、微分计算出控制量进行控制的。不同厂家的公式稍有不同,但是基本上都离不开三个参数:比例、积分时间、微分时间。2、...
plc中pid调节控制面板的使用方法?
在PLC中使用PID调节控制面板,需要先设置好相关参数,包括比例系数、积分时间和微分时间等。然后将输入信号与输出信号连接到相应的端口上,通过调节面板上的旋...