cc2530不用协议栈组建网络,(现在采用basicrf组建网络,当节点超过两个就会有问题)
1.采用basicrf的原因是客户有一个组建200多个节点的网络需求,采用zstack会有无法组织这么节点网络的问题。
2.由于这个组网的问题,确定采用basicrf的方式,借鉴点对点通信,可以猜想用一点对多点只要短地址事先分配好根据短地址就能实现组网
3.这样必须在系统中存在一个协调器,众多终端设被,而每个终端设备,也可以接受子节点,只要在程序中记录好子节点的短地址就好
4.为了维持这个稳定连接,以及运行过程中加入或者移除节点,就需要发送数据来确定当前的网络状态
问题:
1.首先这种1点对多点的情况采用basicrf是否合适,因为这样数据发送以及确认稳定连接的时候很有可能甚至是必然会发生冲突
2.论坛中有采用timac协议的说法,但是简单了解下似乎星形网络是一个协调器后接多个终端节点似乎和这个需求不太贴切。
3.如果采用basicrf合适,那么怎么样去解决数据冲突的问题
根据你的问题及我对TI协议栈的了解,简单说明一下。
1、你所说的basicrf是哪种协议栈?你可以根据自己的应用选择下面协议栈。
1)Z-Stack Home 1.2.2a 针对智能家居相关产品的开发
2)Z-Stack Lighting 1.0.2 针对ZLL相关产品的开发
3)Z-Stack Energy 1.0.1 针对智能能源,Meter, In Home Display, 等相关产品的开发
4)Z-Stack Mesh 1.0.0 针对相关私有应用的产品的开发,只利用标准ZigBee协议相关功能, Mesh路由等,应用层有开发者自己定义。
2、TIMAC这个我了解的不多,但是据我所知,这个是基于MAC层开发的,用的人好像不是很多。
3、解决数据冲突,一个是协议栈底层有CCS冲突检测机制,还有在应用层多加一些rand()和人为的错开机制。
首先感谢您的回答,我们的产品本来是采用的zstack 但是客户在组网的时候发现有限制,他们的需求是有200多个节点加入网络,所以 选择用basicrf 这是最简单的点对点通信,谈不上什么协议,所以自己写起来就会遇到很多问题 而且您说的 css和 rand我不明白什么意思 不知道您是否有时间指导一下 谢谢
避免两个以上的设备在同一个时间点上同时发送数据出去。可以做一个同步时钟,然后把200个设备按照时间顺序发送数据。
首先感谢您能回答我的问题,你说的确实是一个有效的办法,但是跟需求似乎有点出入,首先同步时钟就是一个问题点,其次需求有任意两个节点都可以通讯,且任意一个节点都可以广播,这个应该是不确定时间的会有数据,而且你也有确定网络的稳定链接,以及其中某个节点不再了 要及时从网络程序中T出该节点