一文讲透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上面用的比较多,主要是定义了一种数据传输的规范,比如数据发给谁,数据是干嘛的,数据错没错,接收到数据的从机告诉我数据有没有接受到等. 传输的方式 ...
随机推荐
- unix域源码解析
首先我们先要创建一个用于通信的结构unix_proto_data ,并初始化某些字段 static int unix_proto_create(struct socket *sock, int pro ...
- 自定义Bootstrap样式弹出框
最近做的一些功能需要用到Bootstrap,然而原来的系统并没有引入Bootstrap,为了新写的控件能够应用于老的页面,又不需要在老的页面上引入全套的Bootstrap文件决定写一个模仿Bootst ...
- ip地址与运算 ipcalc命令
http://man.linuxde.net/ipcalc 转载于:https://blog.51cto.com/sonlich/2064133
- Golang Context 的原理与实战
本文让我们一起来学习 golang Context 的使用和标准库中的Context的实现. golang context 包 一开始只是 Google 内部使用的一个 Golang 包,在 Gola ...
- INTERVIEW #0
一.造成网络延迟的可能原因 1,WiFi所有用户上下行流量共用一个信道,当用户太多或者有人在下载大的资源时带宽不够,丢包: 2,线路质量不佳导致信噪比太低,比如光纤损耗太大等. 二.IPv6优势 1, ...
- 数据库SQL语言从入门到精通--Part 3--SQL语言基础知识
数据库从入门到精通合集(超详细,学习数据库必看) 一.关系 单一的数据结构----关系 现实世界的实体以及实体间的各种联系均用关系来表示 逻辑结构----二维表 从用户角度,关系模型中数据的逻辑结构是 ...
- RF(数据库测试)
1.下载 DatabaseLibrary 库 pip install robotframework-databaselibrary 2.下载 pymysql 库(作为中间件) pip install ...
- Jmeter系列(9)- jmeter插件入门篇
如果你想从头学习Jmeter,可以看看这个系列的文章哦 https://www.cnblogs.com/poloyy/category/1746599.html 前言 jmeter4.0以上,如现在最 ...
- Vue + Element-ui实现后台管理系统(5)---封装一个Form表单组件和Table表格组件
封装一个Form表单组件和Table组件 有关后台管理系统之前写过四遍博客,看这篇之前最好先看下这四篇博客.另外这里只展示关键部分代码,项目代码放在github上: mall-manage-syste ...
- [zoj3629]找规律
题意:a[n] = ([n/1] + [n/2] + ... + [n/n]) & 1 == false,找出a数组的规律来就ok了. #pragma comment(linker, &quo ...