1 Star 0 Fork 0

何亚红 / SimpleModbusRTUPacket

Create your Gitee Account
Explore and code with more than 12 million developers,Free private repositories !:)
Sign up
Clone or Download
contribute
Sync branch
Cancel
Notice: Creating folder will generate an empty file .keep, because not support in Git
Loading...
README
MIT

说明

极其简易的Modbus-RTU模式数据包处理。

一般用于单片机,本代码只包含数据包处理程序,时序部分需要在单片机其它代码中实现。

特点如下:

  • 代码极其简易,便于移植。
  • 可用于各类带硬件串口的单片机。
  • 使用简单

缺陷:

  • 串口驱动以及Modbus时序需要自行编写。
  • 未进行某些检查。

使用

注意事项:

  • 本代码中的地址都是从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_master_context_t结构体,并填写相关成员(回调函数需自行定义,通常不可为NULL)。
  • 当需要请求数据时,调用Modbus_Master系列函数。

从机

主机主要使用modbus_slave_context_t结构体及 Modbus_Slave_Parse_Input函数。主要步骤如下:

  • 定义modbus_slave_context_t结构体,并填写相关成员(回调函数需自行定义,通常不可为NULL)。
  • 当串口接收到一帧数据时,调用 Modbus_Slave_Parse_Input函数。

Doxygen文档

进入doc目录后,直接运行doxygen程序,可在output目录中得到最新的文档。

已编译的文档见 doc/html/index.chm

测试

源代码下载

由于本源代码包含第三方源代码,故直接下载可能有部分源代码缺失,需要通过以下方法解决:

  • 在进行git clone 使用--recurse-submodules参数。

  • 若已通过git clone下载,则在源代码目录中执行以下命令下载子模块:

     git submodule update --init --recursive

工具

  • VSPD:虚拟串口驱动
  • ModScan32:Modbus上位机软件

编译

本测试均在MSYS2环境下使用CMake编译,可直接进入相应测试程序目录使用CMake编译。

注意:需要安装对应环境的GCC编译器、CMake、make(或者ninja)等

ModbusSlaveWin32

Modbus从机测试,仅支持Windows。

虚拟串口设置

VSPD

ModScan32测试结果

ModScan32_01

ModScan32_02

ModScan32_03

ModScan32_04

ModScan32_15_1

ModScan32_15_2

ModScan32_15_3

ModScan32_16_1

ModScan32_16_2

ModScan32_16_3

ModbusMasterTestWin32

主机测试,仅支持Windows。需要ModbusSlaveWin32。

对于主机模式的Modbus,通常采用更加强大的libmodbus库,本库仅用于简易使用。

若需GUI版的测试程序,请使用 cutecom-ng(个人修改版)

虚拟串口设置

VSPD

测试结果

ModbusMasterTestWin32

MIT License Copyright (c) 2022 何亚红 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

About

No description expand collapse
C and 4 more languages
MIT
Cancel

Releases

No release

Contributors

All

Activities

Load More
can not load any more
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C
1
https://gitee.com/HEYAHONG/SimpleModbusRTUPacket.git
git@gitee.com:HEYAHONG/SimpleModbusRTUPacket.git
HEYAHONG
SimpleModbusRTUPacket
SimpleModbusRTUPacket
master

Search

344bd9b3 5694891 D2dac590 5694891