搜档网
当前位置:搜档网 › S7-200PLC一主8从Modbus例程说明

S7-200PLC一主8从Modbus例程说明

S7-200PLC一主8从Modbus例程说明
S7-200PLC一主8从Modbus例程说明

Modbus-RTU一主8从通讯例程说明

基于西门子S7-200系列PLC的Modbus通讯,写了一个一主多从的通讯例程,现就此通讯例程加以详细说明,以供大家工程开发过程中使用。

一:指令说明

S7-200PLC的Modbus通讯,西门子本身没有直接的相关指令,所以需要给STEP7里面添加西门子官方提供的Modbus库文件。添加好库文件后会出现下图所示。点开【库】就会出现左下图所示,分别打开与Modbus有关的文件夹就会出现右下图所示的可以直接调用的指令。

【Modbus Master Port0(v1.2)】通讯口0作为Modbus主站用到的指令。

【MBSU_CTRL】通讯口0的Modbus主站初始化指令。

【EN】初始化指令必须每个扫描周期都使能

【Mode】通讯端口模式设置:1:Modbus 0:默认协议(PPI)【Baud】通讯波特率:我们设置为9600

【Parity】校验位:0无校验;1奇校验;2偶校验

【Timout】通讯超时时间:我们设置为2000ms

【MBUS_MSG】通讯口0的Modbus主站读写指令。【EN】指令使能

【First】指令触发,必须是上升沿触发-|P|-

注:这里使能和触发最好使同一个触点

【Slave】读写的从站号

【RW】读写选择:0读取;1写入

【Addr】对应从站的寄存器的Modbus起始地址【Count】访问的寄存器的数量(由起始地址开始)【DataPir】数据指针:写入的数据地址/读回的数据地址【Done】指令完成标志位

【Error】错误代码:只在Done为1的时候有效

【Modbus Master Port1(v1.2)】通讯口1作为Modbus主站用到的指令。

【MBSU_CTRL_P1】通讯口1的Modbus主站初始化指令。

【MBUS_MSG_P1】通讯口1的Modbus主站读写指令。

【Modbus Slave Port0(v1.0)】通讯口0作为Modbus从站用到的指令。

【MBUS_INIT】通讯口0作为Modbus从站初始化指令。

【EN】仅初次上电使能

【Mode】通讯端口模式设置:1:Modbus 0:默认协议(PPI)【Addr】作为从站的地址:我们选择01和主站一致

【Baud】通讯波特率:我们设置为9600和主站一致

【Parity】校验位:0无校验;1奇校验;2偶校验和主站一致【Delay】响应主站指令的延时,一般设置为0

【MaxIQ】主站可读写的数字输入输出的最大点数

【MaxAI】主站可读写的模拟输入的最大可读写点数

【MaxHold】主站可读写的保持寄存器的最大数(字VW)【HoldSt】主站可读写的保持寄存器的起始地址

【Done】初始化完成标志位

【Error】错误代码:只在Done为1的时候有效

【MBUS_SLAVE】通讯口0作为Modbus从站响应主站读写指令。【EN】从站接收响应指令使能,必须每个扫描周期使能

【Done】响应完成标志位

【Error】相应错误代码:Done为1时有效

二:程序说明

主站程序:主站程序我们采用分时循环采集的方式来依次读写8个从站的状态。程序编程采用毫秒定时器【T32】来作为系统的通讯采集周期,用户可根据实际需求调整参数大小,这里需要说明的是如果用户采集时间太小会引起主站6号占用错误,如果用户采用中短距离无线通讯需适当加大采集周期。考虑到有些用户使用GPRS通讯,出于对流量控制的目的,建议用户根据实际情况调整通讯周期。以免增加不必要的后期费用。

从站程序:从站程序只需要根据主站的通讯格式设置保持一致,然后再使能从站响应指令即可正常通讯。8个从站通讯程序除站地址不一样外,其他的参数用户可根据实际使用调整。

