C#ModBus Tcp

上一篇博客已经完成 C#ModBus Tcp Master的实现

本篇主要对不同的功能码所发出的报文进行解析(包括请求报文及响应报文)

读操作

功能码 0x01 读一组线圈 读取站号为1 从地址12开始的10个线圈

测试结果

上一篇博客已经总结了读操作报文格式,就按照格式划分

报文解析:

注意:报文中线圈起始地址 00000 对应设备中 10001 地址,其他顺延

功能码0x02 报文格式与功能码0x01一致,只是第八字节的功能码变为02 其他完全一致,不再重复解析

功能码0x03 读一组保持寄存器 读取站号为1 从地址12开始的10个值

报文解析:

功能码0x04 报文格式与功能码0x03一致,只是第八字节的功能码变为04 其他完全一致,也不再重复解析

写操作

操作码:0x05 写单个线圈  将站号为1 地址为21的线圈置为On

注意:在报文中 指定线圈通断标志  FF00 置线圈为ON  0000置线圈为OFF

报文解析:

功能码0x0F 写一组线圈  将站号1 起始地址21  的连续五个线圈置为 通,断,断,通,通

测试结果:

报文解析:

功能码 0x06  写单个保持寄存器  将6666写入从站1 地址为21 的保持寄存器中

测试结果

报文解析:

功能码0x10  写一组保持寄存器   例如 将12 23 34 45 56 67 78 分别写入从站1 起始地址为21的7个连续的保持寄存器中

测试结果

报文解析:

到此为止,我们常用的几个ModBus功能码报文都解析完毕了 有错误之处 希望大家不吝赐教,感谢(抱拳~)

C#ModBus Tcp Master

原文地址:https://www.cnblogs.com/Leo_wl/p/10989450.html

时间: 2024-10-09 20:13:21

C#ModBus Tcp的相关文章

Modbus库开发笔记之三:Modbus TCP Server开发

在完成了前面的工作后,我们就可以实现有针对性的应用了,首先我们来实现Modbus TCP的服务器端应用.当然我们不是做具体的应用,而是对Modbus TCP的服务器端应用进行封装以供有需要时调用. 这里我们不涉及TCP的协议,这部分与Modbus没有必然联系,我们只是在其应用层运行Modbus协议而已. 对于Modbus TCP的服务器我们需要实现几个功能:首先是对接收到客户端命令进行解析,我们只实现前面提到的8中常用的功能吗的支持.其次在解析完成后,我们要实现对应各种功能码的操作.具体架构如下

EasyARM i.mx287学习笔记——通过modbus tcp控制GPIO

