Modbus通讯协议 通讯格式及模式区别的疑问
回答第一个问题: ASCII协议的起始和结束有固定字符表示,比如收到":"就认为报文开始,收到回车就认为报文结束。其报文均为ASCII码可见字符,因此较16进制字节使用效率较低。RTU协议使用数据传输的间隔表示数据的起始和结束,报文前有大于3.5个字节的空闲那么认为报文开始,报文后有3.5以上个字节的间隔就认为报文结束。第二个问题: 一个字节8位的长度指的是数据存储占用的寄存器空间,而问题中提到的传输格式中单个字节加起始位、校验位、停止位后长度大于8,这个和一个字节8个位没有冲突。串行通信为了确保数据传输的准确性、完整性,在每发送一个字节有效数据的时候前后加上了起始位、校验位、停止位。也就是说为了有效准确的传输一个8位数据,在通信链路中实际传输了11个位

MODBUS-RTU通信协议规定,主站发送请求报文由哪几部分组成
摘要Modbus协议是一种已广泛应用于当今工业控制领域的通用通讯协议。通过此协议,控制器相互之间、或控制器经由网络(如以太网)可以和其它设备之间进行通信。Modbus协议使用的是主从通讯技术,即由主设备主动查询和操作从设备。一般将主控设备方所使用的协议称为Modbus Master,从设备方使用的协议称为Modbus Slave。典型的主设备包括工控机和工业控制器等;典型的从设备如PLC可编程控制器等。Modbus通讯物理接口可以选用串口(包括RS232、RS485和RS422),也可以选择以太网口。其通信遵循以下的过程:● 主设备向从设备发送请求● 从设备分析并处理主设备的请求,然后向主设备发送结果● 如果出现任何差错,从设备将返回一个异常功能码此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一控制器请求访问其它设备的过程,如果回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式。当在一Modbus网络上通信时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成反馈信息并用Modbus协议发出。在其它网络上,包含了Modbus协议的消息转换为在此网络上使用的帧或包结构。这种转换也扩展了根据具体的网络解决节地址、路由路径及错误检测的方法。Modbus的工作方式是请求/应答,每次通讯都是主站先发送指令,可以是广播,或是向特定从站的单播,从站响应指令,并按要求应答,或者报告异常。当主站不发送请求时,从站不会自己发出数据,从站和从站之间不能直接通讯。ModBus协议是应用层报文传输协议(OSI模型第7层),它定义了一个与通信层无关的协议数据单元(PDU),即PDU=功能码+数据域,功能码1byte,数据域不确定。ModBus协议能够应用在不同类型的总线或网络。对应不同的总线或网络,Modbus协议引入一些附加域映射成应用数据单元(ADU),即ADU=附加域+PDU,例如modbus tcp/ip ADU=MBAP+ADU。二、Modbus 通讯方式1、Modbus三种通讯方式Modbus有下列三种通信方式:(1)、以太网:对应的通信模式是MOD

什么是“标准MODBUS协议”
Modbus 协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。MODBUS协议的一些相关介绍:1,MODBUS协议支持传统的RS-232、RS-422、RS-485和以太网设备。许多工业设备,包括PLC,DCS,智能仪表等都在使用Modbus协议作为他们之间的通讯标准。2,Modbus 协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一控制器请求访问其它设备的过程,如何回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式。3,Modbus 协议描述了一控制器请求访问其它设备的过程,如何回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式。4,在Modbus网络上转标准的Modbus口是使用一RS-232C兼容串行接口,它定义了连接口的针脚、电缆、信号位、传输波特率、奇偶校验。5,当在一Modbus网络上通信时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成反馈信息并用Modbus 协议发出。
与类似西门子的PPI协议不同,MODBUS工业数据通讯协议,是不属于任何厂商所有的通用工业数据通讯协议,具有协议简单,快捷,通用等优点,并被工业自动化产品厂商广泛接收和支持,现在已经成为了一种行业“标准”。 MODBUS协议定义了标准的模拟量和开关量数据读写指令和数据报文格式,并可在串口,以太网口,等各种数据信道上使用。