modbus功能码及格式

1、“01”读取线圈状态 发送: 功能代码1字节0x01 起始地址2字节0x0000~0xFFFF 线圈数量2字节1~2000(0x7D0)接收: 功能代码1字节0x01 字节数1字节N 线圈状态n字节n = N/N+1 N=读取线圈个数/ 8 ,如果余数不为0则N=N+1 出错时的返回: 功能代码1字节0x81 错误代码1字节01/02/03/04 例子: 2、“02”读取输入状态 功能代码1字节0x02 起始地址2字节0x0000~0xFFFF 输入点数量2字节1~2000(0x7D0) 功能代码1字节0x02 字节数1字节N 输入点状态n字节n = N/N+1 出错时的返回: 功能代码1字节0x82 错误代码1字节01/02/03/04 例子:

3、“03”保持型寄存器读取 发送: 功能代码1字节0x03 起始地址2字节0x0000~0xFFFF 寄存器数量2字节1~125(0x7D)接收: 功能代码1字节0x03 字节数1字节2*N 寄存器值N*2字节 N=寄存器数量 出错时的返回: 功能代码1字节0x83 错误代码1字节01/02/03/04 例子: 4、“05”写单一线圈 功能代码1字节0x05 线圈地址2字节0x0000~0xFFFF 写入值2字节0x0000或0xFF00 功能代码1字节0x05 线圈地址2字节0x0000~0xFFFF 写入值2字节0x0000或0xFF00出错时的返回: 功能代码1字节0x85 错误代码1字节01/02/03/04 例子:

5、“06”写单一寄存器 功能代码1字节0x06 寄存器地址2字节0x0000~0xFFFF 写入值2字节0x0000~0xFFFF 功能代码1字节0x06 寄存器地址2字节0x0000~0xFFFF 写入值2字节0x0000~0xFFFF 功能代码1字节0x86 错误代码1字节01/02/03/04 例子: 6、“15(0x0F)”写多线圈 发送: 功能代码1字节0x0F 起始地址2字节0x0000~0xFFFF 写入线圈个数2字节0x0001~0x07B0写入字节数1字节N 写入值N字节 功能代码1字节0x0F 起始地址2字节0x0000~0xFFFF 写入线圈个数2字节0x0001或0x07B0 功能代码1字节0x8F 错误代码1字节01/02/03/04 例子:

MODBUS协议(功能码及报文解析)

MODBUS协议 Modbus是一种串行通信协议,是Modicon于1979年,为使用可编程逻辑控制器(PLC)而发表的。事实上,它已经成为工业领域通信协议标准,并且现在是工业电子设备之间相当常用的连接方式。Modbus比其他通信协议使用的更广泛的主要原因有:公开发表并且无版税要求 相对容易的工业网络部署 对供应商来说,修改移动原生的位或字节没有很多限制 Modbus允许多个设备连接在同一个网络上进行通信,举个例子,一个由测量温度和湿度的装置,并且将结果发送给计算机。在数据采集与监视控制系统(SCADA)中,Modbus通常用来连接监控计算机和remote terminal unit (RTU)。 Modbus协议目前存在用于串口、以太网以及其他支持互联网协议的网络的版本。 大多数Modbus设备通信通过串口EIA-485物理层进行[1]。 对于串行连接,存在两个变种,它们在数值数据表示不同和协议细节上略有不同。Modbus RTU是一种紧凑的,采用二进制表示数据的方式,Modbus ASCII是一种人类可读的,冗长的表示方式。这两个变种都使用串行通讯(serial communication)方式。RTU 格式后续的命令/数据带有循环冗余校验的校验和,而ASCII格式采用纵向冗余校验的校验和。被配置为RTU变种的节点不会和设置为ASCII变种的节点通信,反之亦然。

