您好,欢迎来到九壹网。
搜索
您的当前位置:首页盛亿仪表通讯协议

盛亿仪表通讯协议

来源:九壹网


版本 日期

0.1 2009.02.13

仪表通讯协议

修改目录: 版本号 0.1 日期 2009-02-13 1. 初始版本 修改内容 附件

附录1 附录2 附录3 附录4

仪表寄存器地址

CRC循环冗余校验算法

IEEE4字节浮点数传输与编码 ASCII码表

第一章 通讯功能概要

1.1 通信功能一览

本仪表将串行接口(RS232或RS485)作为附加规格。

每种接口能够使用的功能及使用这些功能(硬件及软件)的设备如下:

串行接口(RS232或RS485)

功能 Modbus从机 仪表 协议 Modbus RTU 专用协议 连接设备 Modbus主机设备(测量仪器、PC、PLC等) PC(数据管理软件) 1.2 使用串口通讯

本仪表的两种串行接口(RS232和RS485)的规格如下:

RS232接口规格 插座类型 连接方式 通信方式 同步方式 波特率 起始位 数据位 校验位 停止位 接收缓冲器大小

RS485接口规格 插座类型 连接方式 通信方式 同步方式 波特率 起始位 数据位 校验位 停止位 接收缓冲器大小 通信距离 终端阻抗*2 2点端子板 多点,总线式拓扑网络 半双工 起止式同步 1200,2400,4800,9600,19200,38400,57600[bps] 1位(固定) 8位(固定) 可选择奇校验,偶校验或None(无校验) 1位(固定) 128字节 最多1.2km 外部:推荐120Ω,1/2W电阻 D-Sub 9芯插座或者3点端子板*1 点对点 半双工 起止式同步 1200,2400,4800,9600,19200,38400,57600[bps] 1位(固定) 8位(固定) 可选择奇校验,偶校验或None(无校验) 1位(固定) 128字节 注:

*1 具体插座请参考仪表说明书。

*2 使用多点连接(包括点对点连接)时,仅在链路最末端的仪表上连接一个终端电阻。不要对链路中间的仪表连接终端电阻。如果使用了转换器,打开它的终端阻抗。推荐的转换器

上必须附加外部终端阻抗,也有内置终端阻抗的转换器。

第二章 通讯指令

命令代码是16进制的。

03H

描述

读取保持寄存器

读取仪表保持寄存器,包括工程量和累积量。 不支持广播命令。

附录中包含了命令可以访问的寄存器列表。

发送

命令信息中包含了读取寄存器的起始地址和读取长度。

下面是一个从地址为8的设备读取地址00~01的寄存器的例子。

发送格式 名称 从设备地址 功能码 起始地址高 起始地址低 寄存器数量高 寄存器数量低 CRC校验低 CRC校验高 数据(HEX) 08H 03H 00H 00H 00H 02H C4H 92H 返回

在返回的信息中每个寄存器包含两个字节的数据。高字节在前,低字节在后。 下面是上页发送命令的正常返回。

返回格式 名称 从设备地址 功能码 字节数量 高字节(寄存器00) 低字节(寄存器00) 高字节(寄存器01) 低字节(寄存器01) CRC校验低 CRC校验高 数据(HEX) 08H 03H 04H 00H 00H 10H 52H EFH 0EH

附录1 仪表寄存器地址

寄存器地址版本与仪表主机固件版本对应关系 寄存器地址版本 仪表主机固件版本 A3GV1xxx a版本 A3EV1XXX A5GV1XXX A6GV1XXX A3GV2000-2005 b版本 A3EV2000-2003 A5GV2000-2006 A6GV2000-2009 A3GV2006及之后版本 c版本 A3EV2004及之后版本 A5GV2007及之后版本 A6GV2010及之后版本 d版本

A5GW2000及之后版本 A6GW2000及之后版本

1. a版本寄存器地址

工程量(浮点数): 通道1 00 18 通道2 02 20 通道3 04 22 通道4 06 通道5 08 通道6 10 通道7 12 通道8 14 通道9 16 通道10 通道11 通道12

工程量(百分比): 通道1 24 33 通道2 25 34 通道3 26 35 通道4 27 通道5 28 通道6 29 通道7 30 通道8 31 通道9 32 通道10 通道11 通道12 累积量(ulong): 通道1 36 54 通道2 38 56 通道3 40 58 通道4 42 通道5 44 通道6 46 通道7 48 通道8 50 通道9 52 通道10 通道11 通道12 注: 实际累积量 = 读取累积量(ulong) / 10

2. b版本寄存器地址

工程量(浮点数): 通道1 00 18 通道2 02 20 通道3 04 22 通道4 06 通道5 08 通道6 10 通道7 12 通道8 14 通道9 16 通道10 通道11 通道12

工程量(百分比): 通道1 24 33 通道2 25 34 通道3 26 35 通道4 27 通道5 28 通道6 29 通道7 30 通道8 31 通道9 32 通道10 通道11 通道12

累积量(long long): 通道1 36 72

通道2 40 76 通道3 44 80 通道4 48 通道5 52 通道6 56 通道7 60 通道8 通道9 68 通道10 通道11 通道12 注: 实际累积量 = 读取累积量(long long) / 100

3. c版本寄存器地址

工程量(浮点数): 通道1 00 18 通道2 02 20 通道3 04 22 通道4 06 通道5 08 通道6 10 通道7 12 通道8 14 通道9 16 通道10 通道11 通道12 工程量(百分比): 通道1 24 33 通道2 25 34 通道3 26 35 通道4 27 通道5 28 通道6 29 通道7 30 通道8 31 通道9 32 通道10 通道11 通道12

