modbusTCP协议和TCP协议
TCP 最主要的特点
- TCP 是
面向连接的运输层协议。应用程序在使用 TCP 协议之前,必须先建立 TCP 连接。在传送数据完毕后,必须释放已经建立的 TCP 连接 - 每一条 TCP 连接只能有两个
端点,每一条 TCP 连接只能是点对点的(一对一) - TCP 提供
可靠交付的服务。通过 TCP 连接传送的数据,无差错、不丢失、不重复,并且按序到达 - TCP 提供
全双工通信。TCP 允许通信双方的应用进程在任何时候都能发送数据。TCP 连接的两端都设有发送缓存和接受缓存,用来临时存放双向通信的数据 面向字节流。TCP 中的“流”指的是流入到进程或从进程流出的字节序列
TCP 的连接建立
TCP 建立连接的过程叫做握手,握手需要在客户和服务器之间交换三个 TCP 报文段
TCP 报文段的首部格式
TCP 虽然是面向字节流的,但 TCP 传送的数据单元却是报文段。一个 TCP 报文段分为首部和数据两部分。TCP 报文段首部的前20个字节是固定的,后面有4n字节是根据需要而增加的选项(n是整数)。因此 TCP 首部的最小长度是20字节
首部字段
源端口和目的端口各占2个字节,分别写入源端口号和目的端口号序号占4字节。序号范围是[0, 232-1],共232(即4 294 967 296)个序号。序号增加到232-1后,下一个序号就又回到0。在一个 TCP 连接中传送的字节流中的每一个字节都按顺序编号确认号占4字节,是期望收到对方下一个报文段的第一个数据字节的序号数据偏移占4字节,它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。这个字段实际上是指出 TCP 报文段的首部长度保留占6位,保留为今后使用,但目前应置为0
modbus-TCP协议
modbus的操作对象有四种:线圈寄存器、离散输入寄存器、输入寄存器、保持寄存器。
线圈寄存器和离散输入寄存器是以bit为单位的寄存器,只能存储开关量,线圈寄存器可读可写,而离散输入寄存器只可读。
输入寄存器和保持寄存器以为2个byte为单位的寄存器,可以存储离散的变量, 保持寄存器可读可写, 输入寄存器只读。
常用功能码0x03:读保持寄存器
功能码0x03用于读取保持寄存器的值,从远程设备中读保持寄存器连续块的内容。
发送报文
请求报文的结构如下:
MBAP header + 功能码 + 起始地址H 起始地址L + 寄存器数量H 寄存器数量L(共12字节)
响应报文
响应报文的结构由下面几个部分组成:
MBAP header + 功能码 + 数据长度 + 寄存器数据
数据总长度 = 9 + 寄存器数量 × 2

浙公网安备 33010602011771号