首页
搜索
历史搜索
首页 > 新闻中心 > 技术应用

一文读懂Modbus通信协议的功能码

2024-01-12 10:23:12| 来源:聚英电子| | 0

  Modbus是一种通信协议,最初是为工业自动化系统设计的,用于在不同设备之间进行数据交换和通信。Modbus通信协议广泛应用于工业控制领域,而功能码是Modbus协议中用来定义数据交换操作的。

一文读懂Modbus通信协议的功能码

  

  线圈寄存器:可以类比为开关量,每个bit都对应一个信号的开关状态。所以一个字节可以同时控制8路的信号。比如控制外部8路io的高低。 线圈寄存器支持读也支持写,比如控制或者读取电磁阀的开关志状态。对应的功能码有:0x01 0x05 0x0f

  离散输入寄存器:离散输入寄存器相当于线圈寄存器的只读模式,每个bit表示一个开关量,而他的开关量只能读取,不能够写入。只能通过外部设定改变输入状态,比如我可以读取外部按键的按下还是松开,但是控制不了按键。对应的功能码有:0x02

  保持寄存器:寄存器的单位不再是bit而是两个byte,也就是可以存放具体的数据量的,并且是可读写的。比如我不到那可以读取传感器报警上限下限,也可以设置它的大小。对应的功能码有:0x03 0x06 0x10

  输入寄存器:输入寄存器相当于保持寄存器的只读模式,也是只支持读而不能写。一个寄存器也是占据两个字节的空间。比如通过读取输入寄存器获取现在的模拟量采样值。对应的功能码有 0x04

功能码

  读取功能码(0x04)

  读取功能码(0x04)是Modbus02功能码中最常用的功能码之一,它用于从设备中读取数据。使用读取功能码(0x04)时,您需要指定要读取的寄存器地址和要读取的字节数,然后设备会返回指定地址的数据。

  写入功能码(0x06)

  写入功能码(0x06)用于向设备中写入数据。使用写入功能码(0x06)时,您需要指定要写入的寄存器地址和要写入的字节数,然后设备会将指定地址的数据写入设备中。

  状态查询功能码(0x08)

  状态查询功能码(0x08)用于查询设备的当前状态。使用状态查询功能码(0x08)时,您需要指定要查询的状态码,然后设备会返回指定状态码的当前值。

  报文查询功能码(0x0A)

  报文查询功能码(0x0A)用于查询设备的报文信息。使用报文查询功能码(0x0A)时,您需要指定要查询的报文码,然后设备会返回指定报文码的当前值。

  状态控制功能码(0x0C)

  状态控制功能码(0x0C)用于控制设备的状态。使用状态控制功能码(0x0C)时,您需要指定要控制的状态码,然后设备会将指定状态码的值更改为您指定的值。

  报文控制功能码(0x0E)

  报文控制功能码(0x0E)用于控制设备的报文信息。使用报文控制功能码(0x0E)时,您需要指定要控制的报文码,然后设备会将指定报文码的值更改为您指定的值。

  Modbus协议在工业控制领域中的灵活性和实用性,为设备间的数据交换和控制操作提供了高效的解决方案。