Modbus TCP/RTU/ASCII 总论

发布者:science56最新更新时间:2015-10-27 来源: eefocus关键字:Modbus  TCP  RTU  ASCII 手机看文章 扫描二维码
随时随地手机看文章
【Modbus协议】
Modbus协议是OSI模型的第七层的应用层通讯协议,定义了不同类型设备间交换信息方式,以及信息的格式。

【Modbus工作方式】
Modbus的工作方式是请求/应答,每次通讯都是主站先发送指令,可以是广播,或是向特定从站的单播,从站响应指令,并按要求应答,或者报告异常。当主站不发送请求时,从站不会自己发出数据,从站和从站之间不能直接通讯。

【Modbus报文格式】
Modbus协议的报文(或帧)的基本格式是:表头 + 功能码 + 数据区 + 校验码
功能码和数据区在不同类型的网络都是固定不变的,表头和校验码则因网络底层的实现方式不同而有所区别。表头包含了从站的地址,功能码告诉从站要执行何种功能,数据区是具体的信息。图1是一次请求和应答的过程。

 

【Modbus数据交换示例】

先以串行通讯的Modbus为例(注意Modbus TCP的报文表头和校验码是不一样的),主站发送了:09 03 00 04 00 03 XX。主站告诉从站09,我要读取的地址偏移为4、5、6的Holding Register的数值。其中"03"是读Holding Register的功能码,"00 04 00 01"是数据区,"00 04"是寄存器的地址,"00 03"说明要连续读三个寄存器的值。"XX"代表最后的校验位,校验方法是LRC或CRC。从站收到信息后,就从对应的寄存器找到数值,回复:09 03 06 02 2B 00 01 00 64 XX。从站回答,该地址偏移为4的寄存器值为02 2B,地址偏移为5的寄存器值为00 01,地址偏移为6的寄存器值为00 64。其中"09 03"是复制了主站发来的地址和功能码,"06"代表接下来的数据共有6个字节。如果从站收到了一个错误的请求,例如发现要读的寄存器地址是错误的,则回复:09 83 02 XX。其中"83"是把功能码"03"的最高位置1,告诉主站发生了异常,"02"是异常码,说明发生了无效地址的异常。

 

【Modbus的四种数据类型】
Coil:大小只有1位,ON或OFF,可读可写,既可以是一个输出量输出点,也可以是数字量输入点,有效的地址范围是1-9999。Input Status:大小只有1位,ON或OFF,只读,即数字量输出点,有效地址范围是10001-19999。Input Register:16位的寄存器,只读,可以用作模拟量或16位打包输入点,有效地址范围是30001-39999。Holding Register:16位的寄存器,可读可写,既可以是一个模拟量或16位打包输入点,也可以是模拟量或16位打包输出点,有效地址范围是40001-49999。在 PLC或DCS上用点名标记不同的变量,在Modbus则以数据地址来标记每个点。以上所说的地址都是参考地址,而不是实际的物理地址。上述的地址是在设备中的地址,按照PLC的习惯从1开始递增,而Modbus报文中是从0开始递增。例如地址偏移为4、5、6的Holding Register,其实是指参考地址是40005、40006、40007的寄存器。

【Modbus TCP、Modbus RTU和Modbus ASCII的区别】
对于不同类型的网络,Modbus的第7层实现是一样的,区别在于下层的实现方式,常见的有TCP/IP和串行通讯两种。Modbus TCP基于以太网和TCP/IP协议,Modbus RTU和Modbus ASCII则是使用异步串行传输(通常是RS-232/422/485)。


对于Modbus TCP而言,主站通常称为Client,从站称为Server;而对于Modbus RTU和Modbus ASCII来说,主站是Master,从站是Slave。如图2所示,串行传输的物理层是RS-485或RS-232,数据链路层是Modbus的串行传输协议;Modbus TCP的1、2、3、4层实现和日常所见的以太网、因特网一样。Modbus默认采用的TCP端口号是502。图3说明了Modbus TCP的改动:
  1. 取消了校验位。数据链路层上就进行了CRC-32的校验,TCP/IP是面向连接的可靠性的协议,因此没必要再加上校验位。
  2. Slave 地址换成了Unit Identifier。当网络里的设备全是使用TCP/IP,这个地址是没有意义的,因为IP就能进行路由寻址。如果网络里还有串行通讯的设备,则需要网关来实现Modbus TCP到Modbus RTU或ASCII之间的协议转换,这时用Unit Identifier来标识网关后面的每个串行通讯设备。
  3. Length是指后面的字节总数。实际上数据区的长度是能确定的,有的功能码就可以确定数据区的长度,有的功能码虽不能确定数据区长度,但是数据区有字节计数,参见上文举的从站应答的例子。表头增加的Length是为了应对有些情况下TCP/IP协议会将应用层的数据拆包传输。
  4. Transaction Identifier和Protocol Identifier由Client生成,Server的响应将复制这些参数。


