Modbus协议栈开发
文章平均质量分 91
详细描述Modbus通讯协议站的开发,包括Modbus RTU、Modbus TCP以及Modbus ASCII主从站的描述与实现。
foxclever
览绝胜于巅峰,漱心神以涤尘;觅悠然而思远,垂江海以渔闲
展开
-
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 · 2829 阅读 · 3 评论 -
Modbus协议栈应用实例之六:Modbus ASCII从站应用
自从开源了我们自己开发的Modbus协议栈之后,有很多朋友建议我针对性的做几个示例。所以我们就基于平时我们的应用整理了几个简单但可以说明基本的应用方法的示例,这一篇中我们来使用协议栈实现Modbus ASCII从站应用。1、何为ASCII从站我们知道Modbus协议是一个主从协议,所以就存在主站和从站之分。所谓ASCII从站,简单来说就是被动响应主站请求的站点,所以我们可以说ASCII从站就是响应通讯的一方。对于ASCII从站来说,它会生成数据,但他不会主动向外发送数据,只有当收到主站的数据请求原创 2020-10-11 20:47:28 · 2381 阅读 · 0 评论 -
Modbus协议栈应用实例之五:Modbus ASCII主站应用
自从开源了我们自己开发的Modbus协议栈之后,有很多朋友建议我针对性的做几个示例。所以我们就基于平时我们的应用整理了几个简单但可以说明基本的应用方法的示例,这一篇中我们来使用协议栈实现Modbus ASCII主站应用。1、何为ASCII主站我们知道Modbus协议是一个主从协议,所以就存在主站和从站之分。所谓主站,简单来说就是能够主动发起通讯的站点,所以我们可以说主站就是发起通讯的一方。对于ASCII主站来说,它的数据需要从从站获取,所以主站要通过通讯的方式与从站实现数据交流。在Modbus原创 2020-10-03 22:21:02 · 988 阅读 · 0 评论 -
Modbus协议栈应用实例之四:ModbusTCP服务器应用
自从开源了我们自己开发的Modbus协议栈之后,有很多朋友建议我针对性的做几个示例。所以我们就基于平时我们的应用整理了几个简单但可以说明基本的应用方法的示例,这一篇中我们来简述如何使用协议栈实现一个Modbus TCP服务器应用。1、何为TCP服务器Modbus协议是一个主从协议,那肯定就有主站和从站之分,在Modbus TCP中亦称之为客户端与服务器。所谓TCP客户端其功能基本与RTU主站一样,RTU主站会向从站发起数据请求,同样的TCP客户端也会向服务器发起请求。也就是说在Modbus TCP模原创 2020-09-19 15:18:43 · 3919 阅读 · 0 评论 -
Modbus协议栈应用实例之三:Modbus TCP客户端应用
自从开源了我们自己开发的Modbus协议栈之后,有很多朋友建议我针对性的做几个示例。所以我们就基于平时我们的应用整理了几个简单但可以说明基本的应用方法的示例,这一篇中我们将解说如何使用协议栈实现一个Modbus TCP客户端。1、何为TCP客户端Modbus协议是一个主从协议,那肯定就有主站和从站之分,在Modbus TCP中亦称之为客户端与服务器。所谓TCP客户端其功能基本与RTU主站一样,RTU主站回想从站发起数据请求,同样的TCP客户端也会向服务器发起请求。也就是说在Modbus TCP模式下原创 2020-09-12 15:18:44 · 7550 阅读 · 0 评论 -
Modbus协议栈应用实例之一:Modbus RTU主站应用
自从开源了我们自己开发的Modbus协议栈之后,有很多朋友建议我针对性的做几个示例。所以我们就基于平时我们的应用整理了几个简单但可以说明基本的应用方法的示例,在这一篇中我们先来使用协议栈实现Modbus RTU主站的示例。1、何为RTU主站Modbus协议是一个主从协议,那肯定就有主站和从站之分。所谓主站说的简单一点就是能够主动发起通讯的对象,所以主站就是发起通讯的一方。对于RTU主站来说,自己并不会产生数据,而是要从从站获取数据。在Modbus RTU协议中从站不会主动向外发送数据,所以需要主原创 2020-07-05 21:18:18 · 4971 阅读 · 1 评论 -
实现Modbus TCP多网段客户端应用
对于Modbus TCP来说与Modbus RTU和Modbus ASCII有比较大的区别,因为它是运行于以太网链路之上,是运行于TCP/IP协议之上的一种应用层协议。在协议栈的前两个版本中,Modbus TCP作为客户端时也存在一些局限性。我们将对这些不足作一定更新。1、存在的不足在原有的协议栈中,我们所封装的Modbus TCP客户端一个特定的客户端,即它只是一个客户端实例。在通常的应...原创 2019-06-15 22:09:49 · 7112 阅读 · 1 评论 -
实现Modbus ASCII多主站应用
前面我们已经分析了Modbus RTU的更新设计和具体实现(如果不清楚可查看前一篇文章)。其实Modbus ASCII与Modbus RTU都是基于串行链路实现的,所以有很多的共同点,基于此,这篇文章我们只讨论与Modbus RTU所不同的部分。1、更新设计关于原来的协议栈在Modbus ASCII主站应用时所存在的局限性与Modbus RTU也是一样的,所以我们不分析它的不足,只讨论更新...原创 2019-05-18 22:10:54 · 1209 阅读 · 3 评论 -
Modbus协议栈实现Modbus RTU多主站支持
前面我们已经详细讲解过Modbus协议栈的开发过程,并且利用协议栈封装了Modbus RTU主站和从站,Modbus TCP服务器与客户端,Modbus ASCII主站与从站应用。但在使用过程中,我们发现一些使用不便和受限的地方,所以我们就想要更新一下协议栈,主要是应用站的封装。1、存在的局限性在原有的协议栈中,我们所封装的Modbus RTU主站是一个特定的主站,即它只是一个主站。在通常...原创 2019-04-27 22:02:06 · 3222 阅读 · 4 评论 -
Modbus协议栈开发笔记之八:Modbus ASCII Master开发
这一节我们来封装Modbus ASCII Master应用,Modbus ASCII主站的开发与RTU主站的开发是一致的。同样的我们也不是做具体的应用,而是实现ASCII主站的基本功能。我们将ASCII主站的功能封装为函数,以便在开发具体应用时调用。对于ASCII主站我们主要实现的功能有两个:其一是生成访问RTU从站的命令,总共支持8中功能码。其二是对ASCII从站端返回的信息进行解析并根据结...原创 2018-09-30 06:44:43 · 2028 阅读 · 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 · 1249 阅读 · 0 评论 -
Modbus协议栈开发笔记之六:Modbus RTU Master开发
这一节我们来封装最后一种应用(Modbus RTU Master应用),RTU主站的开发与TCP客户端的开发是一致的。同样的我们也不是做具体的应用,而是实现RTU主站的基本功能。我们将RTU主站的功能封装为函数,以便在开发具体应用时调用。对于RTU主站我们主要实现的功能有两个:其一是生成访问RTU从站的命令,总共支持8中功能码。其二是对RTU从站端返回的信息进行解析并根据结果进行各种操作,同样...原创 2018-11-29 16:53:19 · 2919 阅读 · 0 评论 -
Modbus协议栈开发笔记之五:Modbus RTU Slave开发
Modbus在串行链路上分为Slave和Master,这一节我们就来开发Slave。对于Modbus RTU从站来说,需要实现的功能其实与Modbus TCP的服务器端是一样的。其操作过程也是一样的。首先接收到主站的访问命令,对该命令报文进行解析,这里我们也只是实现前面提到的8种功能码。其次我们根据解析的结果进行对应的操作,具体的软件访问结构如下:从上图中不难发现实际是3步:第1步、接...原创 2018-11-29 16:50:58 · 4733 阅读 · 1 评论 -
Modbus协议栈开发笔记之四:Modbus TCP Client开发
这一次我们封装Modbus TCP Client应用。同样的我们也不是做具体的应用,而是实现TCP客户端的基本功能。我们将TCP客户端的功能封装为函数,以便在开发具体应用时调用。对于TCP客户端我们主要实现的功能有两个:其一是生成访问TCP服务器的命令,总共支持8中功能码。其二是对TCP服务器端返回的信息进行解析并根据结果进行各种操作,同样也是支持8中功能吗的操作。具体软件访问结构如下:...原创 2018-11-17 14:41:07 · 3317 阅读 · 3 评论 -
Modbus协议栈开发笔记之三:Modbus TCP Server开发
在完成了前面的工作后,我们就可以实现有针对性的应用了,首先我们来实现Modbus TCP的服务器端应用。当然我们不是做具体的应用,而是对Modbus TCP的服务器端应用进行封装以供有需要时调用。这里我们不涉及TCP的协议,这部分与Modbus没有必然联系,我们只是在其应用层运行Modbus协议而已。对于Modbus TCP的服务器我们需要实现几个功能:首先是对接收到客户端命令进行解析,我...原创 2018-11-08 14:00:22 · 7156 阅读 · 1 评论 -
Modbus协议栈开发笔记之二:Modbus消息帧的生成
前面我们已经对Modbus的基本事务作了说明,也据此设计了我们将要实现的主从站的操作流程。这其中与Modbus直接相关的就是Modbus消息帧的生成。Modbus消息帧也是实现Modbus通讯协议的根本。1、Modbus消息帧分析MODBUS协议在不同的物理链路上的消息帧有一些差异,但我们分析一下就会发现,在这些不同的消息帧中具有一下相同的部分,这对我们实现统一的数据操作非常重要,具体描述...原创 2018-10-29 17:09:39 · 3039 阅读 · 0 评论 -
Modbus协议栈开发笔记之一:实现功能的基本设计
Modbus作为开放式的工业通讯协议,在各种工业设备中应用极其广泛。本人也使用Modbus通讯很多年了,或者用现成的,或者针对具体应用开发,一直以来都想要开发一个比较通用的协议栈能在后续的项目中复用,而不必每次都写一遍。现在利用项目研发的机会,开发一个自己的Modbus协议栈。Modbus有国际标准,也有国家标准,内容是完全一样的。在标准钟支持2种物理链路:一是基于RS485(RS232)的串...原创 2018-10-23 10:53:16 · 3398 阅读 · 4 评论