ModbusRTU通用规约说明模板及规约配置_第1页
ModbusRTU通用规约说明模板及规约配置_第2页
ModbusRTU通用规约说明模板及规约配置_第3页
ModbusRTU通用规约说明模板及规约配置_第4页
ModbusRTU通用规约说明模板及规约配置_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、说明文档一、 Modbus RTU通用规约说明1.1 Modbus协议简介Modbus协议最初由Modicon公司开发出来,在1979年末该公司成为施耐德自动化(Schneider Automation)部门的一部分,现在Modbus已经是工业领域全球最流行的协议。此协议支持传统的串口链路RS-232、RS-422、RS-485和以太网设备。许多工业设备包括PLC,DCS,智能仪表等都在使用Modbus协议作为他们之间的通讯标准。Modbus协议包括ASCII、RTU、TCP等,并没有规定物理层。此协议定义了控制器能够认识和使用的报文结构,而不管它们是经过何种网络进行通信的。标准的Modico

2、n控制器使用RS232C实现串行的Modbus。Modbus的ASCII、RTU协议规定了报文、数据的结构、询问和应答的方式,数据通讯采用主/从方式,主站发出数据请求报文,从站接收到正确报文后就可以发送数据到主站端以响应请求;主站也可以直接发报文修改从站的数据,实现双向读写。1.2 Modbus通用规约介绍Modbus协议需要对数据进行校验,串行协议中除有奇偶校验外,ASCII模式采用LRC校验,RTU模式采用16位CRC校验,但TCP模式没有额外规定校验,因为TCP协议是一个面向连接的可靠协议。另外,Modbus采用主从问答方式收发数据,在实际使用中如果某从站站点断开后(如故障或失电),主站

3、可以诊断出来,而当故障修复后,网络又可自动接通。因此Modbus协议的可靠性较好。Modbus协议在串行链路中RTU模式使用的最多,通用性很强,所以在这里仅介绍一下Modbus RTU协议即Modbus通用规约。下表是Modbus Rtu支持的功能码:功能码 名称 作用 01 读取线圈状态 取得一组逻辑线圈的当前状态(ON/OFF) 02 读取输入状态 取得一组开关输入的当前状态(ON/OFF) 03 读取保持寄存器 在一个或多个保持寄存器中取得当前的二进制值 04 读取输入寄存器 在一个或多个输入寄存器中取得当前的二进制值 05 强置单线圈 强置一个逻辑线圈的通断状态 06 预置单寄存器 把

4、具体二进值装入一个保持寄存器 07 读取异常状态 取得8个内部线圈的通断状态,这8个线圈的地址由控制器决定 08 回送诊断校验 把诊断校验报文送从机,以对通信处理进行评鉴 09 编程(只用于484) 使主机模拟编程器作用,修改PC从机逻辑 10 控询(只用于484) 可使主机与一台正在执行长程序任务从机通信,探询该从机是否已完成其操作任务,仅在含有功能码9的报文发送后,本功能码才发送 11 读取事件计数 可使主机发出单询问,并随即判定操作是否成功,尤其是该命令或其他应答产生通信错误时 12 读取通信事件记录 可是主机检索每台从机的ModBus事务处理通信事件记录。如果某项事务处理完成,记录会给

5、出有关错误 13 编程(184/384 484 584) 可使主机模拟编程器功能修改PC从机逻辑 14 探询(184/384 484 584) 可使主机与正在执行任务的从机通信,定期控询该从机是否已完成其程序操作,仅在含有功能13的报文发送后,本功能码才得发送 15 强置多线圈 强置一串连续逻辑线圈的通断 16 预置多寄存器 把具体的二进制值装入一串连续的保持寄存器 17 报告从机标识 可使主机判断编址从机的类型及该从机运行指示灯的状态 18 (884和MICRO 84) 可使主机模拟编程功能,修改PC状态逻辑 19 重置通信链路 发生非可修改错误后,是从机复位于已知状态,可重置顺序字节 20

