王存佐,关兆鹏
(天津碱厂机电中心仪控运行部,天津 300450)
天津碱厂丁辛醇项目的DCS采用的是美国Honeywell公司的PKS系统。
PKS系统是由 Honeywell公司在 TDC2000、TDC3000、TPS和Plantscape系统的基础上,采用世界先进技术而推出的。PKS是英文Process Knowledge System的第一个字母组成,称为过程知识系统。PKS系统的核心是基于开放且功能强大的Microsoft公司的Windows server 2003服务器/客户系统,它由高性能的控制器、先进的工程组态工具、开放的控制网络等组成。利用服务器的高速动态缓存区采集实时数据,提供报警、显示、历史数据采集、报表报告等功能。PKS一般由服务器(Server)、工作站(Station)、控制器(C300)和实时冗余容错以太网(FTE)网络组成,服务器的操作系统为美国微软公司的英文Windows server2003,工作站安装微软公司的英文Windows XP操作系统,支持中文显示。
丁辛醇分厂设计2台服务器、7台操作站、一台FDM站、一台ESD操作站兼工程师站、一台压缩机操作站、4对控制器、1对防火墙(主要目的阻止垃圾数据传输)、1对交换机、1对Tserver服务器、还有AIAODIDO卡件等ESD设备。网络通讯通过FTE容错以太网,但三方通讯通过Tserver服务器完成。系统硬件简要图见图1。
图1 系统硬件图
此次丁辛醇自动化改造工程,主要运用已有点进行逻辑重组,包括模拟量输入,模拟量输出,联锁等回路搭建。设计原理是当公用系统不稳定时,根据各工段用气情况,进行微调处理达到工艺工况稳定。并根据工艺提供数值进行参数设计,再根据实时工况进行参数修改。
目前丁辛醇分厂对工艺影响最大的就是蒸汽,由于外界蒸汽压力波动很大,会造成生产工况不稳定,产品不合格。改变这种状况目前思路是当蒸汽压力波动时,各个工段再沸系统调节开度改变(只有在手动情况下遵循调节,在自动情况下遵循自调。并且当压力升高或是减少0.01MPa时,调节阀门对应开增加或是减小0.1开度,并且有一定区间范围,超过一定区间调节阀最大输出。)。当蒸汽温度波动时,各工段再沸系统调节开度改变(只有在手动情况下遵循调节,在自动情况下遵循自调。并且当温度升高或是减少10℃时,调节阀门对应开增加或是减小0.1开度,并且有一定区间范围,超过一定区间调节阀最大输出。)
根据以上条件笔者做出温度控制逻辑条件如图2所示。
调节阀门在投手动时,调节阀门遵循次直线方程。并且在蒸汽温度波动时,最大调节范围0.3~0.3之间。根据笔者归纳图形可得方程为:y=kx+b,换算可得y=100x。
图2 温度控制逻辑图
图3 压力控制逻辑图
根据以上条件笔者做出压力控制逻辑条件如图3所示。
调节阀门在投手动时,调节阀门遵循次直线方程。并且在蒸汽温度波动时,最大调节范围0.3~-0.3之间。根据笔者归纳图形可得方程为:y=kx+b、换算可得y=0.1x。
下位设计思路主要满足一下几个方面:1)此功能要在控制面板上做出投用和解除按钮。2)此功能投用时要满足必须是手动情况下才可以投用。3)在投用时要显示最后更改的参数。根据以上的条件与逻辑笔者规划几个功能块:1)FANOUTA这个功能块主要实现一路输出变为两路输出,因为在下一个FANOUTB中不能共用同一个功能管脚。2)FANOUTB这个功能块主要是做线性曲线公式(这个公式来源就3.2中两个逻辑图。3)AUXCALCA这个功能块主要完成笔者所有功能计算以及运算结果功能(由于内部计算涉及机密内容在这里就不详细介绍)。4)SWITCHA这个功能块主要完成切换功能,功能投用时选择1回路,功能不投用时选用2回路。5)AN功能块主要实现功能是在上位机控制面板上笔者会做一按钮和笔者的手动作逻辑,来判断是选择第一回路还是二回路。逻辑组态图如图4。
图4 逻辑组态图
部分重要功能块详细说明:
①切换块作为单极八位旋转式开关用于八种初始化输入和操作。开关位置可以通过操作员一个应用程序或另一个功能块改变。如图5所示。
图5 SWITCH切换块图
图6 AUXSUMMER辅助加法器图
用户可以通过TRACKING选项强制非选择输入跟踪选择输入:如打开TRACKING,切换块就持续初始化未经选择输入。如打开TRACKING,切换块就持续初始化未经选择输入。也就是在每一个循环周期,此开关要求初始化非选择要素并使其输出达到选择输入值。无论是否打开还是关闭TRACKING,该块可通过一个浮动偏置进行无扰切换输出。
切换块的功能:该切换块可使用户从八个里面选择一个输入和一个选择输出值。选择一个输入的三种方法如下:方程式A:储存输入的一个数值选择SELXINP。方程式B:打开选择标记(SELXFL[1..8])的其中一个。每个标记对应一个输入。切换块关闭所有其它标记并更新SELXINP。方程式C:用户可重新设置或安排选择标记(SELXFL[1..8])的其中一个。块不能改变其它任何一个标记。相反,它能以升序(1 to 8)控制所有标记并选择打开第一标记。
用户可以应用该块来分配一个不同主块到一个二次块。以下配置实例图展示了五个PID主块与一个SWITCH块连接。通过打开相应SELXFL[1..5]输入或储存SELXINP输入的适当数字来选择激活初级,以及根据块SWITCH方程式的选择来选择。SELXINP参数要求一个整数式并经常通过操作符设定。默认SELXINP值为1而且直到控制模块制止切换及主块在监控模式下至少激活一次时才能改变。
②AUXSUMMER (辅助加法器)模块
AUXSUMMER (辅助加法器)模块用以配置最多10个独立输入,对经比例缩放或有偏差的过程变量(PV)值进行计算。输入和PV值均可采用状态信息。用户可通过配置定义每个输入的比例因子、偏差值和说明。也可选择禁用某个输入。所有输入默认为启用。如图6所示。
AUXSUMMER模块的功能:该模块采用下面的等式基于最多10个配置输入计算出PV值。
AUXSUMMER模块会从其他功能块取值,在控制模块的每个执行周期确定它们的状态。其对最多10个表达式求值并确定状态。在对PV的总比例因子(CPV)参数和PV的总偏差系数(DPV)参数的输入和配置输入进行计算后,根据结果推导出PV和PV状态。
用户也可选择禁用输入(PENABLE[1..10]),并为禁用输入定义替换值(PSUB[1..10])。
③FANOUT块
描述FANOUT块有1路输入和最多8路可初始化的输出。同时,它还可能有最多8路二次输出,因为每路可初始化输出就有一路二次输出。用户可以分别指定每路输出的增益、偏置和输出率。每个指定值可能是固定值或外部值。固定值依靠手动存储或程序存储,而外部值来自另一个功能块。此块将分别计算,初始化或模式转换后的每路输出的浮动偏置值。这为每路输出提供了“无扰”转换。其图形7如下。
图7 FANOUT块
FANOUT块需要一路输入,即X1:
·X1必须为来自于另一个块的可初始化输入(无法由操作符或程序设置)。
·用户必须为X1指定一个工程单位范围(XEUHI和XEULO)。该块不适合进行范围检查。它假定X1在规定范围内。
·XEUHI和XEULO定义X1的满刻度:
-XEUHI表示100%的满标值。
-XEULO表示0%的满标值。
注意
FANOUT块:
·有1路输入和多达8路可初始化输出;
·有一个主块和最多8个次块。
CAScade模式转换为MANual模式时,它要求主块进行初始化。
输出FANOUT块最多有8路可初始化输出,如下:
·OP[1~8]=计算的输出,以百分数表示。
·OPEU[1~8]=计算的输出,以工程单位表示。
可初始化的输入和输出
“可初始化的输入”和“可初始化的输出”与数据类型或访问级别类似,都是属性变项。具有“可初始化”属性的参数有相关的BACKCALC参数,建立可初始化输入和可初始化输出之间的连接的同时,用户还能建立其BACKCALC连接。ControlBuilder自动建立需要的BACKCALC连接,因此用户不必手动创建。这些“隐式”建立的连接已“隐藏”不可见,有关的参数引脚也不会显示在控制表中。
例如,若用户将FANOUT块的OP连接到AUTOMAN块或AOCHANNEL块上,Control Builder将自动创建 BACKCALCOUT与BACKCALCIN的连接。
·对于指定的次块,可创建至OP或OPEU的连接,但不能同时创建这两个连接。(显示默认的OP连接,但有需要时,隐式/隐藏连接功能将自动连接到值/状态参数(OPX/OPEUX)上。)
·可分别指定每路输出的增益和偏置。
·FANOUT块用于给每路输出应用单独的浮动偏置。
·可给增益限值配置负值,以便能使用负增益进行反向输出。
·FANOUT块通过BACKCALC向主块提供X1的输入范围(XEUHI/XEULO)。主块将它用于其输出范围(CVEUHI/CVEULO)。
输出范围
·CVEUHI[1~8]和 CVEULO[1~8]定义每路指定输出的CV工程单位满标度。
-FANOUT块不会通过保持每路输出的单独CV范围,分离每路输出的范围,此类范围将追踪相应次块的输入范围。
-每路输出的CV范围须与每个次块的输入范围相同。FANOUT块获得每个次块的输入范围(通过BACKCALC),并将其存储为相应的CV范围。结果,每路输出可能有一个不同的CV范围。例如,FANOUT块使其输出OP[1]和OP[2]分别与块PID1和PID2连接。它获得PID1和PID2的输入范围,分别将其OPX[1]和OPX[2]的CV范围设为此类输入范围。
-FANOUT块获得次块的输入范围时,不考虑SECINITOPT(即不考虑是否会使用次块的初始化和被覆盖数据)。
·OPHILM和OPLOLM将OP的正常上限值和下限值定义为CV范围的百分数。这些值为用户指定值。相同的限值适用于所有的输出。若算法计算出的结果(CV)超过了此类限值,或其他功能块或用户程序试图存储一个超过它们的OP值,OP将保持在此类限值水平。但是操作符可存储此类限值范围以外的OP值。
·OPEXHILM和OPEXLOLM将OP的扩展上限值和下限值定义为CV范围的百分数。这些值为用户指定值。相同的限值适用于所有的输出。操作符无法存储超过此类限值的OP值。
输出偏置
把输出偏置(OPBIAS)加到算法计算出的值(CV)上,结果存储于CV中。然后根据OP限值检查CV值,如果没有超过限值,则复制CV到输出。由于FANOUT块最多可有八路输出,所以每路输出都有各自的确定输出偏置。这表示,所述引用参数实际上是指向给定输出。例如,OPBIAS[1]和CV[1]是指向OP[1],其他7路输出(2到8号)以此类推。
OPBIAS是用户指定的固定偏置(OPBIAS.FIX)和算出的浮动偏置值(OPBIAS.FLOAT)之和。只要FANOUT块是第一个可初始化的块,初始化功能块或转换模式时,浮动偏置用于提供一个无扰切换。
·下列情况下,重新计算OPBIAS,以避免出现输出扰动。(注意当其为第一个可初始化块时,在后两种情况下,功能块仅输出OPBIAS.FLOAT。)
-功能块启动时(即被激活时)。
-功能块初始化时(例如,次块请求初始化时)。
-模式转换到级联时(如适用于指定块的情况)。
注意
由于计算输出,手动模式下,不使用OPBIAS。这表示转换到手动模式时,不重新计算OPBIAS。
·仅在功能块未激活或手动模式下,方可设置OPBIAS值。这样做是为了避免,修改偏置时产生输出扰动。设置OPBIAS值时,将出现以下情况。
给输入值设置总偏置(OPBIAS)和固定偏置(OPBIAS.FIX)。
浮动偏置(OPBIAS.FLOAT)设为零。
注意
功能块被激活,或转换为级联模式时(如适用于指定块的情况),将重新计算OPBIAS和OPBIAS.FLOAT。
·设置OPBIAS值时,没有限值检查。但是,给CV加上偏置后,应比较结果与输出限值,必要时可固定结果值。
·配置固定偏置(OPBIAS.FIX)的值,它不可能被浮动偏置(OPBIAS.FLOAT)覆盖。这表示,若用户将OPBIAS.RATE配置为缓慢降低的OPBIAS.FLOAT,总偏置值最终将等于OPBIAS.FIX。
其中:
·若主块接受该块的初始化请求,则CV+OPBIAS.FIX应与CVINIT同,而OPBIAS.FLOAT将为零。多数情况下,OPBIAS.FLOAT将为零。但是,若由于主块是FANOUT块,或它的配置为忽略初始化,而不接受该块的初始化请求,则OPBIAS.FLOAT值非零。
若OPBIAS.FLOAT非零,用户可通过OPBIAS.RATE参数将其配置为缓慢降低到零。
·用户可通过配置OPBIAS.RATE,给OPBIAS.FLOAT加上斜率。仅在OPBIAS.FLOAT非零时适用。OPBIAS.RATE以每分钟的工程单位数表示,可能为下列值零:
若OPBIAS.RATE为零,则计算OPBIAS.FLOAT值,并保证无扰切换。但是,若OPBIAS.FLOAT非零,它将不会缓慢降低。
-非零:
若OPBIAS.RATE非零,则计算OPBIAS.FLOAT值,并保证无扰切换。若OPBIAS.FLOAT非零,则按用户为OPBIAS.RATE参数配置的速率,将其缓慢降低到零。
-功能块每次执行时,通过下面的计算,将OPBIAS.FLOAT缓慢降至零。
其中:
OPBIAS.RATE“非数值”(NaN)时,不计算 OPBIAS.FLOAT。这表示,若主块不接受该块的初始化值,将出现输出扰动。
上位系统设计就是满足下位系统的要求,主要实现这样几个功能1)在画面中能弹出控制面板,并且控制面板中有手动/自动切换、投用功能按钮、PV/OP显示、操作权限等功能。2)所有操作必须有历史记录,并且要进事件记录。3)所有显示都要有历史记录。4)换面整齐美观。
根据以上要求笔者对画面进行组态如图8,脚本制作图见图9。
图8 画面组态图
图9 脚本制作图
在上位包括组态与脚本制作,笔者通过查找资料独自完成,在跟需要上位还会继续修改。目前上位参数连接就不一一举例,遵循原则就是用那个管脚就去引用管脚就可以。
在经过一段时间投用,程序运行十分稳定。并且达到预期的效果,在波动比较频繁时,由于操作工不能及时调节造成工况不稳定请况大大消除,并且提高了产品质量。这套系统的投用已经得到预期的成果,在今后的工作中笔者会进一步对程序不断完善和微调经行修改,来适应更高要求。