OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 36371|回复: 43

STM32F103 modbus-RTU RS485源码

  [复制链接]

6

主题

22

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2017-12-16
在线时间
7 小时
发表于 2018-1-14 22:01:34 | 显示全部楼层 |阅读模式
我相信很多买原子板子的都跟我一样是个学生,所以在初做项目的时候四处找资料,但是又头疼看不懂。我第一次接手学院里面一个用modbus协议读数据的项目时也是费了大力。毕竟是个学生很多都只学习了理论。很感谢吧友以及原力召唤出来的原子哥给予的帮助,现在我把我调试modbus-RTU的详细资料发出来。这些资料并不是我的,只是我总结吧友的东西。为了能让更多像我一样小白的同学能看明白。

材料:正点原子F103战舰板。两根线

准备工作:正点原子的F103战舰板右上角有一个接线柱,上面标注了RS485,并画了A,B。好了先把板子的A跟要通讯的设备A连起来,B跟设备的B连起来。现在板子是主机,设备是从机。主机发送请求,从机给予应答。然后在板子的右侧有一个usart2的跳线帽。连接PA2-》485TX。PA3->485RX。这一部分参见正点原子的库开发指南的485教学,里面有详细的介绍。

然后用那根串口调试的线接上,打开并设置好电脑调试助手。读取到的数据就会显示在串口调试助手上。这个是适配于这个逆变器的,具体的协议我发上来了,就是那个茂硕逆变器的。

关于协议:
实质上就是发送一系列数组来让设备应答的,来上实例:


