管道连接 |
||
1 |
信号进 |
|
2 |
PID 出 |
|
3 |
设定点 |
|
4 |
Kp(作为 M)、TN 或 Kl(作为 H)和 TV 或 KD(作为 P)的控制进口 |
该控制器的任务是在瞬态过程中补偿控制差异(例如由瞬态组件的传递行为引起)。它不能作为数据控制器("迭代控制器")使用,例如像组件 12 那样! 通过校正变量,计算出按时间顺序变化的实际值,直到它达到指定的设定值。这是一个带有 P-、I- 和 D- 部分的控制算法问题,而不是通过稳态输入变量来计算目标值的问题! 这种类型的控制器使用常见的微分方程来计算 PID-控制器的传递函数:
方程 1-1 |
提供具有以下参数的输出信号 y(t):
输出信号 y(t) 的积分部分可以从输入信号的历史中得到。积分器是通过对以前的输入信号 e(t) 求和来实现的。差分的时间步长 dt 差分的时间步长 Dt 的间隔代替,这些间隔由 EBSILON 中的时间序列对话框给出。
使用这种离散化,方程 1-1 时间步长 k 变化如下:
方程 1-2 |
这种类型的控制器需要对要控制的物理量以及输入量进行指定。修正变量必须是基本量之一,如质量流量、热焓和压力。关于输入值,也可以是导出值,如热流和温度。应注意设置正确的控制器特性:
所有拥有 FINIT 标志的瞬态组件都可以通过一个全局标志进行控制。
为此,标志 FINIT 已经被扩展到 GLOBAL: 0。
如果它被设置为这个值,瞬态模拟的控制将被移交给全局变量"瞬态模式",这个变量可以在下面找到
附加\模型选项模拟瞬态\选项框"瞬态模式"
然后将把所需的模式(第一次迭代或后续迭代)传递给组件。这可以通过表达式"@calcoptions.sim.transientmode"从时间序列对话框中来控制。
对于 PID 控制器,有一条额外的逻辑线(端口4),可以选择性地打开。在它的帮助下,控制器的参数(Kp, KI, 和KD)可以从外部设置。这里的数据在每个迭代步骤中都被带入模型。与此相关,还有一个标志 FPARAMIN 用于选择参数的来源。
通常情况下,目标变量的实际值在模拟前是未知的,而且它只有在迭代过程中才能确定。另一方面,控制器的出口信号(PIN2)分别取决于实际值和相对于参考变量的差异。这可能会导致收敛问题。为了缓解这个问题,在组件 130 中应用规格值 FOUTUS 。
FOUTUS = 0 是默认设置。只有在其它方法不能实现收敛的情况下,才建议使用 FOUTUS = 1 的设置。
FINIT |
标志:初始化状态 如父工况(子工况为可选项) 表达式 =0: 全局,通过模型选项下的全局变量"瞬态模式"控制。 =1: 第一次运行 (TCOUNT 设置为 0) =2: 继续运行 |
FTYPE |
切换控制器参数的规格 如父工况(子工况为可选项) 表达式 =0: 指定比例增益系数和时间常数 Kp、Tn 和 Tv =1: 指定增益系数 KP, KI, KD |
FSPIN |
指定增益系数 KP, KI, KD 如父工况(子工况为可选项) 表达式 =1: 从管道 3 外部输入 =2: 仅从管道 1 输入(不考虑管道 3 和内部设定点) |
FPARAMIN |
控制器参数的来源 如父工况(子工况为可选项) 表达式 =0: 内部设置 |
FSPTYPE |
用于指定控制器参数类型的开关 如父工况(子工况为可选项) 表达式 =1: 压力 =2: 温度 =3: 焓 =4: 质量流量 =5: 功率、热流量 |
FPIDOUT |
控制变量类型的开关 如父工况(子工况为可选项) 表达式 =1: 压力 =3: 焓 =4: 质量流量 |
SETPOINT |
内部设定点取决于 FSPSOURCE |
KP |
比例增益系数 <0: 控制器的负特性 >0: 控制器的正特性 |
KI |
积分增益系数,取决于 FTYPE,在 FTYPE = 0 的情况下不激活 |
KD |
微分增益系数,取决于 FTYPE,在 FTYPE = 0 的情况下不激活 |
TN |
复位时间,取决于 FTYPE,在 FTYPE = 1 的情况下不激活 |
TV |
复位时间,取决于 FTYPE,在 FTYPE = 1 的情况下不激活 |
YINI |
输出信号的初始值 |
FPIDMODE |
控制器算法切换 如父工况(子工况为可选项) 表达式 =1: 微分方程 =2: 位置算法 |
FINTEGRAL |
积分方法切换 如父工况(子工况为可选项) 表达式 =1: 反向积分 =2: 正向积分 =3: 梯形积分 |
FYLIMIT |
控制器的极限值切换 如父工况(子工况为可选项) 表达式 =0: 无限制 =1: 饱和反馈 =2: 停止积分器 =3: 积分器的限值 |
YMIN |
输出信号的最小值 |
YMAX |
输出信号的最小值 |
TPRE |
前一个时间段的指数(如果设置为 0,所有的缓冲区将被初始化) |
TIMEINT |
总积分时间 |
FOUTUS |
修正值的使用(见"通用"一节) 如父工况(子工况为可选项) 表达式 =0: 从当前时间步长(最高精度) =1: 从上一个时间步长(最高收敛率) |
CFLAG |
积分器限值(钳位)的设定值,无输入变量,对 FYLIMIT = 3 有效。 |
RKP |
计算出的比例增益系数 |
RKI |
计算出的积分增益系数 |
RKD |
计算出的微分增益系数 |
RTN |
计算出的复位时间 |
RTV |
计算出的速率时间 |
RPROP |
控制器输出信号的当前比例部分 |
RINT |
控制器输出信号的当前积分部分 |
RDIFF |
控制器输出信号的当前微分部分 |
RTCURR |
当前时间步骤的指数 |
RTIMETOT |
计算结束时的总时间 |
RCFLAG |
积分器钳位的状态 |
这些"特征"线并不提供任何规格或关联性来描述组件的特性。它们对于建立信号的记忆是必要的。通常情况下,不需要设置任何数值或给定规格值,因为它们是由时间序列计算自动传输的。
CCONTROLIN - 管道 1 的输入信号历史记录
这条线存储了管道 1 的输入信号历程。
x-轴:时间步骤,从第一步 Dt 开始,以秒为单位累计。
y-轴:输入信号的值。
COUTPUT - 管道 2 输出信号历史记录
这条线存储了管道 2 的输出信号历程。
x-轴:时间步骤,从第一步 Dt 开始,以秒为单位累计。
y-轴:输出信号的值。
CINTEGRATOR - 输出信号积分部分的历史
这条线存储了代表管道 2 输出信号 I 部分积分器数值的历程。
x-轴:时间步骤,从第一步 Dt 开始,以秒为单位累计。
y-轴:输出信号的值。
CSETPOINT - 设定点的历史(管道 3 或内部)
这条线存储设定点的历程。
x-轴:时间步骤,从第一步 Dt 开始,以秒为单位累计。
y-轴:设定点的值。
RACONTROLIN - 管道 1 输入信号的历史
RAOUTPUT - 管道 2 输出信号的历史
RAINTEGRATOR - 管道 2 输出信号积分部分的历史
RASETPOINT - 设定点(管道 3 或内部)的历史
输出曲线与相应的特征线相关联,它们都显示时间步骤结束时的数值。
为了计算下一个时间步骤,结果曲线的值被复制到特征线中并形成一种循环缓冲。
考虑到用户需求,有两种算法来确定控制器方程式 1-2 的数值处理:
差分方程 |
||
|
定位算法 |
||
其中 b0 = KP + KI*DT+KD/DT b1 = -KP-2KD/DT b2 = KD/DT |
输入参数的关联性(基于理想的 PID 控制器模型) |
||
KD = KP*TV, 且 TV=KD/KP |
所有真实的控制器都会达到一个几乎是物理上确定的被控制量的极限。不管是下限还是上限,都会削减控制系统可能的输出值范围。例如,在给定条件下,水龙头的输出只能在零和最大流量之间变化。
因此,如果有残留控制偏差,积分器部分可能会导致问题(饱和效应)。事实上,这意味着积分器的数值可能需要很长时间才能重新平衡。
为了控制输出信号,特别是信号中的积分器部分,可以采用各种方法:
饱和度反馈 (FYLIMIT = 1) |
||
y(k) <= ymax && y(k) >= ymin y(k) = ymax, 或 ymin y(k-1) = (ylim - KP*e(k) - KD/DT*(e(k) -e(k-1)))/KI*DT |
这种方法将输出信号与一个给定的极限值进行比较。当欠流或溢流时,极限值将被设置为控制器的输出,积分部分则通过差分值的反馈来固定,这模拟了对积分器的零输入。通过这种方式,存储的值仍然是激活的,但不会导致任何超出阈值。
停止积分 (FYLIMIT = 2) |
||
y(k) = ymax, 或 ymin y(k-1) = const. (y(k-2)) |
这种方法通过将积分设置为一个常数来停止积分,例如前一个时间步骤的值。
钳位积分 (FYLIMIT = 3) |
||
Se(i) = ymax, 或 ymin |
这种方法将积分限制在给定的范围内。
对于控制器方程中的求和计算,可以选择三种方法:
正向 |
||
Se(i) = e(k) |
反向 |
||
Se(i) = e(k-1) |
梯形 |
||
Se(i) = 1/2*(e(k)+e(k-1)) |
显示选项 1 |
点击 >> 组件 130 示例 << 加载示例。