OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
楼主: 刘东君

分享一个ModBus主机自己写的,求点评!支持01 02 03 05 06 15 16 功能码

  [复制链接]

0

主题

2

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2019-9-19
在线时间
35 小时
发表于 2020-9-26 11:46:26 | 显示全部楼层
到处找关于Modbus 方面的资料,看了不少于几十个关于485通讯的实例,这个是最好的,非常感谢刘大师的无私分享!自己也是刚刚接触Modbus,现在想使用Stm32f407作为主机,外挂几个485继电器和485数码管,搞了半个多月也是一头雾水。刘大师真是高人啊!!
正点原子逻辑分析仪DL16劲爆上市
回复 支持 反对

使用道具 举报

1

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2018-10-15
在线时间
21 小时
发表于 2020-10-29 17:32:00 | 显示全部楼层
问一下大家,波特率115200能不能用,还有运行程序接收一次不再接收,请求大神给解答一下
回复 支持 反对

使用道具 举报

1

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2018-10-15
在线时间
21 小时
发表于 2020-10-29 17:36:16 | 显示全部楼层
我用的这个程序,硬件电路是自动收发的,程序如下,接收一次就不再接收,定时器里面发送,while循环里面接收,请求大神解决一下,不胜感激!!

ModBus-Master.zip

3.01 MB, 下载次数: 12

回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2020-10-21
在线时间
12 小时
发表于 2021-1-14 11:31:36 | 显示全部楼层
mp1415 发表于 2020-9-9 14:35
请问一下,保持寄存器指针指向那块不用测试数据,将实际测量的传感器数据给他需要怎么解决。

我也有这个问题,恳请楼主解答
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
10
金钱
10
注册时间
2021-3-18
在线时间
3 小时
发表于 2021-3-18 11:06:18 | 显示全部楼层
条理很清晰,比较容易看懂和移植,谢谢分享
回复 支持 反对

使用道具 举报

0

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
139
金钱
139
注册时间
2021-3-6
在线时间
27 小时
发表于 2021-3-23 11:37:17 | 显示全部楼层
tinghao挺好,学习中
回复 支持 反对

使用道具 举报

1

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
125
金钱
125
注册时间
2020-9-29
在线时间
36 小时
发表于 2021-4-10 10:37:18 | 显示全部楼层
楼主04H为什么没有
回复 支持 反对

使用道具 举报

7

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2016-11-7
在线时间
9 小时
发表于 2021-4-25 21:48:38 | 显示全部楼层
感谢分享!
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2020-10-21
在线时间
12 小时
发表于 2021-4-28 16:54:19 | 显示全部楼层
mp1415 发表于 2020-8-9 10:17
你好,请问一下从机的程序中怎么将传感器采集的数据存储在寄存器里

我也有这个问题。
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2019-10-15
在线时间
6 小时
发表于 2021-5-20 15:51:15 | 显示全部楼层
麻烦问一下,我现在用MCGS的触摸屏做上位机,stm32F103做从机,一主一从通信正常,但是一主多从的时候,通信会偶尔中断一下,用串口监视,能看到两个从机都有数据发送错误,并且这个错误的数据好像没有规律,有时候是1号错,有时候是2号错,请问这种情况是哪儿的问题?
回复 支持 反对

使用道具 举报

23

主题

256

帖子

0

精华

高级会员

Rank: 4

积分
767
金钱
767
注册时间
2017-2-19
在线时间
133 小时
 楼主| 发表于 2021-5-26 16:38:44 | 显示全部楼层
Sunny2018 发表于 2021-5-20 15:51
麻烦问一下,我现在用MCGS的触摸屏做上位机,stm32F103做从机,一主一从通信正常,但是一主多从的时候,通 ...

从机地址修改好了吗
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2019-10-15
在线时间
6 小时
发表于 2021-5-27 14:13:47 | 显示全部楼层
刘东君 发表于 2021-5-26 16:38
从机地址修改好了吗

修改好了的,关键是通讯一会好,一会断,监视串口数据,就是单片机回传的数据一会正确,一会错误,麻烦您问一下这种情况应该往哪儿查?一对一通讯都是完全正常的
回复 支持 反对

使用道具 举报

28

主题

360

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1027
金钱
1027
注册时间
2021-2-4
在线时间
146 小时
发表于 2021-5-27 14:29:57 | 显示全部楼层
不知道说什么 只能喊声牛逼
回复 支持 反对

使用道具 举报

23

主题

256

帖子