Z_[6C50CAJ5L2OLP$%4(Q3L.png
我们现在读出这两个数据,它的地址是0xC104,0xC105
因为我们是要读取这两个数据,所以从机应答数据,就是从机寄存器的输出。我们要来读取,于是功能码先用0x03。
读两个数据,因为是连续的,数据长度是0x02.这个东西是顺着读的,如果你想读一个0xC104跟0xC106。就得读三个数据了,然后中间的那个0xC105就得晾着了。
寄存器地址:就看你要开始的地址,就是0xC104.
从机地址:这个要看说明书,因为这个东西是写在从机里面的,我那里手册上面写到了这个机子的地址是0x01。
如果就算一点也不了解,先把这几个数按照咱们推出来的改一下就ok了
即改为:
功能码 0x03 数据位0x02 寄存器地址 0xC104 从机地址0x01。
F1Z}2MOHPOOY%0O0NP%MQ51.png
波特率,起始位,停止位,奇偶判断:这些标注的很清楚了,在master.c文件里面,波特率跟奇偶判断在开头的著名里面改,有详细备注。停止位在usart2的使能函数里面改,一般都是1个停止位。起始位不用管,都是一个。
然后问题是轮询周期,协议上面都写着最短的轮询周期,就是多长时间你可以鸟一下从机。我这个协议是1S的。写这个代码的人很聪明的利用了定时器解决了这个问题,他用定时器4每固定秒数触发modbus.c的335行代码void mosbus()前多少秒写进去一次数据,然后再过多少秒再读(其实是处理)一次数据。具体的延时设计为主函数的第44行,我的是1秒的轮询周期,所以上面写的是5000(500ms,两个过程加一起就是1秒)。
CRC校验已经在modbus.c里面写的很清楚了,字面意思理解不了了可以先拿去复制。

主函数第56行是输出读到的数据的,读取到的数据具体怎么处理出来我觉得各位头疼modbus的同学都知道怎么搞吧,我觉得各位都是在跟我当初一样头疼没有响应吧,这个里面我又加了好多注释,因为我只是个学生。所以很多注释加的不专业甚至就是大白话。

在此再次感谢这位能分享这个源码的巨老以及各位给我留言帮助过我的吧友(顺道捎上盖过楼的原子哥)。


茂硕电气逆变器通讯协议(5-40kw 三相).pdf

783 KB, 下载次数: 2459

新建文件夹.zip

3.4 MB, 下载次数: 21743

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2018-1-19
在线时间
3 小时
发表于 2018-1-19 18:23:14 | 显示全部楼层
您好,楼主,感谢您的热心分享。最近我也在做stm32 跟变频器485通信控制异步电机转动(Modbus 协议),我在用UART 串口发命令(把频率发到变频器内部的寄存器)的时候,总是没反应。请问楼主能留个联系方式交流下吗?
回复 支持 2 反对 1

使用道具 举报

15

主题

60

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
444
金钱
444
注册时间
2017-7-11
在线时间
89 小时
发表于 2018-1-23 09:54:26 | 显示全部楼层
威武!
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2018-8-3
在线时间
8 小时
发表于 2018-8-8 16:14:51 | 显示全部楼层
Devince 发表于 2018-1-19 18:23
您好,楼主,感谢您的热心分享。最近我也在做stm32 跟变频器485通信控制异步电机转动(Modbus 协议),我在 ...

你好 这个你搞定了吗?
回复 支持 反对

使用道具 举报

2

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2018-10-18
在线时间
15 小时
发表于 2018-10-18 20:55:59 | 显示全部楼层
楼主,能请教几个问题吗?
回复 支持 反对

使用道具 举报

3

主题

1155

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7462
金钱
7462
注册时间
2015-1-15
在线时间
1367 小时
发表于 2018-10-18 20:57:26 来自手机 | 显示全部楼层
论坛上一堆的串口modbus通讯协议代码直接移植过去用就可以了
回复 支持 反对

使用道具 举报

6

主题

22

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2017-12-16
在线时间
7 小时
 楼主| 发表于 2019-2-1 10:19:44 | 显示全部楼层
Slogan 发表于 2018-10-18 20:55
楼主,能请教几个问题吗?

鸭,可以鸭
回复 支持 反对

使用道具 举报

5

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2014-1-12
在线时间
13 小时
发表于 2019-2-7 09:21:11 | 显示全部楼层
楼主问下这个轮询周期具体是起着什么作用?
回复 支持 反对

使用道具 举报

1

主题

9

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2019-3-4
在线时间
5 小时
发表于 2019-3-4 21:14:29 | 显示全部楼层
楼主,我想咨询一下,你的这个例子,初始的数据是怎么发的?为何我在主程序中没看到主机发送数据的步骤?
在while(1)前有一段:Modbus_RegMap();//modbus通讯
可是这个貌似没有发信息啊?
请问能否留个联系方式,或者麻烦你加我qq?
回复 支持 反对

使用道具 举报

1

主题

9

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2019-3-4
在线时间
5 小时
发表于 2019-3-5 14:30:03 | 显示全部楼层
楼主,我想问一下,你的程序里面这一段是怎么用的?能否指点一些?
u16  Master_WriteReg[1000];//写寄存器--将寄存器中的数据发给从机
void Modbus_RegMap(void)  
{
        Master_WriteReg[0]=1;
        Master_WriteReg[1]=8;
        Master_WriteReg[2]=9;
        Master_WriteReg[3]=235;
        Master_WriteReg[4]=8690;
        Master_WriteReg[5]=23578;
        Master_WriteReg[6]=125;
       
        Master_OutputIO[20]=1;
        Master_OutputIO[21]=0;
        Master_OutputIO[22]=1;
        Master_OutputIO[23]=1;
        Master_OutputIO[24]=0;
        Master_OutputIO[25]=0;
        Master_OutputIO[26]=1;
        Master_OutputIO[27]=1;
       
        Master_OutputIO[28]=1;
        Master_OutputIO[29]=0;
}
回复 支持 反对

使用道具 举报

1

主题

9

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2019-3-28
在线时间
8 小时
发表于 2019-4-2 20:40:22 | 显示全部楼层
nifage 发表于 2019-3-5 14:30
楼主,我想问一下,你的程序里面这一段是怎么用的?能否指点一些?
u16  Master_WriteReg[1000];//写寄存 ...

请问您解决了吗?我也遇到了这种问题
回复 支持 反对

使用道具 举报

1

主题

9

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2019-3-28
在线时间
8 小时
发表于 2019-4-2 20:44:20 | 显示全部楼层
楼主大神方便吗?我有些问题想要咨询您哎,能加个联系方式吗?我的QQ 865651736
姓名:葛国庆
回复 支持 反对

使用道具 举报

1

主题

9

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2019-3-28
在线时间
8 小时
发表于 2019-4-3 13:04:07 | 显示全部楼层
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
3
金钱
3
注册时间
2019-5-3
在线时间
0 小时
发表于 2019-5-3 13:17:13 | 显示全部楼层
为什么没有485程序呢
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
3
金钱
3
注册时间
2019-5-3
在线时间
0 小时
发表于 2019-5-3 13:20:30 | 显示全部楼层
看到了
不好意思
回复 支持 反对

使用道具 举报

3

主题

9

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2019-3-10
在线时间
13 小时
发表于 2019-5-5 16:18:09 | 显示全部楼层
为什么没有  modbus.c  呀?
回复 支持 反对

使用道具 举报

5

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
123
金钱
123
注册时间
2019-5-7
在线时间
61 小时
发表于 2019-5-7 22:52:24 | 显示全部楼层
为什么我把modbus.c和.h复制到我的项目中,编译后stm32l10x_tim.h不能加载
回复 支持 反对

使用道具 举报

5

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
123
金钱
123
注册时间
2019-5-7
在线时间
61 小时
发表于 2019-5-7 23:17:30 | 显示全部楼层
这什么问题!!!!!!!!!
Catch.jpg
回复 支持 反对

使用道具 举报

1

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2019-5-12
在线时间
19 小时
发表于 2019-7-8 11:20:07 | 显示全部楼层
非常感谢,找了很久,希望有用。。。。支持共享
回复 支持 反对

使用道具 举报

2

主题

12

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2019-5-8
在线时间
6 小时
发表于 2019-7-10 12:46:08 | 显示全部楼层
这个破玩意儿真不好玩,讨厌modbus
回复 支持 反对

使用道具 举报

0

主题

131

帖子

0

精华

初级会员

Rank: 2

积分
175
金钱
175
注册时间
2019-7-1
在线时间
6 小时
发表于 2019-7-10 13:27:14 | 显示全部楼层
好贴子,收藏了
IIS7站长  http://www.iis7.com/
回复 支持 反对

使用道具 举报

13

主题

263

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
5337
金钱
5337
注册时间
2017-8-14
在线时间
236 小时
发表于 2019-7-11 23:17:25 | 显示全部楼层
Devince 发表于 2018-1-19 18:23
**** 作者被禁止或删除 内容自动屏蔽 ****

先用 计算机  和 变频器 通信 测试 搞ding
详细资料扣扣群204408503自行下载
回复 支持 反对

使用道具 举报

2

主题

6

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2019-7-10
在线时间
4 小时
发表于 2019-7-13 10:25:33 | 显示全部楼层
谢谢楼主的分享,但是我刚才下载了楼主分享的茂硕电气逆变器通信协议,但是没有在里边找到该从机的地址
回复 支持 反对

使用道具 举报

2

主题

6

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2019-7-10
在线时间
4 小时
发表于 2019-7-13 10:34:51 | 显示全部楼层
reading 发表于 2019-7-13 10:25
谢谢楼主的分享,但是我刚才下载了楼主分享的茂硕电气逆变器通信协议,但是没有在里边找到该从机的地址

我明白了,寄存器地址应该是另有产品说明书说明,谢谢楼主
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
4
金钱
4
注册时间
2019-9-1
在线时间
1 小时
发表于 2019-9-19 08:28:30 | 显示全部楼层
学习学习
回复 支持 反对

使用道具 举报

0

主题

25

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2019-5-1
在线时间
5 小时
发表于 2019-11-8 09:54:05 | 显示全部楼层
感谢楼主的热心分享
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2020-4-8
在线时间
3 小时
发表于 2020-4-21 18:19:00 | 显示全部楼层
感谢楼主的热心分享
回复 支持 反对

使用道具 举报

2

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
80
金钱
80
注册时间
2020-4-1
在线时间
15 小时
发表于 2020-5-6 15:35:11 | 显示全部楼层
感谢楼主
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2019-9-15
在线时间
6 小时
发表于 2020-7-21 23:29:58 | 显示全部楼层
你好,朋友,能否请教一下
STM32F103 modbus-RTU RS485源码
看了你的 发帖的,
有些不明白,是否可以指点一下  谢谢
回复 支持 反对

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2020-7-19
在线时间
7 小时
发表于 2020-7-29 16:49:15 | 显示全部楼层
tetgrt 发表于 2020-7-21 23:29
你好,朋友,能否请教一下
STM32F103 modbus-RTU RS485源码
看了你的 发帖的,

我也有关于这方面的问题,可以一起学习吗?qq1173837256,期待共同进步
回复 支持 反对

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
7
金钱
7
注册时间
2020-9-3
在线时间
1 小时
发表于 2020-9-4 12:18:20 | 显示全部楼层
请教下楼主  精英版本想实现电脑为主机开发板为从机有相关的例程可以借鉴下吗?
回复 支持 反对

使用道具 举报

5

主题

63

帖子

0

精华

初级会员

Rank: 2

积分
182
金钱
182
注册时间
2019-10-7
在线时间
36 小时
发表于 2020-11-30 17:07:38 | 显示全部楼层
感谢楼主分享的资料,我看了一下,这是主机的程序,请问有从机的吗?
回复 支持 反对

使用道具 举报

5

主题

305

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1690
金钱
1690
注册时间
2018-11-28
在线时间
214 小时
发表于 2020-12-2 16:01:36 | 显示全部楼层
路过学习了,谢谢
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2020-5-3
在线时间
4 小时
发表于 2020-12-22 08:21:13 | 显示全部楼层
感谢!
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2021-12-6
在线时间
8 小时
发表于 2021-12-6 16:31:21 | 显示全部楼层
应该有用,学习一下。
回复 支持 反对

使用道具 举报

9

主题

120

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1133
金钱
1133
注册时间
2014-7-8
在线时间
133 小时
发表于 2021-12-8 17:37:45 | 显示全部楼层
谢谢分享!
回复 支持 反对

使用道具 举报

0

主题

7

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2021-1-18
在线时间
1 小时
发表于 2021-12-20 00:57:44 | 显示全部楼层
感谢分享,正在学modbus
回复 支持 反对

使用道具 举报

7

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
109
金钱
109
注册时间
2020-8-18
在线时间
29 小时
发表于 2022-1-13 18:22:27 | 显示全部楼层
222222222222222 发表于 2020-9-4 12:18
请教下楼主  精英版本想实现电脑为主机开发板为从机有相关的例程可以借鉴下吗?

你好兄弟,你这个实现了吗,我最近也是在做这个还没整明白
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
3
金钱
3
注册时间
2022-2-23
在线时间
0 小时
发表于 2022-2-23 19:36:11 | 显示全部楼层
楼主 为啥我进不去USART2_IRQHandler这个中断 有发送数据 没有接收
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
3
金钱
3
注册时间
2022-8-1
在线时间
2 小时
发表于 2022-8-1 19:22:40 | 显示全部楼层
主程序只有40行,其他的哪里去了
回复 支持 反对

使用道具 举报

0

主题

26

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1775
金钱
1775
注册时间
2013-12-5
在线时间
146 小时
发表于 2023-2-17 16:21:37 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2021-10-14
在线时间
2 小时
发表于 2023-4-14 11:33:16 | 显示全部楼层
楼主,您好,能分享下您的源码吗,最近在做温湿度数据采集,在这个源码基础上改,从机一直不返回数据
回复 支持 反对

使用道具 举报

0

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
193
金钱
193
注册时间
2024-3-5
在线时间
36 小时
发表于 2024-6-5 15:39:25 | 显示全部楼层
多谢楼主分享!!!
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2019-8-15
在线时间
2 小时
发表于 2024-7-16 12:21:23 | 显示全部楼层
感谢分享
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-23 15:47

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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