【RTU和ASCII的区别】

RTU模式下,一个字节的数据,传输的就是一个字节。ASCII模式下,同样一个字节数据用了两个字节来传输。例如,要传输数字0x5B,RTU传输的是0101 1011(二进制),而ASCII传输的是00110101和01000010。可见,ASCII传输的速率是RTU的一半。ASCII模式采用LRC校验,RTU模式采用16位CRC校验。

 

【Modbus资料】

MODBUS Protocol Specification——Modbus总体功能介绍

Modbus Serial Line Protocol and Implementation Guide V1.02——串行通讯的实现MODBUS TCP/IP——Modbus TCP的实现

Modicon Modbus Protocol Reference Guide——Modbus最早起源于Modicon

关键字:Modbus  TCP  RTU  ASCII 引用地址:Modbus TCP/RTU/ASCII 总论

上一篇:如何诊断RS485总线通讯不稳定的现场问题
下一篇:提高RS485总线运行可靠性的设计应用与维修方案

推荐阅读最新更新时间:2024-05-03 00:03

为什么NVMe/TCP是数据中心的更优选择
自从NVMe作为高性能固态硬盘(SSD)的最新协议出现以来,已经改变了存储行业。 NVMe最初是为高性能直连式PCIe SSD设计的,后来以NVMe over Fabrics(NVMe-oF)的形式进行了扩展,以支持机架级(rack-scale)的远程SSD池。 业界普遍认为,这种新的NVMe-oF模式将取代iSCSI协议,作为计算服务器和存储服务器之间的通信标准,并成为解耦合存储(disaggregated storage)方案的默认协议。然而,NVMe-oF最初的部署选项仅限于光纤通道(Fibre Channel)和远程直接内存访问(Remote Direct Memory Access,RDMA)结构。 如果我们能够
[嵌入式]
为什么NVMe/<font color='red'>TCP</font>是数据中心的更优选择
LabVIEW中TCP/IP网络通讯模块小谈
介绍 LabVIEW具有强大的网络通讯功能,这种功能使得LabVIEW的用户可以很容易编写出具有强大网络通讯能力的LabVIEW应用软件,实现远程虚拟仪器。LabVIEW支持TCP/IP协议、UDP协议等等。而且NI公司还开发了一种DATASOCKET技术,很大程度上的简化甚至免除了网络通讯编程,用户很容易地在互联网实现高速数据交换。 TCP/IP协议(传输控制协议/互联网络协议)是INTERNET最基本的协议,由于INTERNET的广泛使用,使得TCP/IP成了事实的标准。对于该协议的介绍不是本文的重点,相关信息可以参阅其他的资料。 TCP节点介绍 在LabVIEW中,可以采用TCP节点来实现基于TCP协
[测试测量]
LabVIEW中<font color='red'>TCP</font>/IP网络通讯模块小谈
Modbus通信协议在分布式控制系统中的应用
一、引言     现代工业的迅速发展,不断促进着自控技术及设备创新的日新月异。当前,DCS、IPC、PLC及智能仪表已广泛应用到工厂现场生产控制系统当中,并发展到由上述设备相互协同、共同面向整个生产过程的分布式工业自动控制系统。在此系统中,现场通信技术堪称关键。但由于开始没有统一的通信协议标准,各厂商自控产品通信协议各自为政,通信网络各成体系,造成不同厂家的自控设备网络连接困难甚至不能连接,给分布式控制系统的灵活应用造成了不便。一些公司为适应市场,纷纷将各自的协议标准公开化,可无偿使用。经过多年发展,一些通信协议如Modicon公司的Modbus通信协议因其兼容性、易用性的优势,在工业领域得到了广泛应用,已成为一种通用的工业通
[嵌入式]
基于DSP和CAN总线的RTU的设计
  远程测控终端(RTU) 作为体现“ 测控分散、管理集中” 思路的产品从20 世纪80 年代起介绍到中国并迅速得到广泛应用, 应用在变电站上的RTU 主要是实现现场电力参数的远程采集与控制命令的远程发布, 并将信息或结果组装成报文, 上送到控制中心或调度端。纵观国内外的RTU 产品, 逐步从集中式控制结构向模块化、分散式、开放性的系统控制结构发展。由于变电站的数据量和信息量大, 实时性要求高, 因此将具有强大、高效的运算能力和丰富外围接口电路的DSP 应用于RTU 的设计方案; 同时引入了开放性结构的CAN 现场总线引入, 运用于变电站现场数据的通信并由它组成了一个开放、可靠和实时的监控系统。    1 系统总体结构设计
