管道连接 |
||
1 |
当前值-过程值 |
|
2 |
控制值 |
颜色表示控制器的激活类型(取决于标志 FACT):
深紫色: 控制器立即启动
红色: 在 20、30、40 或 50 次迭代后延迟启动
粉红色: 100 次迭代后延迟启动
白色: 控制器被停用
组件 39 是 EBSILONProfessional 中最简单的控制器。与组件 12 的不同之处在于它没有目标值的连接。因此,只有当目标值是恒定的时候,才可以使用组件 39。控制的细节在组件 12 中描述。
组件 39 也可用于简单的优化任务。要实现这一点,SCV(预定值)字段留空。然后,控制器假定该值应尽可能高。然而,这个功能只有在非常谨慎地选择默认值时才能发挥作用。因此控制器要求(正常情况下)在实际值和修正值之间有一个单调的关系。当这种单调的关系被破坏时,控制就会停止。因此,基本上只能找到下一个局部最大值。这个特点实现如下:从第 11 个迭代步骤开始,预定值被设置为当前值的(1 + CHL3)倍。如果现在的当前值增加,预定值就会进一步增加。如果当前值减少,控制器被禁用(然后保持不变)。
控制器的阻尼程度可以更大,又引入了三个阻尼级别("非常非常高"、"甚至更高"、"极高")。
输入到屏幕中的规格值被排序。首先是与参考值有关的规格值,然后是与修正变量有关的值。然后是一般的控制器参数,如特性、激活、起始值规格、阻尼或变化限制。
开启/关闭功能和延迟启动
标志 FACT 既可用于控制器的开启和关闭,也可用于指定延迟启动。为了能够更好地扩展设置选项,该功能已被分配到两个标志 FACT 和 FFU。
标志 FACT 用于指定控制器在哪个迭代步骤中启动(最早的)。FACT = 0 意味着控制器尽可能早地启动。分别用于停用有(-1)和无(-2)起始值设置控制器的 FACT = -1 和 FACT = -2 已被标记为"弃用",但出于兼容性的考虑,仍可使用。然而建议使用新的标志 FFU 来实现这一功能。
标志 FFU 提供了各种选项,用于在不同的负荷情况下激活和停用控制器。例如有以下设置:
• 控制器激活
- 总是:FFU = 1
- 仅在设计情况下:FFU = 4 或 -4
- 只有在非设计的情况下:FFU = 5 或 -5
- 永不:FFU = 0 或 -1
• 控制器不激活(即不控制),但设置其起始值
- 总是:FFU = 0
- 仅在设计情况下:FFU = 5
- 仅在非设计情况下。FFU = 4
• 控制器没有激活,没有设置起始值
- 总是:FFU = -1
- 仅在设计情况下;FFU = -5
- 仅在非设计情况下:FFU = -4
停用控制器时的替代起始值
要在停用的控制器上设置的起始值并不总是适合作为激活控制器的起始值(例如 0 kg/s)。于是不得不在不同的工况中设置不同的起始值。从版本 11 开始,应用替代起始值 L2STARTOFF(组件 39)和 L3STARTOFF(组件 12 和 69),在控制器停用,但要设置其起始值时使用。如果这里没有输入值,L2START 和 L3START 也将在控制器停用的情况下分别使用。
限值遵守
L2MIN / L2MAX(组件 39)和 L3MIN / L3MAX(组件12,组件69)的限制没有被严格遵守,而只是在超过各自的限值时导致控制器停用。这主要是为了防止在迭代过程中出现漂移。然而对于最终的结果,这是不令人满意的,因为精确的计算取决于迭代的行为。
出于这个原因,从版本 11 开始,这些限制被严格遵守。然而出于兼容性的考虑,可以通过标志 FLIM 切换回之前的设置。为此,FLIM 必须被设置为 0("超过极限后关闭控制器")。标准设置是 FLIM = 1("在极限时停止")。
限值的功能
限值 L3MIN / L3MAX(组件 12,组件 69)和 L2MIN / L2MAX(组件 39)只有在为它们指定数值时才会生效。
标志 FLIM 根据规格值检查以下情况
FLIM = 0: 控制器在超出极限值 L2MIN / L2MAX 后关闭,
或者
FLIM = 1: 控制器达到极限值 L2MIN / L2MAX 时关闭。
警告的停用
当控制器不能达到其目标值时,默认会发出警告。但在某些情况下,这是不需要的,例如,在喷水时,进口温度已经低于设定温度。在这种情况下,可以用标志 FWARN 来关闭警告。
标志 FWARNOFF 允许激活或停用控制器停用的警告。这里要检查起始值(组件 69 中也检查关闭值 L3OFF)是否在有效范围内。
控制器内起始值传递(FMODE)
(组件 12、39 和 69),可以将控制变量的结果作为下一次计算的起始值接管。由于这里与非设计计算的参考值的转移有一定的相似性,所以这个标志也被命名为 FMODE。有以下设置选项:
传递的值被写入规格值 L2START 和 L2STARTOFF。但是,只有当 FL2START 被设置为"内部起始值规格"时才会产生影响。另外,只有之前 L2START 中有相应输入值时,才会发生传递。如果该字段被设置为"空",该字段将保持为空。
当添加新的控制器时,FMODE = 1 将被默认设置。这与之前的情况一致。在一个良好的建模中,最终结果事实上不应该(或只是轻微地)取决于起始值,但起始值的改变可能导致收敛问题。对最终结果的影响也来自于控制器与阈值和极限值的相互作用,如果这种相互作用取决于控制器被激活和停用时的收敛情况。
标志 FWARN
在控制器中有一个标志 FWARN,它可以设置在哪些情况下控制器要输出警告。为此有一个新的设置 FWARN = 3。有了这个设置,只有当控制器没有达到其目标,且控制变量也没有达到其极限值时才会输出警告。
如果达到极限值代表一种"正常"情况,那么这种设置是有意义的,例如,在喷水时,需要在下游设置一定的温度。然而,通过喷水,只能降低温度。如果温度低于这个设定值,就不需要注水。FWARN = 3 可以设置在这种情况下不发出警告。然后控制器的控制变量等于下限值 0kg/s,如果没有达到温度的设定值,就不会输出警告。
通过设置 FWARN = 4,可以输出一个错误信息而不是警告。
FWARN = 5 允许在内核表达式 EWARN 中单独编程,在何种情况下都输出注释、警告或错误信息。
通过内核表达式设定点规格
对于有内部设定点规格选项的控制器(目标值或预定值,组件 39 和 69),可以用内核表达式 ESCV 来替代规格值 SCV。控制是通过标志 FSCV 来影响的:
• FSCV=0: 使用规格值 SCV 作为设定点值
• FSCV=1: (只适用于组件 69)
• FSCV=2: 设定点值由内核表达式 ESCV 决定
请注意:由于设定值通常是一个有单位的变量,并且与简单的规格值不同-在内核表达式的情况下不能进行自动单位转换,该值必须以标准的 Ebsilon 单位来计算。
控制精度
对于一个方程系统的求解,只要从一个迭代步骤到下一个迭代步骤的变化小于指定的迭代精确度,Ebsilon 就继续迭代。
在这里,迭代的终止与控制器达到其设定值的程度无关。如果当前值和设定值之间的偏差过大,将只输出警告。
特别是在强阻尼控制器的情况下,从一个迭代步骤到下一个迭代步骤的变化相对较小,尽管控制目标还没有达到,但收敛标准已经得到满足。在这些情况下,最好是继续迭代几步,以便更接近指定的目标。因此在版本 12 中,增加了在与设定值偏差过大的情况下防止终止迭代的可能性。
反之,也有这样的情况:调整一个不重要的变量需要非常多的迭代步骤,从而增加了整个模型的计算时间。在这种情况下,最好是能够以更大的模糊性进行控制。
这个选项可以用规格值 TOL 实现(对所有控制器)。
规格值 TOL 用于设置两种情况下的控制精度。通过标志 FTOL 来设置采用这两种情况中的哪一种:
FTOL = 1("TOL = 下限")的作用是通过更大的模糊性来加速控制。在这种情况下,如果当前值和设定值之间的相对偏差低于边界 TOL,控制器就会终止控制。
FTOL = 2("TOL = 上限"),只要当前值和设定值之间的相对偏差超过了上界 TOL,就不能终止迭代。但是,如果修正变量已经达到其下限或上限,则不适用。因为在这种情况下,控制器不会继续运行,执行进一步的迭代步骤是没有意义的。
为了分析收敛行为,在 FTOL = 2 的情况下,可以在结果值 ITNOTCONV 中看到,在哪个迭代步骤中,控制器阻止了迭代的终止。这可以系统性地找出导致收敛行为恶化的控制器,并在必要时改进其设置。
FTOL = 0 是默认设置。
在 Ebsilon 的控制器中,执行变量的变化是通过一个变化因子来实现的,以前的控制器不能改变执行变量的代数符号。为了实现这一点,现在有一个规格值 CZP,用于内部移动控制器的零点。移位是在正方向上进行的。例如,如果输入"100",-100 将被移位到 0,也可以在 > -100 的范围内控制超过 0。
随着 CZP 值的增大,内部执行变量也会相应地变大,这样,在相同的相对变化情况下,执行变量的绝对变化也会变得非常大。这可能导致收敛问题。因此建议从一开始(ITCHL2 = 0)就降低最大变化系数(CHL2)。
以前,只有固定值可以作为执行变量的范围限制被输入。现在,可以使用内核表达式作为限制。要做到这一点,相应的标志(FL2MIN 和 FL2MAX 用于组件 39)必须设置为"内核表达式",并且必须在组件 39 的 EL2MIN 和 EL2MAX 中分别创建一个 EbsScript,计算相应限制。
为了达到一定的给水出口温度,需要改变加热器的蒸汽进口压力时,就需要这个功能。在没有限制的情况下,控制器将压力降低,以至于饱和水温低于给水入口温度,不再可能冷凝。然而,一个固定的限值是不可能的,因为给水进口温度不是事先知道的,而是在计算过程中生成。例如,下面的内核表达式可以在每个迭代步骤中把压力下限设置为一个合理的值:
函数 evalexpr:REAL;
开始
evalexpr:=waterSteamTable(1006, Feedwater.T, 0.0);
结束;
要设置 100% 相对湿度或过饱和度,需要一个控制器。
在之前使用"空气湿度(rel.)"的函数处理中,在迭代过程后可能发生空气过饱和的情况,即液相中含有水。其原因是,即使有过饱和的空气,相对湿度仍然是 100%,控制器已经达到了它的设定值。
为允许调节到饱和点(100%)或设置一定的过饱和度,应用函数"饱和系数"。
饱和系数总是指气态水的最大可能比例。如果水的含量更高,就会得到液态水 XH2OL。潮湿的空气只能被近似地认为是一种理想气体。随着含水量的增加,气态水 XH2OG 的实际比例再次下降。在理想的近似情况下,不管液态水会增加多少,气态水的比例保持不变。在现实中,情况可能并非如此,因此在过饱和的空气中:
XH2OG> X_SAT = f (p, t (空气出口管道))
对于值 100%,"饱和系数"函数的结果与"湿度(相对)"函数的结果相同。
定义"饱和空气"的饱和系数 0 - 100%:结果值与"相对湿度"函数的结果一致。
"过饱和空气"饱和系数的定义 > 100% = 相当于比率:总水含量(XH2O)/最大可能的气态水含量(水蒸气饱和浓度 x_sat = f (p, t (空气,端口 2)))
例子:饱和系数的应用:
在这个例子的回路中,饱和系数被用来控制相对湿度。可以在控制器的输入图中看到,红色曲线在 1 的上方和下方
规格值"喷水"
规格值"控制器 39"
FMODE |
定义调用序列中位置的标志 如父工况(子工况为可选项) 表达式 =0 : 在设计模式计算以后 =1 : 无 =-1: 每次计算以后 |
FL1SCV |
用于 L1(过程值)和 SCV(目标值)之间的比较类型的标志
如父工况(子工况为可选项) 表达式 =1:压力 |
FSUBST |
要控制的值(FL1SCV = 组份时激活) 如父工况(子工况为可选项) 表达式 =0: 无 =-1: 空气湿度(相对值) =-2: 空气湿度 (绝对值) =1: 氮气 =2: 氧气 =3: 二氧化碳 =4: 水 =5: 二氧化硫 =6: 氩气 =7: 一氧化碳 =8: 硫化羰基 =9: 氢气 =10: 硫化氢 =11: 甲烷 =12: 氯化氢 =13: 乙烷 =14: 丙烷 =15: 丁烷 =16: 戊烷 =17: 正己烷 =18: 正庚烷 =19: 乙炔 =20: 苯 =21: 碳元素 =22: 氢元素 =23: 氧元素 =24: 氮元素 =25: 硫元素 =26: 氯元素 =27: 灰分 =28: 石灰 =30: H20B 水(结合) =31: ASHG 气态灰分 =32: 一氧化氮 =33: 二氧化氮 =34: 氨 =37: 甲醇 =38: 碳酸钙 =39: 氧化钙 =40: 硫酸钙 =41: 碳酸镁 =42: 氧化镁 =43: 钙(离子) =44: 镁(离子) =45: 正辛烷 =46: 正壬烷 =47: 正癸烷 =48: 正十二烷 =49: 异丁烷(2-甲基丙烷) =50: 异戊烷(2-甲基丁烷) =51: 新戊烷(2,2-二甲基丙烷) =52: 新己烷(2,2-二甲基丁烷) =53: 2,3 二甲基丁烷 =54: 环戊烷 =55: 异己烷(2-甲基戊烷) =56: 3-甲基戊烷 =57: 甲基环戊烷 =58: 环己烷 =59: 甲基环己烷 =60: 乙基环戊烷 =61: 乙基环己烷 =62: 甲苯(甲苯、甲基苯) =63: 乙基苯 =64: 正二甲苯(1,2-二甲基苯) =65: 顺式癸烷(十氢萘) =66: 反式-癸醛(十氢萘) =67: 乙烯(Ethene) =68: 丙烯(Propylene) =69: 1-丁烯 =70: 顺式-2-丁烯 =71: 反式-2-丁烯 =72: 异丁烯(2-甲基丙烯) =73: 1-戊烯 =74: 丙二烯(异戊烯) =75: 1,2-丁二烯(亚甲基) =76: 1,3-丁二烯(乙烯)(Vinylethylene) =77: 乙醇 =78: CH3SH(甲硫醇, 甲基硫醇) =79: 氰化氢(普鲁士酸) =80: CS2 (二硫化碳) =81: 空气 =82: 氦气 =83: 霓虹灯 =84: 氪 =85: 氙气 =86: 一氧化二氮(笑气) |
FSCV |
目标值来源的标志 如父工况(子工况为可选项) 表达式 =0: 通过规格值 SCV =2: 通过内核表达式 ESCV |
SCV |
目标值 |
ESCV |
目标值函数 函数 evalexpr:REAL; 开始 |
FL2 |
修正值类型的标志 如父工况(子工况为可选项) 表达式 =1: 压力 =3: 焓 =4: 质量流量 =5: 功率 =24: 电压 =26: 频率 |
FLIM |
用于处理 L2MIN 和 L2MAX 的标志 如父工况(子工况为可选项) 表达式 =0: 在超过极限后关闭控制器 =1: 到达极限时停止,不允许超过限制值 |
L2MIN |
控制变量最小值 |
L2MAX |
控制变量最大值 |
FCHAR |
控制器特性的标志 如父工况(子工况为可选项) 表达式 =1: 正(即修正值的增加导致当前值的增加) =-1: 负(即修正值的增加导致当前值的减少) |
FFU |
激活/停用/起始值设置的控制器开关 如父工况(子工况为可选项) 表达式 =0: 关:不激活,但在所有负载情况下都设置起始值 注意 -6 / -7:在这两种情况下,不进行控制。实际上,在这种情况下使用控制器是多余的,因为同样的效果可以通过测量值输入(组件 46)来实现。 |
FACT |
控制器被激活的迭代次数 如父工况(子工况为可选项) 表达式 =0: 立即开始 |
FL2START |
起始值默认类型的标志 如父工况(子工况为可选项) 表达式 =0: 通过规格值 L2START 的内部默认值 =1: 外部默认值(更严格的合理性检查:从"第 12 版"开始,在以下情况将出现错误信息: - 一个值被用作执行变量,它完全不能被修改,而是由其它组件决定的。) |
L2START |
控制值的起始值(如果 FL2START = 0) |
L2STARTOFF |
如果控制器关闭,替代的起始值(可选) |
FDAMP |
控制器阻尼强度的标志 如父工况(子工况为可选项) 表达式 =1: 没有 |
ITCHL2 |
变化系数 CHL2 被激活的迭代次数 |
CHL2 |
校正值的最大变化系数(在达到 ITCHL2 之前设置为常数 0.15。达到 ITCHL2 之后根据默认的限值:0 < chl3 <= 0.15) |
ITSTEP |
控制器每隔 n 步被激活 |
FSEQ |
用于定义调用序列中位置的标志 如父工况(子工况为可选项) 表达式 =0: 与其它组件平行 =1: 在流体被重新计算之后 |
FTOL |
TOL 含义的标志
如父工况(子工况为可选项) 表达式 = 0: 不使用 = 1: TOL = 下限:只要相对偏差 > TOL,控制器就工作 = 2: TOL = 上限:迭代停止前相对偏差 < TOL |
TOL |
控制器容差 |
FSTOP |
实现收敛行为的切换开关
如父工况(子工况为可选项) 表达式 =0: 在控制器启动前不停止迭代 =1: 在收敛的情况下停止,即使控制器没有启动 |
FWARN |
未达目标时发出通知
如父工况(子工况为可选项) 表达式 =0: 不通知 =1: 通知 =3: 通知,除非修正值达到极限 =4: 错误 =5: 根据 EWARN 发出通知 |
EWARN |
通知函数 function evalexpr:REAL; |
FWARNOFF |
未激活控制器时合理性检查 如父工况(子工况为可选项) 表达式 =0: 如果超出范围(L2MIN 至 L2MAX),没有警告 =1: 如果超出范围(L2MIN 至 L2MAX),没有警告 |
一般来说,所有的输入需要可见。通常会提供默认值。
更多关于输入域的颜色和描述的信息,请参见编辑组件\规格值。
关于设计值与非设计值以及标称值的更多信息,请参见通用\接受标称值。
FL1SCV 的值 |
默认值 |
当前值 |
|
测量值 |
用于比较 |
比较值 |
|
1 2 3 4 5 |
压力 温度 焓 质量流量 热流 |
压力 温度 焓 质量流量 热流 |
压力 温度 焓 质量流量 热流 |
6 7 8 9 10 |
压力 压力 温度 温度 温度 |
焓' (P) 焓'' (P) 焓' (T) 焓'' (T) 压力' (T) |
焓 焓 焓 焓 压力 |
11 12 13 14 15 16 17 18 19 20
21
|
空气 / 烟气管道中氧气份数 蒸汽含量 X 组份(按质量) 净热值 摩尔组份 摩尔组份(干) 熵 体积流量 比容 过冷度
过热度
|
氧气含量 蒸汽含量 X 组份(按质量) 净热值 摩尔组份 摩尔组份(干) 熵 体积流量 比容 TS=f(P)
TS=f(P) |
氧气含量 蒸汽含量 X 组份(按质量) 净热值 摩尔组份 摩尔组份(干) 熵 体积流量 比容 过冷度: 过热度: |
FDAMP 的值 |
变化梯度 GRi 的边界条件 |
||
GRi 下限 |
GRi 上限 |
阻尼行为 |
|
1 2 3 4 5 6 7 8 9 10 |
0.3 0.3 0.3 0.75 0.2 0.1 0.05 |
99999.0 9999.0 2.0 1.25 1.0 0.6 0.3 |
无 很小 小 中等 中等偏高 高 很高 非常非常高 甚至更高 极其高 |
CCHL2 - CHL2 的修正系数
这个特征线使得在迭代过程中连续改变最大可能的变化系数 CHL2 成为可能(ITCHL2 允许在迭代步骤 ITCHL2 中进行突然的改变)。通常情况下,可以在迭代结束时使允许的偏差变窄,以达到更快的收敛效果。
x-值: 迭代步骤
y-值: 修正系数(使用 CHL2 = CHL2 默认值 * y-值)
在组件 39 的帮助下,一个出口可以通过自学特性来建模,在输入连接处达到预定值 SCV。
相对预设-当前值差异 |
||
(预设值-当前值) Si = --------------------------------------------- 预设值 |
修正值 Ki 的相对变化 |
||
| f(新) - f(旧) | Ki= | ------------------------ | | f(新) | |
梯度变化 |
||
Ki GRi = ----- Si |
数据控制器具有"自我学习"的特点。即从上一个迭代步骤的控制成功率分析中得出下一个迭代的修正值的最佳可能变化。为此,使用了变化梯度,其定义如下:变化梯度是衡量修正值的相对变化与相对偏差的函数。变化梯度 GRi = 1.0 导致相对变化,例如 5% 的修正值的变化只是这 5%。变化梯度设置为 GRi = 0.5,则该变化的修正值为 2.5%。
从最后两步计算出来的值用于根据以下列表确定新的修正值。
修正值 |
||
Df = f * GRi * Si f(新) = f(旧) * (1.0 + Df) * FCHAR |
变化梯度有以下限制:
在迭代步骤 1 到 10 中,GRi将被设定为如下:
从迭代 1 到 5:GRi = 0.95,
从迭代 6 到 10:GRi = 0.90 。
梯度 GRi 是在迭代 11 之后通过评估之前的控制成功计算出来的。
用户必须使用 FDAMP 来定义 GRi 的最大值和最小值(见列表)。
f(新)的值通过灵敏度根据以下规定来进行约束:
- 如果 Ki 小于 CHL2,则不考虑 f(新),
- 如果 Ki 大于或等于 CHL2,f(新)按以下关系计算:
f(新)=f(旧)*(1 +/- CHL2) 正号, 如果 f(新) >= f(旧) 负号, 如果 f(新) < f(旧) |
以下规则用来确定 CHL2:
显示选项 1 |
点击 >> 组件 39 示例 << 加载示例。