银河娱乐网平台

新闻动态
技术中心
技术中心
当前位置:银河娱乐网平台 >> 服务支持 >> 技术中心 >> 浏览文章
通讯协议解析
作者:卫贤涛 日期:2020年01月02日 来源:技术部 浏览:

内容导读:二级制位(比特 bit): 数字信息的最小单位。一个bit的值有两种可能: 0或者1 。字节(Byte) : 1 Byte = 8bit例如00000000、 11111111 、 01 01 01 01数字信息由诸多Byte组成, 进而由诸多bit组成。

一、 数字信息的基本概念

    二级制位(比特 bit): 数字信息的最小单位。一个bit的值有两种可能: 0或者1 。字节(Byte  1 Byte = 8bit例如0000000011111111 01 01 01 01数字信息由诸多Byte组成, 进而由诸多bit组成。

Ø 例如“你好” 可以按GB231 2标准编码为如下数字信息:

11 0001 00 111 00011 1 0111 01 0 11 000011

这条数字信息由4个字节组成, 并由32个位组成。

二、 数字通讯的基本形式

Ø 串行通讯在一条数据通道上, 一位一位地依次传输字节的各个位。

例如串行传输“你好” , 则

11 0001 00111 000111 0111 01 011 000011

Ø 并行通讯

在多条数据通道上, 一并传输字节的各个位。例如并行传输“你好” , 则

1 1 1 1

1 1 0 1

0 1 1 0

0 0 1 0

0 0 1 0

1 0 0 0

0 1 1 1

0 1 0 1

Ø 仪表所使用的RS-485 M-bus通讯接口, 均属于串行通讯接口。串行通讯更适合于远距离通讯, 其线间串扰小, 信号完整性优于并行通讯。

三、 串行通讯的字符

Ø 在串行通讯中, 数字信息的基本单元是“字符” 。一个“字符” 包含以下内容:

开始位(1 位)

数据位(8位, 即1 字节)

校验位(0位或1 位)

停止位(1 位)

Ø 一个“字符” 1 0位或11 位组成, 1 字节数据包括在字符中。当然, 也有7位数据位、 2位停止位、 附加1 位地址位的情况。在通讯解析时, 开始位、 检验位、 停止位等是隐藏的, 只有数据字节对我们是可见的。注意, 和波特率一样, 校验位(无校验/奇校验/偶校验) 作为一项通讯参数, 在采集设备上的设定必须和仪表保持一致。

四、 帧和主-从结构

Ø 帧: 由若干字节组成, 能表达一组完整的信息。目前在仪表上应用的通讯协议, 基本均采用主-从结构。 即采集设备发出命令帧, 仪表返回数据帧。通讯协议的主要内容就是对命令帧和数据帧的帧结构作出说明。采集设备仪表命令帧数据帧

五、 通讯协议中的编码方法

Ø 在通讯协议中, 字节是以十六进制数表示的。 xxH” 的形式, H表示该数为十六进制。十六进制和十进制的转换(例如地址转换)

1 ) 手算转换

2) 计算器软件转换

Ø BCD

BCD码有多种, 我们采用的是8421 码。8421 码: 用十六进制的表面形式, 表达一个十进制数。例如

1 2345678H = 30541 9896(十进制)

8421 码, 以十六进制观察数据帧是简便的。表示BCD

点击浏览下一页

例如: 仪表响应26H 41 H 4AH …… 00H 01 H 35H 79H ……

取出数据部分的第1 3~1 6字节00H 01 H 35H 79H代表十进制数值0001 3579

根据协议, 该数值代表1 3579 ÷1 000 = 1 3.579m

Ø ASCIIASCII码是一种英语字符编码。 字符中包含大/小写英文字母、 数字、 符号等, 每个字符用1 个字节表示。

点击浏览下一页

ASCII

例如, 30H代表字符“0

31 H代表字符“1

……

39H代表字符“9

2DH代表字符“-” (负号)

ASCII码, 以字符形式观察数据帧是简便的。

例如: 仪表响应

26H 3AH …… 00H 00H 2DH 31 H 32H 33H 34H

35H 36H 37H 31 H 32H 33H ……

取出数据部分的第35~47字节并转为ASCII码代表十进制数值-1 2345671 23

根据协议, 该数值代表-1 2345671 23 ÷1 000 =-1 234567.1 23m

整型和长整型

整型和长整型都是计算机领域基本的数据类型, 基本的数据表达方式。整型(int) 用2个字节表达一个整数, 如

27H 1 0H表示1 0000

长整型(long) 用4个字节表达一个整数, 如

07H 5BH CDH 1 5H表示1 23456789

Modbus协议中使用的整型和长整型都是有符号的。

Ø 整型转换为十进制数的方法

1 、 在计算器中选择十六进制、 单字。

2、 输入整型码。

3、 切换至二进制, 观察位数, 如果位数 = 1 6 则表明是负数, 需要按一下“+/-” 键。

4、 切换至十进制。

例如: F9H 00H = -1 792

79H 00H = 30976

Ø 长整型转换为十进制数的方法

1 、 在计算器中选择十六进制、 双字。

2、 输入整型码。

3、 切换至二进制, 观察位数, 如果位数 = 32 则表/明是负数, 需要按一下“+/-” 键。

4、 切换至十进制。

例如: FFH F6H F8H BEH = -591 682

Ø 浮点型

浮点型也是计算机领域基本的数据类型, 基本的数据表达方式。仪表中使用的浮点型确切地说是单精度浮点型(l float) , 它用4个字节表示一个浮点数。

例如, 42H F6H E9H 79H表示1 23.456

一般可以使用小工具软件进行转换。

六、 Modbus通讯协议

Ø Modbus通讯协议是为PLC(可编程逻辑控制器)拟定的, 它是工业通信领域的标准协议。

Ø Modbus通讯协议中的数据有ASCIIRTU两种编码方式。 仪表采用RTU方式, 即使用长整型或浮点型表达数据。

Ø 仪表仅支持03号命令: 读保持寄存器

Ø 寄存器: PLC中, 每个寄存器占用2个字节由于浮点型和长整型数据占用4个字节, 所以需要占用2个寄存器。M 例如插入式超声热量表Modbus通讯协议中,

累积流量占用0002H0003H两个寄存器;流速占用000AH000BH两个寄存器。

Ø 命令帧格式(均为1 6进制值)

41 03 00 00 00 1 9 8A C0

41 ——设备地址65

03——功能码: 读保持寄存器

00 00——起始寄存器地址 = 0

00 1 9——读取寄存器数量 = 25

8A C0——CRC校验

Ø 数据帧格式(均为1 6进制值)

41 03 32 …… 59 2B

41 ——设备地址65

03——功能码: 读保持寄存器

32——寄存器数据字节数 = 5025×2

中间为各寄存器数据

59 2B——CRC校验

Ø 在寄存器中, 高字节在前。

例如, 1 2345的长整型为00003039H, 我们的仪表会按顺序发出00H 00H 30H 39H, 而不是39H 30H00H 00H

Ø 在一些软件中, 将高字节在前的情况称之为

Long Inverse

Float Inverse

上一篇文章:NB-IOT/LoRa/Zigbee无线组网方案对比 下一篇文章:没有了
相关链接
发表评论
用户评论

银河产品

推荐产品

版权所有 山西银河娱乐网平台股份有限公司 晋ICP备09004627号    晋公网安备 14019202000008号