Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
AB32VG1
Modbus
RT-Thread
AB32VG1 RT-Thread freemodbus 串口RTU主机
发布于 2021-12-12 21:49:27 浏览:1427
订阅该版
[tocm] [RT-Thread 入门学习笔记 - 目录](https://club.rt-thread.org/ask/article/3420.html) [AB32VG1 RT-Thread 开发环境搭建](https://club.rt-thread.org/ask/article/3140.html) [AB32VG1 RT-Thread freemodbus 串口RTU从机](https://club.rt-thread.org/ask/article/3215.html) [AB32VG1 RT-Thread freemodbus 串口RTU主机](https://club.rt-thread.org/ask/article/3218.html) ## 前言 - 继续熟悉RT-Thread freemodbus 主机的应用并熟悉modbus协议。 - 平台:中科蓝讯AB32VG1开发板,IDE:RT-Thread Studio,RT-Thread 4.0.4(当前master最新) ## 目的 - 研究modbus协议的实现,熟悉现有modbus协议的使用,如freemodbus、libmodbus等。 - 终极目标:自己也能实现一套标准modbus协议。 ## 配置串口 - 查看AB32VG1 的原理图,找到能使用的uart串口或RS485, - 注意Modbus本身属于协议,底层可以使用三线串口、RS485、TCP等 - 这里直接使用三线串口(TXD、 RXD、 GND),如果使用RS485,注意配置RS485的方向控制引脚。   - 这里使用:uart1,引脚:`PA4/UART-TX1`、`PA3/UART-RX1`、GND,通过USB转串口,连接到电脑 - 新建AB32VG1最小工程,这个在前面的文章已经实现了,这里开启`uart1` - 首先配置使能`uart1`,我使用RT-Thread ENV 工具:menuconfig,不会使用这种方法的【抓紧去磨刀】 ```c .config - RT-Thread Project Configuration Hardware Drivers Config On-chip Peripheral Drivers Enable UART [*] Enable UART1 ```  - AB32VG1的BSP默认已经配置好了`uart1`的相关的引脚与驱动,这里只需要配置使能【BSP_USING_UART1】即可。 ## freemodbus 软件包 - freemodbus 有 RT-Thread 适配好的软件包,需要配置并更新到本地工程 ```c .config - RT-Thread Project Configuration → RT-Thread online packages → IoT - internet of things [*] FreeModbus: Modbus master and slave stack ---> ```   - menuconfig 配置完成后,需要【save】保存,这样会更新rtconfig.h文件 - 注意使能了 freemodbus软件包(远程),需要在RT-Thread ENV中执行:`pkgs --update`,把软件包更新下载到本地工程  - 此时只是开启了软件包,没有开启【FreeModbus应用例程】,这里为了简单,把freemodbus软件包里的例程,复制到本地的applications目录,并改名:`mb_master.c`  - 可以在RT-Thread ENV工具里执行:`scons --target=eclipse`,更新RT-Thread Studio工程 - 使用RT-Thread Studio 打开工程 - 修改例程:主要是:UART的串口号,这里使用`uart1`,串口号改为1, - 然后是串口是否需要【奇偶校验】,需要与通信的从机一致,如改为【无校验】, - 再就是每个modbus从机,都有一个【从机地址】,这里我改为:5。   - 增加data ram 大小,保证编译通过,freemodbus主机,使用较多的全局变量用于存储寄存器、线圈等modbus的数据。   - freemodbus主机基本这样了,使用RT-Thread Studio 编译通过。 ## 下载后程序无法运行的修复 - 修改AB32VG1 初始化栈造成编译下载后程序无法启动 - 恢复 link.lds 的修改 - 修改freemodbus 主机的读写寄存器数量,改小 - 保证编译通过,下载后,程序运行正常 - 【备忘】后续跟进:AB32VG1的初始栈、.bss、data的如何设置。  ## 协议的验证 - 代码写好,下载到板子上,运行msh 串口命令,查看协议是否开启: ```c msh >mb_master_samlpe sample is running msh > list_device msh >list_device device type ref count -------- -------------------- ---------- uart1 Character Device 1 /* ##### 使用的uart1 设备 ##### */ uart0 Character Device 2 pin Miscellaneous Device 0 msh > list_thread msh >list_thread /* ##### freemodbus master 开启的线程 ##### */ thread pri status sp stack size max used left tick error -------- --- ------- ---------- ---------- ------ ---------- --- md_m_sen 31 suspend 0x00000124 0x00000200 57% 0x00000009 000 master t 10 suspend 0x000000ec 0x00000200 46% 0x00000002 000 md_m_pol 10 suspend 0x000000cc 0x00000200 66% 0x00000009 000 tshell 20 running 0x00000128 0x00000800 32% 0x00000007 000 drv 18 suspend 0x00000100 0x00000200 50% 0x00000002 000 tidle0 31 ready 0x000000a0 0x00000200 31% 0x0000001d 000 timer 4 suspend 0x000000b8 0x00000100 71% 0x00000009 000 main 10 suspend 0x000000d4 0x00000800 11% 0x00000013 000 msh > ``` - 主机例程运行起来,怎么验证呢?这里使用【电脑】上的Modbus Slave软件(Modbus从机)验证     - 自此,基于AB32VG1 开发板,freemodbus 串口主机验证搭建完成了。 ## 小结 - 需要根据实际的需要修改主机的应用,自定义通信协议,拿modbus协议只当成【数据收发】 - freemodbus默认例程只配置了一个从机,用户可以根据需要,与多个从机进行数据通信、控制 - 只有多实践,才能掌握基础的串口通信知识 - 若无法通信,需要验证串口通信是否正常、串口的配置是否正确,串口的引脚是否初始化正常,保证底层通信正常,上层协议才能正确的运行。 - 后期研究一下:AB32VG1的初始化栈、.bss、.data的设置 ## 测试demo ```c https://gitee.com/zhangsz0516/ab32_freemodbus_master ```
1
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
张世争
学以致用
文章
131
回答
815
被采纳
179
关注TA
发私信
相关文章
1
ModbusRTU协议栈漏发送最后一个字节
2
3.0 增加freemodbus,编译不过
3
RT_THREAD上面的串口MODBUSRTU为啥没功能码?
4
关于 freemodbus 里存在的一点问题分享
5
请教如何使用组件里的FreeMODBUS
6
求一个FreeModbus的从机测试程序
7
FreeModbus的从机调试说明(含测试程序)
8
rtt_freemodbus
9
freemodbus怎么配置到uart
10
FreeModeBus从机调试问题
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
rt-smart
RTC
FAL
I2C_IIC
cubemx
ESP8266
UART
WIZnet_W5500
ota在线升级
PWM
BSP
flash
freemodbus
packages_软件包
潘多拉开发板_Pandora
GD32
定时器
ADC
flashDB
编译报错
socket
中断
rt_mq_消息队列_msg_queue
keil_MDK
Debug
SFUD
ulog
msh
C++_cpp
MicroPython
本月问答贡献
出出啊
1522
个答案
343
次被采纳
小小李sunny
1444
个答案
290
次被采纳
张世争
815
个答案
179
次被采纳
crystal266
555
个答案
162
次被采纳
whj467467222
1222
个答案
149
次被采纳
本月文章贡献
出出啊
1
篇文章
2
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
3
次点赞
crystal266
2
篇文章
1
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部