0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

西门子增量式PID算法带积分分离

工控论坛 来源:工控论坛 2024-12-07 09:34 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

西门子增量式带积分分离PID控制器是一种改进的PID控制算法,它结合了增量式PID和积分分离的优点。这种控制器在处理某些特定类型的控制问题时特别有效,尤其是在需要快速响应且避免积分饱和的情况下。下面我将解释其作用、应用场合以及如何使用SCL(Structured Control Language)在FB(Function Block)中封装这样的PID控制器。 一、作用
  1. 增量式PID:增量式PID控制器计算的是输出的变化量,而不是绝对值。这使得控制器更加稳定,特别是在系统受到扰动时。增量式PID通过以下公式计算:

    3306ea58-b249-11ef-93f3-92fbcf53809c.png

  2. 积分分离:积分分离是指在误差较大时关闭积分项,以防止积分饱和。当误差较小或接近零时,再启用积分项,以消除稳态误差。这样可以提高系统的响应速度,并减少超调。

二、应用场合
  1. 过程控制系统:在化工、制药、食品加工等行业的温度、压力、流量控制中,增量式带积分分离PID可以提供更好的控制性能。

  2. 机械系统:在伺服电机、液压系统等需要精确位置控制的应用中,这种PID控制器可以提高系统的响应速度和稳定性。

  3. 电力系统:在发电机调速、电压调节等电力系统控制中,可以有效减少超调和振荡。

  4. 机器人控制:在机器人关节控制、轨迹跟踪等应用中,可以提高控制精度和响应速度。

三、SCL FB块封装 下面是一个使用SCL语言封装的增量式带积分分离PID控制器的示例。这个FB块可以用于西门子S7-1200/1500系列PLC

3364510c-b249-11ef-93f3-92fbcf53809c.png

(**************************************************************************

FunctionBlockName: PID-FB块 * Version: 1.0.0 * Author: 王同学玩工控 * UpdateTime: 2024-11-30 * Comment:

简单说明:

积分分离:

1、当误差大于阈值的时候关闭积分项此时只有PD在作用 系统快速动作

2、当误差小于或等于阈值的时候打开积分项开始累计误差 系统缓慢调整

死区控制:当死区设置为 1 时 目标值为 36 系统在35-36之间进入死区停止PID的运算 且输出值不变 当系统大于36或小于35的时候系统开始进行PID运算

正动作逆动作:当外部输入引脚为 1 时 系统为正动作 为 0 时 系统为逆动作

Setpoint 目标设定值 Feedback 实际反馈值 Kp 比例增益 Ti 积分时间ms Td 微分时间ms Max_output 输出限幅最大值 Min_output 输出限幅最小值 Dead_Band 死区控制 Control_Mode 正动作逆动作(0/1) Mode 输出模式选择(0/1) integral_separate 阀值 PWM_output pwm输出 Analog_output 模拟量输出

***************************************************************************)

#error := #Setpoint -#Feedback; //计算误差 IF #error > ( 0 - #Dead_Band )AND #error < #Dead_Band THEN          #data_relay[2] := 1;     #last_error := #error;     //上次误差更新     #prev_error := #last_error;    //上上次误差更新      ELSE #data_relay[2] := 0; END_IF;

IF #data_relay[2] = 0 THEN IF ABS(#error) <= #integral_separate THEN                  #data_relay[1] := 1;     END_IF;          IF ABS(#error) > #integral_separate THEN #data_relay[1] := 0; END_IF; #P_term := #Kp * (#error - #last_error); //比例系数计算 #I_term := #data_relay[1] * (#Ki * #error); //积分系数计算 #D_term := #Kd * (#error - 2 * #last_error + #prev_error); //微分系数计算 #delta_output := #P_term + #I_term + #D_term; //增量式PID输出值 #rdata_realy[0] += #delta_output; //最终输出值

#Max_data_relay := 100.0; //限幅处理最大值 #Min_data_relay := 0.0; //限幅处理最小值 IF #Control_Mode THEN// 正动作 IF #rdata_realy[0] > #Max_data_relay THEN #rdata_realy[0] := #Max_data_relay; END_IF; IF #rdata_realy[0] < #Min_data_relay THEN                          #rdata_realy[0] := #Min_data_relay;                      END_IF;              ELSE  // 逆动作                  #rdata_realy[0] := 0- #rdata_realy[0];  // 逆动作,反转输出范围         IF #rdata_realy[0] > #Max_data_relay THEN #rdata_realy[0] := #Max_data_relay; END_IF; IF #rdata_realy[0] < #Min_data_relay THEN                          #rdata_realy[0] := #Min_data_relay;                      END_IF;     END_IF;            #Analog_output  := ( #rdata_realy[0]  -#Min_data_relay ) / ( #Max_data_relay - #Min_data_relay)  * (#Max_output-#Min_output)+#Min_output;      END_IF;

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 西门子
    +关注

    关注

    98

    文章

    3272

    浏览量

    119745
  • PID算法
    +关注

    关注

    2

    文章

    172

    浏览量

    25537