6、 读取通用参数(584L) 显示扩展存储器文件中的数据信息 21 写入通用参数(584L) 把通用参数写入扩展存储文件,或修改之 2264 保留作扩展功能备用  6572 保留以备用户功能所用 留作用户功能的扩展编码 73119 非法功能  120127 保留 留作内部作用 128255 保留 用于异常应答 在这些功能码中较常使用的是1、2、3、4、5、6号功能码,使用它们即可实现对下位机的数字量和模拟量的读写操作。 1.3 Modbus通用规约报文说明1.3.1读可读写数字量寄存器(线圈状态):01功能码上位机发送报文:设备地址功能码起始寄存器地址高8位低8位读取的寄存器

7、数高8位低8位CRC校验的低8位高8位 定义设备地址功能码寄存器起始地址读取数据长度CRC校验数据11H01H00 13H00 25HCRC 16字节数11222报文解析:11设备地址:在一个485总线上可以挂接多个设备,此处的设备地址表示与问询 的设备通讯。示例中为想和地址为17的(十进制的17是十六进制的11H)设备通讯。01功能码:读取数字量的功能码为01。00 13起始寄存器地址高8位、低8位:表示想读取的开关量的寄存器起始地址。比如示例中的起始地址为19。00 25寄存器数高8位、低8位:表示从起始地址开始读多少个开关量。示例中为37个开关量。0E 84CRC校验:是从开头一直校验到

8、此之前。此处需要注意,CRC校验在命令中的高低字节的顺序和其他的相反。下位机应答报文:设备地址功能码01返回的字节个数数据1数据2.数据nCRC校验的低8位高8位 定义设备地址功能码数据字节数返回数据CRC校验数据11H01H05H DATACRC 16字节数11152报文示例:110105CD6BB20E1B45 E6报文解析:11设备地址:和上面相同。01功能码:和上面相同05返回的字节个数:表示数据的字节个数,也就是数据1,2.n中的n的值。这里表示数据部分为5个字节。CD6BB20E1B数据1.5:由于每一个数据是一个8位的数,所以每一个数据表示8个开关量的值,每一位为0表示对应的开关

9、断开,为1表示闭合。比如示例中,CD6BB20E1B数据转换成二进制即为:27 19 20 28 无意义的高位部分置0表示序号20(寄存器地址为19)开关闭合,21号断开,22闭合,23闭合,24断开,25断开,26闭合,27闭合.如果询问的开关量不是8的整倍数,那么最后一个字节的高位部分无意义,置为0。45 E6CRC校验同上。 读只可读数字量寄存器(输入状态):02功能码和读取线圈状态类似,只是第二个字节的功能码不再是01H而是02H。写数字量(线圈状态):05功能码上位机发送报文:设备地址功能码05需下置的寄存器地址高8位低8位下置的数据高8位低8位CRC校验的低8位高8位定义设备地址功

10、能码置位寄存器地址下置数据CRC校验数据11H05H00 ACFF 00CRC 16字节数11222报文示例:110500ACFF004E 8B 报文解析:11设备地址和上面的相同。05功能码:写数字量的功能码号为05。00 AC需下置的寄存器地址高8位,低8位:表明了需要置位的开关的地址。FF 00下置的数据高8位,低8位:表明需要下置的开关量的状态。示例中为把该开关闭合。注意,此处置位命令只可以是FF00表示闭合,0000表示断开,其他数值非法。4E 8BCRC校验同上。注意:此命令一条只能下置一个开关量的状态。下位机应答报文:报文示例:110500ACFF004E 8B报文解析:同上。如

11、果下位机执行成功,则把上位机发送的报文原样返回,否则不响应。 读可读写模拟量寄存器(保持寄存器):03功能码上位机发送报文:设备地址功能码03起始寄存器地址高8位低8位读取的寄存器数高8位低8位CRC校验的低8位高8位 定义设备地址功能码寄存器起始地址读取数据长度CRC校验数据11H03H00 6B 00 03CRC 16字节数11222报文示例:1103006B000376 87报文解析:11设备地址和上面的相同。03功能码:读取模拟量的功能码为03。00 6B起始寄存器地址高8位、低8位:表示想读取的模拟量的起始地址,比如示例中的寄存器起始地址为107。00 03寄存器数高8位、低8位:表

