首页 > 其他分享 >Modbus Tcp协议

Modbus Tcp协议

时间:2024-07-15 18:54:36浏览次数:9  
标签:协议 00 字节 -- --- Tcp Modbus 寄存器

一:modbus起源

1.起源

Modbus由Modicon公司于1979年开发,是一种工业现场总线协议标准。

Modbus通信协议具有多个变种,其中有支持串口,以太网多个版本,其中最著名的是Modbus RTU、Modbus ASCII和Modbus TCP三种

其中Modbus TCP是在施耐德收购Modicon后1997年发布的。

  1. 分类:

1)Modbus RTU

运行在串口上的协议,采用二进制表现形式以及紧凑的数据结构,通信效率较高,应用比较广泛

2)Modbus ASCII

运行在串口上的协议,采用ASCII码进行传输,并且每个字节的开始和结束都有特殊字符作为标志,传输效率远远低于Modbus RTU,一般只有通讯量比较少时才会考虑它。

注:在ASCII模式下,每个8位的字节被拆分成两个ASCII字符进行发送,比如十六进制0xAF(1010 1111),会被分解成ASCII字符“A”(0100 0001)和”F”(0100 0110)进行发送,其发送量显然比RTU增加一倍。

3)Modbus TCP

运行在以太网上的协议

  1. 优势:

免费、简单、容易使用

  1. 应用场景:

Modbus协议是现在国内工业领域应用最多的协议,不只PLC设备,各种终端设备,比如水控机、水表、电表、工业秤、各种采集设备。

  1. ModbusTCP特点(掌握):

1)采用主从问答式通信

2)Modbus TCP是应用层协议,基于传输层的TCP进行通信的

注:更好的理解网络模型的分层特点:

各层之间独立,每一层不需要知道下一层如何实现

当任何一层发生变化时,只要层间接口关系保持不变,则这层以上或以下层不受影响。

3)Modbus TCP端口号默认502

  • ModbusTCP的协议格式

ModbusTcp协议包含三部分:报文头、功能码、数据

MBAP:Modbus Application Protocol (modbus报文头)

PDU:Protocol Data Unit(协议数据单元)

Modbus TCP/IP协议最大数据帧长度为260字节

1.报文头

包含7个字节

二:寄存器

一共有四种类型的寄存器,分别是:线圈、离散量输入、输入寄存器、保持寄存器。

离散量和线圈其实就是位寄存器(每个寄存器数据占1字节),工业上主要用于控制IO设备。输入和保持寄存器是字寄存器(每个寄存器数据占2个字节),工业上主要用于存储工业设备的值。

  1. 离散量和线圈其实就是位寄存器(每个寄存器数据占1字节),工业上主要用于控制IO设备

线圈寄存器,类比为开关量,每一个bit都对应一个信号的开关状态。所以一个byte就可以同时控制8路的信号。比如控制外部8路io的高低。 线圈寄存器支持读也支持写,写在功能码里面又分为写单个线圈寄存器和写多个线圈寄存器。

读可以用一个功能码表示读多个或者读单个

对应3个功能码

离散输入寄存器,离散输入寄存器就相当于线圈寄存器的只读模式,他也是每个bit表示一个开关量,而他的开关量只能读取输入的开关信号,是不能够写的。比如我读取外部按键的按下还是松开。

对应功能码1个

2. 输入和保持寄存器是字寄存器(每个寄存器数据占2个字节),工业上主要用于存储工业设备的值

保持寄存器,这个寄存器的单位不再是bit而是两个byte,也就是可以存放具体的数据量的,并且是可读写的。比如空调检测到的室温,这是不可以修改的,因为室温是根据实际的物理环境决定的。

功能码有对应的三个

输入寄存器,这个和保持寄存器类似,但是也是只支持读而不能写。一个寄存器也是占据两个byte的空间。类比我我通过读取输入寄存器获取现在的温度传感器的值

对应的功能码也就一个

总结:

读都是可以一个功能码读多个或单个的。而写是分为写单个和写多个需要两个功能码。

所以对于只读的寄存器都只有一个功能码,而可读可写的寄存器都有三个功能码

    1. 功能码

功能码占一个字节

写多个线圈0X0F

写多个保持寄存器0X10

具体协议分析可参考:

实例分享 | ModbusTCP报文详解

读数据:

主机--》从机

报文头----功能码---起始地址---数量

从机---》主机

报文头----功能码---字节计数---数据

写单个线圈

写单个

主机--》从机

报文头---功能码---地址--- 通/断标志 /数据

从机--》主机

原文返回

写多个线圈寄存器

写多个

主机--》从机

报文头---功能码--起始地址--数量--字节计数--数据

从机--》主机

报文头---功能码--起始地址--数量

主机询问数据流

00 00 00 00 00 06 01 03 00 63 00 02

