Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
Modbus
Modbus主站获取不了实际从站的数据
发布于 2019-12-04 21:21:32 浏览:2407
订阅该版
* 本帖最后由 coulson 于 2019-12-4 21:21 编辑 * 1.刚接触modbus 官方的例程是向从站的寄存器写数据,我先是在官方例程的基础上把写寄存器的程序改成了读寄存器数据的程序,用Modbus Slave做从站和stm32做主站进行测试,在主站的usMRegHoldBuf[ ] [ ]里能看到从站的数据。![485_1.png](/uploads/201912/04/182633cdls805ko2o6srr4.png) 2.但是在我接真实的传感器从机时,问题出现了,我所要读的传感器的地址为0x0500 我需要在0x0500开始往后读取15个寄存器,于是我的读指令变成了01 03 00 05 00 0F 05 02 ,主站发出的指令确实也是01 03 00 05 00 0F 05 02 ![主站发出.png](/uploads/201912/04/183135dnayvz5yd2yve2aa.png) 从机的传感器在收到指令后也回复了,但是我再看usMRegHoldBuf[ ] [ ]里的数据全是0,请问这个是什么问题,是因为我传感器的地址为0x0500 ,超过了主站设计的usMRegHoldBuf[ ] [ ]的地址的缘故吗? 3.我把代码放在附件里了,有了解的大神帮忙看一下。附件里上传大文件好像有问题,一直上传不了,我把modbus部分的代码放在附件了 下载附件 [sample_mb_master.c](https://oss-club.rt-thread.org/uploads/201912/04/212125z9888nhtqnkhire0.attach)
查看更多
36
个回答
默认排序
按发布时间排序
wwwzxddn
2019-12-05
这家伙很懒,什么也没写!
你好,我也遇到了类似的问题,你读完后返回码是什么》?
whj467467222
认证专家
2019-12-05
开源,分享,交流,共同进步
正确的调试办法是 查看eMBMasterReqWriteHoldingRegister 这个API的返回值。 不知道调整 user_mb_app.h里面的宏定义能不能解决你的问题
wwwzxddn
2019-12-05
这家伙很懒,什么也没写!
``` static void send_thread_entry(void *parameter) { eMBMasterReqErrCode error_code = MB_MRE_NO_ERR; rt_uint16_t error_count = 0; while (1) { error_code = eMBMasterReqReadHoldingRegister(SLAVE_ADDR, /* salve address */ MB_READ_REG_START, /* register start address */ MB_READ_REG_NUM, /* data to be written */ RT_WAITING_FOREVER); /* timeout */ rt_kprintf("add1--error_code: %d \n",error_code); rt_kprintf("<%#x><%#x><%#x><%#x>", usMRegHoldBuf[0][1],usMRegHoldBuf[0][2],usMRegHoldBuf[0][3],usMRegHoldBuf[0][4]); error_code = eMBMasterReqReadHoldingRegister(0x02, /* salve address */ MB_READ_REG_START, /* register start address */ MB_READ_REG_NUM, /* data to be written */ RT_WAITING_FOREVER); /* timeout */ rt_kprintf("add2--error_code: %d \n",error_code); rt_kprintf("<%#x><%#x><%#x><%#x>", usMRegHoldBuf[1][1],usMRegHoldBuf[1][2],usMRegHoldBuf[1][3],usMRegHoldBuf[1][4]); /* Record the number of errors */ if (error_code != MB_MRE_NO_ERR) { error_count++; } } } ```
wwwzxddn
2019-12-05
这家伙很懒,什么也没写!
[http://packages.rt-thread.org/detail.html?package=freemodbus](http://packages.rt-thread.org/detail.html?package=freemodbus) 缓存的设备ID要减1,就可以了
wwwzxddn
2019-12-05
这家伙很懒,什么也没写!
> --- 这个代码测试过了。没问题
coulson
2019-12-05
这家伙很懒,什么也没写!
>这个代码测试过了。没问题 --- ID减一我知道,可是我吧这个buff里全翻了一遍都没发现数据有变动啊
wwwzxddn
2019-12-05
这家伙很懒,什么也没写!
查下故障码,是没上来数据,还是数据有误
coulson
2019-12-05
这家伙很懒,什么也没写!
>查下故障码,是没上来数据,还是数据有误 --- error code 3
coulson
2019-12-05
这家伙很懒,什么也没写!
>error code 3 --- typedef enum { MB_MRE_NO_ERR, /*!< no error. */ MB_MRE_NO_REG, /*!< illegal register address. */ MB_MRE_ILL_ARG, /*!< illegal argument. */ MB_MRE_REV_DATA, /*!< receive data error. */ MB_MRE_TIMEDOUT, /*!< timeout error occurred. */ MB_MRE_MASTER_BUSY, /*!< master is busy now. */ MB_MRE_EXE_FUN /*!< execute function error. */ } eMBMasterReqErrCode; 这个error code应该是MB_MRE_REV_DATA,数据接收错误?
wwwzxddn
2019-12-05
这家伙很懒,什么也没写!
数据格式错误,检查电脑端 modbus slave设置
撰写答案
登录
注册新账号
关注者
0
被浏览
2.4k
关于作者
coulson
这家伙很懒,什么也没写!
提问
36
回答
106
被采纳
1
关注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
机器人操作系统 (ROS2) 和 RT-Thread 通信
4
国产MCU移植系列教程汇总,欢迎查看!
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组件
最新文章
1
RT-Thread Vision Board - Bare Metal Project with VSCode/PyOCD/Cortex-Debug
2
【学习分享】libc切换 -- 从newlib切换到mlibc
3
FRDM-MCXN947开发板之i2c应用
4
esp32 s3使用cherryusb cdc
5
【Vision Board 创客营】Vision Board上的DAC实践
热门标签
RT-Thread Studio
串口
LWIP
SPI
Env
Bootloader
AT
ART-Pi
Hardfault
CAN总线
FinSH
USB
文件系统
DMA
RT-Thread
SCons
线程
RT-Thread Nano
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
ota在线升级
WIZnet_W5500
I2C_IIC
UART
flash
cubemx
packages_软件包
freemodbus
潘多拉开发板_Pandora
PWM
定时器
ADC
BSP
中断
编译报错
socket
keil_MDK
GD32
MicroPython
msh
Debug
ulog
SFUD
flashDB
SDIO总线
rt_mq_消息队列_msg_queue
本月问答贡献
用户名由3_15位
18
个答案
3
次被采纳
xiaorui
7
个答案
3
次被采纳
sakumisu
4
个答案
3
次被采纳
踩姑娘的小蘑菇
15
个答案
2
次被采纳
三世执戟
32
个答案
1
次被采纳
本月文章贡献
比特饼干
3
篇文章
8
次点赞
Z_Y
2
篇文章
5
次点赞
Alipay
2
篇文章
3
次点赞
xusiwei1236
2
篇文章
3
次点赞
yinxiangxv
2
篇文章
3
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部