0

精华

高级会员

Rank: 4

积分
767
金钱
767
注册时间
2017-2-19
在线时间
133 小时
 楼主| 发表于 2021-5-28 16:28:16 | 显示全部楼层
Sunny2018 发表于 2021-5-27 14:13
修改好了的,关键是通讯一会好,一会断,监视串口数据,就是单片机回传的数据一会正确,一会错误,麻烦您 ...

通讯时间设置看看
回复 支持 反对

使用道具 举报

5

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
105
金钱
105
注册时间
2021-2-7
在线时间
26 小时
发表于 2021-6-10 00:31:43 | 显示全部楼层
想移植一主多从的程序,接一个0x01和0x02的传感器,除了一些端口号要改,还有什么需要改的,想把两个测的值printf出来,具体怎么实现啊,小白求解答
回复 支持 反对

使用道具 举报

5

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
105
金钱
105
注册时间
2021-2-7
在线时间
26 小时
发表于 2021-6-10 14:13:22 来自手机 | 显示全部楼层
zsshd518 发表于 2020-9-26 11:46
到处找关于Modbus 方面的资料,看了不少于几十个关于485通讯的实例,这个是最好的,非常感谢刘大师的无私分 ...

兄弟,你实现了吗?想借鉴一下你的经验
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2020-7-11
在线时间
6 小时
发表于 2021-6-23 08:49:43 | 显示全部楼层

条理很清晰,比较容易看懂和移植,谢谢分享
回复 支持 反对

使用道具 举报

0

主题

6

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2019-5-28
在线时间
6 小时
发表于 2021-7-3 14:30:24 | 显示全部楼层
有个不成熟的建议,添加一个串口1的打印,否则不知道怎么跑的
回复 支持 反对

使用道具 举报

0

主题

6

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2019-5-28
在线时间
6 小时
发表于 2021-7-6 17:44:32 | 显示全部楼层
modbus 读输入寄存器呢
回复 支持 反对

使用道具 举报

23

主题

256

帖子

0

精华

高级会员

Rank: 4

积分
767
金钱
767
注册时间
2017-2-19
在线时间
133 小时
 楼主| 发表于 2021-10-6 17:00:18 | 显示全部楼层
maxiaoxing 发表于 2021-6-10 14:13
兄弟,你实现了吗?想借鉴一下你的经验

DBQCSKeil.rar (3.62 MB, 下载次数: 57)
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2019-12-25
在线时间
2 小时
发表于 2021-10-23 12:06:07 | 显示全部楼层
感谢分享!!
想请教下,这个程序 每个周期 每个功能码 StartAddr 是不变的,ValueOrLenth 也是固定的。实际项目应该是要求 变化的吧。这样就会干扰么
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2021-11-10
在线时间
4 小时
发表于 2021-11-10 15:06:47 | 显示全部楼层
本帖最后由 cfcl 于 2021-11-16 15:05 编辑

66666666666666
回复 支持 反对

使用道具 举报

1

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
111
金钱
111
注册时间
2020-11-8
在线时间
23 小时
发表于 2021-11-10 16:37:42 | 显示全部楼层
1. 中断内建议快进快出。
2.modbus_rtu函数并未实现连续发三次,else中应当将i置0,重新调用RS485_TX_Service()函数发送数据。
3.ComErr变量,在每次解析完成后并未赋值为初始值。如果第一次成功解析,在RS485_RX_Service函数中ComErr置0,之后如果485掉线,将会出现错误。
4. 建议将Modbus_RegMap()函数改变成一个指针数组,这样可以将任何全局变量放入map中。
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
3
金钱
3
注册时间
2021-12-16
在线时间
0 小时
发表于 2021-12-16 16:46:47 | 显示全部楼层
感谢楼主提供的思路,串口空闲中断+DMA 收数据也不错,我现在也在usb虚拟串口上跑modbus
回复 支持 反对

使用道具 举报

2

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2021-12-2
在线时间
24 小时
发表于 2021-12-23 20:00:41 | 显示全部楼层
楼主你好,我把485波特率改成2400之后,修改了 数据帧时间,u16 RS485_Frame_Distance=30;,为什么还是不行,还需要修改其他参数吗
回复 支持 反对

使用道具 举报

2

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2021-12-2
在线时间
24 小时
发表于 2021-12-23 20:02:13 | 显示全部楼层
为什么在仿真条件下,Master_HoldingReg[1000];数组里面没有任何反应
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2021-11-11
在线时间
5 小时
发表于 2021-12-24 15:55:43 | 显示全部楼层
刘东君 发表于 2017-4-7 14:24
谢谢斑斑,我先看下DMA是什么东东,然后在看下idle中断

