苏州实操派科技有限公司官网-实操派教育科技,汇川技术PLC培训,实操派PLC培训,苏州PLC培训机构

如何在CODESYS中编写增量型PID程序?

[复制链接]
1 526
虾仔123 2023-5-17 21:23:58 | 显示全部楼层 |阅读模式

附件下载,需登录可以查看贴内更多信息

您需要 登录 才可以下载或查看,没有账号?立即注册

x
如何在CODESYS中编写增量型PID程序?

在电气工程自动化领域,PID控制器是一种经常被使用的控制算法,它能够使得机器系统按照预设目标运行,并实现自适应控制。CODESYS是一种广泛使用的PLC编程软件,它提供了丰富的编程工具,允许编程人员设计和实现各种PID控制器算法。本文将介绍如何在CODESYS中编写增量型PID程序。

一、PID控制器简介

PID控制器是一种比例、积分和微分控制算法的混合体,它基于反馈控制原理,允许对控制系统的误差进行监测,并根据误差大小对输出信号进行调整,以达到控制目标。

P代表比例控制,I代表积分控制,D代表微分控制。比例控制指的是,控制器输出的大小取决于当前误差的大小;积分控制则指的是,控制器输出的大小取决于误差大小随时间累积的总和;微分控制则指的是,控制器输出的大小取决于误差变化率的大小。

PID控制器通常处于两个状态:手动模式和自动模式。在手动模式下,控制器由人工控制,并根据人工操作对输出信号进行调整;在自动模式下,控制器将根据先前设定的目标值自动调整输出信号。

二、增量型PID控制器

增量型PID控制器是一种更高级的PID控制器算法。与标准PID控制器相比,增量型PID控制器不是直接计算输出信号,而是计算输出信号的变化量,并将变化量叠加到之前的输出信号上。这种方法可以避免累积误差,并且可以使得控制系统更加稳定。

三、CODESYS中的增量型PID控制器

CODESYS提供了两种常用的PID控制器算法:位置型PID控制器和增量型PID控制器。这里我们讲述如何在CODESYS中编写增量型PID程序。

1.声明变量

在CODESYS中定义一个使用增量型PID控制器的变量,需要声明如下的变量类型:

```
VAR
    PID: STRUCT
        Kp: REAL := 0; // 比例系数,默认为0
        Ki: REAL := 0; // 积分系数,默认为0
        Kd: REAL := 0; // 微分系数,默认为0
        Ts: REAL := 0; // 采样周期,默认为0
        Error: REAL := 0; // 当前误差,默认为0
        PreError: REAL := 0; // 上一次误差,默认为0
        DeltaU: REAL := 0; // 输出变化量,默认为0
        PreY: REAL := 0; // 上一个输出值,默认为0
    END_STRUCT;
END_VAR
```

这段代码声明了一个名为PID的结构体,其中包含了比例系数(Kp)、积分系数(Ki)、微分系数(Kd)、采样周期(Ts)、当前误差(Error)、上一次误差(PreError)、输出变化量(DeltaU)和上一个输出值(PreY)等参数。

2.编写PID控制算法

在CODESYS中,编写增量型PID控制算法的方法与编写标准PID控制算法的方法类似。需要将控制器的三个算法合并起来,并根据当前误差进行计算,得出输出变化量。

具体而言,我们可以使用以下代码实现增量型PID控制:

```
PID.Error := Target – Input; // 计算当前误差
PID.DeltaU := PID.Kp * (PID.Error – PID.PreError) + PID.Ki * PID.Error * PID.Ts + PID.Kd * (PID.Error – 2 * PID.PreError + PID.Error) / PID.Ts;
PID.PreY := PID.PreY + PID.DeltaU; // 叠加输出变化量
PID.PreError := PID.Error; // 更新误差
```

这段代码中,PID.Error表示当前误差,Target表示期望值,Input表示实际输入值。PID.DeltaU表示输出变化量,PID.Kp、PID.Ki和PID.Kd分别为比例系数、积分系数和微分系数。PID.PreY表示上一个输出值,PID.PreError表示上一次误差。

3.调用PID控制算法

将增量型PID控制器算法与实际应用相结合,需要在CODESYS中调用PID控制算法。具体而言,在每个采样周期(Ts)结束时,应该调用PID控制器算法来计算输出变化量,并更新输出值。

例如,以下代码演示了如何使用增量型PID控制器来控制机器加热器的温度:

```
VAR
    Temperature: REAL := 0; // 当前温度值
    SetPoint: REAL := 100; // 温度设定值
    PID: STRUCT
        // 上述声明PID结构体的代码
    END_STRUCT;
END_VAR

WHILE TRUE DO
    Temperature := ReadTemperature(); // 读取当前温度
    PID.Error := SetPoint – Temperature; // 计算当前误差
    PID.DeltaU := PID.Kp * (PID.Error – PID.PreError) + PID.Ki * PID.Error * PID.Ts + PID.Kd * (PID.Error – 2 * PID.PreError + PID.Error) / PID.Ts;
    Temperature := Temperature + PID.DeltaU; // 控制温度
    WriteToControlSystem(Temperature); // 更新控制系统
    PID.PreError := PID.Error; // 更新误差
    DELAY_PID(PID.Ts); // 延时
END_WHILE
```

这段代码中,ReadTemperature()函数用于读取当前温度值。WriteToControlSystem()函数用于将PID控制器的输出信号发送给控制系统。DELAY_PID()函数用于延迟采样周期的时间。

这样,我们就完成了在CODESYS中编写增量型PID程序的过程。

四、总结

本文介绍了PID控制器的基本原理,并详细讲解了如何在CODESYS中编写增量型PID程序。通过学习本文,您已经掌握了在CODESYS中编写PID控制程序的基本方法。希望您能够在实际工作中灵活运用所学知识,提高工作效率。

________________________________________________________________________

免责声明:本文非官方发布,内容真实性请注意甄别,文章内容仅供参考。本站不对内容真实性负责,请悉知!本站不对内容真实性负责,请悉知!。我们专注于汇川技术产品培训,官网https://shicaopai.com

相关帖子

回复

使用道具 举报

shicaopai 2023-5-17 21:26:23 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

"π³ 实操派",培养中高端PLC工程师,PLC培训-Codesys培训

项目实战 手把手教学 微信&电话 15850116008
超2000节系统化课程,汇川优秀自动化讲师亲授!学一门Codesys,玩800家PLC仅剩少量名额
点击免费试听

到实操派,学PLC就是快!

扫码领取工控文库VIP

钻石VIP先到先得

服务电话 & 微信:9:00-22:00

15850116008

苏州实操派科技有限公司

公司地址:江苏省苏州市吴中区越溪街道天鹅荡路5号31B13

Copyright © 苏州实操派科技有限公司 2022 到实操派,学PLC就是快!工业自动化业务培训适用人群:成人 ( 苏ICP备2022021576号-3 )

公司地址:江苏省苏州市吴中区越溪街道天鹅荡路5号31B13

返回顶部