原文标题:西门子增量式PID算法带积分分离

文章出处:【微信号:gkongbbs,微信公众号:工控论坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    经典PID控制器的积分分离优化算法

    与改进。这一节我们首先来讨论针对积分项的积分分离优化算法。 1 、基本思想 我们已经讲述了PID控制引入积分主要是为了消除静差,提高控制精度
    的头像 发表于 11-04 14:24 8193次阅读
    经典<b class='flag-5'>PID</b>控制器的<b class='flag-5'>积分分离</b>优化<b class='flag-5'>算法</b>

    限时免积分下载:增量与位置PID算法的C语言实现分享

    前面咱们有分享对PID算法离散化和增量PID算法原理进行来探索,之后又使用Matlab进行了仿
    发表于 03-05 18:32

    浅析位置PID增量PID算法

    位置PID增量PID算法通常依据控制器输出与执行机构的对应关系,将基本数字
    发表于 01-15 18:35

    跪求用labview编写的各种控制算法的子VI,比如前反馈pid积分分离和模糊控制等。

    跪求用labview编写的各种控制算法的子VI,比如前反馈pid积分分离和模糊控制等。
    发表于 01-22 22:50

    PID控制器开发笔记之二:积分分离PID控制器的实现

    的描述,来实现基于积分分离PID算法实现,同样是包括位置型和增量型两种实现方式。首先我们来看一下算法的实现过程,具体的流程图如下: 有上图
    发表于 04-28 23:33

    教你用C语言实现位置PID增量PID

    适用于执行机构积分部件的对象,如步进电机等,而位置PID适用于执行机构不带积分部件的对象,如电液伺服阀。(3)由于
    发表于 05-30 08:00

    在STM32如何去实现增量PID算法

    尽快进入状态。特地分享一些自己如何实现的过程。首先说说增量PID的公式,这个关系到MCU算法公式的书写,实际上两个公式的写法是同一个公式变换来得,不同的是系数的差异。资料上比较多的是
    发表于 09-13 06:54

    PID算法增量算法

    这里的PID是指控制类的比例-积分-微分算法,而不是进程ID号。PID算法,不管是原理上,还是代码上都比较简单。主要运用在电机控制、开关电源
    发表于 09-13 06:06

    如何实现增量PID

    虽然PID不是什么牛逼的东西,但是真心希望以后刚刚接触这块的人能尽快进入状态。特地分享一些自己如何实现的过程。首先说说增量PID的公式,这个关系到MCU
    发表于 09-13 08:19

    PID采样时间精准控制的相关资料分享

    我们在用到PID算法时,有时候会使用积分分离的抗饱和算法,或是另一类属于增量
    发表于 12-08 07:54

    基于积分分离PID控制的交流伺服系统

      1 引言   本文针对PID控制的特点,设计了一种积分分离的控制方法,即当系统误差较大时,取消积分环节,避免由于积分累积引起系统较大的超调;当系统误差较小时
    发表于 08-29 11:57 1079次阅读
    基于<b class='flag-5'>积分分离</b><b class='flag-5'>PID</b>控制的交流伺服系统

    积分分离PID算法在横机控制器中的应用

    针对电脑横机,设计了一个基于积分分离PID算法的变频调速控制器,给出了该控制器的总体硬件结构框图,其中详细介绍了转速控制模块和转速检测模块,提出了其算法的设计思想及其
    发表于 06-16 19:36 45次下载
    <b class='flag-5'>积分分离</b><b class='flag-5'>PID</b><b class='flag-5'>算法</b>在横机控制器中的应用

    增量PID控制算法

    增量PID控制算法-2011,有需要的下来看看。
    发表于 04-01 14:54 30次下载

    西门子PLC教程之PID编程资料

    西门子PLC关于PID编程资料
    发表于 12-20 10:30 77次下载

    PID控制算法的C语言实现

    、效果展示4、积分分离PID控制算法4.1、代码实现4.2、效果图5、工程文件下载1、PID算法简介emsp; 
    发表于 01-13 13:39 45次下载
    <b class='flag-5'>PID</b>控制<b class='flag-5'>算法</b>的C语言实现