设为首页
收藏本站
PLC技术网
开启辅助访问
切换到宽版
登录
注册哦
只需一步,快速开始
微信扫码登录
门户
Portal
论坛
BBS
导读
Guide
排行榜
Ranklist
搜索
搜索
本版
文章
帖子
用户
PLC论坛-全力打造可编程控制器专业技术论坛
»
论坛
›
工控技术交流区
›
『国外:三菱/西门子/欧姆龙/松下』
›
西门子增量式PID算法带积分分离
返回列表
发新帖
[西门子]
西门子增量式PID算法带积分分离
[复制链接]
90383
|
0
|
2024-12-9 06:40:45
|
显示全部楼层
|
阅读模式
西门子增量式带积分分离PID控制器是一种改进的PID控制算法,它结合了增量式PID和积分分离的优点。这种控制器在处理某些特定类型的控制问题时特别有效,尤其是在需要快速响应且避免积分饱和的情况下。下面我将解释其作用、应用场合以及如何使用SCL(Structured Control Language)在FB(Function Block)中封装这样的PID控制器。
一、作用
增量式PID:增量式PID控制器计算的是输出的变化量,而不是绝对值。这使得控制器更加稳定,特别是在系统受到扰动时。增量式PID通过以下公式计算:
积分分离:积分分离是指在误差较大时关闭积分项,以防止积分饱和。当误差较小或接近零时,再启用积分项,以消除稳态误差。这样可以提高系统的响应速度,并减少超调。
二、应用场合
过程控制系统:在化工、制药、食品加工等行业的温度、压力、流量控制中,增量式带积分分离PID可以提供更好的控制性能。
机械系统:在伺服电机、液压系统等需要精确位置控制的应用中,这种PID控制器可以提高系统的响应速度和稳定性。
电力系统:在发电机调速、电压调节等电力系统控制中,可以有效减少超调和振荡。
机器人控制:在机器人关节控制、轨迹跟踪等应用中,可以提高控制精度和响应速度。
三、SCL FB块封装下面是一个使用SCL语言封装的增量式带积分分离PID控制器的示例。这个FB块可以用于西门子S7-1200/1500系列PLC。
(**************************************************************************
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 积分时间msTd 微分时间msMax_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;
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
注册哦
x
回复
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册哦
本版积分规则
发表回复
回帖后跳转到最后一页
hghghghg100
回复楼主
返回列表
『国外:三菱/西门子/欧姆龙/松下』
『国产:台达/汇川/信捷产品交流区』