发表于:2019/8/27 10:36:18
#0楼
说一说经典的PID调节(三)
前面介绍了PID控制的基础理论(班门弄斧缺胳膊少腿版)和一些通用的调试思路。这次以Unity Pro的控制功能块库(前面帖子发过完整英文版)为参考,介绍一下编程中常见的问题和思路。
要做好PID编程,肯定要了解工艺特点,但一般自动化人员都不是工艺专家,所以,就要提前和工艺人员学习了。这一点很重要,自控是为工艺服务的,而且,调试过程中的费用成本和安全保证,也要求我们要对工艺特点有基本的理解,如果可能的话,多和工艺工程师和操作人员一起在手动模式下了解一下工艺的变化特性。了解了工艺特点以后,要用控制的思路把工艺过程描述清楚,最起码的,设定点,控制量,过程量,各个变量的测量取值,单位等等都要搞清楚,向工艺人员了解一些各个变量的变化特点,上下限,死区,误差等等。
有了这些数据,就基本上知道编程的核心内容了。看看Unity Pro控制功能块库的章节,就可以和前面的内容对上了:
信号处理(Conditioning)
延时,积分,滞后,微分,质量流量,死区,线性化,积算,限速等功能块
控制器(Controller)
参数自整定,模式矫正,PIDFF,采样时间,两段控制器,三段控制器等功能块
数学计算(Mathematics)
比较,开平方,乘除,求和等功能块
测量(Measurement)
平均值,死区,查表,上下限等功能块
输出处理(Output Processing)
手动控制、脉宽控制,伺服控制,双执行器控制等功能块
设定值管理(Setpoint management)
斜率控制(Ramp),比率控制(ratio),设定点切换等功能块
一个闭环控制回路至少要有两个现场信号:过程测量值(PV)和PID的控制输出,很多时候还有更多的信号,如执行器反馈值,前馈输入信号等。这些现场信号根据测量原理和传输方式各不相同,都需要根据实际情况做一些预处理,与单位变换,滤波等,极端情况下,可能因为现场干扰,数据经常出现一些虚假的极大值或极小值,这些都可以通过信号处理功能块来去掉。输出值也要根据执行机构的特性来做一些处理,如限位(只让输出值处于某个特定区间),限速(执行机构的机械运动速度不可能高于限定值)等。
现场信号之外,PID控制还需要好多“内部”信号,如上下限,手动设定值等,而且,一般现场都要实现无扰切换,那就要编写一下赋值逻辑,比如,在自动模式时把输出值传给手动设定值,这样在自动切换到手动模式时,阀门收到的输出值不变,就不会动作,在手动模式时把手动设定值传给pid模块的手动输入,同时把pv传给sp,这样在切到自动时就不会造成扰动。这些逻辑,都要在调试前做好。
PID模块有很多设定值,都要按照要求填好,尤其是各种限值,这些都是确保现场安全的,一定要仔细。在投入自动之前,还有一个重要的设定:作用方向,根据现场情况,设定好是正作用,还是反作用,否则南辕北辙的段子就一定会上演。
Unity Pro控制功能块库功能最全的PID块是PIDFF,具备前馈等复杂功能:
图
对于取样时间的设定,如果过程比较慢,可以设定较长的取样时间,如果过程较快,可以不用,每次扫描周期计算一次就行。
参数设置是通过PARA输入的结构变量来设置的,前面提到的作用方向等参数都在里面。
PIDFF有并行模式和混合模式等工作模式,对应不同的特性,需要根据过程特点选择。具体并行模式的内部逻辑如下;
图
混合模式的内部逻辑如下:
图
Unity Pro 还有一个自动调整块Autotune,可以和PIDFF配合使用,实现自整定,大家可以根据情况使用,编程不复杂,把Autotune在前,pidff在后,对应关键连接结就可以了,但现场调试一定要了解清楚功能块的动作原理,才能收到好的效果。记住,越是强大的功能块就越需要更多的背景知识才能用好,不要期望通过简单地编程,就可以在不了解工艺控制特性的情况下控制好过程。
前面介绍了PID控制的基础理论(班门弄斧缺胳膊少腿版)和一些通用的调试思路。这次以Unity Pro的控制功能块库(前面帖子发过完整英文版)为参考,介绍一下编程中常见的问题和思路。
要做好PID编程,肯定要了解工艺特点,但一般自动化人员都不是工艺专家,所以,就要提前和工艺人员学习了。这一点很重要,自控是为工艺服务的,而且,调试过程中的费用成本和安全保证,也要求我们要对工艺特点有基本的理解,如果可能的话,多和工艺工程师和操作人员一起在手动模式下了解一下工艺的变化特性。了解了工艺特点以后,要用控制的思路把工艺过程描述清楚,最起码的,设定点,控制量,过程量,各个变量的测量取值,单位等等都要搞清楚,向工艺人员了解一些各个变量的变化特点,上下限,死区,误差等等。
有了这些数据,就基本上知道编程的核心内容了。看看Unity Pro控制功能块库的章节,就可以和前面的内容对上了:
信号处理(Conditioning)
延时,积分,滞后,微分,质量流量,死区,线性化,积算,限速等功能块
控制器(Controller)
参数自整定,模式矫正,PIDFF,采样时间,两段控制器,三段控制器等功能块
数学计算(Mathematics)
比较,开平方,乘除,求和等功能块
测量(Measurement)
平均值,死区,查表,上下限等功能块
输出处理(Output Processing)
手动控制、脉宽控制,伺服控制,双执行器控制等功能块
设定值管理(Setpoint management)
斜率控制(Ramp),比率控制(ratio),设定点切换等功能块
一个闭环控制回路至少要有两个现场信号:过程测量值(PV)和PID的控制输出,很多时候还有更多的信号,如执行器反馈值,前馈输入信号等。这些现场信号根据测量原理和传输方式各不相同,都需要根据实际情况做一些预处理,与单位变换,滤波等,极端情况下,可能因为现场干扰,数据经常出现一些虚假的极大值或极小值,这些都可以通过信号处理功能块来去掉。输出值也要根据执行机构的特性来做一些处理,如限位(只让输出值处于某个特定区间),限速(执行机构的机械运动速度不可能高于限定值)等。
现场信号之外,PID控制还需要好多“内部”信号,如上下限,手动设定值等,而且,一般现场都要实现无扰切换,那就要编写一下赋值逻辑,比如,在自动模式时把输出值传给手动设定值,这样在自动切换到手动模式时,阀门收到的输出值不变,就不会动作,在手动模式时把手动设定值传给pid模块的手动输入,同时把pv传给sp,这样在切到自动时就不会造成扰动。这些逻辑,都要在调试前做好。
PID模块有很多设定值,都要按照要求填好,尤其是各种限值,这些都是确保现场安全的,一定要仔细。在投入自动之前,还有一个重要的设定:作用方向,根据现场情况,设定好是正作用,还是反作用,否则南辕北辙的段子就一定会上演。
Unity Pro控制功能块库功能最全的PID块是PIDFF,具备前馈等复杂功能:
图
对于取样时间的设定,如果过程比较慢,可以设定较长的取样时间,如果过程较快,可以不用,每次扫描周期计算一次就行。
参数设置是通过PARA输入的结构变量来设置的,前面提到的作用方向等参数都在里面。
PIDFF有并行模式和混合模式等工作模式,对应不同的特性,需要根据过程特点选择。具体并行模式的内部逻辑如下;
图
混合模式的内部逻辑如下:
图
Unity Pro 还有一个自动调整块Autotune,可以和PIDFF配合使用,实现自整定,大家可以根据情况使用,编程不复杂,把Autotune在前,pidff在后,对应关键连接结就可以了,但现场调试一定要了解清楚功能块的动作原理,才能收到好的效果。记住,越是强大的功能块就越需要更多的背景知识才能用好,不要期望通过简单地编程,就可以在不了解工艺控制特性的情况下控制好过程。
[此贴子已经被作者于2019/8/27 10:39:56编辑过]