极其简易的Modbus-RTU模式数据包处理。
一般用于单片机,本代码只包含数据包处理程序,时序部分需要在单片机其它代码中实现。
特点如下:
缺陷:
注意事项:
本代码中的地址都是从0开始的,但Modbus标准协议中地址规定是从1(数据帧中仍然是从0开始)开始。
所有需要缓冲的函数需要的缓冲推荐分配在栈上,因此在操作系统中需要将任务栈分配到足够大(若可以实现的话),对于一个经典的Modbus任务来讲,至少应当在其它需要的基础上额外分配256字节的栈空间专门用于接收与发送缓冲。可采用以下代码定义缓冲:
/*
源代码文件应包含Modbus.h
*/
#include "Modbus.h"
/*
在需要调用Modbus函数时定义缓冲
*/
uint8_t buff[MODBUS_RTU_MAX_ADU_LENGTH];
/*
定义好缓冲后,即可使用buff作为调用函数的buff参数,sizeof(buff)作为调用函数的buff_length参数。
*/
主机主要使用modbus_master_context_t结构体及 Modbus_Master开头的函数。主要步骤如下:
主机主要使用modbus_slave_context_t结构体及 Modbus_Slave_Parse_Input函数。主要步骤如下:
进入doc目录后,直接运行doxygen程序,可在output目录中得到最新的文档。
已编译的文档见 doc/html/index.chm
由于本源代码包含第三方源代码,故直接下载可能有部分源代码缺失,需要通过以下方法解决:
在进行git clone 使用--recurse-submodules参数。
若已通过git clone下载,则在源代码目录中执行以下命令下载子模块:
git submodule update --init --recursive
本测试均在MSYS2环境下使用CMake编译,可直接进入相应测试程序目录使用CMake编译。
注意:需要安装对应环境的GCC编译器、CMake、make(或者ninja)等
Modbus从机测试,仅支持Windows。
主机测试,仅支持Windows。需要ModbusSlaveWin32。
对于主机模式的Modbus,通常采用更加强大的libmodbus库,本库仅用于简易使用。
若需GUI版的测试程序,请使用 cutecom-ng(个人修改版)。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。