收藏本站 网站地图
 
 
  产品分类
· 进口电动执行机构配件
· 国产电动执行机构配件
· 智能一体化电动调节阀
· 电动快速切断阀
· 电动风门圆阀百叶阀
· 手动阀门改电动阀门
· 智能一体化电动蝶阀
· 智能一体化电动球阀
· 智能一体化电动闸阀
· 智能一体化电动截止阀
· 智能一体化电动水利闸门
· 各品牌智能电动执行机构维护保养
 
  产品搜索
请输入关键词:
 
 
产品展示  
''

电动执行机构MODBUS-RTU通讯协议

发布日期:2021-03-01 13:23:21

MODBUS-RTU通讯协议

 

一、 ModBus_RTU通讯规约本协议采用主从问答方式

1. 通讯数据的类型及格式:

信息传输为异步方式,并以字节为单位。主站和从站之间传递的通讯信息为

11位字格式:(1位起始位,8位数据位,1位停止位,无奇偶校验)。

主机发给从机的一条完整信息帧由如下字节组成

 

数据格式

地址码

功能码

数据区

CRC校检码16

数据长度

1字节

1字节

N字节

2字节

 

从机发给主机的一条完整信息帧只包含有效字节,通讯数据(信息帧)格式

数据格式

地址码

功能码

数据区

CRC校检码16

数据长度

1字节

1字节

N字节

2字节

 

地址码:

    地址码是每次通讯信息帧的第一字节(8位),从01H到FFH。每个从机都必须有唯一的地址码。所有地址的从机都将接收由主机发送来的信息,只有符合地址码的从机才响应要求,回送信息。当从机回送信息时,回送数据均以各自的地址码开始。主机发送的地址码表明将发送到的从机地址,而从机返回的地址码表明回送的从机地址。

功能码:

    是每次通讯信息帧传送的第二个字节。ModBus通讯规约可定义的功能码为0到127。FH控制器仅用到其中的一部分功能码。作为主机请求发送,通过功能码告诉从机应执行什么动作。作为响应,从机返回的功能码与从主机发送来的功能码一样,并表明从机已响应主机并且已进行相关的操作。

数据区:

数据区包括需要由主机发送、从机回送何种信息或执行什么动作。这些信息可以是数据(如:开关量、模拟量、寄存器参数等等)、参考地址等。例如,主机通过功能码03告诉从机返回单路或多路工况数据寄存器的值或单路或多路控制/报警设置数据寄存器的值(包含要读取寄存器的起始地址及读取寄存器的长度等),则返回的数据包括寄存器的数据长度及数据内容。对于不同的从机,地址和数据信息都不相同(见通讯信息表)。

FH控制器采用Modbus通讯规约,主机(PLC、RTU、PC机、DCS等)利用通讯命令(功能码03),可以进任意行读取其数据寄存器(其数据信息表详见附录)。FH控制器的数据寄存器存储多种工况数据(如:温度、压力、流量、电流、电压、功率及控制/报警数据等),开关量以bit位为单元的二进制数组成(既8 bit1个字节)多字节数据;模拟量、寄存器参数都是16位(2字节)的二进制数据(整型),低字节在前,高字节在后

工况数据转换方法:仪表回送的工况数据都是整数,上位机如果转换为实型,可以除十处理,如果转换成字符串型,可以直接将小数点插入在十位。

如1:工况温度值=60.0,小数点在十位

仪表回送数据=60010 =25816 = 00000010010110002

FH控制器响应的命令格式是从机地址、功能码、数据区及CRC码。数据区的数据为多字节开关量数据或模拟量数据。

                                                                                                                                                                                                                    

★ 注:1、1个字节由8位二进制数组成(既8 bit)。

     2、ModBus是Modicon公司的注册商标。

     3、“从机”在本文件中既为本控制器。

4、每次查询从机数据,数据区数据最多只能13个字(26个字节)

2. 通讯信息传输过程:

当通讯命令由发送设备(主机)发送至接收设备(从机)时,在CRC校验无误情况下,从机地址与地址码相符的从机接收通讯命令(从机以本机的地址码和功能码2个字节作为同步字),并根据功能码及相关要求处理信息,执行相应的任务,然后把执行结果(数据)返送给主机。返回的信息中包括地址码、功能码、执行后的数据以及CRC校验码。如果CRC校验出错则不响应信息

3. FH控制器使用的MODBUS功能码(10进制

功能码

定  义

操  作(二进制)

03

读寄存器数据

读取单路或多路工况数据;单路或多路控制/报警设置数据

06

写单个寄存器(状态量)

写单个功能寄存器

16

写多个寄存器

写多个功能寄存器或参数值到eeprom

1) 功能码03:读从机工况数据

例如:主机要读取地址为01,起始地址为从0x268h从机工况数据,8种16进制数据。

从机(FH)数据寄存器的地址和数据为:

寄存器地址

寄存器数据(16进制)

0x268

1784H

0x26a

0000H

0x26c

178AH

0x26e

178AH

0x270

178AH

0x272

178AH

0x274

178AH

0x276

178AH

主机发送的报文格式:

主机发送

字节数

发送的信息

举例说明

从机地址

1

01H    

发送至地址为01的从机

功能码

1

03H    

读取工况数据

起始地址

2

0268H  

起始地址为0x268

数据路数

2

0008H  

读取8种工况数据

CRC码

2

XXXXH

由主机计算得到CRC码

从机(FH)响应返回的报文格式:

从机响应

字节数

返回的信息

举例说明

从机地址

1

01H   

来自从机01

功能码

1

03H    

读取工况数据

    字节数

1

0eH

后面跟随数据的字节数

第1种工况数据

2

1784H

系统工作状态

第2种工况数据

2

0000H

阀门开度给定

第3种工况数据

2

178AH  

阀门开度值

第4种工况数据

2

178AH  

模块温度

第5种工况数据

2

178AH  

母线电压

第6种工况数据

2

178AH  

电机速度

第7种工况数据

2

178AH  

电机电流值

第8种工况数据

2

178AH  

系统异常状态量

CRC码

2

XXXXH  

由从机计算得到CRC码

2) 功能码03:读从机参数值

例如:主机要读取地址为01,起始地址为从0x200h的从机参数值,13个16进制数据。

从机(FH)数据寄存器的地址和数据为:

寄存器地址

寄存器数据(16进制)

0x200

1784H

0x202

0000H

0x204

 

 

 

0x236

 

0x238

178AH

主机发送的报文格式:

主机发送

字节数

发送的信息

举例说明

从机地址

1

01H    

发送至地址为01的从机

功能码

1

03H    

读取参数值

起始地址

2

0200H  

起始地址为0x200

数据路数

2

000DH  

读取13个参数值

CRC码

2

XXXXH

由主机计算得到CRC码

从机(FH)响应返回的报文格式:

从机响应

字节数

返回的信息

举例说明

从机地址

1

01H   

来自从机01

功能码

1

03H    

读取工况数据

    字节数

1

1AH

26个字节

第1个参数值

2

1784H

 

第2个参数值

2

0000H

 

第3个参数值

2

178AH 

 

第4个参数值

2

178AH 

 

 

 

 

 

第13个参数值

2

178AH 

 

CRC码

2

XXXXH 

由从机计算得到CRC码

 

注:1、控制器共有42个工作参数,详细见附录2

2、所有参数须分四次传完(13*3+3)

3) 功能码06:写单个寄存器

主机利用这个功能码把数据保存到控制器的数据存储器中去(寄存器)。例如:主机要把0016H保存到从机0x0200寄存器中去(从机地址码为01)。通讯数据保存结束后,从机内0x0200寄存器为0001H:

主机发送数据地址和数据为:

寄存器地址 

数据

0x234 

01

主机发送的报文格式:

主机发送

字节数

发送的信息

举例说明

从机地址

1

01H 

发送至从机01

功能码

1

06H

写单路寄存器

数据地址

2

0x0200

第1项参数

保存数据

2

0x0001H

 

CRC码

2

XXXXH

由主机计算得到的CRC码

从机(FH)响应返回的报文格式:

主机发送

字节数

返回的信息

举例说明

从机地址

1

01H

发送至从机01

功能码

1

06H

写多路寄存器

数据地址

2

0x0200

第1项参数

保存数据

2

0001H

 

CRC码

2

XXXXH 

由主机计算得到的CRC码

4) 功能码16:写多个数据

主机利用这个功能码把多个数据保存到从机的数据存储器中去(寄存器)。例如:主机要把04B0H,保存到从机第1项参数中去;1388H保存到从机第2项参数中去(从机地址码为01)。通讯数据保存结束后,从机内 第1项参数为04B0H;、第2项参数为1388H:(参数首地址0X200H)

主机发送数据地址和数据为:

地址 

数据

0x200h

04B0H

0x202h

1388H

主机发送的报文格式:

主机发送

字节数

发送的信息

举例说明

从机地址

1

01H

发送至从机01

功能码

1

10H

写多路寄存器

起始地址

2

0x200H

第1项参数地址

数据数

2

0002H

共2项参数数据

保存数据1

2

04B0H

 

保存数据2

2

1388H

 

CRC码

2

XXXXH

由主机计算得到的CRC码

从机(FH)响应返回的报文格式:

主机发送

字节数

返回的信息

举例说明

从机地址

1

01H

发送至从机01

功能码

1

10H

写多路寄存器

起始地址

2

0x200H

第1项参数地址

数据数

2

0002H

共2项参数数据

CRC码

2

XXXXH

由主机计算得到的CRC码

 

4. 错误校验码(CRC校验)

主机或从机可用校验码进行判别接收信息是否正确。由于电子噪声或一些其它干扰,信息在传输过程中有时会发生错误,错误校验码(CRC)可以检验主机或从机在通讯数据传送过程中的信息是否有误,错误的数据可以放弃(无论是发送还是接收),这样增加了系统的安全和效率。

MODBUS通讯协议的CRC(冗余循环码)包含2个字节,即16位二进制数。CRC码由发送设备(主机)计算,放置于发送信息帧的尾部。接收信息的设备(从机)再重新计算接收到信息的CRC,比较计算得到的CRC是否与接收到的相符,如果两者不相符,则表明出错。

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

CRC码的计算方法 

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

2.把第一个8位二进制数据(既通讯信息帧的第一个字节)与16位的CRC 寄存器的低8位相异或,把结果放于CRC寄存器;

3.把CRC寄存器的内容右移一位(朝低位)用0填补最高位,并检查最低位(LSB位被提取出来检测);

如果最低位为1:移位后 CRC寄存器与多项式A001(1010 0000 0000 0001)进行异或;如果最低位为0:不作处理;

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

5.重复步骤2到步骤5,进行通讯信息帧下一个字节的处理;

6.最后得到的CRC寄存器内容即为:CRC码。

注:报文中的CRC码低八位在前,高八位在后。

5. 通讯错误信息及数据的处理:

    当从机发现除了CRC码出错以外的错误时,必须向主机回送信息,并将接收到的功能码的最高位置为1,即从机返送给主机的功能码是在主机发送的功能码的基础上加128 。以下的这些代码表明有意外的错误发生。

    从机接收到的信息如有CRC错误,则将被从机忽略。

    从机返送的错误码的格式如下(CRC码除外):

        地址码: 1字节

        功能码: 1字节(最高位为1,例:03H功能码变为83H)

        错误码: 1字节

        CRC码:2字节。

     从机响应回送如下错误码:

      81:非法的数据位置。

          指定的数据位置超出从机的范围。

      82:非法的数据值。

          接收到主机发送的数据值超出从机相应地址的数据范围。

附录1:FH控制器MODBUS通讯规约信息表

工况数据

长度

名称

地址

含义

备注

U16

State

0x268

系统当前工作状态

 

U16

Angle_give

0x26a

阀门开度给定

 

U16

Angle_data

0x26c

阀门开度值

 

U16

I_motor

0x26e 0x274

电机电流值

 

U16

 

0x270

备用1

 

U16

 

0x272

备用2

 

U16

Sys_state     

0x274

系统异常信息

 

U16      

 

0x276

备用3

 


 

附录2:从机参数说明

见“参数说明.xls”文档

 

附录3:控制指令说明

1) 开阀运行:

向从机0268H 地址单元写入  0003H

2) 关阀运行:

向从机0268H 地址单元写入  0004H

3) 停止:

向从机0268H 地址单元写入  0002H

4) 远控模拟量控制:

向从机0268H 地址单元写入  0001H

5) 阀门开度给定值:

向从机026AH 地址单元写入  XXXXH

 

附录4:工况数据数值说明

1) 工况数据中第一个字表示系统工作状态,数值含义如下:

  0             全停状态

1             自动状态

2             就地状态

 3             关阀状态

4             开阀状态

 

2) 工况数据中第二~六个字表示相应工况数值,含一位小数,即数值除十显示

3) 工况数据中第七个字表示系统异常状态,数值每一位的含义如下:

 0 位           开机械过力矩

1 位           关机械过力矩

2 位           开堵转

 3 位           关堵转

 4 位           开过流

 5 位           关过流

 6 位           参数异常

 7 位           缺相

8 位           断信号

9 位           备用

10位           电机过热

 

附录五:常用通讯字符串(16进制)

工况数据读取

06 03 02 68 00 09 04 1f

初级参数读取1

06 03 40 00 00 0d 90 78

初级参数读取2

06 03 40 1a 00 0d b1 bf

二级参数读取1

06 03 40 30 00 0d 90 77

二级参数读取2

06 03 40 4a 00 0d b1 ae

参数查看读取1

06 03 40 70 00 0d 91 a3

参数查看读取2

06 03 40 8a 00 0d b1 92

高级参数读取1

06 03 40 a0 00 0d 90 5a

高级参数读取2

06 03 40 ba 00 0d b1 9d

远程控制命令—模拟量控制

06 06 02 68 00 01 c9 d9

远程控制命令—停止

06 06 02 68 00 02 89 d8

远程控制命令—开阀

06 06 02 68 00 03 48 18

远程控制命令—关阀

06 06 02 68 00 04 09 da

远程控制命令—给定开度值

06 06 02 6a 00 02 28 18

远程控制命令—模拟量控制及给定开度值

06 10 02 68 00 02 00 01 01 f4 1d d0

 

 

 

备注:

FH控制器增加通讯控制参数选项:

二级菜单---》远控控制方式---》总线型---》通讯控制

设置为“有效”时,开关型状态下远程控制由PLC控制开阀、关阀、停止,外接端子上的相应节点无效,调节型状态下远程控制由PLC直接通过06或16命令给定开度值,外接端子上的4~20Ma输入节点信号无效。

设置为“无效”时,开关型或调节型状态下远程控制均由外接端子上的相应节点起作用, PLC控制开关阀命令无效,但仍可进行常规工况数据读取。