打印

485的灵活应用方案问题

[复制链接]
3972|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
woshidasha|  楼主 | 2008-1-31 16:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我要做安防产品,主机最多可挂64个从机,通讯为485通讯,现在出现一个问题,我做的产品中从机的地址用了3个字节,也就是1677215个地址,可是要安装到现场,最多也就是64个,但是要自动搜索一遍从机,就要从00 00 00搜索到ff ff ff,而且,我用的波特率为4800,怎样缩短自动搜索的时间,我算过了,一个一个搜的话,要130多个小时。
有什么好办法,主要是程序的算法上面,硬件,只是小改动可以接受。

相关帖子

来自 2楼
暮远| | 2008-2-13 16:04 | 只看该作者

随机数

从机收到主机add_get后产生一个随机数因子,然后乘以单位时间,利用定时器做一个counter,到时后,返回一个add_ack。

当主机收到这个add_ack后,向这个从机再返回一个rec_ack。

从机再发送完add_ack后,开始一个timer来等待rec_ack,当timer out,则重新启动counter再发送一次add_ack。

主机根据收到的add_ack建立好地址列表就可以了,当主机超发送add_get超过地址初始化时间后,发送一个add_cancel,所有从机收到该指令后立刻停止发送add_ack。

使用特权

评论回复
板凳
dld2| | 2008-1-31 16:28 | 只看该作者

呵呵

一般通过某种方式把当前从机的地址告诉主机。

如果想主动搜索:可以在从机上搞一个硬件开关。
主机发送地址探测命令,开关闭合的那个从机应答。
这样,主机可以一个一个知道从机的地址。

还有:模仿以太网的碰撞检测协议,呵呵。

使用特权

评论回复
地板
chunyang| | 2008-1-31 19:32 | 只看该作者

主机上可以嵌入一段广播码

从机收到后根据自己的地址延时若干时间主动发起通讯请求上报地址。

使用特权

评论回复
5
ddb_21ic| | 2008-1-31 20:23 | 只看该作者

一般在同一个系统都在一个批次

如果可以输入一个批次号,就近搜索,应该也可以比较快

使用特权

评论回复
6
woshidasha|  楼主 | 2008-2-1 09:57 | 只看该作者

chunyang的方案我也想到了

chunyang的方案我也想到了,但是,这个延时多长时间,怎么弄??因为,本身从机不知道该延时多长时间。


还有,dld2的方案,是可行,但是要人工控制,我想做一个完全自动的。

ddb_21ic 的方案用起来不是很舒服,还是要人工输入。

使用特权

评论回复
7
chunyang| | 2008-2-1 17:38 | 只看该作者

你要是想到了就应该能进一步想到工艺

提醒一下:从机请求都是短帧,发起时刻跟本身ID相关,发送前先侦听线路占用情况。

使用特权

评论回复
8
iC921| | 2008-2-5 10:38 | 只看该作者

从机地址,总是在固定范围的吧

为什么要搜索那么大的范围?麻烦讲解讲解

又,设置那么大的地址,有什么学问?麻烦讲解讲解

使用特权

评论回复
9
mohanwei| | 2008-2-5 12:10 | 只看该作者

划分范围即可,这个要从系统的角度考虑

类似局域网IP,让前面的"192.168.0."都一样,搜索后面的0-254即可

使用特权

评论回复
10
涛行九天| | 2008-2-6 12:10 | 只看该作者

这个很简单

最简单的办法就是增加一个当前使用结点数的变量,这个变量可以在板子上加一个拨码开关通过硬件方式设定,也可以通过一个小软件设置到eeprom中.

使用特权

评论回复
11
woshidasha|  楼主 | 2008-2-13 10:51 | 只看该作者

主要是方便安装

因为使用我们机器的都是外行,安装也不是我们安装,因此想做成既插即用的。

使用特权

评论回复
12
ddb_21ic| | 2008-2-13 15:22 | 只看该作者

看来你不该用485了

CAN和Ethernet都可以,485有点勉强了。


使用特权

评论回复
13
xwj| | 2008-2-13 15:31 | 只看该作者

485完全没问题,问题是LZ自己的脑袋没转过弯来

使用特权

评论回复
14
bxb_lhj| | 2008-2-22 15:55 | 只看该作者

比较麻烦

如果从机程序可以改的话可采取如下措施:

1、主机搜索,采用3个字节中的最高字节,如果LZ所说的地址是从机的产品序列号的话那就更好了。这样最多搜索256次;
2、从机判断是否与本地吻合,如是,将主机传来的x与剩下的两个字节计算再乘以从机返回段贞所用的时间,得到此从机将要返回应答的时间;(65536)*2(ms) =131s.时间比较长,如果再将剩下的两个字节分开的话就应该可以了。


使用特权

评论回复
15
woshidasha|  楼主 | 2008-2-28 16:56 | 只看该作者

暮远,可不可以说的清楚一些

我不明白你说的意思。第一,就是你给的变量名我不知道是什么含义;第二,在C里面怎么产生随即数,原理是什么??

使用特权

评论回复
16
nlgz| | 2008-2-29 11:29 | 只看该作者

楼主应该是刚刚开始做安防产品啊

对安防产品的理解好象有点知其然 不知其所以然 安防的不重码唯一ID不是这个概念,他完全可以和地址无关,也可以和地址弱相关.

使用特权

评论回复
17
nlgz| | 2008-2-29 11:34 | 只看该作者

看看你的需求吧

做安防产品,主机最多可挂64个从机,通讯为485通讯,现在出现一个问题,我做的产品中从机的地址用了3个字节,也就是1677215个地址,可是要安装到现场,最多也就是64个,但是要自动搜索一遍从机,就要从00 00 00搜索到ff ff ff,而且,我用的波特率为4800,怎样缩短自动搜索的时间,我算过了,一个一个搜的话,要130多个小时。

既然你用了485的通讯方式,最多也就是64个,那么你的通讯协议里规定从机的地址用3个字节就是明显不合理的.

建议一:
你可以把地址和ID分开考虑,先0-255循检一圈,把点到名的再挨个询一遍ID不就完了么?!

使用特权

评论回复
18
nlgz| | 2008-2-29 11:38 | 只看该作者

建议二:

还有一种方式,就是设计自己的安防总线,协议和编码都要考虑好,做好防碰撞.这样可以避开一些485一些不灵活的东西,可以逐位校验.

使用特权

评论回复
19
nlgz| | 2008-2-29 11:42 | 只看该作者

关于安防总线

你的总线和协议设计的好的话,主机广播注册信息后大家在同一时间回答,点64遍就搞定了注册的事.

使用特权

评论回复
20
BitFu| | 2008-2-29 13:29 | 只看该作者

设备ID和设备总线地址分开

64个设备用一个字节就够了

使用特权

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

本版积分规则

55

主题

244

帖子

3

粉丝