2 Star 2 Fork 2

Actor_V / MF_Modbus

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README.md 2.03 KB
一键复制 编辑 原始数据 按行查看 历史
myfuture 提交于 2022-11-09 14:06 . add README.md example

mf_modbus

1.modbus主机

目前仅实现主机部分,从机部分有时间再做。
实现功能:

  1. 03功能码发送。

03读寄存器功能码,使用周期事件查询方式,需要在初始化部分添加所有需要查询的寄存器。详细API先查看mf_mbevent.c文件。

  1. 04功能码发送。

同03功能码。

  1. 06功能码发送。

06写寄存器功能码,使用事件实时添加方式,发送完成后自动销毁,下次发送需要重新添加事件,发送优先级固定比查询事件的优先级高。

  1. 应答接收

应答接收使用虚函数,需要用户重写,或者直接使用mf_mbport.c文件,建议重写。

2.案例

  1. 初始化,添加任务调度,添加时钟
#include "mf_mb.h"      //引用头文件

void main(void)
{
    mf_mb_init();       //初始化
    while(1)
    {
        mf_mb_handle(); //任务调度
    }
}

void time_IRQhandler(void)//定时器1ms中断回调
{
    mf_time_tick_inc();
}
  1. 添加需要循环读取寄存器的事件
#include "mf_mb.h"

//初始化读取事件
void mf_mb_event_read_init(void)    //虚函数重写
{
    //0x01:MODBUS从机ID;
    //MF_MB_EVENT_FUNC_03:03功能码(详情查看mf_mbevent.h);
    //Register:起始寄存器地址;
    //length:要查询的寄存器个数。
    mf_mb_event_read_add(0x01,MF_MB_EVENT_FUNC_03,Register,length); //添加读取的寄存器事件
    mf_mb_event_read_add(0x01,MF_MB_EVENT_FUNC_03,Register,length);
    mf_mb_event_read_add(0x01,MF_MB_EVENT_FUNC_03,Register,length);
    ...
}
  1. 添加修改寄存器事件
#include "mf_mb.h"

void add_event(uint16_t *data)
{
    //0x01:MODBUS从机ID;
    //MF_MB_EVENT_FUNC_06:06功能码(详情查看mf_mbevent.h);
    //Register:起始寄存器地址;
    //data:数据内容;
    //length:要查询的寄存器个数。
    mf_mb_event_write_add(0x01,MF_MB_EVENT_FUNC_06,Register,data,length);//添加修改的寄存器事件,*成功发送后,自动销毁此事件*
}
C
1
https://gitee.com/Actor_V/mf_modbus.git
git@gitee.com:Actor_V/mf_modbus.git
Actor_V
mf_modbus
MF_Modbus
V1.0

搜索帮助