12、示从起始地址开始读多少个模拟量。示例中为读取3个模拟量。注意:在返回的信息中一个模拟量需要返回两个字节。76 87CRC校验同上。下位机应答报文:设备地址功能码03返回的字节个数数据1数据2.数据nCRC校验的低8位高8位 定义设备地址功能码数据字节数返回数据CRC校验数据11H03H06H DATACRC 16字节数11162报文示例:110306022B00000064C8 BA 报文解析:11设备地址:和上面相同。03功能码:和上面相同06返回的字节个数:表示数据的字节个数,也就是数据1,2.n中的n的值。例子中返回了3个模拟量的数据,因为一个模拟量需要2个字节所以共6个字节。022B0

13、0000064数据1.6:其中数据1数据2分别是第1个模拟量的高8位和低8位,数据3数据4是第2个模拟量的高8位和低8位,以此类推。示例中返回的值分别是555,0,100。注意:在实际使用中,不同厂家规约可能会做改动,比如说对模拟量的处理是低字节在前,高字节在后,数据格式可分为有符号整型和无符号整型,有符号整型的又分为补码和绝对值两种方式等等,这是在实际分析报文需要注意的地方。C8 BACRC校验同上。读只可读模拟量寄存器(输入寄存器):04功能码和读取保持寄存器类似,只是第二个字节的功能码不再是03H而是04H。 写单个模拟量寄存器(保持寄存器):06功能码上位机发送报文:设备地址命令号06

14、需下置的寄存器地址高8位低8位下置的数据高8位低8位 CRC校验的低8位高8位定义设备地址功能码置位寄存器地址下置数据CRC校验数据11H06H00 01 00 03CRC 16字节数11222报文解析:11设备地址和上面的相同。06功能码:写数字量的功能码号为05。00 01需下置的寄存器地址高8位,低8位:表明了需要下置的模拟量寄存器的地址。比如示例中就是对地址为1的寄存器进行置数。00 03下置的数据高8位,低8位:表明需要下置的模拟量数据。比如示例中就把1号寄存器的值设为3。9A 9BCRC校验同上。注意:此命令一条只能下置一个模拟量的状态。下位机应答报文:报文解析:同上。如果下位机执

15、行成功,则把上位机发送的报文原样返回,否则不响应。二、 MODBUS模板规约配置在工程现场我们经常遇到第三方设备需要进行通信,如果是特殊规约,那就需要工自研究所专门做规约与模板。如果是标准通信规约比如说CDT-91,MODBUS-RTU,103规约等,我们就可以根据厂家要到的规约与点表,自行配置模板进行通信。这里基于TDC9628通信工作站来主要讲述下常见的Modbus RTU通用规约的模板配置。这里以某公司直流屏监控模块ZJK-5 Modbus协议为例来说明如何制作Modbus模板。下面是该直流屏MODBUS规约与点表。ZJK-5MODBUS通讯规约(部分截取)采用RS232/RS485,1

16、位起始位8位数据位,无校验,1位停止位,波特率9600 。1、 遥测量1命令格式:定义地址功能码STAR ADDR数据长度CRC校验数据ADDR03H0000H0016HCRC 16字节数11222注释: ADDR为直流电源屏通讯地址,可设定(1-10);数据长度为返回的数据长度,该长度不可变; CRC16是从第一个字节到最后一个字节进行CRC16校验; CRC16发送次序为低位在前,高位在后返回格式:定义地址功能码长度返回数据CRC校验数据ADDR03H2CHDATACRC 16字节数111442DATA数据定义:( 44bytes) 字 节 号名 称格 式系 数单 位01-021#交流A相

17、电压Hi-Lo1V03-041#交流B相电压Hi-Lo1V05-061#交流C相电压Hi-Lo1V07-082#交流A相电压Hi-Lo 1V09-102#交流B相电压Hi-Lo 1V11-122交流C相电压Hi-Lo 1V13-14模块输出电压Hi-LoV15-16一组电池电压Hi-LoV17-18一段控母电压Hi-LoV19-20二组电池电压Hi-LoV21-22二段控母电压Hi-LoV23-24模块输出电流Hi-LoA25-26一组电池电流Hi-Lo0.01A27-28一段控母电流Hi-Lo0.01A29-30二组电池电流Hi-Lo0.01A31-32二段控母电流Hi-Lo0.01A33-