DMA+IDLE实现了吗
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2021-11-11
在线时间
5 小时
发表于 2021-12-24 16:00:17 | 显示全部楼层
hi我歌月徘徊 发表于 2017-4-17 20:32
使用空闲中断是可以判断当前帧结束,那是不是就可以不用定时器啦?(从机)

我也是这样想,从机移植这样做是实现不了,主机自己写实现不了结果,理论是没问题不知道是哪里出问题了呢
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
3
金钱
3
注册时间
2021-12-26
在线时间
0 小时
发表于 2021-12-26 23:00:04 来自手机 | 显示全部楼层
请问有没有hal库的stm32f407的modbus主站,还有就是03功能码读取从站数据之后存放在单片机哪个缓冲区了,我主站读回来不知道它数据在哪我只知道串口回发数据正常,但是如果直接串口取位数数据的话这主站就没意义了
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2022-10-25
在线时间
4 小时
发表于 2022-11-18 11:38:34 | 显示全部楼层
觉得主机的接收函数有点问题,是否有人愿意指导一下,有偿,qq:252675129
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
4
金钱
4
注册时间
2023-1-5
在线时间
0 小时
发表于 2023-1-5 10:44:11 | 显示全部楼层
请问一下 为啥 为调试你的代码 他会 进入HardFault_Handler错误  原因是 这个红色部分的。
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
84
金钱
84
注册时间
2023-11-8
在线时间
22 小时
发表于 2023-11-15 14:42:37 | 显示全部楼层
刘东君 发表于 2017-4-27 12:03
用的这2个软件模拟的,坛友提供的,一个主机的,一个从机的。 还有ModBus调试精灵 ,再有一块开发板!  ...

楼主,请问是在单片机做主机时,电脑做从机么?还再需要一块单片机么,如果需要的话,接线是怎么连接呢?期待楼主解答,谢谢
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
84
金钱
84
注册时间
2023-11-8
在线时间
22 小时
发表于 2023-11-16 14:04:22 | 显示全部楼层
wwwwxc 发表于 2020-7-21 17:02
void Modbus_RegMap(void)  
{
        Master_WriteReg[0]=1;

请问你知道这个是什么意思了么?我也有同样的问题,求指教
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
84
金钱
84
注册时间
2023-11-8
在线时间
22 小时
发表于 2024-1-4 15:42:56 | 显示全部楼层
xiaobaiaaa 发表于 2023-11-15 14:42
楼主,请问是在单片机做主机时,电脑做从机么?还再需要一块单片机么,如果需要的话,接线是怎么连接呢? ...

已经知道了,也调试通过了,非常感谢,资料很好,赞!赞!赞!
回复 支持 反对

使用道具 举报

9

主题

120

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1133
金钱
1133
注册时间
2014-7-8
在线时间
133 小时
发表于 2024-4-5 15:50:11 | 显示全部楼层
谢谢楼主分享
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2024-4-5
在线时间
8 小时
发表于 2024-4-5 21:55:47 | 显示全部楼层
Sunny2018 发表于 2021-5-20 15:51
麻烦问一下,我现在用MCGS的触摸屏做上位机,stm32F103做从机,一主一从通信正常,但是一主多从的时候,通 ...

楼主解决了吗,能否参考一下您的代码,万分感谢!
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2024-4-1
在线时间
11 小时
发表于 2024-4-16 15:22:06 | 显示全部楼层
大佬,麻烦问一下为什么  数组RS485_RX_BUFF[ ]接收到的数据都是一个值
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2024-4-1
在线时间
11 小时
发表于 2024-4-16 16:10:48 | 显示全部楼层
接受到的数据都是报文的第一个数据“地址”,这是什么原因呢?
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2024-4-5
在线时间
8 小时
发表于 2024-4-17 18:55:12 | 显示全部楼层
mp1415 发表于 2020-9-9 14:35
请问一下,保持寄存器指针指向那块不用测试数据,将实际测量的传感器数据给他需要怎么解决。

你好,请问解决了吗,能否参考一下?谢谢
回复 支持 反对

使用道具 举报

0

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2013-5-24
在线时间
19 小时
发表于 2024-5-14 12:37:24 | 显示全部楼层
厉害,收藏先。。。。。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 19:20

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表