MDBUS入门讲解新手必看
MODBUS入门讲义

主 机 从机 从机 从机 从机
Mod bus协议
协议定义的内容
协议定义的主机查询格式,包括:从机的编址方法 (或广播),要求动作的功能代码,传输数据和错误校 验等。 协议定义的从机响应格式,包括:动作确认,返回 数据和错误校验等;如果从机在接收信息时发生错误或 不能完成主机要求的动作时,它还将产生一个故障信息 作为响应。
编码系统:8-位二进制 字节的位: 1个开始位
8个数据位(首先发送最低位) 1个奇偶校验位;无校验时则无这一位 1或2个停止位(分别在有和无校验时)
错误校验域:循环冗余校验(CRC)
Mod bus协议
RTU的帧结构(1)
发送设备将Mod bus信息放在一个起点和终点已知的 框架中。这样接收设备就知道从信息的起始点开始取出 其中的地址信息,确定用于哪个设备(广播信息针对所 有的设备),并判断信息是否结束。不完整的信息将会 被发现并当作故障处理。
两种串行传输模式
在标准Mod bus网络,控制器可以配置为ASCII 或RTU或中的任意一种通讯模式。两种模式均定义 了传输信息域中的每一位含义,决定了信息的组织 发送和解码方式。
Mod bus协议
RTU传输模式
RTU (即远程终端单元)模式中,信息里的每个8 位字节均包括两个4位的十六进制字符,其字节格式为:
Mod bus协议
从机响应信息
正常情况下,从机响应的功能代 码与查询的功能代码相对应,数据区 包含根据查询要求收集到的数据,如 寄存器的值或状态等。 当发生通讯错误时,从机响应的 功能代码就转为指示该响应为故障响 应,数据区则包含故障描述代码。 错误校验域允许主机确认信息内 容是否有效。
Mod bus协议
Mod bus协议
modbus协议的用法(一)

modbus协议的用法(一)Modbus协议使用指南Modbus协议是一种用于通信和数据传输的工业标准协议。
它广泛应用于自动化系统中,允许设备之间进行数据交换。
以下是一些关于Modbus协议的用法和详细讲解。
Modbus协议概述Modbus协议是一种开放的通信协议,由Modicon公司于1979年开发。
它基于串行通信,支持多种传输方式,如串口、以太网和无线。
Modbus协议采用了主从结构,即一个主站控制多个从站。
数据传输时,主站发送查询指令给从站,从站返回相应的数据。
Modbus协议用途Modbus协议在工业自动化领域有广泛的应用,如监控系统、PLC控制器和传感器等。
以下是一些常见的Modbus协议用法:1.读取从站数据:主站可以通过读取功能码,从从站读取数据,如传感器的温度、湿度等。
2.写入从站数据:主站可以通过写入功能码,向从站写入数据。
例如,设置PLC的输出状态或控制器的参数。
3.设备间通信:Modbus协议可用于多个设备之间的通信。
主站可以发送查询指令给从站,并接收从站返回的数据。
4.网络通信:Modbus协议还可通过以太网进行通信。
使用TCP/IP协议的Modbus通信可实现远程监控和控制。
Modbus协议功能码Modbus通信中,功能码用于定义要执行的操作类型。
以下是常见的Modbus功能码:1.读取离散输入(功能码2):用于从从站读取离散输入的状态。
每个离散输入表示一个开关状态,如按钮的按下状态。
2.读取保持寄存器(功能码3):用于从从站读取保持寄存器中的数据。
保持寄存器是用于保存数据的存储区域。
3.写入单个寄存器(功能码6):用于向从站写入单个寄存器的值。
适用于控制器的参数设置。
4.写入多个寄存器(功能码16):用于向从站写入多个寄存器的值。
适用于批量写入数据。
Modbus协议传输方式Modbus协议支持多种传输方式,可根据需求选择。
以下是常见的Modbus传输方式:1.串口传输:使用RS-232或RS-485等串口进行通信。
Modbus协议讲解