累积量(ulong): 通道1 84 102 通道2 86 104 通道3 88 106 通道4 90 通道5 92 通道6 94 通道7 96 通道8 98 通道9 100 通道10 通道11 通道12 注: 实际累积量 = 读取累积量(ulong)

4. d版本寄存器地址

工程量(浮点数): 通道1 00 18 通道2 02 20 通道3 04 22 通道4 06 24 通道5 08 26 通道6 10 28 通道7 12 30 通道8 14 通道9 16 通道10 通道11 通道12 通道13 通道14 通道15 通道16

工程量(百分比): 通道1 32 41 通道2 33 42 通道3 34 43 通道4 35 44 通道5 36 45 通道6 37 46 通道7 38 47 通道8 39 通道9 40 通道10 通道11 通道12 通道13 通道14 通道15 通道16

累积量(ulong): 通道1 112 130 通道2 114 132 通道3 116 134 通道4 118 136 通道5 120 138 通道6 122 140 通道7 124 142 通道8 126 通道9 128 通道10 通道11 通道12 通道13 通道14 通道15 通道16 注: 实际累积量 = 读取累积量(ulong) 附录2 CRC循环冗余校验算法

1. CRC校验概述

CRC校验码的基本思想是利用线性编码理论,在发送端根据要传送的k位二进制码序列,以一定的规则产生一个校验用的监督码(既CRC码)r位,并附在信息后边,构成一个新的二进制码序列数共(k+ r)位,最后发送出去。在接收端,则根据信息码和CRC码之间所遵循的规则进行检验,以确定传送中是否出错。

2. CRC校验算法

//CalCrc===================== //功能 计算 CRC校验 //参数 buf 校验缓冲 // length 检验长度 //返回 CRC校验结果,短整形表示 HL const uchar ucCRCHi[] = { 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40 } ;

const uchar ucCRCLo[] = { 0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06, 0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD, 0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09, 0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A, 0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC, 0x14, 0xD4, 0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3, 0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3, 0xF2, 0x32, 0x36, 0xF6, 0xF7, 0x37, 0xF5, 0x35, 0x34, 0xF4, 0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A, 0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38, 0x28, 0xE8, 0xE9, 0x29, 0xEB, 0x2B, 0x2A, 0xEA, 0xEE, 0x2E, 0x2F, 0xEF, 0x2D, 0xED, 0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26, 0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60, 0x61, 0xA1, 0x63, 0xA3, 0xA2, 0x62, 0x66, 0xA6, 0xA7, 0x67, 0xA5, 0x65, 0x, 0xA4, 0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F, 0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8, 0x68, 0x78, 0xB8, 0xB9, 0x79, 0xBB, 0x7B, 0x7A, 0xBA, 0xBE, 0x7E, 0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x74, 0x75, 0xB5, 0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71, 0x70, 0xB0, 0x50, 0x90, 0x91, 0x51, 0x93, 0x53, 0x52, 0x92, 0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54, 0x9C, 0x5C, 0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B, 0x99, 0x59, 0x58, 0x98, 0x88, 0x48, 0x49, 0x, 0x4B, 0x8B, 0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x8C, 0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42, 0x43, 0x83, 0x41, 0x81, 0x80, 0x40 } ;

//CRC计算

ushort CalCrc(uchar *pucData , ushort usDataLen) { uchar ucCrcLo = 0xFF ; uchar ucCrcHi = 0xFF ; uchar ucIndex ; while(usDataLen--) { ucIndex = ucCrcLo ^ *pucData++ ; ucCrcLo = ucCrcHi ^ ucCRCHi[ucIndex] ; ucCrcHi = ucCRCLo[ucIndex] ; }; return (ucCrcHi * 0x100 + ucCrcLo) ; }

附录3 IEEE4字节浮点数传输与编码

1. IEEE4字节浮点数编码简介

4字节共32位

00-22位 尾数(1.尾数)

23-30位 阶码(2^( 阶码 - 127)) 31位 符号(0正;1负)

值=(符号)[(1.尾数)*(2^(阶码 - 127))]

2. 举例说明

1、读取数据:08 03 00 C0 00 02 C4 AE[偏移192,长度2字] 2、收取数据:08 03 04 00 00 40 88 52 95[数据00004088,长度04] 3、分析数据:00 00 40 88[FF1 FF2 FF3 FF4]

A、前后字交换顺序40 88 00 00[FF3 FF4 FF1 FF2]

二进制:0100 0000 1000 1000 0000 0000 0000 0000

B、尾数 = 000 1000 0000 0000 0000 0000 B = 0.0625;

阶码 = 10000001B - 127 = 129 - 127 = 2 ; 符号 = (+) ;

C、计算数值:+[1.0625 * 2^2] = 4.25

附录4 ASCII码表

0 1 2 3 4 5 6 低7 48 位 9 A B C D E F

高4位 0 LF 1 ESC 2 3 SP 4 5 Q R S T U V X Y Z 6 a b c d e f h i j k l m n o 7 8 9 A B C D E F p q r s t u v x y z 0 @ P 1 A 2 B 4 D F # 3 C % 5 E & 6 ( ) * + - . / 7 G W g w 8 H 9 : I J K L M N O CR

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 91gzw.com 版权所有 湘ICP备2023023988号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务