下载此文档

ModbusRTU通用规约说明、模板及规约配置.pdf


文档分类:IT计算机 | 页数:约23页 举报非法文档有奖
1/23
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/23 下载此文档
文档列表 文档介绍
该【ModbusRTU通用规约说明、模板及规约配置 】是由【小辰GG】上传分享,文档一共【23】页,该文档可以免费在线阅读,需要了解更多关于【ModbusRTU通用规约说明、模板及规约配置 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。:.
ModbusRTU通用规约说明、模板及规约配置
说明文档
一、ModbusRTU通用规约说明

Modbus协议最初由Modicon公司开发出来,在1979年末该公司成为施耐德自动化
(SchneiderAutomation)部门的一部分,现在Modbus已经是工业领域全球最流行的协
议。此协议支持传统的串口链路RS-232、RS-422、RS-485和以太网设备。许多工业设
备包括PLC,DCS,智能仪表等都在使用Modbus协议作为他们之间的通讯标准。
Modbus协议包括ASCII、RTU、TCP等,并没有规定物理层。此协议定义了控制器能
够认识和使用的报文结构,而不管它们是经过何种网络进行通信的。标准的Modicon控
制器使用RS232C实现串行的Modbus。Modbus的ASCII、RTU协议规定了报文、数据的
结构、询问和应答的方式,数据通讯采用主/从方式,主站发出数据请求报文,从站接
收到正确报文后就可以发送数据到主站端以响应请求;主站也可以直接发报文修改从站
的数据,实现双向读写。

Modbus协议需要对数据进行校验,串行协议中除有奇偶校验外,ASCII模式采用LRC
校验,RTU模式采用16位CRC校验,但TCP模式没有额外规定校验,因为TCP协议是一
个面向连接的可靠协议。另外,Modbus采用主从问答方式收发数据,在实际使用中如果
某从站站点断开后(如故障或失电),主站可以诊断出来,而当故障修复后,网络又可
自动接通。因此Modbus协议的可靠性较好。
Modbus协议在串行链路中RTU模式使用的最多,通用性很强,所以在这里仅介绍一
下ModbusRTU协议即Modbus通用规约。
下表是ModbusRtu支持的功能码:
功能码名称作用
01读取线圈状态取得一组逻辑线圈的当前状态(ON/OFF)
02读取输入状态取得一组开关输入的当前状态(ON/OFF)
:.
03读取保持寄存器在一个或多个保持寄存器中取得当前的二进制值
04读取输入寄存器在一个或多个输入寄存器中取得当前的二进制值
05强置单线圈强置一个逻辑线圈的通断状态
06预置单寄存器把具体二进值装入一个保持寄存器
取得8个内部线圈的通断状态,这8个线圈的地址
07读取异常状态
由控制器决定
08回送诊断校验把诊断校验报文送从机,以对通信处理进行评鉴
09编程(只用于484)使主机模拟编程器作用,修改PC从机逻辑
可使主机与一台正在执行长程序任务从机通信,探
10控询(只用于484)询该从机是否已完成其操作任务,仅在含有功能码9
的报文发送后,本功能码才发送
可使主机发出单询问,并随即判定操作是否成功,
11读取事件计数
尤其是该命令或其他应答产生通信错误时
可是主机检索每台从机的ModBus事务处理通信事件
12读取通信事件记录记录。如果某项事务处理完成,记录会给出有关错