[嵌入式]
Softing推出新的软件模块,将Modbus TCP控制器连接到工业物网
Softing推出新的软件模块,用于将Modbus TCP控制器连接到工业物联网应用 Softing拓展了基于Docker技术的edgeConnector产品系列。新的edgeConnector Modbus是一款灵活的Docker容器应用程序,用于连接Modbus TCP控制器。 图:edgeConnector Modbus支持创新的工业边缘解决方案。(来源: Softing Industrial) 继用于连接SIMATIC S7控制器的edgeConnector Siemens和用于从SINUMERIK 840D控制器访问数据的edgeConnector 840D两款产品之后,Softing又推出了edgeCo
[物联网]
Softing推出新的软件模块,将<font color='red'>Modbus</font> <font color='red'>TCP</font>控制器连接到工业物网
STM32移植lwip之建立tcp客户端
本篇目标:在之前能ping通pc机的工程基础上搭建tcp客户端,并可以主动发数据给pc机,同时也能与pc机收发数据,并在网络调试工具上显示 材料准备: 基础工程:修改后能ping通pc机的工程( STM32官方移植lwip修改代码 ) 调试工具:用来调试tcp连接下的数据接收( 网络调试助手 ) 搭建工程:最终搭建好tcp客户端数据接收的工程( tcp客户端建立工程 ) 搭建TCP客户端 搭建TCP客户端的过程与上一章TCP服务器也相似,所以尽量把重点的地方加粗显示来区别 在搭建TCP客户端之前可以先理一下概念,客户端与服务器的区别: 客户端:主动建立tcp去连接目标IP 服务器:拥有静态IP,能让其他设备被动连接
[单片机]
基于8位机嵌入式TCP通信速度研究方案
  0 引 言   长久以来,串行RS 232和RS 485通信技术一直是自动化仪器、仪表中常用的通信标准。但近年来,随着计算机技术、网络技术、通信技术的发展及其在工业自动化系统中的应用,使得工业自动化系统和仪器、仪表领域加速了向智能化、数字化和网络化方向发展的进程。出现了电力线通信技术、无线红外和蓝牙通信技术、基于USB接口的通信技术、现场总线技术以及嵌入式Internet接入技术等新技术。其中基于嵌入式Internet接入技术的网络化仪器是近年提出的全新概念,它是仪器检测技术与现代计算机技术、网络通信技术、微电子技术深度融合的产物口。检测仪器接入Internet,成为执行测量和控制任务的仪器Web站点,这种网络化仪器可以像普
[单片机]
基于8位机嵌入式<font color='red'>TCP</font>通信速度研究方案
MODBUS协议实现PLC“主或从通讯”的自我理解
          Modbus协议将寄存器分成了4个区域,但每一个寄存器都是16位的数据存储器,00000~09999代表线圈(DO)类地址,10000~19999代表触点(DI)类地址、 30000~39999代表输入寄存器(AI)类地址、40000~49999代表输出寄存器(AO)类地址。           当PLC主站和变频器、私服驱动器、温控器或其他遵从MODBUS的从站通讯时,  会出现3种情况:                 (1)比如"台达",它没有能力自己开发专用协议,就用Modbus作为自己的协议,这样的话,它有Modbus指令,只需要设置通讯格式字后,用指令直接读从站寄存器地址就可以了。(台达主站)    
[嵌入式]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved