OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子新作:阿波罗STM32F767&F429&探索者STM32F4开发板&赶快来下载资料哦。

查看: 1448|回复: 36

[STM32作业提交] MODBUS RS485通信,主机+从机

[复制链接]

  离线 

482

主题

8万

帖子

30

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
117143
金钱
117143
注册时间
2010-12-1
在线时间
898 小时
发表于 2017-8-22 18:34:01 | 显示全部楼层 |阅读模式
正点原子公众号
使用modbus协议变种,使用RS485接口传输,支持4种校验方法(校验和、异或、CRC8和CRC16)。
分两个代码:
1,实验X00 MODBUS - 485主机.rar  做MODBUS主机,通过串口2(RS485接口)不停的发数据。
2,实验X01 MODBUS - 485从机.rar  做MODBUS从机,通过串口2(RS485接口)不停的接收数据。

测试需要用2根杜邦线,连接两个开发板的串口1(对接:485A->485A  , 485B->485B)。
然后分别下载两个代码,就可以测试了.


实验X02 MODBUS - 485主机.rar (330.34 KB, 下载次数: 496)
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
微信公众平台:正点原子   点击扫码添加
回复

使用道具 举报

  离线 

16

主题

125

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
430
金钱
430
注册时间
2014-10-29
在线时间
170 小时
发表于 2017-8-22 18:59:23 | 显示全部楼层
回复 支持 反对

使用道具 举报

  离线 

21

主题

70

帖子

0

精华

初级会员

Rank: 2

积分
196
金钱
196
注册时间
2016-4-12
在线时间
71 小时
发表于 2017-8-23 16:43:10 | 显示全部楼层
和之前的串口的Modbus 主机从机的代码一样的啊!!是不是485和232的代码完全一样?只是加个转换芯片?
回复 支持 反对

使用道具 举报

  离线 

1

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2015-12-25
在线时间
24 小时
发表于 2017-9-19 16:05:03 | 显示全部楼层
请问一下原子哥,modbus从机只能选择RS485通讯吗?RS232可取不
回复 支持 反对

使用道具 举报

  离线 

110

主题

7272

帖子

12

精华

资深版主

Rank: 8Rank: 8

积分
10472
金钱
10472
注册时间
2013-9-10
在线时间
296 小时
发表于 2017-9-19 23:26:39 | 显示全部楼层
LLmeishi 发表于 2017-9-19 16:05
请问一下原子哥,modbus从机只能选择RS485通讯吗?RS232可取不

可以,我目前就是用UART进行的
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

  离线 

1

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2015-12-25
在线时间
24 小时
发表于 2017-9-20 08:44:32 | 显示全部楼层
八度空间 发表于 2017-9-19 23:26
可以,我目前就是用UART进行的

那就可能是我的程序出问题了,加了定时中断进去,就通讯出现异常,没有接收数据,也没有返回数据。
回复 支持 反对

使用道具 举报

  离线 

1

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2015-12-25
在线时间
24 小时
发表于 2017-9-20 08:45:58 | 显示全部楼层
八度空间 发表于 2017-9-19 23:26
可以,我目前就是用UART进行的

因为看到的资料都是用的RS485,搞得现在我都想放弃使用232,想尝试使用485通讯了
回复 支持 反对

使用道具 举报

  离线 

1

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2015-12-25
在线时间
24 小时
发表于 2017-9-21 16:35:51 | 显示全部楼层
八度空间 发表于 2017-9-19 23:26
可以,我目前就是用UART进行的

哥,那个串口中断那边对那个时间处理了,会不会导致通讯变量出现异常的情况,现在我一脸茫然,用232处理数据,发现触摸屏一直写进去,单片机无法读取到数据(0x10功能码无法实现),仅仅是读数据通讯是正常的
回复 支持 反对

使用道具 举报

  离线 

110

主题

7272

帖子

12

精华

资深版主

Rank: 8Rank: 8

积分
10472
金钱
10472
注册时间
2013-9-10
在线时间
296 小时
发表于 2017-9-21 22:37:09 | 显示全部楼层
LLmeishi 发表于 2017-9-21 16:35
哥,那个串口中断那边对那个时间处理了,会不会导致通讯变量出现异常的情况,现在我一脸茫然,用232处理 ...

我目前做了频繁数据读取操作,没发现问题
http://www.openedv.com/forum.php ... d=229542&extra=
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

  离线 

1

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2015-12-25
在线时间
24 小时
发表于 2017-9-22 09:31:40 | 显示全部楼层
八度空间 发表于 2017-9-21 22:37
我目前做了频繁数据读取操作,没发现问题
http://www.openedv.com/forum.php?mod=viewthread&tid=229542 ...

好的,感谢八度空间哥,我再结合你之前的在仔细看看
回复 支持 反对

使用道具 举报

  离线 

1

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2015-12-25
在线时间
24 小时
发表于 2017-9-22 09:49:17 | 显示全部楼层
八度空间 发表于 2017-9-21 22:37
我目前做了频繁数据读取操作,没发现问题
http://www.openedv.com/forum.php?mod=viewthread&tid=229542 ...

发现基本上所有的单片机与modbus结合的东西,均采用RS485通讯,这是为什么呢
回复 支持 反对

使用道具 举报

  离线 

110

主题

7272

帖子

12

精华

资深版主

Rank: 8Rank: 8

积分
10472
金钱
10472
注册时间
2013-9-10
在线时间
296 小时
发表于 2017-9-22 11:43:07 | 显示全部楼层
LLmeishi 发表于 2017-9-22 09:49
发现基本上所有的单片机与modbus结合的东西,均采用RS485通讯,这是为什么呢

1、通讯距离
2、隔离,解决干扰问题
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

  离线 

1

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2015-12-25
在线时间
24 小时
发表于 2017-9-22 14:00:48 | 显示全部楼层
八度空间 发表于 2017-9-22 11:43
1、通讯距离
2、隔离,解决干扰问题

和全工 、半双工工作方式没关系的对吧
回复 支持 反对

使用道具 举报

  离线 

110

主题

7272

帖子

12

精华

资深版主

Rank: 8Rank: 8

积分
10472
金钱
10472
注册时间
2013-9-10
在线时间
296 小时
发表于 2017-9-22 15:13:29 | 显示全部楼层
LLmeishi 发表于 2017-9-22 14:00
和全工 、半双工工作方式没关系的对吧

接线问题
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

  离线 

0

主题

2

帖子

0

精华

新手上路

Rank: 1

积分
22
金钱
22
注册时间
2017-9-22
在线时间
4 小时
发表于 2017-9-22 16:03:11 | 显示全部楼层
有没有基于stm32f767的modbus测试程序呢?
回复 支持 反对

使用道具 举报

  离线 

1

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2015-12-25
在线时间
24 小时
发表于 2017-9-28 17:15:45 | 显示全部楼层

哥,那个用RS232 全双工通讯的话,还需要对 帧与帧之间那个3.5个字符的时间进行处理吗?
回复 支持 反对

使用道具 举报

  离线 

110

主题

7272

帖子

12

精华

资深版主

Rank: 8Rank: 8

积分
10472
金钱
10472
注册时间
2013-9-10
在线时间
296 小时
发表于 2017-9-28 17:29:14 | 显示全部楼层
LLmeishi 发表于 2017-9-28 17:15
哥,那个用RS232 全双工通讯的话,还需要对 帧与帧之间那个3.5个字符的时间进行处理吗?

要,这个modbus的协议要求
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

  离线 

1

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2015-12-25
在线时间
24 小时
发表于 2017-9-28 17:36:07 | 显示全部楼层
八度空间 发表于 2017-9-28 17:29
要,这个modbus的协议要求

