打印

在总线通信系统中,如何给从机自动分配地址。

[复制链接]
6630|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
pcf00|  楼主 | 2021-8-26 10:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
wangzk| | 2021-8-26 15:53 | 只看该作者
顶起,关注一下

使用特权

评论回复
板凳
xinyue_z| | 2021-8-26 16:01 | 只看该作者
提供给你一个简单的思路:设备上线以后,检测到总线空闲,用某个特定的并且固定的ID作为自己的地址(比如单片机有唯一ID的),向主机(固定通讯地址(比如0)发送上线请求分配地址的命令,主机收到这个命令,记录设备的固定ID,并分配一个地址(1个字节或者两个字节,基于网络容量)发送给设备,设备接收到以后向主机应答,告诉主机收到分配的地址,设备在以后的通讯中就可以使用这个地址。主机要把设备的地址与固有ID进行绑定,避免重复分配,或者分配冲突。你自己在添加一些细节,处理各种意外应该就可以了。

使用特权

评论回复
地板
wangzk| | 2021-8-26 16:29 | 只看该作者
xinyue_z 发表于 2021-8-26 16:01
提供给你一个简单的思路:设备上线以后,检测到总线空闲,用某个特定的并且固定的ID作为自己的地址(比如单 ...

好思路~~

使用特权

评论回复
5
cjseng| | 2021-8-26 16:39 | 只看该作者
xinyue_z 发表于 2021-8-26 16:01
提供给你一个简单的思路:设备上线以后,检测到总线空闲,用某个特定的并且固定的ID作为自己的地址(比如单 ...

上电后,多个从机同时向主机发出分配地址请求怎么处理呢?

使用特权

评论回复
评论
xinyue_z 2021-8-26 17:05 回复TA
上电以后根据自己的固定ID进行运算,得到一个延时时间,延时后再发送地址请求,或者进行随机延时,发送之前检查总线是否忙。而且一旦分配地址以后设备可以保存这个地址,不用每次上电都重新请求分配 
6
cctv19881023| | 2021-8-26 17:08 | 只看该作者
每个板上加一个光耦,一级一级连接光耦

使用特权

评论回复
7
z_no1| | 2021-8-27 08:51 | 只看该作者
主要是分配地址容易,你的每个地址还要和自己的实际次序对上才行啊,不然你怎么知道你的第N号机是在第几个电动机边上?

使用特权

评论回复
8
pcf00|  楼主 | 2021-8-27 10:11 | 只看该作者
xinyue_z 发表于 2021-8-26 16:01
提供给你一个简单的思路:设备上线以后,检测到总线空闲,用某个特定的并且固定的ID作为自己的地址(比如单 ...

思路不错。。。

使用特权

评论回复
9
pcf00|  楼主 | 2021-8-27 10:12 | 只看该作者
z_no1 发表于 2021-8-27 08:51
主要是分配地址容易,你的每个地址还要和自己的实际次序对上才行啊,不然你怎么知道你的第N号机是在第几个电 ...

我也担心这个问题,一旦某从机出问题,都不知道这个从机在那个位置。。。

使用特权

评论回复
10
z_no1| | 2021-8-27 10:36 | 只看该作者
pcf00 发表于 2021-8-27 10:12
我也担心这个问题,一旦某从机出问题,都不知道这个从机在那个位置。。。 ...

你的从机如果能显示就比较好,可以发命令后看是哪个回复,但其实也挺麻烦的.拨码虽然很土,但还是有它的可取之处的.你是为啥不想拨码呢?太容易坏?

使用特权

评论回复
11
pcf00|  楼主 | 2021-8-27 12:50 | 只看该作者
z_no1 发表于 2021-8-27 10:36
你的从机如果能显示就比较好,可以发命令后看是哪个回复,但其实也挺麻烦的.拨码虽然很土,但还是有它的可取 ...

节约空间和省成本。

使用特权

评论回复
12
z_no1| | 2021-8-27 13:48 | 只看该作者
pcf00 发表于 2021-8-27 12:50
节约空间和省成本。

那建议你搞一个小的手持式设置地址的工具,从主从机通讯用的那个通讯线路只挂一个从机,用那个读写设置,设好了存在卡里的FLASH里,空间和成本都省了.然后从机上贴一个标签.

使用特权

评论回复
13
xmar| | 2021-8-27 14:14 | 只看该作者
在点对多点通信系统中,自动给每个“多点”分配地址不是什么困难的事,比如用单片机串号,或其他IC唯一串号都可以做地址,实在不行添加加密芯片,总有唯一串号做地址,完全可以区分各个“多点”。可困难的是,主站怎么知道哪个串号的从站实际在什么地方?
当然,你可以事先读出串号,用标签贴纸标明。可这样一来,工作量剧增,自动分配地址也就失去了意义。如果电路板空间足够,还不如用拨位开关。总之,无论如何做,通信地址管理都需要人为介入。省不了多少事。

使用特权

评论回复
14
tianxj01| | 2021-8-28 09:51 | 只看该作者
作为识别,在有界面从机,将地址显示出来非常容易。
在无界面从机上,地址自动申请分配非常容易做,但是从机具体地址对应是个切实的问题。、
既然是为了成本和空间,再添加现实的硬件什么的就不合时宜了,那么,整个系统的接入顺序作为唯一的顺序,自动分配就变的现实,而且不会增加什么成本,板子上一个跳线冒就搞定不是?如果考虑在封闭盒子什么的,可以考虑把跳线引出,用户只需要根据终端数量,逐个的安排物理地址就好。

使用特权

评论回复
15
xymxym| | 2021-8-28 17:42 | 只看该作者
如果只是想去除拨码开关,方法其实还是蛮多的。3楼是个不错的思路。

我也提供另一个,但需要人工简单干预的思路给你。从机硬件上需要有一个按钮和一个指示灯,按下按钮后,指示灯亮起,该从机进入编址状态,同时该从机向总线发送特定的数据串,该数据串可以不包含任何地址信息,只作为从机向主机请求地址分配的信息,主机收到该数据串,并分配好地址后,向总线发送所分配的地址,此时总线上的所有从机都会收到该数据,但只有按了按钮,指示灯亮起的那个从机处于“编址”状态,该从机将该地址保存,同时回复主机确认该地址已成功分配,并且指示灯闪烁后熄灭,提示操作人员。从按下按钮到整个过程完成,估计在1秒钟之内即可完成。如果从机有人机界面当然最好,可以看到被分配的地址,如果没有的话,就以点数的方式递增,就是操作人员知道地址是递增的方式分配的,编完一个从机,则贴一个标签。当然,此种方法的关键不在于实现逻辑,而是在于如何保证主机和从机它们之间的信息是一致的,同时如何避免有两个以上的从机都在“编址”状态时的处理机制。

如果是需要密闭的结构,也可以将按钮换成霍尔,用磁铁触发,指示灯换成蜂鸣器,或者外壳上用导光柱等。

此方法适用于本身没有硬件ID的从机,且又不希望提前对从机硬件ID进行登记的情况。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

54

主题

308

帖子

2

粉丝