18、34一段正母线对地电阻Hi-LoK35-36一段负母线对地电阻Hi-LoK37-38二段正母线对地电阻Hi-LoK39-40二段负母线对地电阻Hi-LoK41-42备用43-44备用l 数据类型:带符号定点数,以原码表示.(BIT15=0表示正数,BIT15=1表示负数)2、 遥测量2命令格式:定义地址功能码STAR ADDR数据长度CRC校验数据ADDR04H0100H0015HCRC 16字节数11222返回:定义地址功能码长度返回数据CRC校验数据ADDR04H2AHDATACRC 16字节数111422DATA数据定义:字 节 号名 称格 式系 数单 位01-02一组电池温度THi-L

19、o03-04备用Hi-Lo05-06一组01节电压Hi-LoV07-08一组02节电压Hi-LoV09-10一组03节电压Hi-LoV11-12一组04节电压Hi-LoV13-14一组05节电压Hi-LoV15-16一组06节电压Hi-LoV17-18一组07节电压Hi-LoV19-20一组08节电压Hi-LoV21-22一组09节电压Hi-LoV23-24一组10节电压Hi-LoV25-26一组11节电压Hi-LoV27-28一组12节电压Hi-LoV29-30一组13节电压Hi-LoV31-32一组14节电压Hi-LoV33-34一组15节电压Hi-LoV35-36一组16节电压Hi-Lo

20、V37-38一组17节电压Hi-LoV39-40一组18节电压Hi-LoV41-42一组19节电压Hi-LoV数据类型:带符号定点数,以原码表示.(BIT15=0表示正数,BIT15=1表示负数)3、 遥信量命令格式:定义地址功能码STAR ADDR长度CRC校验数据ADDR02H0200H0040HCRC 16字节数11222返回:定义地址功能码长度返回数据CRC校验数据ADDR02H08HDATACRC 16字节数11182数据定义:(8 Bytes)字节位号内 容报警字节位号内 容报警1Bit01#交流电源故障Y2BIT01组单只电池欠压YBit12#交流电源故障YBIT12组电池过压Y

21、Bit2蓄电池充电/放电NBIT22组电池欠压YBit3模块运行状态 浮充/均充NBIT32组单只电池过压YBit4避雷器故障YBIT42组单只电池欠压YBit51组电池过压YBIT5一段控母过压YBit61组电池欠压YBIT6一段控母欠压YBit71组单只电池过压YBIT7二段控母过压Y3BIT0二段控母欠压Y4BIT01#电池监测仪通讯中断YBIT1一段母线绝缘降低YBIT12#电池监测仪通讯中断YBIT2二段母线绝缘降低YBIT23#电池监测仪通讯中断YBIT3一组电池熔断器断YBIT34#电池监测仪通讯中断YBIT4二组电池熔断器断YBIT45#电池监测仪通讯中断Y BIT5模块通讯中

22、断YBIT5数据采集模块通讯中断YBIT6直流输出开关跳闸YBIT6绝缘选线装置通讯中断YBIT7模块故障YBIT7交流采集模块通讯中断Y注释: 在画有“/”的位置表示该位为预留位,系统发送时该位置0; 在标有“Y”的位置表示该位为告警信息; 数据位为1时表示该位信息发生; 在标有“N”的位置表示该位为非告警信息,0表示前一状态,1表示后一状态。 这里只部分截取了该直流屏的部分规约说明与重要遥测遥信等点表。2.1 新建模板打开该工程的TDC9628工程模板管理增加增加模板图1 新增模板图2 模板定义2.2 增加模板信息模板名称ZJK-5直流屏(名称可以自行定义)模板类型实际设备(需选择)增加遥

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