Modbus的有关定义和理解
Modbus 基于串口;Modbus Plus基于网络,它有四层:Modbus、LLC、MAC、HDLC;通信方式:ASCII(每个八位字节用2个ASCII码表示,如128,表示成‘8’和‘0’,LRC校验)、RTU(二进制,CRC校验);报文格式:(RTU方式)3.5 characters time延时、地址(1字节)、功能码(1字节)、数据(n字节)、CRC(2字节)、3.5 characters time延时;主站发送报文间隔时间>3.5 characters time,否则认为是一封报文;Query和Response格式一样;Query读, Response:所要数据;Query写, Response:前6个字节与Query一样;寄存器起始地址、个数和数据:高字节在前、低字节在后;而CRC是低字节在前、高字节在后串行字节格式:启动(1位)、数据(8位)、停止(2位);或启动(1位)、数据(8位)、奇/偶(1位)、停止(1位);地址:0~247,0:广播;寄存器号=实际号-1,每种类型寄存器的高位不变号作为隐含可不表示;Slave device对Query的处理:⑴未收到Query,no response;⑵收到Query但校验错,no response;⑶正确收到Query但不能处理,Exception response;Exception response格式:地址(1字节)、原功能码+80H(1字节)、ExceptionCode(1字节)、CRC(2字节)ExceptionCode见P103/121⑷正确收到Query且能处理,normal response;功能码01~24,见P31/121~;其中08为diagnostic function code,详见P81/121;08码Query格式:地址(1字节)、功能码(1字节)、Subfunction Code(1个字节)、数据、CRC(2字节);最大参数见P106/121~;收发时间估算:P112/121~;CRC/LRC计算:P115/121~ 。
第一张图是表达 modbus和其他通讯设施或协议 的联合通讯 第二张图 modbus只是一种传输模式,功能码可以自定义,数据区也可以自己规范。 不要被规矩套死。就这些
Modbus协议最初由Modicon公司开发出来,现在Modbus已经是工业领域全球最流行的协议。协议支持传统的RS-232、RS-422、RS-485和以太网设备。许多工业设备,包括PLC,DCS,智能仪表等都在使用Modbus协议作为他们之间的通讯标准。 Modbus协议包括ASCII、RTU、TCP等,并没有规定物理层。此协议定义了控制器能够认识和使用的消息结构,而不管它们是经过何种网络进行通信的。标准的Modicon控制器使用RS232C实现串行的Modbus。

