RTT小师弟 · 2021年04月25日

RT-Thread 应用笔记 - freemodbus RTU RS485 主机

RT-Thread 应用笔记 - 不正确使用LOG也会引发hard fault

RT-Thread 应用笔记 - RTC Alarm 组件的使用

RT-Thread 应用笔记 - freemodbus RTU RS485 从机

RT-Thread 应用笔记 - freemodbus RTU RS485 主机

RT-Thread 应用笔记 - libmodbus RTU RS485 从机

RT-Thread 应用笔记 - libmodbus RTU RS485 主机

RT-Thread 应用笔记 - STM32 CAN 通信双机

RT-Thread USB学习实践系列

背景

  • 部分用户使用基于rt-thread freemodbus组件,发现没那么顺利。
  • 基于rt-thread,已经有freemodbus的主从机软件包。
  • 本篇实现主机篇,从机篇请查看上一篇笔记。
  • 最近发现部分用户,组件拉下来,编译通过,调试失败,就发帖求助,没有主动的去分析问题的原因,多半是连引脚都没有配置。

前言

  • 嵌入式软件工程师,需要了解原理图,了解引脚定义,如串口、RS485控制引脚、等等。
  • 我的板子,MCU 为STM32F103C8T6, Flash与SRAM都相对不大。
  • UART1用于rt-thread MSH串口。
  • UART3用于RS485,用于modbus rtu串口。

移植

  • 与freemodbus从机一样。

2020-12-02_213959.png

2020-12-02_214010.png

2020-12-02_214021.png

2020-12-02_214028.png

2020-12-02_214036.png

2020-12-02_214355.png

  • 编译与下载。
  • MSH 串口运行:mb_master_samlpe,开启主机功能,例程里,是写多个保持寄存器。
    while (1)
    {
        /* Test Modbus Master */
        data[0] = (USHORT)(rt_tick_get() / 10);
        data[1] = (USHORT)(rt_tick_get() % 10);

        error_code = eMBMasterReqWriteMultipleHoldingRegister(SLAVE_ADDR,          /* salve address */
                                                              MB_SEND_REG_START,   /* register start address */
                                                              MB_SEND_REG_NUM,     /* register total number */
                                                              data,                /* data to be written */
                                                              RT_WAITING_FOREVER); /* timeout */

        /* Record the number of errors */
        if (error_code != MB_MRE_NO_ERR)
        {
            error_count++;
        }
    }
  • 连接从机,注意RS485接线。
  • 可以使用modbus slave工具,模拟从机(usb转rs485接入电脑)。

2020-12-02_212723.png

2020-12-02_212840.png

2020-12-02_212923.png

2020-12-02_213039.png

2020-12-02_213118.png

  • 主机正常运行。

总结:

(1)引脚配置,如uart3的配置,是需要用户自己配置的,如果使用STM32 HAL库,一般在board目录下,有个
stm32f1xx_hal_msp.c。注意,不同系列的STM32,不一样,如F4 L4等。注意灵活参考。
(2)RS485通信,需要考虑方向控制引脚的配置。
(3)注意从机地址的设置,如果是主机,理论上可以与多个从机进行通信,多个从机,都菊花链式挂在同一条RS485总线上。
(4)多看Modbus协议,了解寄存器的读写。

demo 地址:

https://gitee.com/zhangsz0516/rtt_stm32_freemodbus
推荐阅读
关注数
8072
内容数
181
小而美的物联网操作系统,经过14年的累积发展,RT-Thread 已经拥有一个国内最大的嵌入式开源社区,同时被广泛应用于能源、车载、医疗、消费电子等多个行业,累积装机量超过4亿台,成为国人自主开发、国内最成熟稳定和装机量最大的开源 RTOS。
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息