对于通过TCP/IP(例如以太网)的连接,存在多个Modbus/ TCP变种,这种方式不需要校验和的计算。 对于所有的这三种通信协议在数据模型和功能调用上都是相同的,只有封装方式是不同的。 Modbus 有一个扩展版本Modbus Plus(Modbus+或者MB +),不过此协定是Modicon专有的,和Modbus不同。它需要一个专门的协处理器来处理类似HDLC的高速令牌旋转。它使用1Mb it/s的双绞线,并且每个节点都有转换隔离装置,是一种采用转换/边缘触发而不是电压/水平触发的装置。连接Modbus Plus到计算机需要特别的接口,通常是支持ISA(SA85),PCI或者PCMCIA 总线的板卡。 Modbus协议是一个master/slave 架构的协议。有一个节点是master 节点,其他使用Modbus协议参与通信的节点是slave 节点。每一个slave 设备都有一个唯一的地址。在串行和MB+网络中,只有被指定为主节点的节点可以启动一个命令(在以太网上,任何一个设备都能发送一个Modbus命令,但是通常也只有一个主节点设备启动指令)。 一个ModBus命令包含了打算执行的设备的Modbus地址。所有设备都会收到命令,但只有指定位置的设备会执行及回应指令(地址0例外,指定地址0 的指令是广播指令,所有收到指令的设备都会执行,不过不回应指令)。所有的Modbus命令包含了检查码,以确定到达的命令没有被破坏。基本的ModBus命令能指令一个R

MODBUS协议(功能码及报文解析)要点

Modbus是一种串行通信协议,是于1979年,为使用可编程逻辑控制器(PLC)而发表的。事实上,它已经成为工业领域通信协议,并且现在是工业电子设备之间相当常用的连接方式。Modbus比其他通信协议使用的更广泛的主要原因有:公开发表并且无版税要求 相对容易的工业网络部署 对供应商来说,修改移动原生的位或字节没有很多限制 Modbus允许多个设备连接在同一个网络上进行通信,举个例子,一个由测量温度和湿度的装置,并且将结果发送给计算机。在数据采集与监视控制系统(SCADA)中,Modbus通常用来连接监控计算机和remoteterminalunit(RTU)。 Modbus协议目前存在用于串口、以太网以及其他支持互联网协议的网络的版本。 大多数Modbus设备通信通过串口物理层进行。 对于串行连接,存在两个变种,它们在数值数据表示不同和协议细节上略有不同。ModbusRTU是一种紧凑的,采用二进制表示数据的方式,ModbusASCII是一种人类可读的,冗长的表示方式。这两个变种都使用串行通讯(serialcommunication)方式。RTU格式后续的命令/数据带有的校验和,而ASCII格式采用纵向冗余校验的校验和。被配置为RTU变种的节点不会和设置为ASCII变种的节点通信,反之亦然。 对于通过(例如)的连接,存在多个Modbus/TCP变种,这种方式不需要校验和的计算。 对于所有的这三种通信协议在数据模型和功能调用上都是相同的,只有封装方式是不同的。 Modbus有一个扩展版本ModbusPlus(Modbus+或者MB+),不过此协定是Modicon 专有的,和Modbus不同。它需要一个专门的协处理器来处理类似的高速令牌旋转。

Modbus通讯格式详解教程

