引言:
本文将介绍 Modbus 通信协议中常见的功能码及其数据格式。Modbus 是一种常用的工业通信协议,用于在设备之间进行数据交换。了解这些功能码和数据格式可以帮助您理解和使用 Modbus 协议。
Modbus 通信协议常用于工业领域,用于实现设备之间的数据交换。在 Modbus 协议中,常见的功能码用于指示设备执行特定的操作,并且每个功能码对应着特定的数据格式。通常 Modbus 数据格式应该包含站址、功能码、起始地址、数据长度和校验码,如下图:
下面是一些常见的 Modbus 功能码及其数据格式的介绍:
1
功能码 01 用于读取从设备的离散输出,也称为线圈的状态。在查询中,返回的数据字段包含了这些线圈的状态信息。
例如:
查询消息可以是“01 00 00 00 01”,其中第一个字节表示功能码 01,接下来的两个字节表示要读取的线圈地址,最后两个字节表示要读取的线圈数量。返回的数据字段中,每个位表示一个线圈的状态。
2
功能码 02 用于读取从设备的离散输入,也称为接点的状态。在查询中,返回的数据字段包含了这些接点的状态信息。
例如:
查询消息可以是“02 00 00 00 01”,其中第一个字节表示功能码 02,接下来的两个字节表示要读取的接点地址,最后两个字节表示要读取的接点数量。返回的数据字段中,每个位表示一个接点的状态。
3
功能码 03 用于读取从设备的保持寄存器中存储的数据。每个保持寄存器的大小默认为两个字节(16 位),在查询中返回的数据字段包含了这些寄存器的值。
例如:
查询消息可以是“03 00 00 00 02”,其中第一个字节表示功能码 03,接下来的两个字节表示要读取的寄存器地址,最后两个字节表示要读取的寄存器数量。
4
功能码 04 用于读取从设备的模拟输入寄存器中存储的数据。与保持寄存器类似,每个模拟输入寄存器的大小也默认为两个字节(16 位)。返回的数据字段包含了这些寄存器的值。
例如:
查询消息可以是“04 00 00 00 02”,其中第一个字节表示功能码 04,接下来的两个字节表示要读取的寄存器地址,最后两个字节表示要读取的寄存器数量。
5
功能码 05 用于将指定线圈的状态设置为查询消息中指定的值。该功能码在查询中指定了要设置的线圈地址和值。
例如:
查询消息可以是“05 00 00 FF 00”,其中第一个字节表示功能码 05,接下来的两个字节表示要设置的线圈地址,然后是要设置的线圈状态,00 00 表示关闭,FF 00 表示打开。
6
功能码 06 用于将指定保持寄存器的值设置为查询消息中指定的值。在查询中,需要指定要设置的寄存器地址和值。
例如:
查询消息可以是“06 00 00 12 34”,其中第一个字节表示功能码 06,接下来的两个字节表示要设置的寄存器地址,最后两个字节表示要设置的寄存器的值。
7
功能码 15 用于将多个线圈的状态设置为查询消息中指定的值。在查询中,需要指定要设置的线圈的起始地址、数量以及要设置的值。
例如:
查询消息可以是“0F 00 00 00 0d 02 01 01”,其中第一个字节表示功能码 15,接下来的两个字节表示要设置的线圈的起始地址,紧接着的两个字节表示要设置的线圈的数量,接着一个字节表示字节的数量(2),最后的两个字节表示要设置的线圈的状态。
8
功能码 16 用于将多个保持寄存器的值设置为查询消息中指定的值。在查询中,需要指定要设置的寄存器的起始地址、数量以及要设置的值。
例如:
查询消息可以是“10 00 00 00 0d 04 08 12 34 56”,其中第一个字节表示功能码 16,接下来的两个字节表示要设置的寄存器的起始地址,紧接着的两个字节表示要设置的寄存器的数量,接着一个字节表示字节的数量(4),最后的四个字节表示要设置的寄存器的值。
总结:
Modbus 通信协议中的功能码和数据格式对于实现设备之间的数据交换至关重要。本文介绍了常见的 Modbus 功能码及其数据格式,包括读写线圈、接点、保持寄存器和模拟输入寄存器等。了解这些功能码和数据格式有助于您理解和使用 Modbus 协议。
2024年10月
1.Smart200&V90伺服系统:已更新15课
2.贝加莱直播课程:已更新30课
3.PKS快速入门:初级&中级-全
原文始发于微信公众号(剑指工控):探索 Modbus 数据交换协议