我现在功能能够实现,主机对从机的读操作,一旦对数据进行写操作,触摸屏(主机)那边通讯变量就一直出错,连续的写操作,通讯变量就会一直维持在 4(读写数据出错)
回复 支持 反对

使用道具 举报

  离线 

1

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2015-12-25
在线时间
24 小时
发表于 2017-9-28 17:40:34 | 显示全部楼层
八度空间 发表于 2017-9-28 17:29
要,这个modbus的协议要求

我能否能够将我代码整理一下,上传上来让你帮我看一下行吗?
回复 支持 反对

使用道具 举报

  离线 

110

主题

7272

帖子

12

精华

资深版主

Rank: 8Rank: 8

积分
10472
金钱
10472
注册时间
2013-9-10
在线时间
296 小时
发表于 2017-9-28 18:00:39 | 显示全部楼层
LLmeishi 发表于 2017-9-28 17:40
我能否能够将我代码整理一下,上传上来让你帮我看一下行吗?

可以
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

  离线 

1

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2015-12-25
在线时间
24 小时
发表于 2017-9-29 08:47:50 | 显示全部楼层

这边都一直无法上传压缩文件。。
回复 支持 反对

使用道具 举报

  离线 

1

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2015-12-25
在线时间
24 小时
发表于 2017-9-29 09:09:21 | 显示全部楼层

无论是在原子哥的帖子里面还是新开贴都一直无法上传压缩包。。
1111.png
回复 支持 反对

使用道具 举报

  离线 

1

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2015-12-25
在线时间
24 小时
发表于 2017-9-29 14:36:36 | 显示全部楼层

我将代码上传到云盘了,不知道帖子里面能不能贴链接的,但是我先私信给你了。
回复 支持 反对

使用道具 举报

  离线 

110

主题

7272

帖子

12

精华

资深版主

Rank: 8Rank: 8

积分
10472
金钱
10472
注册时间
2013-9-10
在线时间
296 小时
发表于 2017-9-29 17:29:13 | 显示全部楼层
lishanshanliu 发表于 2017-9-22 16:03
有没有基于stm32f767的modbus测试程序呢?

这个自己移植一下就可以了
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

  离线 

110

主题

7272

帖子

12

精华

资深版主

Rank: 8Rank: 8

积分
10472
金钱
10472
注册时间
2013-9-10
在线时间
296 小时
发表于 2017-9-29 17:29:52 | 显示全部楼层
LLmeishi 发表于 2017-9-29 14:36
我将代码上传到云盘了,不知道帖子里面能不能贴链接的,但是我先私信给你了。

将你通讯的波形抓一下,用逻辑分析仪,对照文档是否符合要求
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

  离线 

1

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2015-12-25
在线时间
24 小时
发表于 2017-9-29 17:31:26 | 显示全部楼层
八度空间 发表于 2017-9-29 17:29
将你通讯的波形抓一下,用逻辑分析仪,对照文档是否符合要求

我手头上没有示波器。。。很头疼这个波形问题
回复 支持 反对

使用道具 举报

  离线 

110

主题

7272

帖子

12

精华

资深版主

Rank: 8Rank: 8

积分
10472
金钱
10472
注册时间
2013-9-10
在线时间
296 小时
发表于 2017-9-29 17:35:37 | 显示全部楼层
LLmeishi 发表于 2017-9-29 17:31
我手头上没有示波器。。。很头疼这个波形问题

QQ截图20170929172530.png QQ截图20170929172627.png
确定你的操作流程对了?
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

  离线 

1

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2015-12-25
在线时间
24 小时
发表于 2017-9-30 10:19:50 | 显示全部楼层
八度空间 发表于 2017-9-29 17:35
确定你的操作流程对了?

我没觉得有什么流程上的问题。。。。只是里面有些累赘, 我还是好好研究你下你分享的例程吧,
回复 支持 反对

使用道具 举报

  离线 

110

主题

7272

帖子

12

精华