03:功能码

0x0063:起始地址 6*16+3=99 ,40100

0002:个数 40100 40101

从机应答数据流

00 00 00 00 00 07 01 03 04 02 13 30 08

03:功能码

04:字节计数

0213 :40100数据

3008: 40101数据

练习:

  1. 读传感器数据,读1个寄存器数据,写出主从数据收发协议。

00 00 00 00 00 06 11 01 00 01 00 01

00 00 00 00 00 04 11 01 01 00

  1. 写出控制IO设备开关的协议数据,操作1个线圈,置1。

00 00 00 00 00 06 11 05 00 63 ff 00

00 00 00 00 00 06 11 05 00 63 ff 00

标签:协议,00,字节,--,---,Tcp,Modbus,寄存器
From: https://blog.csdn.net/m0_65222138/article/details/140360121

相关文章

  • 满满干活-wireshark进阶篇《Wireshark的TCP协议数据包常见报错提示》,练就你火眼金睛,助
    文章目录概要1.TCPPORTNUMBERSREUSED当四元组相同时会出现报错2.TCPWINDOWFULL与TCPZEROWINDOW之你怎么还不回我啊与我不行了。3.TCPWindowUpdate之我又行了能工作了小结概要本文介绍Wireshark的数据包常见报错提示,包括TCPPORTNUMBERSREUSED和TCPW......
  • IP协议学习笔记
    目录IP地址格式IP分类CIDR和子网掩码介绍NAT+公网、私网地址CIDR与VLSMVLSM子网划分案例练习ReferenceIP的作用类似物理世界中的地址,用于定位机器的位置。只不过物理的地址是文字描述,计算机世界的IP是一串二进制数,并且它是有一定约定和规则的。下面我来学习关于IP的一些历......
  • Java 网络协议面试题答案整理,最新面试题
    TCP和UDP的主要区别是什么?TCP(传输控制协议)和UDP(用户数据报协议)的主要区别在于TCP是面向连接的协议,而UDP是无连接的协议。这导致了它们在数据传输方式、可靠性、速度和使用场景方面的不同。1、连接方式:TCP是面向连接的协议,数据传输前需要三次握手建立连接。UDP是无连接......
  • Go语言---TCP服务端以及客服端的实现
    TCP的C/S架构TCP服务器的实现监听的底层实现funcListen(network,addressstring)(Listener,error){ varlcListenConfig returnlc.Listen(context.Background(),network,address)}typeListenerinterface{ //Acceptwaitsforandreturnsthenextc......
  • HTTP请求协议格式详解
    HTTP(HyperTextTransferProtocol),即超文本传输协议,是互联网上应用最为广泛的一种网络协议,主要用于从WWW服务器传输超文本到本地浏览器的传输协议。它使得发布信息到Web服务器上非常容易,同时也使得信息在Web服务器之间互相传递成为可能。HTTP协议采用请求与响应模型,客户端(通常是......
  • TCP协议详解
    TCP是面向连接的(一对一的)、可靠的、基于字节流的传输层通信协议TCP报文如下: 源端口和目的端口:服务的端口号,2字节 序列号:解决TCP包乱序的问题,每发送一个包就会累加1 确认应答号:指下一次期望收到的序列号,发送端接收到确认应答号,就知道了之前的序列号都被接收,解决丢包问题......
  • 如何编译工业协议网关软件Neuron
    说明最近需要测试一个工业互联网网关的项目,在网上找到了工业协议网关软件Neuron,决定从它开始自己的工作。今天先介绍一下如何在x86平台上编译Neuron。Neuron简介Neuron是EMQ(杭州映云科技有限公司)出品的,它在物联网和工业互联网领域算是个领先厂商。我以前上课用的MQTTX客户......
  • USART串口协议 和va_list,va_start,va_end,vsprintf
    串口接口通信的目的:将一个设备的数据传送到另一个设备扩展硬件系统通讯协议:制定通信的规则,通信双方按照协议规则进行数据收发。注意:差分信号一般传输速度和距离都会非常高。多设备相当于老师在教师给所有同学讲课,点对点相当于老师找你到办公室谈话。串口是一种应用......
  • electron loadURL加载http协议(或内网)环境下使用navigator.mediaDevices.getUserMedi
    场景我使用的electron27版本。众所周知,navigator.mediaDevices.getUserMediaAPI只能在https环境下使用,在非https环境下使用时navigator.mediaDevices会返回undefined。除了例外的这几种情况。例外的几种情况在MDN安全上下文文章中进行了说明说明了。大致意思是在https,fi......
  • 2024 /7/14 H3U与MD600Modbus通讯应用指导
    目录步骤一:硬件接线步骤二:变频器参数设置步骤三:软件PLC程序配置 注意事项:步骤一:硬件接线                    PLC侧485端子                           MD600变频器侧......