一文讲透Modbus协议

前言
Modbus是一种串行通讯协议,是Modicon公司(现在的施耐德电气 Schneider Electric) 于1979年为使用可编程逻辑控制器(PLC)通信而发表。Modbus已经成为工业领域通信协议事实上的业界标准,并且现在是工业电子设备之间常见的连接方式。
Modbus在工业环境下很流行,因为它是公开发布而免版税的。它是为工业应用开发的,与其他标准相比,它相对易于部署和维护,除了要传输的数据格式的大小外,几乎没有其他限制。Modbus使用RS485作为其物理层。
Modbus支持连接到同一网络的许多设备之间进行通信,例如,一个测量温度和湿度并将结果发送给服务器的系统中,Modbus通常用于在监控和数据采集(SCADA)系统中将计算机或服务器与远程终端单元(RTU)连接。许多数据类型是根据梯形逻辑(一种通过基于继电器逻辑电路图的图形来代表程序的一种编程语言)的行业用法机及其在驱动继电器中的用途来命名的: 单位物理输出称为线圈,单位物理输入称为离散输入或触点。

Modbus协议在RS232,RS422和RS485之上运行。有针对Modbus帧的基于IP链路层定义的 Modbus/TCP规范。Modbus协议基于Request(请求)/Response(响应)模型。
Modbus通信协议的类型
串行端口和以太网存在多种版本的Modbus协议,最常见的是:
- Modbus RTU
- Modbus ASCII
- Modbus TCP
- Modbus Plus

Modicon发布了基于主从架构的多点网络的Modbus通信接口。Modbus节点之间的通信通过发送请求和读取响应类型消息来实现。
Modbus协议及其物理媒体
Modbus是描述消息通信对话框的开放标准。
Modbus通过多种类型的物理介质进行通信,例如:
串行RS-232
串行RS-485
串行RS-422
以太网

最初的Modbus接口在RS-232串行通信上运行,但是大多数后来的Modbus实现使用RS-485,因为它允许:
距离更长。
更高的速度。
单个多点网络中可能有多个设备。

使用两线制通过串行RS-485物理介质进行主从Modbus通信 发送 并接收连接。

在简单的接口(如RS232或RS485)上,Modbus消息以纯格式通过网络发送,并且该网络将专用于Modbus通信。
但是,如果您的网络需要使用功能更广泛的网络系统(例如以太网上的TCP / IP)使用多个异构设备,则Modbus消息将以此物理接口规定的格式嵌入到以太网数据包中。
因此,在这种情况下,Modbus和其他类型的混合协议可以同时存在于同一物理接口上。

Modbus消息结构简介
Modbus的主要消息结构是点对点。Modbus能够在点对点和多点网络上运行。

Modbus设备使用Master-Slave(Ethernet称为Client-Server)技术进行通信,其中只有一个设备(Master 或Server)可以请求数据(称为查询)。
其他设备(Slaves或Clients)通过将请求的数据提供给主服务器或执行查询中请求的操作来进行响应。
从站是任何外围设备,例如I / O传感器,阀门,网络驱动器或其他测量类型的设备,它们处理信息并使用Modbus将其响应消息发送到主设备。
主机可以寻址单个从机或向所有从机发起广播消息。从站将分别对所有寻址到它们的消息查询返回响应,但不响应广播消息。
从站不会自行回复消息,而仅响应从主站发送的消息查询。
对于使用以太网的协议(例如Modbus TCP),任何设备都可以发出Modbus命令,因此所有设备都可以充当主设备,尽管通常只有一个设备充当主设备。

主站(Master)的查询将包括:
- 从站地址(广播地址)。
- 带有从站读取或写入数据命令的功能代码。
- 如果写命令是由主机发起的,则写命令为“数据”。
- 错误检查字段。
命令
Modbus命令可以指示Modbus设备执行以下操作:
- 更改其寄存器之一的值,该值将被写入线圈和保持寄存器。
- 读取I / O端口:从Discrete和Coil端口读取数据,
- 命令设备发送回其线圈和保持寄存器中包含的一个或多个值。
Modbus命令包含要使用的设备的Modbus地址(1到247)。即使其他设备可能会收到命令,只有被寻址的设备才会响应并执行该命令(例外是发送到节点0的特定可广播命令,该命令已执行但未确认)。
所有Modbus命令都包含校验和信息,以使接收者能够检测到传输错误。
错误检查
错误检查是主机或从机在传输或响应开始时创建的值,然后在接收到消息时进行检查以验证内容是否正确。

从站的响应包括:
- 确认请求的字段。
- 要返回的数据。
- 错误检查数据。
如果未发生错误,则从站的响应将包含所请求的数据。
如果从站接收到的消息查询中发生错误,或者从站无法执行请求的操作,则从站将返回异常消息作为其响应。

从站的消息帧的错误检查字段允许主站确认消息的内容有效。