Modbus协议讲解一、概述Modbus协议是一种通信协议,用于在自动化领域中传输数据。
它是一种简单且广泛应用的协议,被用于连接不同设备和系统,如工业控制系统、仪器仪表和数据采集设备等。
本文将详细讲解Modbus协议的基本原理、通信方式以及数据传输格式等内容。
二、Modbus协议的基本原理Modbus协议基于主从架构,其中主设备负责发起通信请求,而从设备则负责响应请求并提供数据。
通信可以通过串行或以太网等方式进行。
三、Modbus协议的通信方式1. Modbus RTU通信方式Modbus RTU是一种串行通信方式,使用二进制编码进行数据传输。
在Modbus RTU通信中,每个数据帧由起始位、从站地址、功能码、数据和校验位组成。
2. Modbus ASCII通信方式Modbus ASCII也是一种串行通信方式,但使用ASCII编码进行数据传输。
与Modbus RTU相比,Modbus ASCII通信方式更易于调试,但传输速度较慢。
3. Modbus TCP通信方式Modbus TCP是一种基于以太网的通信方式,使用TCP/IP协议进行数据传输。
与串行通信方式相比,Modbus TCP具有更高的传输速度和更大的通信距离。
四、Modbus协议的数据传输格式1. 寄存器地址Modbus协议使用寄存器地址来标识设备中的数据。
寄存器地址可以是输入寄存器(IR)、保持寄存器(HR)、离散输入寄存器(DI)或线圈寄存器(CO)。
2. 功能码功能码用于指定通信请求的类型。
常见的功能码包括读取单个寄存器(03H)、写入单个寄存器(06H)和读取多个寄存器(10H)等。
3. 数据格式Modbus协议支持多种数据格式,如16位整数、32位整数、浮点数等。
数据格式的选择取决于具体的应用需求。
五、Modbus协议的应用场景1. 工业控制系统Modbus协议广泛应用于工业控制系统中,用于实现设备之间的数据交换和控制命令传输。
MDBUS入门讲解新手必看

MODBUS详解精简版一、基本术语1、??字word、字节byte、位bit1 word =2 byte;1 byte = 8 bit.2、??校验码校验码是由前面的数据通过某种算法得出的,用以检验该组数据的正确性。
代码作为数据在向计算机或其它设备进行输入时,容易产生输入错误,为了减少这种输入错误,编码专家发明了各种校验检错方法,并依据这些方法设置了校验码。
常用的校验有:累加和校验SUM、字节异或校验XOR、纵向冗余校验LRC、循环冗余校验CRC……3、??协议和接口协议是一种规范和约定,是一种通讯的语言,规定了通信双方能够识别并使用的消息结构和数据格式。
接口是一种设备的物理连接,指的是在物理层上的定义,像RS422/RS232/RS485/以太网口等。
协议和接口并不是一个概念,不能混淆。
Modbus协议一般运行在RS485物理接口上,半双工的,是一种主从协议。
二、Modbus协议概述Modbus协议是应用于电子控制器上的一种通用语言,实现控制器之间、控制器由网络和其它设备之间的通信,支持传统的RS232/RS422/RS485和最新发展的以太网设备。
它已经成为一种通用工业标准。
有了它,不同厂商生产的控制设备可以连成工业网络,进行集中控制。
此协议定义了一个控制器能认识使用的消息结构。
Modbus协议是一种请求——应答方式的协议。
三、两种传输方式1、??ASCII模式ASCII:美国标准信息交换代码特点:①????消息中每个8bit都作为两个ASCII字符发送②?1个起始位、7个数据位、1个奇偶校验位和1个停止位(或者两个停止位)③??????错误检测域是LRC检验④?字符发送的时间间隔可达到1秒而不会产生错误2、??RTU模式RTU:远程终端单元特点:线圈(DO)地址:00000~09999触点(DI)地址:10000~19999输入寄存器(AI)地址:30000~39999输出寄存器(AO)地址:40000~49999由于上述各类地址是唯一对应的,因此有些资料就以其第一个数字区分各类地址,即:0x代表线圈(DO)类地址,1x代表触点(DI)类地址、3x代表输入寄存器(AI)类地址、4x代表输出寄存器(AO)类地址。
moudbus协议基础知识