Modbus通讯协议格式 Modbus通讯协议格式为 主机发送:[开始] [从机地址] [功能代码] [起始寄存器地址高8 位] [低8位] [写单寄存器数高8 位] [低8 位] [LRC 校验码] [CR] [LF] 所以本文依据格式逐个介绍解疑: [开始] 为: [从机地址] 为已知; [功能代码] 的名称、作用将在下面介绍; [寄存器地址]分配及寄存器中值的含义将在下面介绍; [LRC 校验码] 可以用Commix软件算出来,详细请参考Commix相关资料; 最后是实例加以说明验证。 功能码名称作用 01 读取线圈状态取得一组逻辑线圈的当前状态(ON/OFF) 02 读取输入状态取得一组开关输入的当前状态(ON/OFF) 03 读取保持寄存器在一个或多个保持寄存器中取得当前的二进制值 04 读取输入寄存器在一个或多个输入寄存器中取得当前的二进制值 05 强置单线圈强置一个逻辑线圈的通断状态 06 预置单寄存器把具体二进值装入一个保持寄存器 07 读取异常状态取得8个内部线圈的通断状态,这8个线圈的地址由控制器决定 08 回送诊断校验把诊断校验报文送从机,以对通信处理进行评鉴 09 编程(只用于484)使主机模拟编程器作用,修改PC从机逻辑 10 控询(只用于484)可使主机与一台正在执行长程序任务从机通信,探询该从机是否已完成其操作任务,仅在含有功能码9的报文发送后,本功能码才发送 11 读取事件计数可使主机发出单询问,并随即判定操作是否成功,尤其是该命

令或其他应答产生通信错误时 12 读取通信事件记录可是主机检索每台从机的ModBus事务处理通信事件记录。如果某项事务处理完成,记录会给出有关错误 13 编程(184/384 484 584)可使主机模拟编程器功能修改PC从机逻辑 14 探询(184/384 484 584)可使主机与正在执行任务的从机通信,定期控询该从机是否已完成其程序操作,仅在含有功能13的报文发送后,本功能码才得发送 15 强置多线圈强置一串连续逻辑线圈的通断 16 预置多寄存器把具体的二进制值装入一串连续的保持寄存器 17 报告从机标识可使主机判断编址从机的类型及该从机运行指示灯的状态 18 (884和MICRO 84)可使主机模拟编程功能,修改PC状态逻辑 19 重置通信链路发生非可修改错误后,是从机复位于已知状态,可重置顺序字节 20 读取通用参数(584L)显示扩展存储器文件中的数据信息 21 写入通用参数(584L)把通用参数写入扩展存储文件,或修改之 22~64 保留作扩展功能备用 65~72 保留以备用户功能所用留作用户功能的扩展编码 73~119 非法功能 120~127 保留留作内部作用 128~255 保留用于异常应答 保护器Modbus 通讯协议: 半双工RS485 口,传输距离≤1200 米。 波特率:9600bt; 1 个起始位;8 个数据位,1 位停止位,无奇偶校验位。 选用ASCII 模式,LRC 检测。 保持寄存器分配:

Modbus标准通讯协议格式【最新】

Modbus通讯协议 下表是Modbus的功能格式: 1、读可读写数字量寄存器(线圈状态): 计算机发送命令:[设备地址] [命令号01] [起始寄存器地址高8位] [低8位] [读取的寄存器数高8位] [低8位] [CRC校验的低8位] [CRC校验的高8位] 例:[11][01][00][13][00][25][CRC低][CRC高] 意义如下: <1>设备地址:在一个485总线上可以挂接多个设备,此处的设备地址表示想和哪一个设备通讯。例子中为想和17号(十进制的17是十六进制的11)通讯。 <2>命令号01:读取数字量的命令号固定为01。 <3>起始地址高8位、低8位:表示想读取的开关量的起始地址(起始地址为0)。比如例子中的起始地址为19。 <4>寄存器数高8位、低8位:表示从起始地址开始读多少个开关量。例子中为37个开关量。