13编程(184/384484584)可使主机模拟编程器功能修改PC从机逻辑
可使主机与正在执行任务的从机通信,定期控询该
14探询(184/384484584)从机是否已完成其程序操作,仅在含有功能13的报
文发送后,本功能码才得发送
15强置多线圈强置一串连续逻辑线圈的通断
16预置多寄存器把具体的二进制值装入一串连续的保持寄存器
:.
可使主机判断编址从机的类型及该从机运行指示灯
17报告从机标识
的状态
18(884和MICRO84)可使主机模拟编程功能,修改PC状态逻辑
发生非可修改错误后,是从机复位于已知状态,可
19重置通信链路
重置顺序字节
20读取通用参数(584L)显示扩展存储器文件中的数据信息
21写入通用参数(584L)把通用参数写入扩展存储文件,或修改之
22~64保留作扩展功能备用
65~72保留以备用户功能所用留作用户功能的扩展编码
73~119非法功能
120~
保留留作内部作用
127
128~
保留用于异常应答
255
在这些功能码中较常使用的是1、2、3、4、5、6号功能码,使用它们即可实现对下
位机的数字量和模拟量的读写操作。

(线圈状态):01功能码
上位机发送报文:
[设备地址][功能码][起始寄存器地址高8位][低8位][读取的寄存器数高8位][低8位][CRC校验
的低8位][高8位]
定义设备地址功能码寄存器起始地址读取数据长度CRC校验
:.
数据11H01H0013H0025HCRC16
字节数11222
报文示例:1101001300250E84
报文解析:
[11]设备地址:在一个485总线上可以挂接多个设备,此处的设备地址表示与问询
的设备通讯。示例中为想和地址为17的(十进制的17是十六进制的11H)设备通讯。
[01]功能码:读取数字量的功能码为01。
[0013]起始寄存器地址高8位、低8位:表示想读取的开关量的寄存器起始地址。
比如示例中的起始地址为19。
[0025]寄存器数高8位、低8位:表示从起始地址开始读多少个开关量。示例中为
37个开关量。
[0E84]CRC校验:是从开头一直校验到此之前。此处需要注意,CRC校验在命令中
的高低字节的顺序和其他的相反。
下位机应答报文:
[设备地址][功能码01][返回的字节个数][数据1][数据2]...[数据n][CRC校验的低8位][高8位]
定义设备地址功能码数据字节数返回数据CRC校验
数据11H01H05HDATACRC16
字节数11152
报文示例:110105CD6BB20E1B45E6
报文解析:
[11]设备地址:和上面相同。
[01]功能码:和上面相同
[05]返回的字节个数:表示数据的字节个数,也就是数据1,2...n中的n的值。这
里表示数据部分为5个字节。
:.
[CD6BB20E1B]数据1...5:由于每一个数据是一个8位的数,所以每一个数据
表示8个开关量的值,每一位为0表示对应的开关断开,为1表示闭合。比如示例中,
CD6BB20E1B数据转换成二进制即为:
11001101011010111011001000001**********
27…192028无意义的高位部分置0
表示序号20(寄存器地址为19)开关闭合,21号断开,22闭合,23闭合,24断开,
25断开,26闭合,27闭合...如果询问的开关量不是8的整倍数,那么最后一个字节的
高位部分无意义,置为0。
[45E6]CRC校验同上。
(输入状态):02功能码
和读取线圈状态类似,只是第二个字节的功能码不再是01H而是02H。
(线圈状态):05功能码
上位机发送报文:
[设备地址][功能码05][需下置的寄存器地址高8位][低8位][下置的数据高8位][低8位][CRC校
验的低8位][高8位]
定义设备地址功能码置位寄存器地址下置数据CRC校验
数据11H05H00ACFF00CRC16
字节数11222
报文示例:110500ACFF004E8B
报文解析:
[11]设备地址和上面的相同。
[05]功能码:写数字量的功能码号为05。
[00AC]需下置的寄存器地址高8位,低8位:表明了需要置位的开关的地址。
:.
[FF00]下置的数据高8位,低8位:表明需要下置的开关量的状态。示例中为把该
开关闭合。注意,此处置位命令只可以是[FF00]表示闭合,[0000]表示断开,其他数
值非法。
[4E8B]CRC校验同上。
注意:此命令一条只能下置一个开关量的状态。
下位机应答报文:
报文示例:110500ACFF004E8B
报文解析:同上。
如果下位机执行成功,则把上位机发送的报文原样返回,否则不响应。
(保持寄存器):03功能码
上位机发送报文:
[设备地址][功能码03][起始寄存器地址高8位][低8位][读取的寄存器数高8位][低8位][CRC校
验的低8位][高8位]
定义设备地址功能码寄存器起始地址读取数据长度CRC校验
数据11H03H006B0003CRC16
字节数11222
报文示例:1103006B00037687
报文解析:
[11]设备地址和上面的相同。
[03]功能码:读取模拟量的功能码为03。
[006B]起始寄存器地址高8位、低8位:表示想读取的模拟量的起始地址,比如示
例中的寄存器起始地址为107。
[0003]寄存器数高8位、低8位:表示从起始地址开始读多少个模拟量。示例中为
读取3个模拟量。注意:在返回的信息中一个模拟量需要返回两个字节。
:.
[7687]CRC校验同上。
下位机应答报文:
[设备地址][功能码03][返回的字节个数][数据1][数据2]...[数据n][CRC校验的低8位][高8位]
定义设备地址功能码数据字节数返回数据CRC校验
数据11H03H06HDATACRC16
字节数11162
报文示例:110306022B00000064C8BA
报文解析:
[11]设备地址:和上面相同。
[03]功能码:和上面相同
[06]返回的字节个数:表示数据的字节个数,也就是数据1,2...n中的n的值。例
子中返回了3个模拟量的数据,因为一个模拟量需要2个字节所以共6个字节。
[022B00000064]数据1...6:其中[数据1][数据2]分别是第1个模拟量的高8
位和低8位,[数据3][数据4]是第2个模拟量的高8位和低8位,以此类推。示例中
返回的值分别是555,0,100。注意:在实际使用中,不同厂家规约可能会做改动,比
如说对模拟量的处理是低字节在前,高字节在后,数据格式可分为有符号整型和无符号
整型,有符号整型的又分为补码和绝对值两种方式等等,这是在实际分析报文需要注意
的地方。
[C8BA]CRC校验同上。
(输入寄存器):04功能码
和读取保持寄存器类似,只是第二个字节的功能码不再是03H而是04H。
(保持寄存器):06功能码
上位机发送报文:
:.
[设备地址][命令号06][需下置的寄存器地址高8位][低8位][下置的数据高8位][低8位][CRC
校验的低8位][高8位]
定义设备地址功能码置位寄存器地址下置数据CRC校验
数据11H06H00010003CRC16
字节数11222
报文示例:1106000100039A9B
报文解析:
[11]设备地址和上面的相同。
[06]功能码:写数字量的功能码号为05。
[0001]需下置的寄存器地址高8位,低8位:表明了需要下置的模拟量寄存器的地
址。比如示例中就是对地址为1的寄存器进行置数。
[0003]下置的数据高8位,低8位:表明需要下置的模拟量数据。比如示例中就把
1号寄存器的值设为3。
[9A9B]CRC校验同上。
注意:此命令一条只能下置一个模拟量的状态。
下位机应答报文:
报文示例:1106000100039A9B
报文解析:同上。
如果下位机执行成功,则把上位机发送的报文原样返回,否则不响应。
二、MODBUS模板规约配置
在工程现场我们经常遇到第三方设备需要进行通信,如果是特殊规约,那就需要
工自研究所专门做规约与模板。如果是标准通信规约比如说CDT-91,MODBUS-RTU,103
规约等,我们就可以根据厂家要到的规约与点表,自行配置模板进行通信。这里基于
TDC9628通信工作站来主要讲述下常见的ModbusRTU通用规约的模板配置。
:.
这里以某公司直流屏监控模块ZJK-5Modbus协议为例来说明如何制作Modbus模
板。
下面是该直流屏MODBUS规约与点表。
ZJK-5MODBUS通讯规约(部分截取)
采用RS232/RS485,1位起始位8位数据位,无校验,1位停止位,波特率9600。
1、遥测量1
命令格式:
定义地址功能码STARADDR数据长度CRC校验
数据ADDR03H0000H0016HCRC16
字节数11222
注释:
▲ADDR为直流电源屏通讯地址,可设定(1-10);
▲数据长度为返回的数据长度,该长度不可变;
▲CRC16是从第一个字节到最后一个字节进行CRC16校验;
▲CRC16发送次序为低位在前,高位在后
返回格式:
定义地址功能码长度返回数据CRC校验
数据ADDR03H2CHDATACRC16
字节数111442
DATA数据定义:(44bytes)
字节号名称格式系数单位
01---021#交流A相电压Hi-Lo1V
03---041#交流B相电压Hi-Lo1V
05---061#交流C相电压Hi-Lo1V
07---082#交流A相电压Hi-Lo1V
09---102#交流B相电压Hi-Lo1V
11---122交流C相电压Hi-Lo1V
13---14模块输出电压Hi-
15---16一组电池电压Hi-
17---18一段控母电压Hi-
19---20二组电池电压Hi-
21---22二段控母电压Hi-
23---24模块输出电流Hi-
25---26一组电池电流Hi-
27---28一段控母电流Hi-
29---30二组电池电流Hi-
31---32二段控母电流Hi-
33---34一段正母线对地电阻Hi-
35---36一段负母线对地电阻Hi-
:.
37---38二段正母线对地电阻Hi-
39---40二段负母线对地电阻Hi-
41---42备用
43---44备用
数据类型:带符号定点数,以原码表示.(BIT15=0表示正数,BIT15=1表示负数)
2、遥测量2
命令格式:
定义地址功能码STARADDR数据长度CRC校验
数据ADDR04H0100H0015HCRC16
字节数11222
返回:
定义地址功能码长度返回数据CRC校验
数据ADDR04H2AHDATACRC16
字节数111422
DATA数据定义:
字节号名称格式系数单位
01---02一组电池温度THi-℃
03---04备用Hi-Lo
05---06一组01节电压Hi-
07---08一组02节电压Hi-
09---10一组03节电压Hi-
11---12一组04节电压Hi-
13---14一组05节电压Hi-
15---16一组06节电压Hi-
17---18一组07节电压Hi-
19---20一组08节电压Hi-
21---22一组09节电压Hi-
23---24一组10节电压Hi-
25---26一组11节电压Hi-
27---28一组12节电压Hi-
29---30一组13节电压Hi-
31---32一组14节电压Hi-
33---34一组15节电压Hi-
35---36一组16节电压Hi-
37---38一组17节电压Hi-
39---40一组18节电压Hi-
41---42一组19节电压Hi-
数据类型:带符号定点数,以原码表示.(BIT15=0表示正数,BIT15=1表示负数)
:.
3、遥信量
命令格式:
定义地址功能码STARADDR长度CRC校验
数据ADDR02H0200H0040HCRC16
字节数11222
返回:
定义地址功能码长度返回数据CRC校验
数据ADDR02H08HDATACRC16
字节数11182
数据定义:(8Bytes)
字报字报
位号内容位号内容
节警节警
Bit01#交流电源故障YBIT01组单只电池欠压Y
Bit12#交流电源故障YBIT12组电池过压Y
Bit2蓄电池充电/放电NBIT22组电池欠压Y
Bit3模块运行状态浮充/均充NBIT32组单只电池过压Y
12
Bit4避雷器故障YBIT42组单只电池欠压Y
Bit51组电池过压YBIT5一段控母过压Y
Bit61组电池欠压YBIT6一段控母欠压Y
Bit71组单只电池过压YBIT7二段控母过压Y
BIT0二段控母欠压YBIT01#电池监测仪通讯中断Y
BIT1一段母线绝缘降低YBIT12#电池监测仪通讯中断Y
BIT2二段母线绝缘降低YBIT23#电池监测仪通讯中断Y
BIT3一组电池熔断器断YBIT34#电池监测仪通讯中断Y
34
BIT4二组电池熔断器断YBIT45#电池监测仪通讯中断Y
BIT5模块通讯中断YBIT5数据采集模块通讯中断Y
BIT6直流输出开关跳闸YBIT6绝缘选线装置通讯中断Y
BIT7模块故障YBIT7交流采集模块通讯中断Y
注释:
▲在画有“/”的位置表示该位为预留位,系统发送时该位置0;
▲在标有“Y”的位置表示该位为告警信息;
▲数据位为1时表示该位信息发生;
▲在标有“N”的位置表示该位为非告警信息,0表示前一状态,1表示后一状态。
这里只部分截取了该直流屏的部分规约说明与重要遥测遥信等点表。