moudbus协议基础知识嘿,朋友!咱们今天来聊聊 Modbus 协议这个神奇的东西。
你知道吗?Modbus 协议就像是一座无形的桥梁,连接着各种工业设备,让它们能够顺畅地交流和协同工作。
先来说说它是啥。
Modbus 协议啊,简单说,就是一种通信规则。
就好比我们在学校里,有上课不能说话、回答问题要举手这样的规则。
Modbus 协议规定了数据怎么发送、怎么接收,让不同的设备能“听懂”彼此的话。
它有两种常见的传输方式,一个是串行的 RTU 模式,另一个是TCP 模式。
这就好比两个人交流,RTU 模式像是在写信,一个字一个字认真写清楚;TCP 模式呢,就像是打电话,直接实时对话。
Modbus 协议中的数据类型也不少,像什么位、字节、字、双字,这是不是有点让你头疼?别慌!其实就好比你去超市买东西,位就像一颗糖果,字节是一小包零食,字是一大袋零食,双字就是一大箱零食,不同的大小装着不同的信息。
再说说地址,Modbus 协议中的地址就像是每个设备的“门牌号”。
你要找到对应的设备,就得先知道它的地址。
这就跟你去朋友家做客,得先知道他家的门牌号一样,不然可就找错地方啦!还有功能码,这可重要啦!它决定了设备要执行的操作,是读取数据还是写入数据,是控制设备启动还是停止。
功能码就像是给设备下的命令,告诉它该干啥。
在实际应用中,Modbus 协议可厉害着呢!比如说在工厂里,各种传感器、控制器通过 Modbus 协议连接在一起,实时监测生产过程中的温度、压力等参数,然后根据这些数据进行自动控制,是不是很神奇?想象一下,如果没有 Modbus 协议,这些设备就像一群各自为政的“散兵游勇”,没法协同作战,那生产效率得多低呀!总之,Modbus 协议虽然看起来有点复杂,但只要咱们耐心去了解,就会发现它其实也没那么难。
掌握了它,就像是掌握了一门神奇的语言,能让工业设备乖乖听话,为我们的生产和生活带来便利。
朋友,你准备好深入探索这个奇妙的世界了吗?。
modbus 协议详解(一)

modbus 协议详解(一)Modbus 协议详解什么是 Modbus 协议?•Modbus 协议是一种通信协议,用于在不同设备之间实现数据传输和通信。
•Modbus 协议最初由 Modicon 公司于 1979 年开发,用于在可编程逻辑控制器 (PLC) 和外部设备之间进行通信。
•Modbus 协议被广泛应用于工业自动化领域,包括监控系统、仪器仪表、传感器和执行器等设备之间的通信。
Modbus 协议的特点•简单:Modbus 协议采用了简单而有效的通信方式,易于实施和理解。
•开放:Modbus 协议是开放的标准,可以由不同厂商的设备实现和集成。
•灵活:Modbus 协议支持多种物理介质,包括串口、以太网和无线网络等。
•可靠:Modbus 协议具有重试机制和错误校验,确保数据的可靠传输。
Modbus 协议的工作原理Modbus 协议基于主从结构,在系统中通常包括一个主站和多个从站。
1.主站(Master):主站负责发起通信请求并控制从站的操作。
2.从站(Slave):从站被动地响应主站的请求,并提供所需的数据或执行相应的操作。
通信过程如下:1.主站向从站发送读取或写入请求。
2.从站接收到请求后,根据请求进行相应的数据读取或写入操作。
3.从站将读取的数据或写入的确认信息返回给主站。
4.主站接收到从站的响应后,根据需要进行后续的操作或请求。
Modbus 协议的数据格式Modbus 协议定义了数据的格式和通信规范。
帧格式Modbus 协议使用字节为单位进行传输,通常采用以下帧格式:•起始符:1 字节,表示帧的起始。
•地址:1 字节,指定主站或从站的地址。
•功能码:1 字节,指定所需的功能,如读取、写入等。
•数据:N 字节,包含读取或写入的数据。
•校验:2 字节,用于校验帧的完整性和准确性。
•结束符:1 字节,表示帧的结束。
功能码Modbus 协议定义了多个功能码,用于不同类型的操作和通信需求:•读取操作:–03H:读取保持寄存器的值。
MODBUS协议详细讲解

