RS485通讯 modbus 协议

RS485通讯 modbus 协议


2024年5月18日发(作者:)

使用说明书 - 1 -

MODBUS通讯协议说明

一.通讯说明

控制器采用RS-485总线,协议符合ModBus RTU规约。

数据传输均采用8位数据位、1位停止位、无奇偶校验位。波特率可设为1200-9600 bit/s。

通讯传送分为独立的信息头,和发送的编码数据。以下的通讯传送方式定义与RTU通讯规约相

兼容:

编 码

起始位

数据位

奇偶校验位

停止位

错误校检

8位二进制

1位

8位

1位

CRC(冗余循环码)

初始结构 = >=4字节的时间

地址码 = 1 字节

功能码 = 1 字节

数据区 = N 字节

错误校检 = 16位CRC码

结束结构 = >=4字节的时间

地址码:地址码为通讯传送的第一个字节。这个字节表明由用户设定地址码的从机将接收由主机发送来的信息。

并且每个从机都有具有唯一的地址码,并且响应回送均以各自的地址码开始。主机发送的地址码表明将发送到的从机

地址,而从机发送的地址码表明回送的从机地址。

功能码:通讯传送的第二个字节。ModBus通讯规约定义功能号为1到127。本控制器利用其中的一部分功能

码。作为主机请求发送,通过功能码告诉从机执行什么动作。作为从机响应,从机发送的功能码与从主机发送来的功

能码一样,并表明从机已响应主机进行操作。如果从机发送的功能码的最高位 (比如功能码大于127),

则表明从机没有响应操作或发送出错。

数据区:数据区是根据不同的功能码而不同。

CRC码:二字节的错误检测码。

当通讯命令发送至仪器时,符合相应地址码的设备接通讯命令,并除去地址码,读取信息,如果没有出错,则执

行相应的任务;然后把执行结果返送给发送者。返送的信息中包括地址码、执行动作的功能码、执行动作后结果的数

据以及错误校验码。如果出错就不发送任何信息。

1.结构:

地址码 功能码

8位

数据区

N × 8or16位

校验码

16位

2.信息帧格式:

(1) 地址码:

8位

地址码是信息帧的第一字节(8位),从0到255。这个字节表明由用户设置地址的从机将接收由主机

发送来的信息。每个从机都必须有唯一的地址码,并且只有符合地址码的从机才能响应回送。当从机回

送信息时,相当的地址码表明该信息来自于何处。

(2) 功能码:

主机发送的功能码告诉从机执行什么任务。表2列出的功能码都有具体的含义及操作。

表1 功能码

代码

03

06

含义

读取数据

重置单一寄存器

操作

读取当前寄存器内一个或多个二进制值

把设置的二进制值写入单一寄存器

(3)数据区:

_

使用说明书 - 2 -

数据区包含需要从机执行什么动作或由从机采集的返送信息。这些信息可以是数值、参考地址等等。

例如,功能码告诉从机读取寄存器的值,则数据区必需包含要读取寄存器的起始地址及读取长度。对于

不同的从机,地址和数据信息都不相同。

(4) 错误校验码:

主机或从机可用校验码进行判别接收信息是否出错。有时,由于电子噪声或其它一些干扰,信息在

传输过程中会发生细微的变化,错误校验码保证了主机或从机对在传送过程中出错的信息不起作用。这

样增加了系统的安全和效率。错误校验采用CRC-16校验方法。CRC码低字节在前。

注:

信息帧的格式都基本相同:地址码、功能码、数据区和错误校验码。

3.错误校验

参与冗余循环码(CRC)计算的包括:地址码、功能码、数据区的字节。

冗余循环码包含2个字节,即16位二进制。CRC码由发送设备计算,放置于发送信息的尾部。接收信息

的设备再重新计算接收到信息的 CRC码,比较计算得到的CRC码是否与接收到的相符,如果两者不相符,

则表明出错。

CRC码的计算方法是,先预置16位寄存器全为1。再逐步把每8位数据信息进行处理。在进行CRC码

计算时只用8位数据位,起始位及停止位,如有奇偶校验位的话也包括奇偶校验位,都不参与CRC码计算。

在计算CRC码时,8位数据与寄存器的数据相异或,得到的结果向低位移一字节,用0填补最高位。再

检查最低位,如果最低位为1,把寄存器的内容与预置数相异或,如果最低位为0,不进行异或运算。

这个过程一直重复8次。第8次移位后,下一个8位再与现在寄存器的内容相异或,这个过程与以上一

样重复8次。当所有的数据信息处理完后,最后寄存器的内容即为CRC码值。

计算CRC码的步骤为:

(1).预置16位寄存器为十六进制FFFF(即全为1)。称此寄存器为CRC寄存器;

(2).把第一个8位数据与16位CRC寄存器的低位相异或,把结果放于CRC寄存器;