打开该工程的TDC9628工程→模板管理→增加→增加模板
:.
图1新增模板
图2模板定义

模板名称——ZJK-5直流屏(名称可以自行定义)
模板类型——实际设备(需选择)
增加遥测量:
项目名称——遥测量(需自行填写)
:.
项目类型——遥测数据(需选择)
数据数量——由该直流屏规约中遥测量1和2中可看出需定义43个(16H+15H),
在实际现场应用中,我们只需要把重要的直流屏信息上送,并不是需
要有多少遥测就做多少。这里为了说明,把遥测量1、2全部做进模
板中。
数据宽度——16
数据类型——自定义
完善上述信息后,点击加入,此时就增加了遥测量的信息,如下图3。
图3增加遥测量后的模板
增加遥信量:
项目名称——遥信量(需自行填写)
项目类型——遥信数据(需选择)
数据数量——由该直流屏规约中遥信数据长度为40H,即64个。在实际现场应用中,
我们只需要把重要的直流屏信息上送,并不是需要有多少遥信就做多
少。这里为了说明,只做了前4个字节即32个遥信量。
数据宽度——1
数据类型——自定义
完善上述信息后,点击加入,此时就增加了遥信量的信息,如下图4。
:.
图4增加遥信量后的模板
增加通信状态:
项目名称——通信状态(需自行填写)
项目类型——通讯状态(需选择)
数据数量——1
数据宽度——16
数据类型——自定义
完善上述信息后,点击加入,此时就增加了通信状态的信息,如图5。
:.
图5增加通信状态后的模板

