摘 要:西门子 SITRANS FUS 超声波流量的表头支持 4-20mA 电流信号输出和 RS232 文本日志输出,都无法与水利部门采 用 Modbus 协议的取水监测设备进行通信。针对此问题,本文自主设计并实现了一种支持Modbus 协议的通讯???,能够实时解析 流量计表头 232 端口输出的文本信息,并将其转换成 Modbus 协议报文,与取水监测设备进行通信。该通讯??榫哂薪峁辜虻?、可 拓展性强、成本低的优点。
1 概述
西门子 SITRANS FUS 外夹式蒸汽流量计的标准表头支 持 4- 20mA 电流信号输出,而水利部门的取水监测设备应用层 采用的是 Modbus 协议,物理层采用的是 RS485 标准,无法与SITRANS FUS 流量计的表头通信。针对这一问题,本文自主设 计并实现了一种支持 Modbus 协议的通信???,使得超声波流 量计表头与取水监测设备可以以 Modbus 协议进行通讯。
2 系统架构
图 1 为本文设计的 Modbus 通讯??橛肴∷髁考嗖馍璞?、 蒸汽流量计表头组成的系统架构示意图。该??橥ü齋ITRANS FUS 蒸汽流量计表头的 232 接口与流量计表头通 信;通过 485 接口,以 Modbus 协议与水利部门的取水监测设备 通信。通讯??榻羝髁考频男畔⒔馕霾⒎庾俺?Modbus报文,提供给取水监测设备读取。硬件方面,采用成熟的STM32F407 开发板,带有 232 接口和 485 接口,本文主要实现软件部分的功能。
3 软件设计
3.1 软件架构
Modbus 通讯??榈娜砑芄谷缤?2 所示,分为硬件层、硬 件抽象层,中间层和应用层。中间层包括一个实时操作系统FreeRTOS 和一个针对嵌入式环境开发的轻量级 Modbus 协议库Freemodbus。在应用层,主要创建了三个任务,232_Task 负责读 取和解析流量计表头输出的文本信息,Modbus_Task 负责存储 解析后的流量计数据到 Modbus 寄存器表,以及以 Modbus 协议 与取水监测设备通信,LED_Task 是一个辅助任务,主要用来提示程序运行状态。
3.2 软件流程图
图 3 为 Modbus 通讯??榈娜砑鞒掏?,创建的三个任务都是以 FreeRTOS 系统的消息(Message)来驱动。
4 测试与通讯联调
Modbus 通讯??槿缤?4 所示。为保证供电稳定,使用了电源 切换装置给主板供电,共有主副两路 5V 电源。
在 PC 上使用权威工具测试软件 Modbus poll,作为 Modbus主机对通讯??榻胁馐?。通讯??樽魑?Modbus 从机响应Modbus Poll 软件发出的请求。通讯??槟诓渴褂肕odbus 的输入寄存器(Input Register)存储流量计数据。Modbus Poll 发送的测试命令字节流为:01 04 00 00 0014 F0 05。其中 0x01 为 Modbus 从机地址,0x04 功能码为读取 输入寄存器命令,0x0000 为读取寄存器的起始地址,0x0014(20)为读取寄存器的个数,0xF0 0x05 为 CRC 校验码。
Modbus Poll 通讯测试结果如图 5 所示:Tx = 24140,Err =0,ID = 1,F = 04,SR = 1000ms,Log = on。 其 中 ,Tx 为Modbus Poll 发送命令次数,也就是说在测试期间 Modbus Poll软件共发送读输入寄存器命令 24140 次(发送间隔为 1s,测试 时间为 6.7 小时);Err 为通讯错误数,Err = 0 表明 Modbus 通讯??檎废煊Υ问?24140 次(错误数为 0)。
5 结论
本文针对 FUS 蒸汽流量计无 Modbus 通讯接口,无法与取 水监测设备通讯的问题,自主设计并实现了一种基于微处理器STM32F407 的低成本 Modbus 通讯???。在通讯??榈闹骺匦?片 上 移 植 了 开 源 代 码 库 FreeModbus 和 开 源 操 作 系 统FreeRTOS,实现了对流量计表头输出文本的解析,以及与Modbus 主机的通讯,从而实现了给 FUS 蒸汽流量计表头增加Modbus 通讯的功能。测试结果表明,该通讯??楣ぷ魑榷煽?,具备了在较高通讯频率下正确响应 Modbus 主机请求的能力,达到了实用要求。该通讯??橐簿弑敢欢ǖ目赏卣剐?,可应用 在公司其它 FUS 蒸汽流量计上,并且很容易通过 485 总线与DCS 系统或 PLC 进行通讯。