在本文中,您了解了什么是Modbus通信协议以及行业中使用的Modbus通信类型。
一文讲透Modbus协议的更多相关文章
- 一文讲透Dubbo负载均衡之最小活跃数算法
本文是对于Dubbo负载均衡策略之一的最小活跃数算法的详细分析.文中所示源码,没有特别标注的地方均为2.6.0版本. 为什么没有用截止目前的最新的版本号2.7.4.1呢?因为2.6.0这个版本里面有两 ...
- 一文讲透Java序列化
本文目录 一.序列化是什么 二.为什么需要序列化 三.序列化怎么用 四.序列化深度探秘 4.1 为什么必须实现Serializable接口 4.2 被序列化对象的字段是引用时该怎么办 4.3 同一个对 ...
- 从零入门 Serverless | 一文讲透 Serverless Kubernetes 容器服务
作者 | 张维(贤维) 阿里云函数计算开发工程师 导读:Serverless Kubernetes 是以容器和 kubernetes 为基础的 Serverless 服务,它提供了一种简单易用.极致弹 ...
- 一文讲透静电放电(ESD)保护(转发)
一直想给大家讲讲ESD的理论,很经典.但是由于理论性太强,任何理论都是一环套一环的,如果你不会画鸡蛋,注定了你就不会画大卫. 先来谈静电放电(ESD: Electrostatic Discharge) ...
- 一文讲透Cluster API的前世、今生与未来
作者:Luke Addison 原文链接:https://blog.jetstack.io/blog/cluster-api-past-present-and-future/ Cluster API是 ...
- 一文讲透为Power Automate for Desktop (PAD) 实现自定义模块 - 附完整代码
概述 Power Automate for Desktop (以下简称PAD)是微软推出的一款针对Windows桌面端的免费RPA(机器人流程自动化)工具,它目前默认会随着Windows 11安装,但 ...
- 一文讲透APaaS平台是什么
关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ 互联网行业就喜欢搞一些单词的缩写,在云计算行业,前者有SaaS.PaaS.IaaS,最近两三年 ...
- RS485通信和Modbus协议(转)
转自:http://www.51hei.com/bbs/dpj-23230-1.html 在工业控制.电力通讯.智能仪表等领域,通常情况下是采用串口通信的方式进行数据交换.最初采用的方式是RS232接 ...
- MODBUS协议详解
MODBUS是一个工业上通信常用的通讯协议,一般在PLC上面用的比较多,主要是定义了一种数据传输的规范,比如数据发给谁,数据是干嘛的,数据错没错,接收到数据的从机告诉我数据有没有接受到等. 传输的方式 ...
随机推荐
- 用三维的视角理解二维世界:完美解释meshgrid函数,三维曲面,等高线,看完你就懂了。...
完美解释meshgrid函数,三维曲面,等高线 #用三维的视角理解二维世界 #完美解释meshgrid函数,三维曲面,等高线 import numpy as np import matplotlib. ...
- time wait 整理
目录 状态转换图 1.谁会进入time wait状态: 主动发起断开连接的一方调用close()函数发送FIN并进入FIN WAIT 1状态,当收到对面反馈的ack之后会进入FIN WAIT2状态.之 ...
- .Net Core中使用Dapper构建泛型仓储
前言:Dapper是.NET的简单对象映射器,在速度方面拥有ORM之王的称号,与使用原始ADO.NET读取数据一样快.ORM是对象关系映射器,它负责数据库和编程语言之间的映射. 仓储主要是用来解耦业务 ...
- python ——文件的操作大全,如with..as
工作中遇到了需要对json文件进行增删内容操作的需要,于是系统性的整理了一下关于文件的基本操作这里的知识点: 结构:新建文件→打开文件→读取文件→关闭文件 一.基本文件操作 1.新建文件(打开文件), ...
- redis系列之3----redis高级应用(主从、事务与锁、持久化)
文章主目录 安全性设置 主从复制 事务与锁 持久化机制 发布以及订阅消息 上文<详细讲解redis数据结构(内存模型)以及常用命令>介绍了redis的数据类型以及常用命令,本文我们来学习下 ...
- python安装pycrypto库
使用pycharm时安装pycrypto库,一直安装不上,提示安装成功,退出去一看,依旧没有 最后选择了pip安装,但一直报错(Microsoft Visual C++ 9.0 is required ...
- Linova and Kingdom(树型-贪心)
题目大意:给定一棵树,1为首都(首都可以是工业城市也可以是旅游城市),一共有n个点. 其中要选出k个工业城市,每个工业城市出一个代表去首都,其快乐值是其途径旅游城市(非工业)的个数 求所有快乐值相加的 ...
- P2432 zxbsmk爱查错
描述:https://www.luogu.com.cn/problem/P2432 给你一个主串以及若干个子串,求最少需要删除几个字母,使得主串能由一些子串组成. dp [ i ] 表示前 i 个字符 ...
- spring学习笔记(九)事务学习(上)
前述 这段时间在工作中碰到一个事务相关的问题.先说下这个问题的场景,我们是一个商城项目,正在开发优惠券模块,现在有一个需求是需要批量领取优惠券,而且在领券时,其中一张领取失败不能影响其他符合要求的 ...
- Python 记录日志文件
1.打印到控制台 # -*- coding: UTF-8 -*- import logging def logFileTest(): logging.debug('This is debug') lo ...