1、工程师培训资料工程师培训资料 标题:MODBUS-RTU通讯协议培训(高端培训)(高端培训) 培训人:xx背景介绍 Modbus协议最初由Modicon(莫迪康)公司开发出来 ,后来该公司成为施耐德自动化(Schneider Automation)部门的一部分 。 支持传统的RS-232、RS-422、RS-485和以太网设备。 许多工业设备,包括PLC,DCS,智能仪表等都在使用Modbus协议作为他们之间的通讯标准。 协议总体介绍 Modbus 协议是应用于工业控制器上的一种网络协议 。 此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的 。 制定了消息域格局和
2、内容的公共格式 。 使用主从技术 。即一个设备(主设备)能初始化传输(查询)。其它设备(从设备)根据主设备查询提供的数据做出相应反应。 协议分类MODBUS相关协议包括以下几类: MODBUS ASCII调试时直观,LRC校验容易 ,传输的效率比较低。 MODBUS RTU采用16位CRC校验 ,传输的数据量比较大 。 MODBUS TCPModbus信息帧需嵌入TCP帧 ,使用对等技术通信 。 MODBUS PLUS (MODBUS+)一种高速对等工业局域网 ,更加复杂的数据打包方法 。MODBUS RTU对硬件要求 网络采用串行总线方式,满足RS485通讯要求(通讯距离、设备数量等)。 网
3、络中只有一个主设备。 设备支持MODBUS RTU协议。 网络中设备的串口参数和传输设置必须一致。 网络中设备通讯地址不能重复,地址范围在1247之间协议相关术语介绍(一) 线圈状态表示一个可读写的数字量寄存器,类似于开出信号 输入状态表示一个只读的数字量寄存器,类似于开入信号 保持寄存器表示一个可读写的模拟量寄存器,类似于模出信号 输入寄存器表示一个只读的模拟量寄存器,类似于模入信号协议相关术语介绍(二) 功能码表示主设备对从设备操作的方式(读或者写指定寄存器类型)。 寄存器起始地址不同寄存器的地址是相对独立的,设备数据的存放是按照地址进行存储的。 寄存器数量不同寄存器的数量返回的字节数不一
4、致,模拟量一个寄存器表示2个字节,开关量8个寄存器用一个字节表示。常用功能码介绍功能码 名称 作用 01 读取线圈状态 取得一组逻辑线圈的当前状态(ON/OFF) 02 读取输入状态 取得一组开关输入的当前状态(ON/OFF) 03 读取保持寄存器 在一个或多个保持寄存器中取得当前的二进制值 04 读取输入寄存器 在一个或多个输入寄存器中取得当前的二进制值 05 强置单线圈 强置一个逻辑线圈的通断状态 06 预置单寄存器 把具体二进值装入一个保持寄存器 15 强置多线圈 强置一串连续逻辑线圈的通断 16 预置多寄存器 把具体的二进制值装入一串连续的保持寄存器 MODBUS RTU协议分析(一)
5、 读命令主设备发送命令:设备地址 功能码 起始寄存器地址高8位 低8位 读取的寄存器数高8位 低8位 CRC校验的低8位 CRC校验的高8位 设备响应:设备地址 功能码 返回的字节个数数据1数据2.数据nCRC校验的低8位 CRC校验的高8位 注:寄存器地址从0开始偏移开关量每一个数据表示8个开关量的值,每一位为0表示对应的开关断开,为1表示闭合。 一个模拟量需要2个字节 ,高位在前MODBUS RTU协议分析(二)举例 读线圈:发:110100130025CRC低CRC高 收:110105CD6BB20E1BCRC低CRC高 读保持寄存器:发:1103006B0003CRC低CRC高 收:1
6、10306022B00000064CRC低CRC高 MODBUS RTU协议分析(三) 写单个寄存器命令主设备发送命令:设备地址 功能码 需下置的寄存器地址高8位 低8位 下置的数据高8位 低8位 CRC校验的低8位 CRC校验的高8位 设备响应:原样返回 写多个寄存器命令主设备发送命令:设备地址 功能码 需下置的寄存器地址高8位 低8位 寄存器数量高8位 低8位 字节个数 数据1高8位 低8位 数据2高8位 低8位 .CRC校验的低8位 CRC校验的高8位 设备响应: 设备地址 功能码 需下置的寄存器地址高8位 低8位 寄存器数量高8位 低8位 CRC校验的低8位 CRC校验的高8位 MOD
7、BUS RTU协议分析(四)举例 写单个线圈:发:110500ACFF00CRC低CRC高 收:110500ACFF00CRC低CRC高 注:FF00表示闭合0000表示断开,其他数值非法。 写多个保持寄存器:发:11100001000204000A0102CRC低CRC高 收:111000010002CRC低CRC高 MODBUS RTU协议分析(五)当命令存在错误,从设备响应如下写命令: 无响应读命令:返回的功能码最高位置1,后面跟错误码。如 发 :110100130025CRC低CRC高 回 :118102CRC低CRC高错误码含义如下:01 ILLEGAL FUNCTION 02 IL
8、LEGAL DATA ADDRESS03 ILLEGAL DATA VALUE 04 SLAVE DEVICE FAILURE05 ACKNOWLEDGE 06 SLAVE DEVICE BUSY07 NEGATIVE ACKNOWLEDGE 08 MEMORY PARITY ERRORMODBUS RTU地址含义 设备提供的MODBUS地址一般有2部分组成,包含了寄存器类型和起始地址,最高一位为寄存器类型,低位为起始地址。寄存器类型对应如下:0表示线圈状态 1表示输入状态3表示输入寄存器 4表示保持寄存器举例:40001 0003公司支持MODBUS RTU产品 卡件 SP244配套300X
9、系统使用,直接在系统柜提供的IO端子上接线,232/485通过卡件上的跳线选择; XP244配套300XP系统使用,直接在系统柜提供的IO端子上接线,232/485通过卡件上的拨号开关选择; FW244配套ECS系统使用,配套TB315端子板,一块端子板可配套二块FW244使用,232/485通过卡件上的拨号开关选择; FW248配套ECS系统使用,配套TB248端子板,一块端子板配套一块FW248使用。 软件 AdvMBlink244卡通讯举例setcomm(1200, 1); /设置通讯模式setdelaytime(300);/设置返回等待时间int aa2; _TAG(return) = readinputreg(1,0,2,aa); /读数据,返回0表示正常248卡通讯举例20192019年年x x月月