0 前言 本文使用freemodbus协议栈,在EasyARM i.mx287上实现了modbus tcp从机. 在该从机中定义了线圈寄存器.当中线圈寄存器地址较低的4位和EasyARM的P2.4至P2.5关联,通过modbus指令可控制GPIO的输出.本文改动自freemodbus 演示样例LINUXTCP.经过简单的改动也可用于其它Linux开发板. [相关博文] [EasyARM i.mx28学习笔记--文件IO方式操作GPIO] [EasyARM i.mx28学习笔记--安装和使用tft

采用VSPD、ModbusTool模拟串口、MODBUS TCP设备进行Python采集软件开发

版权声明:本文为博主原创文章,欢迎转载,并请注明出处.联系方式:[email protected] 不少仪器/设备都提供了数据采集的接口,其中不少是串口或网络的MODBUS/TCP协议. 串口是比较简单,但是较为古老的接口方式,现在的笔记本基本上都没有这种形式的接口了,如果软件开发在笔记本上进行的话,无法调试,或要绕一下用USB转串口的小设备,很不方便. 还好有前辈开发了虚拟串口软件,可以很方便的用于串口通讯的软件开发,我用的是VSPD(网盘).用虚拟串口软件开发有几方面的好处: 1.电脑/笔记

基于LWIP的Modbus TCP粘包处理

最近在做Modbus TCP时,碰到了TCP粘包问题,由于客户端发送包的字节数较少并且速度也很快(10ms/次),导致了服务器端一下收到了好几个包! 一般粘包情况存在以下几种: 很多人在处理TCP粘包时,都会定义一个帧的数据结构,包含标识,长度,数据等信息. 本人认为Modbus TCP的帧结构就很好,能广泛应用于电力,机房电源监控等领域也不是没有道理的. 以下就Modbus TCP粘包问题作出处理,直接上代码: 1 //ADU和RTU合二为一结构体 2 struct adu_rtu 3 { 4

Modbus库开发笔记之四:Modbus TCP Client开发

这一次我们封装Modbus TCP Client应用.同样的我们也不是做具体的应用,而是实现TCP客户端的基本功能.我们将TCP客户端的功能封装为函数,以便在开发具体应用时调用. 对于TCP客户端我们主要实现的功能有两个:其一是生成访问TCP服务器的命令,总共支持8中功能码.其二是对TCP服务器端返回的信息进行解析并根据结果进行各种操作,同样也是支持8中功能吗的操作.具体软件访问结构如下: 1.访问命令的生成 客户端作为主动交互端,需要向服务器发各种操作请求命令.所以对于TCP客户端来说,首先要

开放型Modbus/TCP 规范

修订版 1.0,1999 年3 月29 日Andy SwalesSchneider 电气公司[email protected]目录目录............................................................................................................................ 21.该规范的发展概况...............................................

MODBUS TCP/IP协议规范详细介绍

1.该规范的发展概况 原始版本1997年9月3日作为公共评论的草案. 再版1999年3月29日,即修订版1.0. 没有大的技术改动,仅作了补充说明.增加了附录A和B作为对一些常用执行问题的回应. 该Modbus/TCP规范在万维网上公开发行.它表明开发者的意愿是把它作为工业自动化领域具有互用性的标准. 既然MODBUS和MODBUS/TCP作为事实上的"实际"标准,而且很多生产商已经实现了它的功能,此规范主要是阐述在互连网上具有普遍可用性的基于TCP通讯协议的MODBUS报文的特殊编码

EasyARM i.mx28学习笔记——通过modbus tcp控制GPIO

0 前言 本文使用freemodbus协议栈,在EasyARM i.mx287上实现了modbus tcp从机.在该从机中定义了线圈寄存器,其中线圈寄存器地址较低的4位和EasyARM的P2.4至P2.5关联,通过modbus指令可控制GPIO的输出.本文修改自freemodbus 示例LINUXTCP,经过简单的修改也可用于其他Linux开发板. [相关博文] [EasyARM i.mx28学习笔记--文件IO方式操作GPIO] [EasyARM i.mx28学习笔记--安装和使用tftp]

组态王MODBUS TCP数据报格式

在大家通读Modbus协议时,总是会碰到一些容易混淆的名词,从而导致对于协议的解读出现问题,在本文中,我 们对于Modbus协议中可能会给大家造成困惑的名词作相关的解释. 1.功能码:功能码在modbus协议用于表示信息帧的功能,常用的功能码有03,04,06,16等,其中03功能码的作 用是读保持寄存器内容,04功能码的作用是读输入寄存器内容(输入寄存器和保持寄存器的区别看下文),06功 能码的内容是预置单个保持寄存器,16功能码的内容则是预置多个保持寄存器. 2.输入寄存器和保持寄存器:04

国标电表DLT645转MODBUS TCP协议转换器,工业设备,浪涌三级保护

DL/T645转ModbusTcp协议转换器 MRD-5021具有1 路RS485及1路以太网接口,最多支持同时采集5个DL/T645-1997或者5个2007协议国标电表设备,支持DL/T645协议的自适应,然后将所需要的采集数据转换为Modbus Tcp协议.方便和PLC.DCS.组态等工业相关设备对接. 说明书:http://files.cnblogs.com/mored/DLT645-ModbusTcp%E4%BA%A7%E5%93%81MRD-5021%E8%AF%B4%E6%98%8