1 引言
中国石化股份有限公司广州分公司6号罐区监控系统于2001年由常规仪表改造为PLC系统。其中工艺要求在监控系统中对瞬时流量FI101进行累积显示。经过对该流量累积的运算方法的多次测试,找到了在运算中最大限度减少误差的方法,并在逻辑梯形图成功实现累积运算。
2 监控系统简介
广州石化6#罐区监控系统采用ROCKWELL公司的可编程控制器和人机界面软件,用于实现对该液态烃罐区的24个球罐的各种工艺参数的实时监控、报警、联锁等功能。该系统从2000年10月开始设计,2001年4月系统安装、组态、调试工作全面完工。
该系统人机界面采用Rockwell software公司开发的RSView32软件。RSView32基于 Microsoft Windows NT和Windows 95/98平台设计,是一种易用的、可集成的,基于组件的人机对话系统,在编制人机交互界面方面具有极大的灵活性和极强的功能。
控制器采用ControlNet PLC-5/40C处理器热备系统。ControlNet PLC-5/40C处理器是PLC5系列中的新技术产品,处理器及I/O系统可以通过Redundant ControlNet总线交换数据。6#罐区监控系统将1号PLC和2号PLC配置为冗余控制器。在正常状态下,只有主处理器的输出数据对I/O系统进行控制,主从处理器通过ControlNet交换数据及状态保持同步,如果主处理器出错,从处理器将接替主处理器对网络及对I/O系统进行控制。
该PLC系统DI点采用1771-IBD开关量输入模块,DO点采用1771-OW16开关量输出模块,AI点采用1771-IFE模拟量输入模块,16点单边输入。采用1785-CHBM作为处理器热备模块,1771-ACNR15为带冗余网口的ControlNet适配器模块。
本系统有3台上位机,其中2台为操作站,1台为工程师站。每一台上位机都能通过ControlNet单独对PLC进行数据采集和控制。上位机还通过以太网实现文件和其他数据的共享。
ControlNet的组态使用软件RSNetWorx,PLC系统组态及控制逻辑组态使用软件RSLogix5。在ControlNet 网络中,可以组态预定的数据传送操作。这样要实现在处理器和外部设备之间的数据交换,如在1771-IFE卡和处理器之间,主备处理器之间的数据交换,并不需要在逻辑梯形图中使用块传送指令。
图1 6#罐区监控系统结构图概貌
3 FIQ101的累积实
3.1 流量FIQ101概述
广州石化6#罐区需要对进出罐的液化气流量FI101进行计量。就地仪表采用Micro Motion质量流量计。该流量计准确度±0.12%,除了可以就地显示外,同时可以将瞬时流量值输出为4-20mA信号。该信号接入PLC系统的1771-IFE模拟量输入模块,经过12bit 的模数转换后转换为0-4095的值。在1771-IFE中,还可以将0-4095的值定标为-9999到+9999的工程单位值。工艺要求在操作室除了可以监视瞬时流量值外,还要求有准确的流量累积值显示。我们在PLC中用梯形逻辑来实现流量累积的运算。
3.2 流量累积的原理
如何把瞬时流量(又称流率)经过累加运算为总流量,一般有如下一个公式:
瞬时流量×时间=总流量
我们知道,假设一个流量值为5m3/s在1min内不变化,则在这1min内的的总流量为:
(5m3/s) * 60s = 300m3
现在假设流量变化如下:
4m3/s有 30 s
5m3/s有 10 s
6m3/s有 20 s
则在这1min内的的总流量为:
(4m3/s)*30s+(5m3/s)*10 s+(6m3/s)*20s=290m3
假设流量随时都可能变化,那么就不能用上面的公式来计算总流量了。我们可以按一定的时间间隔采样流量值,然后计算这些值的总和。流量的采样时间越短,计算的结果就越准确。请看图2和图3。
在上面2个例子中,曲线下面的区域就是总流量。采样间隔时间越短,计算误差就越小。
在实际应用中,由于PLC计时器的限制,最短的时间间隔只有0.01s。然而采样间隔时间越短,计算次数就越多,这样就增加了PLC的程序扫描时间。
图3 短的采样间隔时间
3.3 在PLC 5/40C中流量累积运算的方法
我们用梯形逻辑来实现流量累积的运算时可以采用“可选定时中断子程序”来处理,这样采样间隔时间就是固定的了。但是在PLC 5/40C中只有一个可选定时中断子程序,其定时中断时间一般较难同时满足几种逻辑功能的需要。
我们也可以计时器指令来来作为采样间隔时间,每次计时器到了设定值就采样一次。计时器的精度不可能高于它的时基,因此每次计时器超时和再次开始计时的时候,都要产生一个时基的正或负的误差。例如,10ms为一个时基的计时器预定计10次,其时间计算将是100ms正或负10ms。
我们也可以采用一种技巧来减少因计时器精度带来的误差。我们采用长的时间计时来作。例如,10ms为一个时基的计时器预定计30000次(PLC 5/40C的计时器的预置值范围为0-32767),其时间计算将是300s正或负10ms。在这其中,我们可以预定一个采样间隔时间为10个时基(100ms)以上。每次程序扫描,处理器判断如果自从上次累积运算起,时间间隔超过预定时间(例如:100ms),就将这段时间乘以当前的瞬时流量值作为累加量。在这种算法中,采样间隔时间就不是固定的了。
另外要考虑的是运算所用到的数据格式。PLC 5/40C数据表按不同的格式和范围来存储不同类型的数据。有两种文件格式可以选择,一是N文件(整数型文件),值的范围为-32768到+32767,占1个16位字;因为在累积运算过程中,数的乘积和多次累加值一般都会超出+32767,所以我们尽量不用N文件。
另外是F文件(浮点数文件),值的范围为±1.175494e-38到 3.402823e+38,占1个32位字。浮点数在寄存器中32位的空间表示为:
S xxxxxxxx mmmmm
上面: s=符号 x=指数 m=尾数
可见用浮点数表示的值的十进制有效位数只有7位。因此,必须考虑有效位数问题。举例如下:
假设A代表计算的总流量,F代表计算上一次累加的流量,把F加到A上就会计算出一个新的总流量。在控制器的存储器中,A和F使用浮点数文件格式,有效数字是7位。一旦A比F大很多时,那么A和F的加数将会产生误差。
请看计算过程:
A=3.632523E+9
F=4.978E+3
3,632,523,000
+ 4,978
3,632,527,978
因为这个结果只能保留7个有效位,所以舍去最后几位数,写成3.632527E+9或3,632,527,000,数值978被丢失。为了避免出现这个问题,我们可以想办法使A和F在整个运算过程中不出现小数,数值不超过7个有效位。
4 结束语
流量累积的运算,要尽量避免计算过程中的误差,一是要选择正确的文件存储格式,二是要避免运算值超出数值范围和有效位数范围,三是尽可能减少采样时间的定时器带来的误差。在上面PLC5/40C的梯形逻辑中,我们按照以上几个原则,经过细致的考虑和计算,使用长预置值的参考定时器,并使所有被用到的浮点数文件的值的有效位数不超出范围,不出现小数,避免了丢失小的数值,从而实现高精度的累积运算,满足了工艺要求。