<5>CRC校验:是从开头一直校验到此之前。在此协议的最后再作介绍。此处需要注意,CRC校验在命令中的高低字节的顺序和其他的相反。 设备响应:[设备地址] [命令号01] [返回的字节个数][数据1][数据2]...[数据n][CRC 校验的低8位] [CRC校验的高8位] 例:[11][01][05][CD][6B][B2][0E][1B][CRC低][CRC高] 意义如下: <1>设备地址和命令号和上面的相同。 <2>返回的字节个数:表示数据的字节个数,也就是数据1,2...n中的n的值。 <3>数据1...n:由于每一个数据是一个8位的数,所以每一个数据表示8个开关量的值,每一位为0表示对应的开关断开,为1表示闭合。比如例子中,表示20号(索引号为19)开关闭合,21号断开,22闭合,23闭合,24断开,25断开,26闭合,27闭合...如果询问的开关量不是8的整倍数,那么最后一个字节的高位部分无意义,置为0。 <4>CRC校验同上。 2、读只可读数字量寄存器(输入状态): 和读取线圈状态类似,只是第二个字节的命令号不再是1而是2。 3、写数字量(线圈状态):

MODBUS协议功能码及报文解析要点

M O D B U S协议功能码及报文解析要点

Modbus是一种串行通信协议,是于1979年,为使用可编程逻辑控制器(PLC)而发表的。事实上,它已经成为工业领域通信协议,并且现在是工业电子设备之间相当常用的连接方式。Modbus比其他通信协议使用的更广泛的主要原因有: 公开发表并且无版税要求 相对容易的工业网络部署 对供应商来说,修改移动原生的位或字节没有很多限制 Modbus允许多个设备连接在同一个网络上进行通信,举个例子,一个由测量温度和湿度的装置,并且将结果发送给计算机。在数据采集与监视控制系统(SCADA)中,Modbus 通常用来连接监控计算机和remoteterminalunit(RTU)。 Modbus协议目前存在用于串口、以太网以及其他支持互联网协议的网络的版本。 大多数Modbus设备通信通过串口物理层进行。 对于串行连接,存在两个变种,它们在数值数据表示不同和协议细节上略有不同。Mo dbusRTU是一种紧凑的,采用二进制表示数据的方式,ModbusASCII是一种人类可读的,冗长的表示方式。这两个变种都使用串行通讯(serialcommunication)方式。RTU格式后续的命令/数据带有的校验和,而ASCII格式采用纵向冗余校验的校验和。被配置为RTU 变种的节点不会和设置为ASCII变种的节点通信,反之亦然。 对于通过(例如)的连接,存在多个Modbus/TCP变种,这种方式不需要校验和的计算。 对于所有的这三种通信协议在数据模型和功能调用上都是相同的,只有封装方式是不同的。

实际上MODBUSRTU与ASCII的内容是完全相同的,不同的的ASCII方式用“:”标识帧起始,用“CRLF”标识帧结束。校验采用LRC,把RTU帧中一个字节的内容换成了2个ASCII字符。比如在RTU方式下设备地址01只有一个字节,在ASCII方式下转换成字符串

Modbus通讯 功能码及实例

功能码名称作用 01 读取线圈状态取得一组逻辑线圈的当前状态(ON/OFF) 02 读取输入状态取得一组开关输入的当前状态(ON/OFF) 03 读取保持寄存器在一个或多个保持寄存器中取得当前的二进制值 04 读取输入寄存器在一个或多个输入寄存器中取得当前的二进制值 05 强置单线圈强置一个逻辑线圈的通断状态 06 预置单寄存器把具体二进值装入一个保持寄存器 07 读取异常状态取得8个内部线圈的通断状态,这8个线圈的地址由控制器决定 08 回送诊断校验把诊断校验报文送从机,以对通信处理进行评鉴 09 编程(只用于484)使主机模拟编程器作用,修改PC从机逻辑 10 控询(只用于484)可使主机与一台正在执行长程序任务从机通信,探询该从机是否已完成其操作任务,仅在含有功能码9的报文发送后,本功能码才发送 11 读取事件计数可使主机发出单询问,并随即判定操作是否成功,尤其是该命令或其他应答产生通信错误时 12 读取通信事件记录可是主机检索每台从机的ModBus事务处理通信事件记录。如果某项事务处理完成,记录会给出有关错误 13 编程(184/384 484 584)可使主机模拟编程器功能修改PC从机逻辑 14 探询(184/384 484 584)可使主机与正在执行任务的从机通信,定期控询该从机是否已完成其程序操作,仅在含有功能13的报文发送后,本功能码才得发送 15 强置多线圈强置一串连续逻辑线圈的通断 16 预置多寄存器把具体的二进制值装入一串连续的保持寄存器 17 报告从机标识可使主机判断编址从机的类型及该从机运行指示灯的状态 18 (884和MICRO 84)可使主机模拟编程功能,修改PC状态逻辑 19 重置通信链路发生非可修改错误后,是从机复位于已知状态,可重置顺序字节 20 读取通用参数(584L)显示扩展存储器文件中的数据信息

