在网上看到的别人写的一个基于STM32的MODBUS程序,还不错,发上来分享一下。顺便赚赚积分用于下载其他朋友的资料。
此Modbus协议暂时只支持RTU模式,只支持作为Modbus从设备。
暂时支持的功能码(16进制)如下表所示:
01.读线圈状态(读多个输出位的状态,有效地位为0-31)
02.读输入位状态(读多个输入位的状态,有效地位为0-31)
03.读保持寄存器(读多个保持寄存器的数值,有效地位为0-99)
04.读输入寄存器(读多个输入寄存器的数值,有效地址为0-1)
05.强制单个线圈(强制单个输出位的状态,有效地位为0-31)
06.预制单个寄存器(设定一个寄存器的数值,有效地址为0-99)
0F.强制多个线圈(强制多个输出位的状态,有效地址为0-31)
10.预制多个寄存器(设定多个寄存器的数值,有效地址为0-99)
暂时支持的错误代码为:
01 不合法功能代码从机接收的是一种不能执行功能代码。发出查询命令后,该代码指示无程序功能。(不支持的功能代码)
02 不合法数据地址接收的数据地址,是从机不允许的地址。(起始地址不在有效范围内)
03 不合法数据查询数据区的值是从机不允许的值。(在起始地址的基础上,这个数量是不合法的)