MODBUS协议详细讲解MODBUS协议是一个常用的工业领域通信协议,用于在不同设备之间进行数据传输和通信。
它具有简单、易于实现和可靠的特点,被广泛应用于现代工业自动化系统中。
一、MODBUS协议的基本原理MODBUS协议使用主从结构进行通信,其中主机通常是一个上位机(如计算机),而从机则是各种设备(如传感器、控制器等)。
主机通过发送请求命令来获取或修改从机中的数据,而从机则通过相应命令来响应主机的请求。
这种简单的请求-响应机制使得MODBUS协议非常易于理解和实现。
二、MODBUS协议的消息格式1. MODBUS RTU格式:MODBUS RTU格式是MODBUS协议中最常用的一种格式。
它使用二进制编码,每个字节之间不使用分隔符。
一个MODBUS RTU消息包括以下几个部分:- 从机地址:指定要操作的从机设备- 功能码:表示执行的操作类型(读取数据、写入数据等)- 数据域:包含具体的数据信息- CRC校验:用于检测数据的完整性2. MODBUS ASCII格式:MODBUS ASCII格式使用ASCII码来表示消息,相比RTU格式更容易诊断和调试。
它与RTU格式相比,消息包含的信息量更大,但传输效率较低。
三、MODBUS协议的功能码在MODBUS协议中,功能码用于指示主机要执行的操作类型,常用的功能码包括:- 读取线圈状态(功能码01)- 读取离散输入状态(功能码02)- 读取保持寄存器(功能码03)- 读取输入寄存器(功能码04)- 写单个线圈(功能码05)- 写单个寄存器(功能码06)- 写多个寄存器(功能码16)四、MODBUS协议的应用领域MODBUS协议被广泛应用于工业自动化系统中,包括以下几个方面:1. 监控和控制:MODBUS协议可以用于监控和控制设备的状态和操作。
2. 数据传输:MODBUS协议支持在不同设备之间传输数据,实现数据的共享和交换。
3. 设备管理:MODBUS协议可用于管理和配置各种设备,例如设备的参数设置和固件更新等。
MODBUS协议详细讲解

