智能通用流量积算仪(以下简称积算仪)以功能强大的motorola m68hc11型单片机为核心,能与各种流量传感器配用, 可计量积算蒸汽、水、饱和蒸汽、过热蒸汽等介质的体积流量、质量流量、体积和质量流量的累积值以及热量的累积值. 用于对外结算和内部计量, 它可对介质由于温度及压力变化而引起的误差进行补偿修正, 以提高检测计量精度.
蒸汽和水的流量测量方法很多, 但以计算体积流量qv居多,利用以下公式可计算出相应的质量流量qm、体积和质量流量的累积值qv、qm 以及热量的累积值h.
式中,ρ(p,t)、h(p,t)分别为介质的密度和焓系数,它们为测量工况下的压力和温度的函数,因此,流量积算仪必须根据测量传感器得压力和温度及能在全工况条件下以某些特殊温度及压力点通过实验的方法测定, 分别制作成一张温度、压力及密度和焓系数的三维数据表[3], 在进行运算补偿时通过查表确定密度和焓系数. 由于数据分布比较离散, 一般情况下在表上没有对应的有效数据,只能通过查找出前后两个数据点进行线性插值运算.
流量积算仪可以用来测量水蒸气的流量, 也可以用来测量水的流量. 但是液体和气体本身的特性不同, 它们的密度和焓系数随温度和压力的变化都是不同的. 对于水蒸气, 它的密度随压力的增大而增大, 焓系数随压力的增大而减小; 对于过热水, 它的密度和焓系数都随压力的增大而增大. 更重要的是它们的变化率不同. 在水和过热水蒸气之间存在一个两种状态相过渡的临界状态, 在温度、压力和状态三维坐标中形成了一个临界曲面. 在曲面上方, 是过热水蒸气状态, 在曲面下方, 是过热水状态, 而这个曲面是所谓的饱和水蒸气状态. 需要引起注意的是, 在这曲面上,以及在曲面的周围有限空间内, 密度和焓系数的变化率都是相当大的, 而离这一曲面越远, 密度和焓系数的变化率就越小, 越趋于平坦. 为了提高测量精度, 减小误差, 曲面周围的数据点必须分布得相对比较密集. 此外, 在曲面两边, 由于处于液体和气体两种不同的状态, 这些点对应的密度和焓系数有一个很大的落差, 因此需要把这两部分分开, 使数据表分成密度表和焓系数表,而每个表又分成3 个部分: 过热水蒸气表、过热水表和饱和水蒸气表.
2 数据表设计
查表的意义在于,给定一个输入值,可利用查表法求出输出值. 在上述表中, 有具体温度和压力, 可直接通过查这些点来找到对应于这些点上的密度和焓系数[2]. 由于温度和压力都是连续变化的量, 又由于内存等各方面原因的限制, 表格不能太大, 因此数据表不可能覆盖实际中所有的温度和压力. 这样, 有些输入值就不能在表格中直接查到对应的输出值, 必须使用线性插值的计算方法,线性插值公式为
根据数据点所在的位置,线性插值分成以下3种情况。
a.数据点刚好取在温度与压力相交点上.这些点上的数据是在表格中直接提供的, 只要查到对应的温度和压力, 就可以直接查到这些点的密度和焓系数. 这种情况简单, 但在实际中并不常见.
b.刚好取到在温度线上或压力线上的数据,如图1所示
在这种情况下,就要通过线性插值的方法来计算出对应点的密度和焓系数, 如图1中(p1, tx)处的密度或系数, 首先要查表得到点(p1, t2)和(p1, t3)处的密度或焓系数. 要注意的是, 这是一个三维的坐标系, 这些点在z 轴方向的高度就是它的密度或焓系数(这依据是查密度表还是焓系数表而定). 如图2 所示, 查到点(p1, t2)和(p1, t3)处的高度图2所示,查到点(p1,t2)和(p1,t3)处的高度
之后拉直线, 与(p1, tx)处z轴方向高度相交, 得到的交点就是所求该点的密度(或焓系数). 同样,(px, t2)处的密度(或焓系数)也由相同的方法得到, 即先查到点(p1, t2)和(p2, t2)处的高度之后拉直线, 和(px, t2)处z 轴方向高度相交, 得到非彩色版的交点就是所求该点的密度(或焓系数). 很明显, 这一计算的前提是保证这3 点的密度线(或焓系数线)的顶端在同一条线上, 而这条直线又和这3 点的密度线也要在同一个平面上. 对应的计算公式如下,
点在压力线上
点在温度线上
c. 都不在温度线或压力线上的线性插值这是所有的情况中间复杂的一种, 而且也是实际中出现概率高的一种. 这些数据点既不在某一个特定的点上, 也不是在某一条特定的温度或压力线上, 这就要采用更为复杂的线性插值方法来计算. 对于点(px1, tx1), 首先要查找到它在坐标系中与它临近的4 个点(p1, t3)、(p2, t3)、(p1, t2)、(p2, t2), 如图3 所示; 再根据这4个点画出两条线: 线1 和线2, 其中线1 是点(p1,t3)和点(p1, t2)对应密度(或焓系数)的连线, 线2 是点(p2, t3)和点(p2, t2)对应密度(或焓系数)的连线; 然后在p2 线上作出点(p1, tx)的密度(或焓系数)线5 以及p3 线上点(p2, tx)的密度(或焓系数)线4, 这样就有了一个平面, 在这个平面上任何一个点对应的密度(或焓系数)
对应的计算公式为
3 程序设计
程序的设计包含两个方面, 一个是数据的存储, 就是把图1 中所有点对应的数据信息以表格的形式存储在cup 的ram 存储器中; 另一个是对应的查表程序, 使用查表程序时, 要求能够根据传感器上得到的压力和温度信号查到对应情况下的水蒸气密度和焓系数.
3.1 数据结构
压力、温度及密度(或焓系数)这些数据, 组成了一个三维的坐标系, 如图4 所示. 根据技术要求,温度的范围是0~600℃,压力范围是0.1~20mpa;
考虑内存容量,设计间隔温度为20℃;考虑到各种压力情况出现的可能性,压力的间隔是不一致的。
3.2 存储结构
为了统一数据的表示, 同时又有足够的精度,通过计算, 用两个字节存储一个数据. 其热水密度的精度为0.1 kg/m3, 过热水蒸气密度的精度为0.001 kg/m3, 过热水和过热水蒸气的焓系数都达到0.1 kj/kg. 按照以上规定, 在压力方向设置24个点, 在温度方向设置30 个点. 兼顾到查表程序简单、方便, 在设计存储方式时, 首先设计一个表头标号, 在表头开始的一段空间里存放的是过热水蒸气表和过热水表的压力参数的24 个压力点,如图5所示。
从传感器读入的数据有压力和温度,这里以压力为*参考量,如果压力刚好在这24个压力点上,之间可以找到对应于这一压力的温度区,因为温度点的间隔为20℃是已知的, 只要在起始温度上以20℃递增, 就可以找到对应的温度点,查出该处的密度. 如果压力在24 个压力点上, 但温度不在20℃间隔的温度点上, 此时就要查找比该温度大的一个温度点和比该温度小的一个温度点, 再进行线性插值; 虽然温度刚好在20℃的间隔点上, 但是压力已经不在这24 个压力点上, 此时同样要查找到比该压力大一个压力点和比该压力小的一个压力点, 再查两个压力下此温度点的密度, 然后按照前面所述的方法进行线性插值,如果既不在24个压力点上,也不在20℃间隔的温度点上,此时就要查出相邻两个压力点,再分别查相邻两个温度点对应的密度,一共4个密度点,后再按照前面所述方法线性插值。
临界曲面是由一系列的点组成的, 只要知道了压力和温度, 就可以查出对应的密度, 只是在这里, 压力仍然像上面提到的采用线性插值的方法来查找, 温度仅提供一个±2℃的偏差范围. 也就是说, 如果给定的温度不在24个温度点上,并且大于±2℃的偏差,就不再查饱和蒸汽表,因此特设置了状态判断程序以确定3个表中查哪个表。
同样道理,可以查到对应的焓系数,再根据需要看是否要进行线性插值。
3.3查表程序
3.3.1 主程序main
a. 主程序开始, 先清除溢出标志位, 接下来调用压力处理子程序, 将压力转换成压力,单位转换成0.1 mpa; 再调用温度处理子程序, 如果温度是华氏度则换成摄氏度.
b. 对压力和温度进行判断, 判断它是否属于可查找范围: 压力0.1~20 mpa, 温度0~600℃.c. 如果压力或者温度超出范围, 设置相应的标志位.
d. 调用状态判断子程序, 判断查找3张表中的哪一张.e. 调用查找计算子程序, 进行密度和焓系数的查找.
f.主程序结束.
3.3.2 选表判断子程序
a. 首先将读入的压力p 和临界线上的压力相比, 假设要查的这个点在临界线上, 则找出该压力下对应的温度tr.
b. 将读入的温度tr再和t 相比, 如果tr>t+2℃, 则表明要查过热水蒸气表, 使用过热水蒸气表头.
c. 再比较tr 与t, 如果tr
e . 表格选择程序结束.
3.3.3 查表计算子程序
a. 判断压力是否在24 个压力点上, 温度是否在20℃间隔的温度点上, 如果都满足, 直接查出 密度.
b. 如果压力在24 个压力点上, 温度不在20℃间隔的温度点上, 则找出该温度前后两个温度点上密度再进行插值结算.
c. 如果压力不在24 个压力点上, 温度在20℃间隔的温度点上, 则找出该压力前后两个压力点在该温度