到这里把模板的信息增加完成了,接下来需要根据实际的规约点表来进行修改
模板中相应遥测遥信点号的名称。
图6数据定义
双击对应序号遥测(信)量——弹出数据定义对话框——修改名称——点击修改,
即可,见图6。
把遥测遥信通信状态都修改完成后,勾选“我已经定义好了,可以存起来”——点
:.
击“保存”,然后相应的模板就会在模板管理中最后一个,再点击“退出”,即可。
如图7
图7模板新建完成
三、ModbusRUT通用规约配置

规约名称:MODBUS-RTU通用规约
类名:PMODBUSRTU
常量名:PMODBUSRTU
文件名:,

通讯口:RS485/RS232
波特率:随装置
帧格式:随装置
通讯方式:问答式
串口超时:150ms
链路超时:150ms

根据具体厂家实际装置配置或选择相应模板。

遥测远动系数:根据厂家装置规约点表进行配置。
:.



“MODBUS-RTU通用规约”仅实现了MODBUSRTU协议部分功能。目前可实现读取遥
信、遥测、遥脉三类数据,支持01、02、03、04四个功能码,不支持遥控功能,若必
须实现遥控功能,则需要单独做规约。
“MODBUS-RTU通用规约”的发送报文格式严格按照MODBUSRTU协议规定,接收报
文格式可根据现场需要,设置不同的字节顺序和数据类型等。详细设置方法见“配置说
明”部分。
设备标志为0时,遥脉值原值入库;
设备标志为1时,遥脉值除以10后入库,后台需扩大10倍还原;
设备标志为2时,遥脉值除以100后入库,后台需扩大100倍还原。