(3).把寄存器的内容右移一位(朝低位),用0填补最高位,检查最低位(注意:这时的最低位指移位前的

最低位,不是移位后的最低位);

(4).如果最低位为0:重复第3步(再次移位)

如果最低位为1:CRC寄存器与多项式A001(1010 0000 0000 0001)进行异或;

(5).重复步骤3和4,直到右移8次,这样整个8位数据全部进行了处理;

(6).重复步骤2到步骤5,进行下一个8位数据的处理;

(7).最后得到的CRC寄存器即为CRC码。

4. 功能码03,读取点和返回值:

利用通讯命令,可以进行读取点(“保持寄存器”) 或返回值(“输入寄存器” )。一次最

多可读取寄存器数是15。由于一些可编程控制器不用功能码03,所以功能码03被用作

读取点和返回值。

从机响应的命令格式是从机地址、功能码、数据区及CRC码。数据区的数据都是

每二个字节高位在前,CRC码低位在前高位在后。

信息帧格式举例:

使用说明书 - 3 -

从机地址为01,寄存器地址0001H表示

计数值地址

此例中

计数值

为:000001

主机发送 字节数 举例

从机地址 1 01 发送至从机01

功能码 1 03 读取寄存器

地址代码 2 00 起始地址为 0001

01

CRC码 2 30 由主机计算得到的CRC码

5C

从机响应 字节数 举例

从机地址 1 01 来自从机0

功能码 1 03 读取寄存器

地址代码 2 00 起始地址为 0001

01

读出数据数量 1 04 long型数据长4byte

计数值数据 4 00

00

00

01 计数值4byte

CRC码 2 04 由从机计算得到的CRC码

45

表2 功能码03读取的数据及地址

地址

0001

H

0002

H

0003

H

0004

H

读取out1设01 03 00 03 B1 01 03 00 03 04 00 00 00 64 B7 6D(out1设定值为

定值 D9 100)

读取预装值 01 03 00 02 70 19 01 03 00 02 04 00 00 00 64 B6 BC(预装值为100)

内容 代码示例

(主机发送)

代码示例(

从机响应)

读取计数值 01 03 00 01 30 18 01 03 00 01 04 00 00 00 03 F7 65(计数值为3)

读取计数启01 03 00 04 F0 1B 01 03 00 04 01 DA 84(01表示计数启动状态)

停状态

5. 功能码06,单点保存:

主机利用这条命令把单点数据保存到控制器的存储器。控制器也用这个功能码向主机返送信

息。

信息帧格式举例:

控制器地址为01,保存地址0002的1个值。在此例中,数据保存结束后,控制器中地址

为0008内的内容为02H。

使用说明书 - 4 -

主机发送 字节数 举例

从机地址 1 01 发送至从机01

功能码 1 06 单点保存

地址代码 2 00 起始地址为 0002

02

写入数据 04 00

00

00

64 保存的数据为64H

CRC码 2 9F 由主机计算得到的CRC码

EC

从机响应 字节数 举例

从机地址 1 01 来自从机01

功能码 1 06 单点保存

地址代码 2 00 起始地址为 0002

02

操作结果 1 00 数据设置成功

CRC码 2 18 由主机计算得到的CRC码

28

表5 功能码06保存的数据及地址表6 个别寄存器说明

地址

0002

H

0003

H

0004

H

000C

H

0011

H

0012

H

内容 代码示例

(主机发送)

代码示例(

从机响应)

01 06 00 02 00 18 28

01 06 00 03 00 19 B8

01 06 00 04 01 DA 48

01 06 00 0C 01 DD 88(清零成

功)

01 06 00 11 01 D4 D8(OUT1动

作完成)

01 06 00 12 01 D4 28(OUT2动

作完成)

设置预装值 01 06 00 02 00 00 00 00 9E 07(设

置预装值为0)

设置out1设01 06 00 03 00 00 00 00 A3 C7(设

定值 置out1设定值为0)

设置计数启01 06 00 04 01 DA 48(设置启动计

停状态 数)

计数器清零 01 06 00 0C 01 DD 88(写“1”清零)

OUT1控制 01 06 00 11 01 D4 D8(写“1”OUT1

动作)

OUT2控制 01 06 00 12 01 D4 28(写“1”OUT2

动作)

地址

0004H

000CH

0011H

内容

设置计数器启停

计数器清零

控制OUT1动作

说明

向寄存器写“1” 计数器启动,“2”计数器停止。

向寄存器写“1” 计数器清零。

向寄存器写“1” 继电器动作,写“2” 继电器复位。

6.数据错误返回值:

如果主机发出的数据错误,则控制器向主机回送错误信息,功能码的最高位为1,即控制器返

回给主机的功能码是在主机已送的功能码上加128。

从机返回的错误码的格式如下:

地址码:1字节

功能码:1字节(最高位为1)

错误码:1字节

CRC码:1字节


发布者:admin,转转请注明出处:http://www.yc00.com/news/1716028911a2709001.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信