Modbus功能码一览

Modbus功能码一览 Modbus网络是一个工业通信系统,由带智能终端的可编程序控制器和计算机通过公用线路或局部专用线路连接而成。其系统结构既包括硬件、亦包括软件。它可应用于各种数据采集和过程监控。下表1是ModBus的功能码定义。

Modbus网络只是一个主机,所有通信都由他发出。网络可支持247个之多的远程从属控制器,但实际所支持的从机数要由所用通信设备决定。采用这个系统,各PC可以和中心主机交换信息而不影响各PC执行本身的控制任务。表2是ModBus各功能码对应的数据类型。 (1) 在ModBus系统中有2种传输模式可选择。这2种传输模式与从机PC通信的能力是同等的。选择时应视所用ModBus主机而定,每个ModBus系统只能使用一种模式,不允许2种模式混用。一种模式是ASCII(美国信息交换码),另一种模式是RTU(远程终端设备)这两种模式的定义见表3

编程的主计算机及主PC很适宜。RTU则适用于机器语言编程的计算机和PC主机。 用RTU模式传输的数据是8位二进制字符。如欲转换为ASCII模式,则每个RTU字符首先应分为高位和低位两部分,这两部分各含4位,然后转换成十六进制等量值。用以构成报文的ASCII字符都是十六进制字符。ASCII模式使用的字符虽是RTU模式的两倍,但ASCII数据的译玛和处理更为容易一些,此外,用RTU模式时报文字符必须以连续数据流的形式传送,用ASCII模式,字符之间可产生长达1s的间隔,以适应速度较快的机器。表4给出了以RTU 方式读取整数据的例子 ( CRC-16(循环冗余错误校验) CRC-16错误校验程序如下:报文(此处只涉及数据位,不指起始位、停止位和任选的奇偶校验位)被看作是一个连续的二进制,其最高有效位(MSB)首选发送。报文先与X↑16相乘(左移16位),然后看X↑16+X↑15+X↑2+1除,X↑16+X↑15+X↑2+1可以表示为二进制数 11000000000000101。整数商位忽略不记,16位余数加入该报文(MSB先发送),成为2个CRC校验字节。余数中的1全部初始化,以免所有的零成为一条报文被接收。经上述处理而含有CRC 字节的报文,若无错误,到接收设备后再被同一多项式(X↑16+X↑15+X↑2+1)除,会得到一个零余数(接收设备核验这个CRC字节,并将其与被传送的CRC 比较)。全部运算以2为模(无进位)。 习惯于成串发送数据的设备会首选送出字符的最右位(LSB-最低有效位)。而在生成CRC情况下,发送首位应是被除数的最高有效位MSB。由于在运算中不用进位,为便于操作起见,计算CRC时设MSB在最右位。生成多项式

MODBUS协议(功能码及报文解析)-485功能码

MODBUS协议 Modbus就是一种串行通信协议,就是Modicon于1979年,为使用可编程逻辑控制器(PLC)而发表得。事实上,它已经成为工业领域通信协议标准,并且现在就是工业电子设备之间相当常用得连接方式.Modbus比其她通信协议使用得更广泛得主要原因有:公开发表并且无版税要求 相对容易得工业网络部署 对供应商来说,修改移动原生得位或字节没有很多限制 Modbus允许多个设备连接在同一个网络上进行通信,举个例子,一个由测量温度与湿度得装置,并且将结果发送给计算机。在数据采集与监视控制系统(SCADA)中,Modbus通常用来连接监控计算机与remote terminal unit (RTU)。 Modbus协议目前存在用于串口、以太网以及其她支持互联网协议得网络得版本。 大多数Modbus设备通信通过串口EIA-485物理层进行[1]. 对于串行连接,存在两个变种,它们在数值数据表示不同与协议细节上略有不同。Modbus RTU就是一种紧凑得,采用二进制表示数据得方式,Modbus ASCII就是一种人类可读得,冗长得表示方式。这两个变种都使用串行通讯(serial munication)方式。RTU格式后续得命令/数据带有循环冗余校验得校验与,而ASCII格式采用纵向冗余校验得校验与。被配置为RTU变种得节点不会与设置为AS CII变种得节点通信,反之亦然。

对于通过TCP/IP(例如以太网)得连接,存在多个Modbus/TCP变种,这种方式不需要校验与得计算。 对于所有得这三种通信协议在数据模型与功能调用上都就是相 同得,只有封装方式就是不同得。 Modbus 有一个扩展版本 Modbus Plus(Modbus+或者M B+),不过此协定就是Modicon专有得,与Modbus不同。它需要一个专门得协处理器来处理类似HDLC得高速令牌旋转。它使用1Mbit/s得双绞线,并且每个节点都有转换隔离装置,就是一种采用转换/边缘触发而不就是电压/水平触发得装置。连接Modbus Plus到计算机需要特别得接口,通常就是支持ISA(SA85),PCI 或者PCMCIA总线得板卡。 Modbus协议就是一个master/slave 架构得协议.有一个节点就是 master 节点,其她使用Modbus协议参与通信得节点就是 slave 节点。每一个 slave 设备都有一个唯一得地址。在串行与MB+网络中,只有被指定为主节点得节点可以启动一个命令(在以太网上,任何一个设备都能发送一个Modbus命令,但就是通常也只有一个主节点设备启动指令)。 一个ModBus命令包含了打算执行得设备得Modbus地址。所有设备都会收到命令,但只有指定位置得设备会执行及回应指令(地址 0例外,指定地址 0 得指令就是广播指令,所有收到指令得设备都会执行,不过不回应指令)。所有得Modbus命令包含了检查码,以确定到达得命令没有被破坏。基本得ModBus命令能指令一个RTU改变

Modbus功能码一览

Modbus 功能码一览 Modbus 网络是一个工业通信系统,由带智能终端的可编程序控制 器和计算机通过公用线路或局部专用线路连接而成。其系统结构既包括硬件、亦包 括软件。它可应用于各种数据采集和过程监控。下表1是ModBus 的功能码定义。

Modbus网络只是一个主机,所有通信都由他发出。网络可支持247个之多的远程从属控制器,但实际所支持的从机数要由所用通信设备决定。采用这个系统,各PC可以和中心主机交换信息而不影响各PC执行本身的控制任务。表2是ModBus各功能码对应的数据类型。 (1) 在ModBus系统中有2种传输模式可选择。这2种传输模式与从机PC通信的能力是同等的。选择时应视所用ModBus主机而定,每个ModBus系统只能使用一种模式,不允许2种模式混用。一种模式是ASCII(美国信息交换码),另一种模式是RTU(远程终端设备)这两种模式的定义见表3

的主计算机及主PC很适宜。RTU则适用于机器语言编程的计算机和PC主机。 用RTU模式传输的数据是8位二进制字符。如欲转换为ASCII模式,则每个RTU字符首先应分为高位和低位两部分,这两部分各含4位,然后转换成十六进制等量值。用以构成报文的ASCII字符都是十六进制字符。ASCII模式使用的字符虽是RTU模式的两倍,但ASCII数据的译玛和处理更为容易一些,此外,用RTU模式时报文字符必须以连续数据流的形式传送,用ASCII模式,字符之间可产生长达1s的间隔,以适应速度较快的机器。表4给出了以RTU 方式读取整数据的例子 ( CRC-16(循环冗余错误校验) CRC-16错误校验程序如下:报文(此处只涉及数据位,不指起始位、停止位和任选的奇偶校验位)被看作是一个连续的二进制,其最高有效位(MSB)首选发送。报文先与X↑16相乘(左移16位),然后看X↑16+X↑15+X↑2+1除,X↑16+X↑15+X↑2+1可以表示为二进制数 11000000000000101。整数商位忽略不记,16位余数加入该报文(MSB先发送),成为2个CRC校验字节。余数中的1全部初始化,以免所有的零成为一条报文被接收。经上述处理而含有CRC 字节的报文,若无错误,到接收设备后再被同一多项式(X↑16+X↑15+X↑2+1)除,会得到一个零余数(接收设备核验这个CRC字节,并将其与被传送的CRC 比较)。全部运算以2为模(无进位)。 习惯于成串发送数据的设备会首选送出字符的最右位(LSB-最低有效位)。而在生成CRC情况下,发送首位应是被除数的最高有效位MSB。由于在运算中不用进位,为便于操作起见,计算CRC时设MSB在最右位。生成多项式的位序也必须反过来,以保持一致。多项式的MSB略去不记,因其只对商有影响而不影响余数。

modbus,rtu协议,功能码

竭诚为您提供优质文档/双击可除modbus,rtu协议,功能码 篇一:modbus协议(功能码及报文解析) modbus协议 modbus是一种串行通信协议,是modicon于1979年,为使用可编程逻辑控制器(plc)而发表的。事实上,它已经成为工业领域通信协议标准,并且现在是工业电子设备之间相当常用的连接方式。modbus比其他通信协议使用的更广泛的主要原因有: 公开发表并且无版税要求 相对容易的工业网络部署 对供应商来说,修改移动原生的位或字节没有很多限制modbus允许多个设备连接在同一个网络上进行通信,举个例子,一个由测量温度和湿度的装置,并且将结果发送给计算机。在数据采集与监视控制系统(scada)中,modbus 通常用来连接监控计算机和remoteterminalunit(Rtu)。 modbus协议目前存在用于串口、以太网以及其他支持互联网协议的网络的版本。 大多数modbus设备通信通过串口eia-485物理层进行

[1]。对于串行连接,存在两个变种,它们在数值数据表示不同和协议细节上略有不同。modbusRtu是一种紧凑的,采用二进制表示数据的方式,modbusascii是一种人类可读的,冗长的表示方式。这两个变种都使用串行通讯(serialcommunication)方式。Rtu格式后续的命令/数据带有循环冗余校验的校验和,而ascii格式采用纵向冗余校验的校验和。被配置为Rtu变种的节点不会和设置为ascii 变种的节点通信,反之亦然。 对于通过tcp/ip(例如以太网)的连接,存在多个modbus/tcp变种,这种方式不需要校验和的计算。 对于所有的这三种通信协议在数据模型和功能调用上 都是相同的,只有封装方式是不同的。 modbus有一个扩展版本modbusplus(modbus+或者mb+),不过此协定是modicon专有的,和modbus不同。它需要一个专门的协处理器来处理类似hdlc的高速令牌旋转。它使用1mbit/s的双绞线,并且每个节点都有转换隔离装置,是一种采用转换/边缘触发而不是电压/水平触发的装置。连接modbusplus到计算机需要特别的接口,通常是支持isa (sa85),pci或者pcmcia总线的板卡。 modbus协议是一个master/slave架构的协议。有一个节点是master节点,其他使用modbus协议参与通信的节点是slave节点。每一个slave设备都有一个唯一的地址。在

相关主题