1 概念

要开发一个新项目,上位机与下位机通讯使用Modbus TCP协议,在网上找了好多资料了解此协议,此处仅描述TCP/IP协议。

Modbus原先是施耐德电气(Schneider Electric)为PLC(可编程逻辑控制器)通信而研发的一种串行通信协议,现在它已经成为工业领域通信协议的业界标准,并且现在是工业电子、工业控制、电力等设备之间常用的连接方式。

Modbus协议使用的是主从通讯技术,即由主设备主动查询和操作从设备,即由主设备主动查询和操作从设备。一般将主控设备方所使用的协议称为Modbus Master,从设备方使用的协议称为Modbus Slave。Modbus的工作方式是请求/应答,每次通讯都是主设备先发送指令,可以是广播,或是向特定从设备的单播,从设备响应指令,并按要求应答,或者报告异常。当主设备不发送请求时,从设备不会自己发出数据,从设备和从设备之间不能直接通讯。

Modbus TCP/IP协议应用于以太网连接,ModbusTCP的数据帧格式:ADU = MBAP + PDU,即 MBAP(7字节) + 功能码 (1字节)+ 数据域(长度不定,由具体功能决定)。

MBAP为报文头,长度为7字节,组成如下:

事务处理标识 协议标识 长度 单元标识符
2byte 2byte 2byte 1byte

事务处理标识: 报文的序列号,每次通信之后就要加1以区别不同的通信数据报文。
协议标识符 :  00 00表示ModbusTCP协议。
长度 :表示长度后面所有的字节数,即值为ADU字节长度减去6,单位为字节。
单元标识符 : 可以理解为从设备地址。

功能码

功能码 作 用
0x01 读线圈
0x02 读离散量输入
0x03 读保持寄存器
0x04 读输入寄存器
0x05 写单个线圈
0x06 写单个寄存器
0x0F 写多个线圈
0x10 写多个寄存器

2 例子

数据帧格式:ADU = MBAP + PDU,即 MBAP(7字节) + 功能码 (1字节)+ 数据域

MODBUS请求的生成:

在收到来自用户应用的需求后,客户端必须生成一个MODBUS请求,并发送到TCP管理。

MBAP+ 功能码 +起始地址H+ 起始地址L+ 寄存器数量H+ 寄存器数量L(共12字节)。

  • 如:起始地址是0x0000,寄存器数量是 0x0003
    00 01 00 00 00 06 01 03 00 00 00 03

见下表:

类型 描述 字节大小 实例
MBAP报文头 事务处理标识符 2 0x0001
协议标识符 2 0x0000
长度 2 0x0006
单元标识符(从设备地址) 1 0x01
MODBUS请求 功能码 1 0x03
起始地址 2 0x0000
寄存器数量 2 0x0003

MODBUS响应的生成

一旦处理请求,MODBUS 服务器必须使用适当的MODBUS服务器事务处理生成一个响应,并且必须将响应发送到TCP管理组件。

根据处理结果,可以生成两类响应:

肯定的MODBUS响应
响应功能码 = 请求功能码

回:数据长度为0x06,第一个寄存器的数据为0x21,其余为0x00

00 01 00 00 00 09 01 03 06 00 21 00 00 00 00

类型 描述 字节大小 实例
MBAP报文头 事务处理标识符 2 0x0001
协议标识符 2 0x0000
长度 2 0x0009
单元标识符(从设备地址) 1 0x01
MODBUS请求 功能码 1 0x03
数据长度 2 0x06
数据 6 0x002100000000

MODBUS异常响应
目的是为客户机提供与处理过程检测到的错误相关的信息
响应功能码 = 请求功能码+0x80
提供异常码来表明出错的原因。

异常码 MODBUS名称 备注
01 非法的功能码 服务器不了解功能码
02 非法的数据地址 与请求有关
03 非法的数据值 与请求有关
04 服务器故障 在执行过程中,服务器故障
05 确认 服务器接受服务调用,但是需要相对长的时间完成服务。因此,服务器仅返回一个服务调用接收的确认
06 服务器繁忙 服务器不能接受MODBUS请求PDU。客户应用由责任决定是否和何时重发请求。
0A 网关故障 网关路经是无效的
0B 网关故障
目标设备没有响应

参考建议:

https://blog.csdn.net/sgmcumt/article/details/87435191
https://blog.csdn.net/YiWangJiuShiXingFu/article/details/105557082

https://blog.csdn.net/qq_36339249/article/details/90664839