“串口定义”界面,单击右下角“规约设置”按钮,打开“9628(C)–规
约配置(MODBUSRTU通用规约)”窗口;
:在规约配置窗口“配置名称”框中可以根据需要选择已有配置;
:.
:单击“导入”按钮,可以选择导入已有配置;
:单击“导出”按钮,填写合适的文件名称后,可以将配置保存到
文件。工程使用时可以直接导入该配置文件即可;
:.
“保存”按钮,配置即完成;
(以上面直流屏模板为例)
“规约配置”框中分别选择“帧类型”、“功能码”,并填写MODBUS寄存器
“起始地址”、“数据个数”、“入库点号”等参数。其中:
帧类型:该帧读取数据的类型和入库的类型,目前支持“遥信”、“遥测”、“遥脉”;
功能码:MODBUS协议功能码,目前支持01,02,03和04功能码;
起始地址:MODBUS读取寄存器的起始地址;
数据个数:MODBUS读取寄存器的个数;
:.
(读取大量连续数据时,只要设置一帧的起始地址和数据个数即可,程序可以自动
分段处理)
入库点号:指TDC9628读取的数据入库时的起始点号,即为所配置模板中的序号。
根据需要实际情况配置;
“规约配置”框中选择一帧后,可以根据需要修改该帧的“可选参数”,可
选参数包括:
数据宽度:指程序一次处理的字节个数。默认情况下,“遥信”按位处理,“遥测”
按两个字节处理,“遥脉”按四个字节处理;可根据特殊需要修改;
字节顺序:需处理数据的字节排序。其中“1”代表最高字节,“2”次高字节,“3”
次低,“4”最低字节;“12”即代表“高字节在前,低字节在后”;“1234”即代表“高
字在前,低字在后,字内高字节在前,低字节在后”,其他类同;
数据类型:可选“有符号整型”、“无符号整型”和“浮点型”;
数据格式:根据“数据类型”不同可选。其中
有符号整型:
补码:代表二进制补码表示方式;
绝对值:最高位为符号位,剩余位表示该值绝对值;
无符号整型:
HEX:十六进制表示,入库值做“除以2”缩小一倍,后台需“乘以2”还原;
:.
BCD:BCD表示方式,入库值为转换后的HEX值;
浮点型:
IEEE754:标准浮点类型;
,单击“保存”即可。当然,也可导出到文件以供工程人员使用。
-5直流屏MODBUS规约配置说明
规约配置中序号01为遥测量1,使用03功能码,起始地址为0,数据个数为22个
(16H),入库点号为0,在该模板遥测量中从序号00开始。在可选参数中,数据宽度为
2字节,高字节在前低字节在后,为有符号整型,且最高位为符号位。
规约配置中序号02为遥测量2,使用04功能码,起始地址为256(100H),数据个
数为21个(15H),入库点号为22,在该模板遥测量中接着遥测量1从序号22开始。在
可选参数中,数据宽度为2字节,高字节在前低字节在后,为有符号整型,且最高位为
符号位。
规约配置中序号03为遥信量,使用02功能码,起始地址为512(200H),数据格式
为32个(实际为64个(40H),这里只读32个),入库点号为0,在该模板遥信量中从序
号00开始。
(这里以斯菲尔CD194E-2S4智能仪表为例)
该表通信协议支持设置选择字通讯或字节通讯。
问题:读地址为2的智能仪表中电流IA,IB,IC3个遥测数据
:.
解决方法:根据数据地址表以及04功能码选择正确通讯参数。
若使用字通讯方式:
主机请求:02H04H00H12H00H06HD0H3EH
从机回答:02H04H0CHBYTE11BYTE12BYTE13BYTE14BYTE21…CRC16
若以字节方式通讯:
主机请求:02H04H00H24H00H0CHB0H37H
从机回答:02H04H0CHBYTE11B

ModbusRTU通用规约说明、模板及规约配置 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数23
  • 收藏数0 收藏
  • 顶次数0
  • 上传人小辰GG
  • 文件大小1.22 MB
  • 时间2023-01-12