MODBUS协议详细讲解MODBUS协议是一种用于工业自动化领域的通信协议,它被广泛应用于各种设备间的数据交换和通信。
本文将详细介绍MODBUS协议的原理、结构和工作方式,以及其常见的应用场景和优势。
一、协议概述MODBUS协议是一种基于主从结构的通信协议,它定义了一系列规范和命令格式,用于实现不同设备之间的数据传输和通信。
该协议最早由Schneider Electric公司于1979年提出,目前已成为工业自动化领域最常用的通信协议之一。
MODBUS协议主要分为MODBUS ASCII和MODBUS RTU两种传输模式,其中MODBUS RTU是应用最广泛的一种模式,采用二进制编码来进行数据传输,具有较高的效率和可靠性。
二、协议结构MODBUS协议主要由两个部分组成:应用层和传输层。
1. 应用层:应用层定义了MODBUS协议中的命令格式和数据格式。
它主要包含了读取和写入数据的命令,如读取线圈状态、读取输入状态、读取保持寄存器和读取输入寄存器等。
这些命令可以通过主设备向从设备发送,并获取相应的响应。
2. 传输层:传输层定义了MODBUS协议中数据的传输方式和物理层面的连接。
MODBUS RTU采用串行通信方式,使用RS-485或RS-232接口进行连接,而MODBUS ASCII则采用ASCII字符进行传输。
三、工作方式MODBUS协议的工作方式通常涉及一个主设备和多个从设备之间的通信。
1. 主设备:主设备负责发送命令并接收从设备的响应。
它可以是一个计算机、PLC或其他支持MODBUS协议的设备。
2. 从设备:从设备接收主设备发送的命令,并做出相应的响应。
从设备通常是传感器、执行器、数据采集设备等。
在通信过程中,主设备通过MODBUS协议中定义的命令向从设备发送读取或写入数据的请求,从设备接收到命令后进行处理,并将结果通过响应报文返回给主设备。
四、应用场景MODBUS协议在工业自动化领域有广泛的应用,特别适用于以下场景:1. 监控系统:MODBUS协议可用于实时监控和控制工业设备,如温度监测、湿度监测、电流监测等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、基本术语
1、字word、字节byte、位bit
1 word =
2 byte;
1 byte = 8 bit.
2、校验码
校验码是由前面的数据通过某种算法得出的,用以检验该组数据的正确
性。
代码作为数据在向计算机或其它设备进行输入时,容易产生输入错
误,为了减少这种输入错误,编码专家发明了各种校验检错方法,并依
据这些方法设置了校验码。
常用的校验有:累加和校验SUM、字节异或校验XOR、纵向冗余校验
LRC、循环冗余校验CRC……
3、协议和接口
协议是一种规范和约定,是一种通讯的语言,规定了通信双方能够识别
并使用的消息结构和数据格式。
接口是一种设备的物理连接,指的是在物理层上的定义,像
RS422/RS232/RS485/以太网口等。
协议和接口并不是一个概念,不能
混淆。
Modbus协议一般运行在RS485物理接口上,半双工的,是一种主从协议。
二、Modbus协议概述
Modbus协议是应用于电子控制器上的一种通用语言,实现控制器之间、控制器由网络和其它设备之间的通信,支持传统的RS232/RS422/RS485和最新发展
的以太网设备。
它已经成为一种通用工业标准。
有了它,不同厂商生产的控制设备可以连成工业网络,进行集中控制。
此协议定义了一个控制器能认识使用的消息结构。
Modbus协议是一种请求——应答方式的协议。
三、两种传输方式
1、 ASCII模式
ASCII:美国标准信息交换代码
特点:
①消息中每个8bit都作为两个ASCII字符发送
② 1个起始位、7个数据位、1个奇偶校验位和1个停止位(或者两个停止位)
③错误检测域是LRC检验
④字符发送的时间间隔可达到1秒而不会产生错误
2、 RTU模式
RTU:远程终端单元
特点:
①消息中每个8bit字节包含两个4bit的十六进制字符,因此,在波特率相同的情况下,传输效率比ascii传输方式大
② 1个起始位、8个数据位、1个奇偶校验位和1个停止位(或者两个停止位)
③错误检测域是CRC检验
④消息发送至少要以3.5个字符时间的停顿间隔开始。
整个消息帧必须作为一连续的流传输。
如果在帧完成之前有超过1.5个字符时间的停顿时间,接收设备将刷新不完整的消息并假定下一个字节是一个新消息的地址域。
同样地,如果一个新消息在小于3.5个字符时间内接着前个消息开始,接收的设备将认为它是前一消息的延续。
1.5~3.5个字符间隔就算接收异常,只有超过3.5个字符间隔才认为帧结束。
目前常用的是RTU传输方式,因为下面的将以RTU传输方式为例.
1、从机地址范围:1~247,0为广播地址,占一个字节。
理论上Modbus协议可以接247个从机,但若用于485接口上则由于485接口的限制,在没有中继情况下,最多可以接32个从机。
2、功能码,1~255,占一个字节,有些代码适用于所有的控制器,有些事应用于某种控制器,还有些保留以备后用。
电力系统中modbus协议的数据主要分为四类:离散量输入、线圈状态、输入寄存器、保持寄存器。
离散量输入对应开入(遥信),线圈状态对应哪开出(遥控),输入寄存器对应只读的模拟量(遥测),保持寄存器对应可读可写的模拟量(遥调)。
从机若正常返回,则功能不变,若错误返回,则功能码的最高位为1,且从机会将一独特的代码放到回应消息的数据域中,以便于告诉主设备发生了什么错误。
主设备应用程序得到异议的回应后,典型的处理过程是重发消息,或者诊断发给从设备的消息并报告给操作员。
如03功能码,错误返回为83。
上表中是对应数据类型的标准功能码,但在实际应用中,厂家通常会根据实用性做些变通,但并不影响数据的读写。
3、寄存器起始地址
寄存器起始地址占两个字节,高字节在前,低字节在后。
Modbus协议中数据模型常用的有两种,带有4个独立块的modbus数据模型和仅有1个块的modbus数据模型,对于不同的数据模型参数地址
Modbus协议中寄存器地址从1开始,而实际存储中地址从0开始。
假如要读取寄存器编号为40005(4为块编号,5为modbus中寄存器地址)的寄存器的数据,则应把00 04放入报文的地址域。
寄存器定义,又名
如要读A相电压,则应将0x00 0x00放入寄存器起始地址域中。
4、要读取的寄存器个数
寄存器个数占两个字节,同样是高字节在前,低字节在后,下行报文使用。
5、数据的字节数
数据的字节数,占一个字节,上行报文用,不同于寄存器个数。
6、数据域
数据域占n个字节,也是高字节在前,低字节在后
7、CRC校验
CRC校验占两个字节,低字节在前,高字节在后
CRC常用函数如下:
unsigned char *puchMsg ;
unsigned short usDataLen ;
unsigned int CRC16(unsigned char puchMsg, unsigned int usDataLen) {
unsigned char uchCRCHi = 0xFF ;
unsigned char uchCRCLo = 0xFF ;
unsigned uIndex ;
while (usDataLen--)
{
uIndex = uchCRCHi ^ *puchMsgg++ ;
uchCRCHi = uchCRCLo ^ auchCRCHi[uIndex} ;
uchCRCLo = auchCRCLo[uIndex] ;
}
return (uchCRCHi << 8 | uchCRCLo) ;
}
设返回值为crc,则将crc>>8和crc&0xff依次放入报文中。
这里将高字节先入,是因为在crc校验函数中已经将高低字节做了调换。
五、报文实例
2、向40005寄存器中写入0x12,0x34,假设从机地址为1
下行报文:01 06 00 04 00 01 12 34 4a b0
Modbus协议定义的寄存器地址是5位十进制地址,即:
线圈(DO)地址:00000~09999
触点(DI)地址:10000~19999
输入寄存器(AI)地址:30000~39999
输出寄存器(AO)地址:40000~49999
由于上述各类地址是唯一对应的,因此有些资料就以其第一个数字区分各类地址,
即:0x代表线圈(DO)类地址,1x代表触点(DI)类地址、 3x代表输入寄存器(AI)类地址、4x代表输出寄存器(AO)类地址。
在实际编程中,由于前缀的区分作用,所以只需说明后4位数,而且需转换为4位十六进制地址。
关于MODBUS 各地址的说明
MODBUS 协议中设备类型为0x,1x,3x,4x,5x,6x,
还有4x_bit,3x_bit 等,下面分别说明这些设备类型在MODBUS 协议中支持哪些功能码。
0x:是一个可读可写的设备类型,相当于操作PLC 的输出点。
该设备类型读位状态的时候,发出的功能码为01H,写位状态的时候发出的功能码为05H。
1x:是一个只读的设备类型,相当于读PLC 的输入点。
读位状态的时候发出
的功能码为02H。
3x:是一个只读的设备类型,相当于读PLC 的模拟量。
读数据的时候,发出的功能码为04H。
4x:是一个可读可写的设备类型,相当于操作PLC 的数据寄存器。
当读数据的时候,发出的功能码是03H,当写数据的时候发出的功能码是10H。
5x:该设备类型与4x 的设备类型属性是一样的。
即发出读写的功能码完全一样。
不同之处在于,当为双字时,例如32_bit unsigned 格式的数据,使用5x 和4x 两种设备类型分别读取数据时,高字和低字的位置是颠倒的。
例如,使用4x 设备类型读到的数据是0x1234,那么使用5x设备类型读取的数据是0x3412。
6x:是一个可读可写的设备类型,读数据的时候发出的功能码也是03H,与4x 不同之处在于写数据的时候,发出的功能码为06H,即写单个寄存器的数据。
3x_bit:该设备类型支持的功能码与3x 设备类型完全一致,不同之处是,3x 是读数据,而3x_bit 是读数据中的某一个bit 的状态。
4x_bit:该设备类型支持的功能码与4x 设备类型完全一致,不同之处是,4x 是读数据,而4x_bit 是读数据中的某一个bit 的状态。