资深版主

Rank: 8Rank: 8

积分
10472
金钱
10472
注册时间
2013-9-10
在线时间
296 小时
发表于 2017-9-30 20:22:02 | 显示全部楼层
LLmeishi 发表于 2017-9-30 10:19
我没觉得有什么流程上的问题。。。。只是里面有些累赘, 我还是好好研究你下你分享的例程吧,

现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

  离线 

0

主题

2

帖子

0

精华

新手上路

Rank: 1

积分
22
金钱
22
注册时间
2017-9-22
在线时间
4 小时
发表于 2017-10-16 15:49:32 | 显示全部楼层
八度空间 发表于 2017-9-29 17:29
这个自己移植一下就可以了

您上传的这个里面用的是sram,767里面用的是sdram,搞不通,好麻烦,请求楼主写一个关于767的modbus测试程序,万分感谢!
回复 支持 反对

使用道具 举报

  离线 

110

主题

7272

帖子

12

精华

资深版主

Rank: 8Rank: 8

积分
10472
金钱
10472
注册时间
2013-9-10
在线时间
296 小时
发表于 2017-10-16 16:31:08 | 显示全部楼层
lishanshanliu 发表于 2017-10-16 15:49
您上传的这个里面用的是sram,767里面用的是sdram,搞不通,好麻烦,请求楼主写一个关于767的modbus测试 ...

和sram和sdram有什么关系???modbus只是一个软件协议,和硬件没关系的
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

  离线 

1

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2015-12-25
在线时间
24 小时
发表于 2017-10-18 11:18:51 | 显示全部楼层

我移植你那边的程序搞好了,只是单独写线圈05号功能还是有问题,返回的功能号不正确,哥,这是咋回事
回复 支持 反对

使用道具 举报

  离线 

110

主题

7272

帖子

12

精华

资深版主

Rank: 8Rank: 8

积分
10472
金钱
10472
注册时间
2013-9-10
在线时间
296 小时
发表于 2017-10-18 11:19:36 | 显示全部楼层
LLmeishi 发表于 2017-10-18 11:18
我移植你那边的程序搞好了,只是单独写线圈05号功能还是有问题,返回的功能号不正确,哥,这是咋回事

我没用过这个功能,sorry
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

  离线 

1

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2015-12-25
在线时间
24 小时
发表于 2017-10-18 11:23:01 | 显示全部楼层
LLmeishi 发表于 2017-9-30 10:19
我没觉得有什么流程上的问题。。。。只是里面有些累赘, 我还是好好研究你下你分享的例程吧,

使用你的那个工具,得到如图所示

读线圈功能正常,但是写线圈返回数据有误

读线圈功能正常,但是写线圈返回数据有误
回复 支持 反对

使用道具 举报

  离线 

1

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2015-12-25
在线时间
24 小时
发表于 2017-10-18 11:23:42 | 显示全部楼层
八度空间 发表于 2017-10-18 11:19
我没用过这个功能,sorry

好吧,我在琢磨一下,最近看modbus里的源程序看得头疼
回复 支持 反对

使用道具 举报

  离线 

1

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2015-12-25
在线时间
24 小时
发表于 2017-10-19 17:38:22 | 显示全部楼层
八度空间 发表于 2017-10-18 11:19
我没用过这个功能,sorry

现在都搞糊涂了,用你写的那个软件仿真 读写线圈都会出现错误,但是我直接将单片机与触摸屏时,通讯是正常的,明天我再细测一下吧
回复 支持 反对

使用道具 举报

  离线 

1

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2015-12-25
在线时间
24 小时
发表于 2017-11-11 14:20:03 | 显示全部楼层
原子哥,请问一下那个AT24C02掉电存储芯片里面能存浮点型数据嘛?
回复 支持 反对

使用道具 举报

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

本版积分规则




QQ|联系我们|手机版|官方淘宝店|新浪微博|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2017-11-20 05:47

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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