OpenEdv-开源电子网

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

485 MODBUS协议下,从机多个设备地址一样,如何辨别设备。

[复制链接]

6

主题

69

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
219
金钱
219
注册时间
2017-8-31
在线时间
45 小时
发表于 2017-10-26 15:22:41 | 显示全部楼层 |阅读模式
3金钱
RS-485多机通信中遇到问题了,MODBUS协议搞了不少时间,搞定了,但是现在问题来了,传感器作为从机,连接主机,但是多个传感器的地址是一样的,所以无法区分,所上传的数据。有没有办法把他们分开,我知道如果每个从机地址,不一样这样的情况最好处理。但是现在从机地址是一样的。

最佳答案

查看完整内容[请看2#楼]

如果多个传感器地址一样,没得改的话。你要嘛搞多个485,要嘛换供应商了。。。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-10-26 15:22:42 | 显示全部楼层
如果多个传感器地址一样,没得改的话。你要嘛搞多个485,要嘛换供应商了。。。
回复

使用道具 举报

10

主题

778

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6745
金钱
6745
注册时间
2017-4-12
在线时间
1258 小时
发表于 2017-10-26 15:25:43 | 显示全部楼层
把传感器的地址改了就不一样了
,看传感器的说明书
回复

使用道具 举报

15

主题

406

帖子

0

精华

高级会员

Rank: 4

积分
795
金钱
795
注册时间
2015-3-26
在线时间
151 小时
发表于 2017-10-26 15:36:17 | 显示全部楼层
没办法区别。唯一区别的地址都一样了,还怎么区别
回复

使用道具 举报

6

主题

69

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
219
金钱
219
注册时间
2017-8-31
在线时间
45 小时
 楼主| 发表于 2017-10-26 15:40:09 | 显示全部楼层
245925587 发表于 2017-10-26 15:25
把传感器的地址改了就不一样了
,看传感器的说明书

没法改啊,不提供改地址这个操作只能让供应商改了
回复

使用道具 举报

6

主题

69

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
219
金钱
219
注册时间
2017-8-31
在线时间
45 小时
 楼主| 发表于 2017-10-26 15:41:06 | 显示全部楼层
xyl210xyl 发表于 2017-10-26 15:36
没办法区别。唯一区别的地址都一样了,还怎么区别

这样我就放心,改地址吧让供应商
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2017-10-26 16:27:34 | 显示全部楼层
可以从接收到的数据进行拆分,modbus数据帧的特点来拆
回复

使用道具 举报

15

主题

406

帖子

0

精华

高级会员

Rank: 4

积分
795
金钱
795
注册时间
2015-3-26
在线时间
151 小时
发表于 2017-10-26 16:36:28 | 显示全部楼层
单向的通讯可以广播,要交互的话就难操作了 。
回复

使用道具 举报

6

主题

69

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
219
金钱
219
注册时间
2017-8-31
在线时间
45 小时
 楼主| 发表于 2017-10-26 16:37:10 | 显示全部楼层
yklstudent 发表于 2017-10-26 16:27
同地址那就别接在同一个总线上,那样就可以实现啊

只有一个485固定死了
回复

使用道具 举报

15

主题

406

帖子

0

精华

高级会员

Rank: 4

积分
795
金钱
795
注册时间
2015-3-26
在线时间
151 小时
发表于 2017-10-26 16:37:23 | 显示全部楼层
485地址都一样的,哪有这样的供应商 。。。

回复

使用道具 举报

6

主题

69

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
219
金钱
219
注册时间
2017-8-31
在线时间
45 小时
 楼主| 发表于 2017-10-26 16:38:49 | 显示全部楼层
八度空间 发表于 2017-10-26 16:27
可以从接收到的数据进行拆分,modbus数据帧的特点来拆

八度空间大神,拆分数据对于我这样的菜鸟有点困难。给点思路
回复

使用道具 举报

6

主题

69

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
219
金钱
219
注册时间
2017-8-31
在线时间
45 小时
 楼主| 发表于 2017-10-26 16:42:11 | 显示全部楼层
xyl210xyl 发表于 2017-10-26 16:37
485地址都一样的,哪有这样的供应商 。。。

不打招呼,他默认都给你做成“1”
回复

使用道具 举报

119

主题

439

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1185
金钱
1185
注册时间
2015-9-18
在线时间
422 小时
发表于 2017-10-26 16:43:13 | 显示全部楼层
提供一个想法

以读保持寄存器为例(写保持寄存器也一样):假设传感器有3个,分别是A,B,C,假设你需要读4个保持寄存器的值(每个传感器都是读4个保持寄存器的值)。

A读4个保持寄存器。

B读5个保持寄存器。

C读6个保持寄存器。

尽管B和C多读了1个和2个寄存器值(至于多读出的内容,其实是无用的),但你可以据此区分具体是哪一个传感器.。当然,源码需要作出对应的调整。
电子爱好者
回复

使用道具 举报

93

主题

746

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1850
金钱
1850
注册时间
2012-9-16
在线时间
286 小时
发表于 2017-10-26 17:06:05 | 显示全部楼层
modbus从机分配成不同地址就可以了,自己在程序里定义,
纵浪大化中,不喜亦不惧;应尽便须尽,无复独多虑!
回复

使用道具 举报

6

主题

69

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
219
金钱
219
注册时间
2017-8-31
在线时间
45 小时
 楼主| 发表于 2017-10-26 17:14:43 | 显示全部楼层
象牙塔 发表于 2017-10-26 17:06
modbus从机分配成不同地址就可以了,自己在程序里定义,

话说这个从机地址,供应商默认的是1,我自己分配,从机如何识别我分配的地址呢?因为我如果分配其他地址,提示通信超时,自然传感器就没有数据回传。请大神支招。(所有传感器都在一条485上)
回复

使用道具 举报

0

主题

96

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
297
金钱
297
注册时间
2017-10-12
在线时间
83 小时
发表于 2017-10-27 04:21:17 | 显示全部楼层
如果客户不让改地址,又不让换供应商,可以每x个传感器配y个单片机,x=y(UART数-1),由y和单片机组网进行协议转换。
回复

使用道具 举报

13

主题

39

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2012-6-28
在线时间
13 小时
发表于 2017-10-27 08:08:56 | 显示全部楼层
如果产品自带485通信地址没有开放设置,那这个产品肯定是片面的。一对一模式而已了。
回复

使用道具 举报

6

主题

69

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
219
金钱
219
注册时间
2017-8-31
在线时间
45 小时
 楼主| 发表于 2017-10-27 08:53:50 | 显示全部楼层
正点原子 发表于 2017-10-27 00:56
如果多个传感器地址一样,没得改的话。你要嘛搞多个485,要嘛换供应商了。。。

我只能协商改地址了,原子哥说的有道理,谢谢!!!
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2017-10-27 09:01:32 | 显示全部楼层
YST 发表于 2017-10-26 16:38
八度空间大神,拆分数据对于我这样的菜鸟有点困难。给点思路

1、我的方法和13楼类似,但是仔细想了一下,也不能完全的避免掉混乱的情况出现,传感器反应的时间都差不多,这次A传感器先发出数据,B后发数据,这时候可以区分A和B,但是下次可能就反过来了,说不定
2、硬件设计可能的话,每个传感器的电源可以独立控制,这样每次保持只有一个传感器在线运作,这样每次通讯只有一个传感器,当然,这样的话需要你传感器的反应时间足够快,也就是采集的时间,否则会有数据分析延后的现象,如果不在乎这点时间可以这样做
3、以上两个方法只是指标不治本的,还是需要传感器支持地址自由配置,这样即使厂家输出的是同样的地址,在仪器适配出厂的时候可以设置,这样最好了,不然数据处理上会有很大的障碍或者出错,误判等情况。我用过RGB控制的IC,它就支持I2C地址重新配置的功能,即使I2C上挂同样的IC,也可以通过重新设定地址来区别
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

6

主题

69

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
219
金钱
219
注册时间
2017-8-31
在线时间
45 小时
 楼主| 发表于 2017-10-27 09:13:34 | 显示全部楼层
八度空间 发表于 2017-10-27 09:01
1、我的方法和13楼类似,但是仔细想了一下,也不能完全的避免掉混乱的情况出现,传感器反应的时间都差不 ...

按照上面的思路程序的正常读取的,结果正如你所说,因为所有传感器都发出来,一次可能是正常的,第二次顺序变化了就乱了,对硬件做电源分时导通可行,但是速度达不到性能要求。传感器反应时间不够快。
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2017-10-27 09:18:53 | 显示全部楼层
YST 发表于 2017-10-27 09:13
按照上面的思路程序的正常读取的,结果正如你所说,因为所有传感器都发出来,一次可能是正常的,第二次 ...

只能要求厂商改为地址可重配置了
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

6

主题

69

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
219
金钱
219
注册时间
2017-8-31
在线时间
45 小时
 楼主| 发表于 2017-10-27 10:34:40 | 显示全部楼层
八度空间 发表于 2017-10-27 09:18
只能要求厂商改为地址可重配置了

已解决了,供应商之前没有给指令集协议,指令集协议发过来,分分钟解决,改地址后各种数据正常回传。目前测试两个气体传感器已OK sen.png
回复

使用道具 举报

15

主题

406

帖子

0

精华

高级会员

Rank: 4

积分
795
金钱
795
注册时间
2015-3-26
在线时间
151 小时
发表于 2017-10-28 10:57:17 | 显示全部楼层
YST 发表于 2017-10-27 10:34
已解决了,供应商之前没有给指令集协议,指令集协议发过来,分分钟解决,改地址后各种数据正常回传。目前 ...

你检测哪种气体,我也搞过气体的 ,只不过我们传感器也是自己做的
回复

使用道具 举报

24

主题

695

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1666
金钱
1666
注册时间
2016-4-29
在线时间
266 小时
发表于 2017-10-28 20:39:32 | 显示全部楼层
一个成熟的485接口产品是不可能不能改地址的,不能改地址还叫485接口?
回复

使用道具 举报

13

主题

83

帖子

0

精华

初级会员

Rank: 2

积分
109
金钱
109
注册时间
2017-8-7
在线时间
40 小时
发表于 2018-6-4 20:38:54 | 显示全部楼层
楼主,每一个区传感器都是有自己的地址么??
回复

使用道具 举报

6

主题

69

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
219
金钱
219
注册时间
2017-8-31
在线时间
45 小时
 楼主| 发表于 2018-6-13 16:31:51 | 显示全部楼层
da名昊 发表于 2018-6-4 20:38
楼主,每一个区传感器都是有自己的地址么??

MODBUS协议通信就靠这个从机地址,10个从机10个不相同地址,主机发哪个从机地址,从机就响应主机给与回复。从机就好比学生每个学生有一个名字一样,老师就像主机叫谁谁就响应老师。当然有不听话的学生,不搭理老师,也有吐词不清的老师,叫一个所有学生不知道的名(后面是开玩笑,程序不能出现这样的东西)
回复

使用道具 举报

13

主题

83

帖子

0

精华

初级会员

Rank: 2

积分
109
金钱
109
注册时间
2017-8-7
在线时间
40 小时
发表于 2018-6-13 18:52:09 | 显示全部楼层
YST 发表于 2018-6-13 16:31
MODBUS协议通信就靠这个从机地址,10个从机10个不相同地址,主机发哪个从机地址,从机就响应主机给与回复 ...

懂了,谢谢楼主
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2019-9-11
在线时间
4 小时
发表于 2019-10-28 14:36:42 | 显示全部楼层
YST 发表于 2017-10-27 10:34
已解决了,供应商之前没有给指令集协议,指令集协议发过来,分分钟解决,改地址后各种数据正常回传。目前 ...

楼主,我是新手,最近研究这个MODBUS协议和485通讯,请问你的MODBUS协议具体是怎么实现的呢
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2019-9-11
在线时间
4 小时
发表于 2019-10-28 14:38:10 | 显示全部楼层
楼主你好,我是新手,最近也在研究这个MODBUS协议还有485通讯,我想请教一下你的MODBUS协议是怎么实现的啊,可以讲讲思路吗
回复

使用道具 举报

6

主题

69

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
219
金钱
219
注册时间
2017-8-31
在线时间
45 小时
 楼主| 发表于 2019-10-30 21:03:53 | 显示全部楼层
十四缺 发表于 2019-10-28 14:38
楼主你好,我是新手,最近也在研究这个MODBUS协议还有485通讯,我想请教一下你的MODBUS协议是怎么实现的啊 ...

先看Modbus相关的资料吧,不管什么协议,首先要弄懂它每位代表什么,(这个都是开发的时候就定义的),一般拿到Modbus的设备,都会给相关的协议,根据这些定义好的协议,就可以进行相关功能开发了。
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
3
金钱
3
注册时间
2020-8-11
在线时间
0 小时
发表于 2020-8-11 18:51:11 来自手机 | 显示全部楼层
学习学习学习
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
3
金钱
3
注册时间
2020-8-11
在线时间
0 小时
发表于 2020-8-11 19:21:21 来自手机 | 显示全部楼层
楼主,我这也遇到这样的问题。一条485总线下有多个地址一样的设备,全部装在仓库顶部,没有办法挨个改地址,您说的指令集协议怎么群改地址?
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-30 20:31

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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