C# ModbusTcp 概念相关推荐

  1. 关于跨网闸数据同步的方式调研Java实现ModbusTCP通信

    1 网闸的概念 网闸_百度百科 (baidu.com) 2 跨网闸数据同步的方式了解 目前了解到有三种方式: 1 配置开放ip.端口,外网直接访问http://www.voidcn.com/artic ...

  2. 深入浅出ModbusTcp

    一:概念可参考 https://blog.csdn.net/sgmcumt/article/details/87435191 二:仿真工具下载 https://modbustools.com/down ...

  3. PLC程序实例二:ModBusTCP客户端编程实例与测试方法

    一.需求描述 1.设备作为服务端时,需要给出对应的测试方法,即要求 PLC 作为客户端,设备作为服务端,因此要求编写 PLC 的ModBusTCP客户端 2.先了解一下设备作为服务端的ModBusTC ...

  4. RPC 笔记(03)— gRPC 概念、安装、编译、客户端和服务端示例

    1. gRPC 概念 gRPC 是 Google 开源的一款高性能的 RPC 框架.GitHub 上介绍如下: gRPC is a modern, open source, high-performa ...

  5. RPC 笔记(01)— RPC概念、调用流程、RPC 与 Restful API 区别

    1. 基本概念 PRC 远程过程调用 Remote Procedure Call,其就是一个节点请求另外一个节点提供的服务.当两个物理分离的子系统需要建立逻辑上的关联时,RPC 是牵线搭桥的常见技术手 ...

  6. 数据结构(01)— 算法复杂度概念及常见的复杂度计算

    1. 大 O 表示法 大 O 表示法指出了算法有多快,让你能够比较操作数,它指出了算法运行时间的增速,而并非以秒为单位的速度.大 O 表示法指出了最糟情况下的运行时间.大 O 表示法在讨论运行时间时, ...

  7. OpenCV 笔记(01)— OpenCV 概念、整体架构、各模块主要功能

    1. OpenCV 概念 图像处理( Image Processing )是用计算机对图像进行分析, 以达到所需结果的技术, 又称影像处理. 图像处理技术一般包括图像压缩, 增强和复原, 匹配.描述和 ...

  8. 用男女朋友关系解释计算机常用概念

    运维方面 很多同学对热备,冷备,云备了解不深,我科普一下 IT 行业各种备份术语.以后别闹笑话了. 假设你是一位女性,你有一位男朋友,于此同时你和另外一位男生暧昧不清,比朋友好,又不是恋人.你随时可以 ...

  9. python中的新式类与旧式类的一些基于descriptor的概念(上)

    python中基于descriptor的一些概念(上) 1. 前言 2. 新式类与经典类 2.1 内置的object对象 2.2 类的方法 2.2.1 静态方法 2.2.2 类方法 2.3 新式类(n ...

最新文章

  1. 如何利用FineReport制作动态树报表
  2. mybatis 调用 oracle 存储过程 select into 无记录时NO_DATA_FOUND异常处理分析
  3. IIS7.5 HTTP 错误 500.19 - Internal Server Error 问题的解决方案
  4. python能编写手机软件-怎么用Python编写一个手机聊天软件或程序
  5. 第七篇T语言实例开发,文本与程序的几种打开方法(版5.3)
  6. 第九章 字符串,字符和字节
  7. 单人制作游戏手册之四:独立游戏怎么预估收益
  8. 被流氓360设置浏览器主页的解决办法(如果你也遇到了跟我一样的问题,不妨看一下是不是这个原因)...
  9. java bean工厂_从零构建轻量级Java Web框架
  10. (转) 基于MapReduce的ItemBase推荐算法的共现矩阵实现(一)
  11. 我和小美的撸码日记(1)之软件也需靠脸吃饭,带您做张明星脸(附后台经典框架 DEMO 下载)...
  12. windows下使用Nginx服务器实现负载均衡方法
  13. 【转自Mgen】 .NET(C#):谈谈各种结束进程的方法
  14. 考不上本科是智商问题,这话有错吗?
  15. 用pod安装swiftyJson的一个实例
  16. ogg格式怎么转换为mp3?
  17. 安卓加载asset中的json文件_Android Studio读取本地json(读取assets中的文件)
  18. python刘卫国实验题_刘卫国c 程序设计实践教程答案
  19. listbox java_listbox读取数据库
  20. 阿里云LOGO在线设计入口说明

热门文章

  1. 腾讯超级vip可以登陆几个电视
  2. 一个不错的拳皇技巧学习网站
  3. 植物大战僵尸里巨人僵尸如何快速解决?这3个小方法教你轻松应对!
  4. 《古墓丽影7 传奇》
  5. c++中包含empty virtual base class 类的sizeof结果分析
  6. Forcepoint宣布构建四个全新业务部门
  7. 进阶课程㊳丨Apollo平台的快速入门
  8. 如何关闭智能键盘IQKeyboardManager
  9. 《三国演义》与“项目管理”——向刘备拜师
  10. bzoj1017 [JSOI2008]魔兽地图DotR