前言:
此时同学们对“c编写pid控制算法”大致比较着重,我们都想要剖析一些“c编写pid控制算法”的相关文章。那么小编在网上汇集了一些对于“c编写pid控制算法””的相关知识,希望大家能喜欢,大家快快来了解一下吧!在我们实际工作经常会用到PID控制系统,比如控制恒压供水设备,恒温加热设备等。这些设备使用PLC进行控制时,不仅仅需要编程,还需要设置相关参数(或者说组态)。只有正确设置了相关参数之后,程序编写的才有意义。
那么今天我们以西门子1200PLC为例,给大家讲讲如何组态PID功能。在组态之前,要先判断如何选择PID指令,因为根据不同的应用场景选择的PID指令不同,指令选择的不同的话,组态也有一些区别。
①PID指令选择:
S7-1200 PID 功能有三条指令可供选择, 分别为 PID_Compact,PID_3Step,PID_Temp,如图1所示:
▲图1 | PID指令图▲
第一步:先判断是否使用三位执行机构,如果使用则选择PID_3Step指令。这里解释一下三位执行机构的特点:
1、只接受开启/关闭两个数字量输出控制;
2、具有开到位/关到位的限位开关输入信号,或具有模拟量反馈位置信号。
比如现场的一些电动阀门,PLC控制电动阀门的正转或者反转从而控制流量、压力等。PID_3Step指令(如图2)控制两个开关量的输出,比如一个为1,一个为0,电动机可能是正转。一个0,另外为1,电动机可能是反转。
▲图2 | PID_3Step指令▲
第二步:如果未使用三位执行机构,判断是不是多回路、串级控制,如果是,则跳转到第3步判断;如果不是,则跳转到第4步。
第三步:判断是不是需要加热/制冷双输出(比如在空调系统中)。如果需要,则调用PID_Temp指令,如图3所示。
▲图3 | PID_Temp指令▲
第四步:判断是不是需要温度控制常用的附加功能(如控制带、死区等),如果不需要,则调用PID_Compact,如图4所示。
▲图4 | PID_Compact指令▲
这边解释一下“控制带”及“死区”这两个概念。
控制带:
在温度控制具有明显的大滞后特性,当过程值偏离设定值较大时调节过程过于缓慢,而接近设定值时又容易出现较大超调。
存在上述两种问题,温度控制必须满足在偏差超过一定的范围时,输出最大或者最小的调节量,让温度值快速回到一个小的范围中,以缩短调节时间:在设定值附近时,越靠近设定值,调节量应越小,以防止超调。为此,控制带功能在当过程值大于设定值,且偏差绝对值超过控制带,则以输出下限作为输出值。当过程值小于设定值,且偏差绝对值超过控制带,则以输出上限作为输出值。如果偏差的绝对值小于控制带,则以实际PID的计算结果作为输出。
死区:
在控制系统中,执行机构如果动作频繁,会导致小幅震荡造成机械磨损,很多控制系统允许被控量在一定范围内存在误差,该误差称为PID的死区。
当过程值满足如下公式时,SP –"死区宽度"<PV <SP +"死区宽度"时,PID停止调节保持输出不变。如下图所示
②PID_Compact指令组态
我们以最基本的恒压供水系统,给大家说明如何组态(设置相关参数)。必须先添加循环中断,然后在循环中断中添加PID_Compact指令。在循环中断的属性中,可以修改其循环时间(如图5)。
▲图5 | 添加循环中断后在属性界面修改其循环时间▲
这里解释一下循环时间:PID控制器的采样时间是循环中断时间的整数倍。如果我们自整定PID参数,系统会自动计算sRet.r_Ctrl_Cycle(采样时间)参数。若用户使用手动方式设定PID参数,则一定要注意此参数为循环中断时间的整数倍。
例如:PID控制器的采样时间是1s,循环中断时间为100ms,则在1S的时间内,循环中断执行了10次,但前9次PID控制器都不进行运算。
(1)在“指令> 工艺> PID 控制> Compact PID> PID_Compact”下,将PID_Compact 指令添加至循环中断。如图6所示:
▲图6 | 在循环中断中添加PID_Compact 指令▲
(2)当添加完PID_Compact 指令后,在项目树> 工艺对象文件夹中,会自动关联出PID_Compact_x[DBx],包含其组态界面和调试功能。如图7所示:
▲图7 | 工艺对象中关联生成PID_Compact▲
(3)使用PID控制器前,需要对其进行组态设置,分为基本设置、过程值设置、高级设置等部分。如图8所示:
▲图8 | PID_Compact > 基本设置>控制器类型▲
第一、基本设置
①基本设置--控制器类型
a、为设定值、过程值和扰动变量选择物理量和测量单位。我们使用的是恒压控制,所以选择“压力”即可。如图9所示;
b、正作用:随着 PID控制器的偏差增大,输出值增大。反作用:随着PID控制器的偏差增大,输出值减小。PID_Compact反作用时,可以勾选“反转控制逻辑”。如图9所示;
c、要在 CPU重启后切换到“模式”(Mode)参数中保存的工作模式,请勾选“在CPU 重启后激活模式”。如图9所示。
▲图9 | PID_Compact > 基本设置>控制器类型▲
②基本设置--定义Input/Output 参数(如图10)
定义 PID过程值和输出值的内容,选择PID_Compact输入、输出变量的引脚和数据类型。选择Input的话,那么就需要在程序中标定好工程单位值,然后标定好的工程量值填写在PID_Compact管脚Input处,Input处的管脚值与Setpoint管脚的值比较比较,从而控制输出。那到底是控制哪个输出呢?就是根据Output处选择的参数,可以是Output_PER、Output、Output_PWM。Output_PER就是直接通过模拟量的方式输出控制外部设备,比如变频器、电机等,最终它的输出值是在0-27648之间,从而转换成0-10V或者0-20mA,达到控制的结果。Output是百分比的方式输出,它介于0-100之间,如果需要控制外部设备的话,需要用其他指令转换输出。Output_PWM是脉宽脉宽调制方式输出数字量。
那如果Input处选择的是Input_PER,填写的就是模拟量输入通道的地址(比如IW64),这个地址会自动转换成工程单位与Setpoint管脚的值比较。那它如何进行转换的呢?我们往下看。
▲图10 | PID_Compact > 基本设置>定义Input/Output▲
第二、过程值设置
①过程值设置--过程值限值(如图11)
必须满足过程值下限<过程值上限。如果过程值超出限值,就会出现错误。我们设置的是60hpa,因为我们的压力传感器是0-5Kpa的,而量程中只用hpa这个单位。所以我们转换成hpa,并且设置留有余量。
▲图11 | 设置过程值限值▲
②过程值设置--过程值标定
a、只有在“基本设置”项下Input/Output 中输入选择为 “Input_PER”时,才可组态过程值标定;
b、如果过程值与模拟量输入值成正比,则将使用上下限值对来标定Input_PER;
c、必须满足范围的下限<上限。
由于我们“基本设置”项下Input/Output 中输入选择为 “Input”所以图11中“Input_PER”项为“已禁用”。
▲图11 | 进行过程值标定▲
高级设置
①高级设置--过程值监视(如图12及图13):
▲图12▲
a、过程值的监视限值范围需要在过程值限值范围之内;
b、过程值超过监视限值,会输出警告。过程值超过过程值限值,PID输出报错,切换工作模式;
▲图13▲
②高级设置-- PWM 限制,在此不介绍。
③高级设置--输出值限值(如图14)
▲图14▲
a、在“输出值的限值”窗口中,以百分比形式组态输出值的限值。无论是在手动模式还是自动模式下,都不要超过输出值的限值。
b、手动模式下的设定值ManualValue,必须介于输出值的下限 (Config.OutputLowerLimit) 与输出值的上限 ( Config.OutputUpperLimit)之间的值。
c、如果在手动模式下指定了一个超出限值范围的输出值,则CPU 会将有效值限制为组态的限值。
d、PID_compact 可以通过组态界面中输出值的上限和下限修改限值。最广范围为-100.0 到100.0,如果采用Output_PWM 输出时限制为0.0 到100.0 。
④高级设置--对错误的响应(如图15)
a、在PID_Compact V2 时,可以预先设置错误响应时PID 的输出状态,如图13所示。以便在发生错误时,控制器在大多数情况下均可保持激活状态;
b、如果控制器频繁发生错误,建议检查Errorbits 参数并消除错误原因。
▲图15▲
根据错误代码来分析错误原因。根据组态界面所设置的“对错误的响应”,不同错误的响应状态也不一样,如下表所示:
⑤高级设置--手动输入PID 参数
a、在 PID Compact 组态界面可以修改PID 参数,通过此处修改的参数对应工艺对象背景数据块> Static > Retain > PID 参数;
b、通过组态界面修改参数需要重新下载组态并重启PLC。建议直接对工艺对象背景数据块进行操作。
来源:技成培训网,作者:技成-郭彪,未经授权不得转载!
如何获取电气热门资料?
操作指引如下!
标签: #c编写pid控制算法