**拓安信电磁流量计通信协议**
通信接口
拓安信电磁流量计支持多种通信接口,包括:
RS-485 4-20mA Modbus RTU Modbus TCPModbus通信协议
Modbus是一种**用于工业自动化中的开放式串行通信协议。拓安信电磁流量计支持Modbus RTU和Modbus TCP协议。
Modbus RTU协议**
从机地址: 1-247 波特率: 1200、2400、4800、9600、19200、38400、57600、115200 数据位: 8 停止位: 1或2 奇偶校验: 无、奇校验、偶校验**读取寄存器**
要读取流量计寄存器,可以使用以下报文格式:
``` 0x01 [从机地址] 0x03 [起始地址(高字节)] [起始地址(低字节)] [寄存器数量(高字节)] [寄存器数量(低字节)] [校验] ```例如,要读取起始地址为0x0100的两个寄存器的值,报文如下:
``` 0x01 0x01 0x03 0x01 0x00 0x02 0xF8 ```**写入寄存器**
要写入流量计寄存器,可以使用以下报文格式:
``` 0x01 [从机地址] 0x06 [起始地址(高字节)] [起始地址(低字节)] [寄存器数量(高字节)] [寄存器数量(低字节)] [数据(高字节)] [数据(低字节)] ... [校验] ```例如,要写入起始地址为0x0100的两个寄存器的值0x1234,报文如下:
``` 0x01 0x01 0x06 0x01 0x00 0x02 0x12 0x34 0x01 ```Modbus TCP协议
端口: 502 从机地址: 1-247读取寄存器
要读取流量计寄存器,可以使用以下报文格式:
``` [MBAP头] 0x03 [起始地址(高字节)] [起始地址(低字节)] [寄存器数量(高字节)] [寄存器数量(低字节)] ```例如,要读取起始地址为0x0100的两个寄存器的值,报文如下:
``` [MBAP头] 0x03 0x01 0x00 0x02 0x00 ```**写入寄存器**
要写入流量计寄存器,可以使用以下报文格式:
``` [MBAP头] 0x10 [起始地址(高字节)] [起始地址(低字节)] [寄存器数量(高字节)] [寄存器数量(低字节)] [数据(高字节)] [数据(低字节)] ```例如,要写入起始地址为0x0100的两个寄存器的值0x1234,报文如下:
``` [MBAP头] 0x10 0x01 0x00 0x02 0x00 0x12 0x34 ```MBAP头
对于Modbus RTU和Modbus TCP协议,MBAP头包含以下域:
事务ID: 16位无符号整数 协议ID: 16位无符号整数,RTU为0x0000,TCP为0x0001 长度: 16位无符号整数,表示报文中的字节数,不包括报文头和CRC寄存器表
拓安信电磁流量计支持多种寄存器,用于配置和读取流量、累计值和其他信息。下表列出了流量计中**重要的寄存器:
| 寄存器地址 | 寄存器名称 | 说明 | |---|---|---| | 0x0000 | 流量 | 当前流量值 | | 0x0001 | 流量小数部分 | 流量的十进制部分 | | 0x0004 | 正向累计流量 | 自流量计复位后累计的正向流量值 | | 0x0006 | 反向累计流量 | 自流量计复位后累计的反向流量值 | | 0x0008 | 累积流量 | 正向和反向累计流量的差值 | | 0x000A | 负流量幅值 | 负向流量的峰值 | | 0x0016 | 电导率 | 流体的电导率 | | 0x0018 | 液体温度 | 流体的温度 | | 0x0020 | 测量状态 | 流量计的当前状态 | | 0x0024 | 测量信息 | 流量计的详细信息,例如日期和时间 | | 0x0028 | I/O输出状态 | 流量计的I/O输出状态 | | 0x002A | 瞬时流速 | 当前瞬间的流速 |配置流量计
可以使用Modbus协议配置流量计。可以使用以下寄存器来配置流量计:
| 寄存器地址 | 寄存器名称 | 说明 | |---|---|---| | 0x0030 | 流量计类型 | 流量计的类型,例如插入式或法兰式 | | 0x0031 | 管道口径 | 管道的口径 | | 0x0032 | 液体密度 | 流体的密度 | | 0x0034 | 流量单位 | 流量的单位,例如m3/h或㎥/m | | 0x0036 | 电导率报警 | 设置电导率报警值 | | 0x0038 | 电导率报警延时 | 设置电导率报警延时时间 | | 0x003A | 流量报警 | 设置流量报警值 | | 0x003C | 流量报警延时 | 设置流量报警延时时间 | | 0x003E | 反向流量 | 启用/禁用反向流量测量 |通过读取和写入这些寄存器,用户可以配置流量计以满足他们的特定要求。
示例代码
以下是用C#语言实现Modbus RTU协议读取流量的示例代码:
``` using NModbus; using System; using System.Net.Sockets; namespace Modbus_RTU_Read { class Program { static void Main(string[] args) { // IP地址 string ipAddress = "192.168.1.10"; // 端口 int port = 502; // 从机地址 byte slaveId = 1; // 起始地址 ushort startAddress = 0x0000; // 寄存器数量 ushort numRegisters = 2; // 创建Modbus客户端 TcpClient client = new TcpClient(); // 连接到从机 client.Connect(ipAddress, port); // 创建Modbus通信工厂 IModbusFactory modbusFactory = new ModbusFactory(); // 创建Modbus RTU从机