24、4个字节即32个遥信量。数据宽度1数据类型自定义完善上述信息后,点击加入,此时就增加了遥信量的信息,如下图4。图4 增加遥信量后的模板增加通信状态:项目名称通信状态(需自行填写)项目类型通讯状态(需选择)数据数量1数据宽度16数据类型自定义完善上述信息后,点击加入,此时就增加了通信状态的信息,如图5。图5 增加通信状态后的模板2.3 完善模板信息到这里把模板的信息增加完成了,接下来需要根据实际的规约点表来进行修改模板中相应遥测遥信点号的名称。图6 数据定义双击对应序号遥测(信)量弹出数据定义对话框修改名称点击修改,即可,见图6。把遥测遥信通信状态都修改完成后,勾选“我已经定义好了,可以存起来”

25、点击“保存”,然后相应的模板就会在模板管理中最后一个,再点击“退出”,即可。如图7图7 模板新建完成三、 Modbus RUT通用规约配置3.1规约文件说明规约名称:MODBUS-RTU通用规约类 名:PMODBUSRTU常 量 名:PMODBUSRTU文 件 名:PMODBUSRTU.h,PMODBUSRTU.cpp3.2通讯参数说明通 讯 口:RS485/RS232波 特 率:随装置帧 格 式:随装置通讯方式:问答式串口超时:150ms链路超时:150ms3.3模板配置说明根据具体厂家实际装置配置或选择相应模板。3.4远动系数说明遥测远动系数:根据厂家装置规约点表进行配置。3.5其它说明D

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

27、3.6工程使用说明说明3.6.1在“串口定义”界面,单击右下角“规约设置”按钮,打开“9628 (C)规约配置(MODBUS RTU通用规约)”窗口;3.6.2选择配置:在规约配置窗口“配置名称”框中可以根据需要选择已有配置;导入配置:单击“导入”按钮,可以选择导入已有配置;导出配置:单击“导出”按钮,填写合适的文件名称后,可以将配置保存到文件。工程使用时可以直接导入该配置文件即可;单击左下角“保存”按钮,配置即完成;3.7规约配置说明(以上面直流屏模板为例)在“规约配置”框中分别选择“帧类型”、“功能码”,并填写MODBUS寄存器“起始地址”、“数据个数”、“入库点号”等参数。其中:帧类型:

28、该帧读取数据的类型和入库的类型,目前支持“遥信”、“遥测”、“遥脉”;功能码:MODBUS协议功能码,目前支持01,02,03和04功能码;起始地址:MODBUS读取寄存器的起始地址;数据个数:MODBUS读取寄存器的个数;(读取大量连续数据时,只要设置一帧的起始地址和数据个数即可,程序可以自动分段处理)入库点号:指TDC9628读取的数据入库时的起始点号,即为所配置模板中的序号。根据需要实际情况配置;在“规约配置”框中选择一帧后,可以根据需要修改该帧的“可选参数”,可选参数包括:数据宽度:指程序一次处理的字节个数。默认情况下,“遥信”按位处理,“遥测”按两个字节处理,“遥脉”按四个字节处理;

29、可根据特殊需要修改;字节顺序:需处理数据的字节排序。其中“1”代表最高字节,“2”次高字节,“3”次低,“4”最低字节;“12”即代表“高字节在前,低字节在后”;“1234”即代表“高字在前,低字在后,字内高字节在前,低字节在后”,其他类同;数据类型:可选“有符号整型”、“无符号整型”和“浮点型”;数据格式:根据“数据类型”不同可选。其中有符号整型:补码:代表二进制补码表示方式;绝对值:最高位为符号位,剩余位表示该值绝对值;无符号整型:HEX:十六进制表示,入库值做“除以2”缩小一倍,后台需“乘以2”还原;BCD:BCD表示方式,入库值为转换后的HEX值;浮点型:IEEE754:标准浮点类型;

30、3.7.3配置完成后,单击“保存”即可。当然,也可导出到文件以供工程人员使用。ZJK-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开始。3.8 特殊情况说明(这里以斯菲尔CD194E-2S4智能仪表为例)该表通信协议支持设置选

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论