您的位置:控制工程论坛网论坛 » PLC与PAC » TDC-3000系统TOTALIZR算法模块的设计及应用

lyting

lyting   |   当前状态:离线

总积分:1499  2025年可用积分:0

注册时间: 2007-10-29

最后登录时间: 2007-12-10

空间 发短消息加为好友

TDC-3000系统TOTALIZR算法模块的设计及应用

lyting  发表于 2007/12/5 15:43:15      893 查看 0 回复  [上一主题]  [下一主题]

手机阅读

内容提要:本文从浮点数运算的角度,阐述了TDC-3000内部算法模块TOTALIZR点的缺点及不足,从设计及应用角度提出了如何避免这些问题及不足的具体办法,同时计算出了部分关键数据表格。关键词:浮点数运算,TDC-3000,TOTALIZR。 一、引言近年来,中国石化总公司大部分自动控制系统都采用DCS,而TDC-3000是总公司内部的主流机型。笔者在使用TDC-3000的过程中,发现其TOTALIZER点的运算有误差,如:累积速度快、累积停止等,使人难以接受。本文从浮点数运算的角度分析了问题产生的原因,并从设计应用角度提出了解决这些问题的根本方法,还做出了部分关键性的数据表格,供同行参考。由于笔者水平有限,错误之处难免,敬请同行批评指正。二、TOTALIZR点存在的问题 TOTALIZR点是TDC—3000DCS系统中的一个REGULATORY PV点,可以提供按秒、分、小时三个时间基准的累积计算功能。通常被累积的是一流量值,其输入既可以接模拟量也可以接脉冲量。对于模拟量输入的情况,TOTALIZR点存在两个问题: 1、对于一个恒定的模拟量输入,当TOTALIZR点的PV达到一特定值时,累积值的误差很大。 2、对于一个恒定的模拟量输入,当TOTALIZR点的PV达到一特定值时,累积停止。 三、原因分析 TOTALIZR之所以存在上述两个问题,是因为计算机内部采用浮点运算。为更好地分析问题,首先熟悉一下浮点数的概念⑴。 1、数的表示方法计算机采用四个字节来表示浮点数,其格式如下: JFJ1J2J3J4J5J6J7SFS1S2S3S4S5S6S7S8S9S10S11S12S13S14S15S16S17S18S19S20S21S22S23 阶符JF表示阶码本身的正负,JX为阶码,决定数的大小;SF是数符,表明数的正负,S1~S23为尾数,表示小数。 整个浮点数的真值为:±2的J次方×W 2、浮点数的加法  浮点数的加法可分为四步: ①、检测操作数是否为零,以简化操作。  ②、对阶。  ③、尾数相加。 ④、规格化。下面着重论述第二步:对阶。两个浮点数相加,其阶码不一定相等。阶码不等的两个数是不能将他们的尾数直接相加的,需要将阶码对齐后才能相加,这就是所谓的“对阶”。通过下例可以看到对阶的规则及其必要性。例: 2的6次方×0.1001000011001 + 2的2次方×0.1010001111100 2的6次方×0.1001000011001 + 2的6次方×0.0000001010001 = 2的6次方 ×0.1001001101010 阶码对齐的规则是:阶码小的数向阶码大的数对齐这是因为当阶码大的数将尾数右移并相应增大阶码时,舍去的只是尾数的低位部分。下面举一例说明问题的症结。沧州炼油厂常减压装置采用TDC—3000DCS,其中有这样一个回路: FI1063.PVEUHI=32T/H,FI1063.PVEULW=0T/H; FIQ1063.PVEUHI=1E08T,FIQ1063.PVEULW=0T ,TIQ1063.TIMEBASE=HOUR,FIQ1063.C=1。 运行过程中发现,当FI1063.PV=3.6T/H时,并且FIQ1063.PV≤16384T时,累积正常;当FI1063.PV=3.6T/H并且16384T<FIQ1063.PV≤32768T时,累积速度约为正常速度的二倍;当FI1063.PV=3.6T/H时,并且FIQ1063.PV>32768T时,累积停止。 TOTALIZR点的内部算法为⑵: PVCALC(i)=PVCALC(i-1)+C×(TIME-SCALE)×Pn 其中: PVCACL(i): 本次PV的计算值,PVSOURCE=AUTO时, 就是PV值。 PVCALC(i-1):上次PV计算值。 C: 系数,一般用于工程量的变换。 TIMESCALE:如果TIMEBASE=HOUR则为TS/60。 TS: 数据点以分钟计的处理周期。BOX点组态时已经定 义为一秒,即1/60。 Pn: 输入值,此处等于FI1063.PV。当FI1063.PV=1.8T/H时,并且16384T<FIQ1063.PV≤32768T时,实际运算过程如下: 16384T=214×0.1111111111111111111111T 1.8T/H=0.0005T/S=2-10×0.1000001100010000000000T/S 2的14次方× 0.11111111111111111111111 + 2的-10次方×0.10000011000110000000000 2的14次方×0.11111111111111111111111 + 2的14次方×0.000000000000000000000001 最后一位零舍一入,所以 2的14次方×0.1111111111111111111111 + 2的14次方×0.0000000000000000000001 2的15次方×0.1000000000000000000000 此时我们看出,由于最后一位零舍一入,当累积值大于16384时,累积速度比正常累积速度大。在实际应用中就产生误差。 当FI1063.PV=3.6T/H时,并且FIQ1063.PV>32768T时,实际运算过程如下: 32768T=215×0.1111111111111111111111T 3.6T/H=0.001T/S=2-9×0.1000001100010000000000 2的15次方× 0.11111111111111111111111 + 2的-9次方× 0.10000011000110000000000 2的15次方×0.11111111111111111111111 + 2的15次方×0.0000000000000000000000001 最后一位零舍一入,所以 2的15次方×0.11111111111111111111111 + 2的15次方×0.00000000000000000000000 2的15次方×0.11111111111111111111111 此时我们看出,当累积值大于32768时,累积停止采用类似的计算方法,得出一张表格如下:瞬时值F(t/h) 正常累积最大值t 停止累积最大值t 瞬时值(t/s) 0.9≤F<1.8 2的12次方 2的13次方 0.00025 1.8≤F<3.6 2的13次方 2的14次方 0.0005 3.6≤F<7.2 2的14次方 2的15次方 0.001 7.2≤F<14.4 2的15次方 2的16次方 0.002 14.4≤F<18.8 2的16次方 2的17次方 0.004 28.8≤F<56.7 2的17次方 2的18次方 0.008 57.6≤F<125.2 2的18次方 2的19次方 0.016 四、设计及应用 根据以上分析结果,为使TOTALIZR模块长期正常运行,需要在设计阶段根据工作状态下的流量的最小值、累积的时间基准计算出正常累积的最大值,把此值设为AVTV,然后,设置适当的AVDV1TP、AVDV2TP、PVHITP、PVHHTP,以便于人工干预或程序处理。下面列举一设计实例。工艺条件:最大流量32T/H。工艺编号:FV1023。仪表选型:节流元件:孔板。 一次表 :差压变送器。控制系统:TDC-3000DCS。自控方案:指示加累积。仪表编号:FI1063 指示。FIQ1063 累积。 DCS方案: 回路处理周期:1S。累积时间基准:小时。 FIQ1063、FI1063基本及计算数据: FI1063量程 0—32T/H FIQ1063.AVTV 8192T FI1063小信号切除 10% FIQ1063.AVDV1TP 0.0 FIQ1063输入信号最小值 3.2T/H※ (0.00089T/S) 转换系数 1 正常累积的上限 213T※ 处理周期 1S FIQ1063.PVEUHI 10000T 累积时间基准 HOUR FIQ1063.RESETVAL 0 ※(0.00089)10进制=(0.00000000001110100100000)二进制 按以上表格中的数据对FI1063及FIQ1063进行组态,再利用CL语言设计一段用户自定义程序,负责检测FIQ1063.PV并完成RESET操作。至此,我们完成了本控制方案的设计及实现。在应用过程中,可以根据报警情况人工完成RESET操作,也可以启动用户自定义程序自动完成。 五、结语 TOTALIZR模块在工程中应用的十分广泛,弄清它的原理、掌握其正确的设计及应用方法有着十分重要的意义。
1楼 0 0 回复