Modbus的报文格式
Modbus ASCII或RTU模式仅使用于标准的Modbus协议串行网络,它定义了在这些网络上连续传输的消息段的每一个字节,以及决定怎样将信息打包成消息域和如何解码等功能。当控制器设为在Modbus网络上以ASCII模式通信时,在消息中每个8位(bit)的字节都将作为两个ASCII字符发送。这种方式的主要优点是字符发送的时间间隔可达到1s而不产生错误。在ASCII模式下,消息以冒号(:)字符(ASCII码0x3A)开始,以回车换行符结束(ASCII码0x0D,0x0A)。消息帧的其他字段可以使用的传输字符是十六进制的09,AF。处于网络上的Modbus设备不断侦测 “:” 字符,当有一个冒号接收到时,每个设备进入解码阶段,并解码下一个字段(地址域)来判断是否是发给自己的。消息帧中的字符间发送的时间间隔最长不能超过1s,否则接收的设备将认为发生传输错误。传输设备将Modbus报文放置在带有已知起始和结束电的消息帧中,这就要求接收消息真的设备在报文的起始处开始接收,并且要知道报文传输何时结束。另外还必须能够检测到不完整的报文,且能够清晰地设置错误标志。在RTU模式中,消息的发送和接收以至少3.5个字符时间的停顿间隔为标志。实际使用中,网络设备不断侦测网络总线,计算字符间的停顿间隔时间,判断消息帧的起始点。当接收到第一个域(地址域)时,每个设备都进行解码以判断时否时发给自己的。在最后一个传输字符结束之后,一个至少3.5个字符时间的停顿标定了消息的结束,而一个新的消息可以在此停顿后开始。另外,在一帧报文中,必须以连续的字符流发送整个报文帧。如果两个字符之间的空闲间隔大于1.5个字符时间,那么认为报文帧不完整,该报文将丢失。简单来说,3.5个字符时间间隔的目的是作为区别前后两帧数据的分隔符。例如:串口参数设置为1位起始位,8位数据位,1位校验位,1位停止位。这样1个字符就博爱阔11位,那么3.5个字符就是3.5*11=38.5位。此时波特率设置位9600bps,即每秒传输数据为9600个位的数据。那么换算一下,38.5个二进制位数据需要的时间就是38.5*(1000/9600)=4.0104167ms。那么在波特率9600bps的情况下,相邻的两帧数据的起始和结束之间至少有≥4.0104167ms的时间间隔。为了时间RTU通信中的时间间隔管理,定时器将引起大量的中断处理,在较高的通信波特率下将导致CPU沉重负担。为此,规定当波特率≤19200bps时,需要严格遵守时间间隔。在波特率>19200bps时,时间间隔使用固定值。地址域即通信帧中的地址字段,内容为从设备地址。Modbus消息帧的地址域包含2个字符(ASCII模式)或者1个字节(RTU模式)。从设备的地址是0~247(十进制),单个设备的实际地址范围是1~247,地址0作为广播地址。主设备发送消息时将从设备地址放到地址域中以便从设备识别此消息是否是发给自己的。从设备回复主设备时会将自己的地址放到回应消息的地址域中以便主设备识别是哪个从设备返回的数据。功能吗用于表示消息帧的功能。功能码域由1个字节构成,取值范围为1~255(十进制)。从设备根据功能码执行相应的功能,执行完成后在响应消息帧中设置同样的功能码。如果出现异常,返回的消息帧中将功能码最高位(MSB)设置为1。数据域存放功能码需要操作的具体数据。数据域以字节为单位,长度可变。在Modbus串行通信中,更具传输模式(ASCII和RTU)的不同,差错校验域采用了不同的校验方式。在Modbus TCP/IP协议中,串行链路中的主/从设备分别演变位客户端/服务器端设备。Modbus协议在TCP/IP上的实现实在TCP/IP协议层上的应用,它需要一个完整的TCP/IP协议栈作为支撑,Modbus TCP/IP服务器端通常使用端口502作为接收报文的端口。为了便于传输或者提取各报文,保证报文传输的完整性,Modbus协议在应用数据单元(ADU)中引入了附加字段。如串行链路中的报文分隔符+LRC校验和时间间隔+CRC校验。同样的,在TCP/IP网络上的Modbus协议也引入了一个称为MBAP(Modbus Application Header)报文头的字段。Modbus TCP/IP协议最大帧数据长度为260字节,其中字节0~6构成MBAP报头。单元标识符如果是Modbus服务器连接到Modbus+或Modbus串行链路子网,并通过一个网桥或网关配置这个服务器的IP地址,则Modbus单元标识符对识别连接到网桥或网关后的子网的从站设备是必须的。TCP连接中的目的IP地址识别了网桥本身的地址,而网桥则使用Modbus单元标识符将请求转交给正确的从站设备。对单纯的Modbus TCP/IP设备来说,利用IP地址即可寻址Modbus服务器端设备,此时Modbus单元标识符是无用的,必须使用0xFF填充。当对直接连接到TCP/IP网络上的Modbus服务器寻址时,建议不要在“单元标识符”域使用有效的Modbus从站地址。查询与响应报文举例在Modbus TCP/IP模式下,不需要校验字段。但在特殊场合,例如串行Modbus协议转Modbus TCP的情况下,串行协议数据可以完整的装在到Modbus TCP协议的数据字段,这时CRC或者LRC差错校验字段仍然存在。例如Modbus RTU Over TCP/IP或modbus ASCII Over TCP/IP等。

本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/82197.html。