控制器与组态王通讯——报文基本格式_信息与通信_工程
控制器与组态王通讯——报文基本格式 单片机与组态王采用ModbusTcp
进行以太网通讯
组态王设置任意COM口,通讯波特率为9600,无校验,数据位8位,停止位1位。 新建设备时选择PLC—莫迪康—Modbus TCP模式,设备地址设置为单片机IP地址格式如下:192.168.0.174:502 1或192.168.0.174 1
经调试助手测试,组态王采用ModbusTcp通讯时,发出的报文如下: 00 00 00 00 00 06 01 01 00 02 01 97 经
1、数据包格式
1.1 数据包格式(共12个字节组成):
&H00,&H00,&H00, &H00, &H00,&H06,设备号,指令码,地址码,长度码 解析注释:
前面四个字节&H00,&H00,&H00, &H00为帧头,即开始符(报头码)。
&H00
&H06:表示请求指令码;
设备号:即目标站号,欲传送的目的地址,也即需要选定与哪一个单片机(控制器)通讯;
指令码:即功能码,向单片机(控制器)发送的指令;
地址码:要读写数据段的起始地址,寄存器地址高位和低位,两个字节;
&H00,&H02:起始地址为2;
长度码:需要读写数据段的字个数,两个字节;&H01,&H97:个数为407。
1.2 下位机回应帧格式:
00 00 00 00 00 05 01 01 00 02 01 97
&H00,&H00,&H00, &H00, &H00,&H05,设备号,指令码,数据字节数,数据1,数据2.。。。。 解析注释:
前面四个字节&H00,&H00,&H00, &H00为帧头,即开始符(报头码)。
&H00
&H05:表示应答指令码;
设备号:即目标站号,欲传送的目的地址,也即需要选定与哪一个单片机(控制器)通讯; 指令码:即功能码,向单片机(控制器)发送的指令;
数据字节数:要返回给上位机的数据个数*2;
数据高低位数值:具体返回的数据值,数据1,数据2,数据3 ((((。
用调试助手向单片机发送一个数据包,单片机接收后对数据解析,再回传指定的数据。
2、 Modbus RTU报文基本格式
2.1 MODBUS指令说明
下面对于各请求命令的“应答格式”的描述是指命令被正确执行时的应答格式。若CPU接收到错误的命令或者命令被执行错误,则返回的应答帧中“功能码”部分变为如下数据,即:功能码的最高位置1后得到的数据。比如功能码为01,若响应错误,则返回的功能码为&H81。
2.1.1 功能码01:读线圈(开关量输出)
请求格式:
目标站号 功能码 起始地址 起始地址 读取个数 读取个数 CRC
高字节 低字节 高字节 低字节
1字节 1 1字节 1字节 1字节 1字节 2字节
正确应答格式: 站号 功能码 返回数据返回数据返回数据CRC …
字节数 字节1 字节2
1字节 1 1字节 1字节 1字节 2字节 …
注:读取值, &HFFFF,则该组线圈全为ON;读取值,&H0000,则该组线圈全为OFF。每一个Bit位代
表一个线圈,一组线圈代表16个Bit位。读取个数以需要读取的字节数表示,读取个数为1时,返回
数据字节数为2,代表16个线圈状态;读取个数为2时,返回数据字节数为4,代表32个线圈状态。
2.1.2 功能码02:读输入状态(开关量输入)
请求格式:
起始地址 起始地址 读取个数 读取个数 目标站号 功能码 高字节 低字节 高字节 低字节 CRC 1字节 2 1字节 1字节 1字节 1字节 2字节
正确应答格式:
站号 功能码 返回数据返回数据返回数据„ CRC
字节数 字节1 字节2
1字节 2 1字节 1字节 1字节 „ 2字节 注:读取值, &HFFFF,则该组输入全为ON;读取值,&H0000,则该组输入全为OFF。每一个Bit位代
表一个输入,一组输入代表16个Bit位。读取个数以需要读取的字节数表示,读取个数为1时,返回
数据字节数为2,代表16个输入状态;读取个数为2时,返回数据字节数为4,代表32个输入状态。
2.1.3 功能码03:读保持寄存器(模拟量输出)
请求格式:
起始地址 起始地址 读取个数 读取个数 目标站号 功能码 高字节 低字节 高字节 低字节 CRC 1字节 3 1字节 1字节 1字节 1字节 2字节
正确应答格式:
站号 功能码 返回数据寄存器1 寄存器1 „ CRC
字节数 高字节 低字节
1字节 3 1字节 1字节 1字节 „ 2字节
2.1.4 功能码04:读输入寄存器(模拟量输入)
请求格式:
起始地址 起始地址 读取个数 读取个数 目标站号 功能码 高字节 低字节 高字节 低字节 CRC 1字节 4 1字节 1字节 1字节 1字节 2字节
正确应答格式:
站号 功能码 返回数据寄存器1 寄存器1 „ CRC
字节数 高字节 低字节
1字节 4 1字节 1字节 1字节 „ 2字节
2.1.5 功能码05:写线圈(开关量输出)
请求格式:
线圈地址 线圈地址 强制值 强制值 目标站号 功能码 高字节 低字节 高字节 低字节 CRC校验码 1字节 5 1字节 1字节 1字节 1字节 2字节 注:强制值, &HFFFF,则置该组线圈全为ON;强制值,&H0000,则置该组线圈全为OFF。
每一个Bit位代表一个线圈,一组线圈代表16个Bit位,强制值以两个字节表示。
应答格式:
若设置成功,原文返回
2.1.6 功能码06:写单保持寄存器(模拟量输出)
请求格式:
寄存器地址 寄存器地址 强制值 强制值 目标站号 功能码 高字节 低字节 高字节 低字节 CRC校验码 1字节 6 1字节 1字节 1字节 1字节 2字节
应答格式:
若设置成功,原文返回