4 软件设计
4.1 软件模块
①初始化模块
当系统启动后,需要对时钟源进行分配;对输入输出端口进行定义;对定时器、异步通信模块、模数转换器的控制寄存器进行初始化;对内部RAM和外部的EEPROM进行清零;对一些中断允许寄存器和中断标志寄存器进行初始化;选择CPU的低功率模式。
②按键和显示模块
显示模块包括正常情况下的显示子程序和配合按键功能的显示子程序,后者和按键子程序一道作为中断服务子程序。通过按键可以设定数字和字符、移动光标、功能切换、状态保存;可以实现用户和厂家参数的设置,实时测量不同传感器的输出电压,在线标定压力和差压传感器。在用户参数中,可以设置一些流量计算所需的参数值,如天然气组分、孔板和测量管的材料和直径,以及频率、脉冲输出所对应的流量值;在厂家参数中可以设定传感器的一些参数值。
③信号采集模块
单片机按每0.5s采样一次差压值、4s采样一次压力和温度值打开模拟开关,同时打开运算放大器。12位的ADC转换器得到的是经过放大的数字量,需按照放大倍数进行还原。
④流量计算模块
天然气的流量计算模型[2]由于设计参数多,公式复杂,并且引入了相关参数的实时温压补偿,因此计算量较大。可以将不同参数的计算设计成子程序的形式,由主程序按不同的进程调用。流量每2s计算一次。由于MSP430单片机具有较大的内存单元和程序存储区,因此为了提高计算的精确度,对参与运算的变量全部采用了5字节浮点数的编码方式。阶码采用1字节移码,尾数采用4字节原码。浮点数的基本运算和浮点数与其他制式定点数之间的相互转换也可采用子程序的形式,由计算程序在运算过程中调用。
⑤流量输出模块
流量的输出可以根据用户的设定,通过外接的24V电源按不同方式输出。可以输出0~1000Hz的频率信号、4~20mA的模拟信号和每个脉冲代表不同流量值的脉冲数。
⑥通信模块
定义串口之间的通信接口协议:仪表向上位机传送的数据内容、数据包的形式,以及上位机对仪表发送的指令格式。通信子程序作为中断服务子程序响应串口的中断请求。
⑦定时器子程序
两个16位的定时器T 均有多种时钟源和4种工作模式可供选择,根据需要产生不同的定时中断信号。
4.2 主程序流程图
主程序流程图如图3所示。
图3 主程序流程图
5 结束语
本智能流量积算仪作为天然气标准孔板流量计的二次仪表,由于完全采用了符合国家标准的流量计算模型,具有实时的温压补偿,很好地克服了传统孔板流量计计量不精确的弊端,并且设计了功耗低,功能齐全,已开始在实际天然气生产过程中使用。