
Modbus
文章平均质量分 92
foxclever
览绝胜于巅峰,漱心神以涤尘;觅悠然而思远,垂江海以渔闲
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
软件设计开发笔记3:基于QT的Modbus RTU主站
Modbus RTU主站应用很常见,有一些是通用的,有一些是专用的。而这里我们希望实现一个主要针对我们的产品调试的Modbus RTU主站工具。在开始软件设计之前,我们先来简略地分析一下,实现这样一个Modbus RTU主站工具包含的主要内容有哪些。原创 2022-08-21 10:30:26 · 6025 阅读 · 12 评论 -
Modbus协议栈综合实例设计
自我们开源了我们的Modbus协议栈之后,就一直有朋友来信说希望提供示例。这次我们整理了几个例子以供参考。1、应用实例规划 在这次的实例中,我们使用的目标板拥有一个以太网接口、一个RS232串行接口和一个RS485串行接口,所以我们规划实现:一个Modbus TCP Server实例一个Modbus RTU Slave实例一个Modbus RTU Master实例 这三个实例并不是独立的,Modbus TCP Server和Modbus RTU Slave它们实现的实际上原创 2021-08-28 16:30:02 · 3105 阅读 · 3 评论 -
Modbus协议栈应用实例之二:Modbus RTU从站应用
自从开源了我们自己开发的Modbus协议栈之后,有很多朋友建议我针对性的做几个示例。所以我们就基于平时我们的应用整理了几个简单但可以说明基本的应用方法的示例,这一篇中我们将使用协议栈实现一个Modbus RTU从站应用。1、何为RTU从站Modbus协议是一个主从协议,那肯定就有主站和从站之分。所谓从站就是被动动响应通讯的对象,所以从站总是响应通讯的一方。对于RTU从站来说,它是数据的数据的生产者,从站通过响应主站数据请求的方式将数据发送给主站。这一过程如下图所示:从上图我们不难看出,首原创 2020-07-25 21:48:42 · 5066 阅读 · 2 评论 -
实现Modbus TCP多网段客户端应用
对于Modbus TCP来说与Modbus RTU和Modbus ASCII有比较大的区别,因为它是运行于以太网链路之上,是运行于TCP/IP协议之上的一种应用层协议。在协议栈的前两个版本中,Modbus TCP作为客户端时也存在一些局限性。我们将对这些不足作一定更新。1、存在的不足在原有的协议栈中,我们所封装的Modbus TCP客户端一个特定的客户端,即它只是一个客户端实例。在通常的应...原创 2019-06-15 22:09:49 · 7671 阅读 · 1 评论 -
实现Modbus ASCII多主站应用
前面我们已经分析了Modbus RTU的更新设计和具体实现(如果不清楚可查看前一篇文章)。其实Modbus ASCII与Modbus RTU都是基于串行链路实现的,所以有很多的共同点,基于此,这篇文章我们只讨论与Modbus RTU所不同的部分。1、更新设计关于原来的协议栈在Modbus ASCII主站应用时所存在的局限性与Modbus RTU也是一样的,所以我们不分析它的不足,只讨论更新...原创 2019-05-18 22:10:54 · 1305 阅读 · 3 评论 -
Modbus协议栈实现Modbus RTU多主站支持
前面我们已经详细讲解过Modbus协议栈的开发过程,并且利用协议栈封装了Modbus RTU主站和从站,Modbus TCP服务器与客户端,Modbus ASCII主站与从站应用。但在使用过程中,我们发现一些使用不便和受限的地方,所以我们就想要更新一下协议栈,主要是应用站的封装。1、存在的局限性在原有的协议栈中,我们所封装的Modbus RTU主站是一个特定的主站,即它只是一个主站。在通常...原创 2019-04-27 22:02:06 · 3994 阅读 · 4 评论 -
STM32F0使用LL库实现Modbus通讯
在本次项目中,限于空间要求我们选用了STM32F030F4作为控制芯片。这款MCU不但封装紧凑,而且自带的Flash空间也非常有限,所以我们选择了LL库实现。本篇将说明基于LL实现USART通讯。1、概述我们想要实现基于RS485的Modbus通讯实际就是基于USART的通讯。USART使用可编程波特率发生器提供非常广泛的波特率范围。根据不同配置可以实现我们不同的串行通讯应用需求。其结构图...原创 2019-03-31 21:21:04 · 2753 阅读 · 0 评论 -
Modbus协议栈开发笔记之六:Modbus RTU Master开发
这一节我们来封装最后一种应用(Modbus RTU Master应用),RTU主站的开发与TCP客户端的开发是一致的。同样的我们也不是做具体的应用,而是实现RTU主站的基本功能。我们将RTU主站的功能封装为函数,以便在开发具体应用时调用。对于RTU主站我们主要实现的功能有两个:其一是生成访问RTU从站的命令,总共支持8中功能码。其二是对RTU从站端返回的信息进行解析并根据结果进行各种操作,同样...原创 2018-11-29 16:53:19 · 3092 阅读 · 0 评论 -
Modbus协议栈开发笔记之五:Modbus RTU Slave开发
Modbus在串行链路上分为Slave和Master,这一节我们就来开发Slave。对于Modbus RTU从站来说,需要实现的功能其实与Modbus TCP的服务器端是一样的。其操作过程也是一样的。首先接收到主站的访问命令,对该命令报文进行解析,这里我们也只是实现前面提到的8种功能码。其次我们根据解析的结果进行对应的操作,具体的软件访问结构如下:从上图中不难发现实际是3步:第1步、接...原创 2018-11-29 16:50:58 · 4891 阅读 · 1 评论 -
Modbus协议栈开发笔记之四:Modbus TCP Client开发
这一次我们封装Modbus TCP Client应用。同样的我们也不是做具体的应用,而是实现TCP客户端的基本功能。我们将TCP客户端的功能封装为函数,以便在开发具体应用时调用。对于TCP客户端我们主要实现的功能有两个:其一是生成访问TCP服务器的命令,总共支持8中功能码。其二是对TCP服务器端返回的信息进行解析并根据结果进行各种操作,同样也是支持8中功能吗的操作。具体软件访问结构如下:...原创 2018-11-17 14:41:07 · 3436 阅读 · 3 评论 -
Modbus协议栈开发笔记之三:Modbus TCP Server开发
在完成了前面的工作后,我们就可以实现有针对性的应用了,首先我们来实现Modbus TCP的服务器端应用。当然我们不是做具体的应用,而是对Modbus TCP的服务器端应用进行封装以供有需要时调用。这里我们不涉及TCP的协议,这部分与Modbus没有必然联系,我们只是在其应用层运行Modbus协议而已。对于Modbus TCP的服务器我们需要实现几个功能:首先是对接收到客户端命令进行解析,我...原创 2018-11-08 14:00:22 · 7337 阅读 · 1 评论 -
Modbus协议栈开发笔记之二:Modbus消息帧的生成
前面我们已经对Modbus的基本事务作了说明,也据此设计了我们将要实现的主从站的操作流程。这其中与Modbus直接相关的就是Modbus消息帧的生成。Modbus消息帧也是实现Modbus通讯协议的根本。1、Modbus消息帧分析MODBUS协议在不同的物理链路上的消息帧有一些差异,但我们分析一下就会发现,在这些不同的消息帧中具有一下相同的部分,这对我们实现统一的数据操作非常重要,具体描述...原创 2018-10-29 17:09:39 · 3596 阅读 · 0 评论 -
Modbus协议栈开发笔记之一:实现功能的基本设计
Modbus作为开放式的工业通讯协议,在各种工业设备中应用极其广泛。本人也使用Modbus通讯很多年了,或者用现成的,或者针对具体应用开发,一直以来都想要开发一个比较通用的协议栈能在后续的项目中复用,而不必每次都写一遍。现在利用项目研发的机会,开发一个自己的Modbus协议栈。Modbus有国际标准,也有国家标准,内容是完全一样的。在标准钟支持2种物理链路:一是基于RS485(RS232)的串...原创 2018-10-23 10:53:16 · 3615 阅读 · 4 评论 -
Modbus协议栈开发笔记之八:Modbus ASCII Master开发
这一节我们来封装Modbus ASCII Master应用,Modbus ASCII主站的开发与RTU主站的开发是一致的。同样的我们也不是做具体的应用,而是实现ASCII主站的基本功能。我们将ASCII主站的功能封装为函数,以便在开发具体应用时调用。对于ASCII主站我们主要实现的功能有两个:其一是生成访问RTU从站的命令,总共支持8中功能码。其二是对ASCII从站端返回的信息进行解析并根据结...原创 2018-09-30 06:44:43 · 2099 阅读 · 0 评论 -
Modbus协议栈开发笔记之七:Modbus ASCII Slave开发
与Modbus RTU在串行链路上分为Slave和Master一样,Modbus ASCII也分为Slave和Master,这一节我们就来开发Slave。对于Modbus ASCII从站来说,需要实现的功能其实与Modbus RTU的Slave是一样的。其操作过程也是一样的。首先接收到主站的访问命令,对该命令报文进行解析,这里我们也只是实现前面提到的8种功能码。其次我们根据解析的结果进行对应的操作...原创 2018-09-22 21:18:34 · 1304 阅读 · 0 评论