打印

请教一个通讯协议的问题

[复制链接]
2987|38
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hwk612167|  楼主 | 2013-5-22 10:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有A\B\C\D四种设备,每个A设备下有多个B设备,每个B下有多个C,每个C下有多个D。
现在A要与D通讯,需要先经过B,再经过C,才能到D。
这样的话,通讯协议怎么实现?命令怎么发到D,然后怎么应答回到A??

假设每个设备都有唯一地址,地址由多字节构成,是不是说A发到D时,数据包中需要带B\C\D的地址?B->C要带C\D的地址?还是也包含B\C\D地址,以便应答?
这样数据量比较大,有没有其它更好的办法?谢谢!

相关帖子

沙发
hwk612167|  楼主 | 2013-5-22 15:36 | 只看该作者
沉得好快

使用特权

评论回复
板凳
kunli| | 2013-5-22 15:47 | 只看该作者
我不能解决这个问题,但我能够帮你顶起来!

使用特权

评论回复
地板
hwk612167|  楼主 | 2013-5-22 15:53 | 只看该作者
LS的处女贴啊,整的像是我的马甲

使用特权

评论回复
5
lz80650904| | 2013-5-22 17:22 | 只看该作者
不过不同设备之间的通讯,物理上是怎么连接的呢?不同通讯类型是需要通过转换才能进行通讯的,如果A/B/C/D都是不同类型的通讯还是先可以转换为同一类型的通讯,再进行多点处理?

没做过多点通讯,待高手解答! 顶起

使用特权

评论回复
6
zhangmangui| | 2013-5-22 18:53 | 只看该作者
我觉得多个字节时   可以规定其中一个字节代表最顶层的A B C D四种设备的选择   下一字节再代表下一层的设备   这样依次下去就可以啦

使用特权

评论回复
7
高傲111| | 2013-5-22 21:10 | 只看该作者
顶起

使用特权

评论回复
8
chunyang| | 2013-5-22 23:25 | 只看该作者
用类MudBus协议即可,关键是理解清楚协议原则,然后自行简化变通即可,分层协议的地址讲究层级设置。

使用特权

评论回复
9
hwk612167|  楼主 | 2013-5-23 09:02 | 只看该作者
zhangmangui 发表于 2013-5-22 18:53
我觉得多个字节时   可以规定其中一个字节代表最顶层的A B C D四种设备的选择   下一字节再代表下一层的设 ...

没太明白

使用特权

评论回复
10
hwk612167|  楼主 | 2013-5-23 09:05 | 只看该作者
chunyang 发表于 2013-5-22 23:25
用类MudBus协议即可,关键是理解清楚协议原则,然后自行简化变通即可,分层协议的地址讲究层级设置。 ...

modbus? 若A直接与D通讯那种,主从式,倒是简单。现在这种经过多级转发的情况,我不知道怎么处理较好。像主贴提的,每个包都带很多地址信息,感觉数据量又大不少,其他方法暂时又想不出来。

使用特权

评论回复
11
zhangmangui| | 2013-5-23 09:07 | 只看该作者
hwk612167 发表于 2013-5-23 09:02
没太明白

就是发的数据中   一个位置的字节代表一层   层层顺序往下

使用特权

评论回复
12
hwk612167|  楼主 | 2013-5-23 09:28 | 只看该作者
zhangmangui 发表于 2013-5-23 09:07
就是发的数据中   一个位置的字节代表一层   层层顺序往下

每个设备下面有多个同类子设备,如何判断是给谁发的?

使用特权

评论回复
13
lhbzqh| | 2013-5-23 10:00 | 只看该作者
参考MAC地址和IP地址

使用特权

评论回复
14
落寞艹根| | 2013-5-23 10:24 | 只看该作者
这个还真得参考TCPIP的协议,   A                A1
                             B B           B1B1  B1B1
                            CC CC  ......                  ....n
                          DDDD DDDD  

使用特权

评论回复
15
hwk612167|  楼主 | 2013-5-23 13:15 | 只看该作者
落寞艹根 发表于 2013-5-23 10:24
这个还真得参考TCPIP的协议,   A                A1
                             B B           B1B1  B ...

TCP/IP? 这有的看了。
能不能就我这个问题,给些建议?谢谢

使用特权

评论回复
16
hwk612167|  楼主 | 2013-5-23 13:18 | 只看该作者
lhbzqh 发表于 2013-5-23 10:00
参考MAC地址和IP地址

这个概念是有,但与这个问题具体联系起来还是难有头绪。。

能不能就我这个问题,给些建议?谢谢

使用特权

评论回复
17
chunyang| | 2013-5-25 23:39 | 只看该作者
hwk612167 发表于 2013-5-23 09:05
modbus? 若A直接与D通讯那种,主从式,倒是简单。现在这种经过多级转发的情况,我不知道怎么处理较好。 ...

地址可以分级,比如每个层级的节点数在256以内,那么引入两个字节的地址信息,第一个字节是层级地址,第二个是节点地址。树状结构的网络很常见,都可以这么处理。

使用特权

评论回复
18
hwk612167|  楼主 | 2013-5-25 23:47 | 只看该作者
chunyang 发表于 2013-5-25 23:39
地址可以分级,比如每个层级的节点数在256以内,那么引入两个字节的地址信息,第一个字节是层级地址,第 ...

大师这么晚还在回答问题啊,谢谢。。。
这个节点地址,怎么分配呢/。?比如我每个设备自身地址编号6字节,是申请加入网络的主机自动分配的,还还是人工命令添加的?自动的管理起来好像也不便,考虑到问题也不少。

使用特权

评论回复
19
chunyang| | 2013-5-25 23:57 | 只看该作者
层级地址人为指定,节点地址可以自动分配。

使用特权

评论回复
20
hwk612167|  楼主 | 2013-5-26 11:50 | 只看该作者
chunyang 发表于 2013-5-25 23:57
层级地址人为指定,节点地址可以自动分配。

最后在问您一个问题:
如A下面有200个B,B下有200个C,C下共有200个C和D,C可能做为多层中继到D。
这种情况,按照您说的节点地址,在A需要跟某个D通讯时,怎么做呢?
这种情况,我还是只能想到两种办法:
1、带每层级的设备6字节地址,去找到D,数据包比较大,因为地址信息多。
2、只提供目标6字节地址,下发到B,B去查询自身是否有这个地址的D,或者直接发到C,由C去查询下级是否有D,没有的不作响应,有的则去通讯并应答。但这种方式,查询的时间消耗较多。

不知哪种办法好?亦或有更好的办法。
再次感谢!

使用特权

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

本版积分规则

个人签名:前进 前进 前进

20

主题

511

帖子

3

粉丝