我们即将devise一个内部工业networking,基本上包括以下内容:1个服务器通过电线连接到多达100个专有RF接入点(基本上是embedded式设备),每个可以通过无线电连接到多达100个端点embedded式设备。 像这样的东西:
替代文字http://i33.tinypic.com/np0sq9.png
现在,我想知道一些我们需要做出的devise决策,我相信有很多类似的devise,还有很多有经验的人,无论好坏。 也许你可以参加?
所有端点设备都是独立的,将自己的唯一数据传送给服务器,反之亦然。 因此,服务器需要能够单独针对每个端点设备。 每个端点设备将自己与1个接入点配对,然后向其通告一个专有的RF协议,TCP / IP不是那里的select。
服务器将知道哪个端点设备与哪个接入点配对,所以当服务器需要与单个端点设备通话时,通信必须通过配对的接入点。 因此,服务器需要直接访问接入点。
问题:考虑到专用接入点中可用的资源有限,build议在此场景中使用服务器和接入点之间的TCP / IP? 或者你会build议完全不同的东西?
如有疑问,请通过以太网使用IP。 如果你想使用UDP或TCP是另外一个问题。 两者都有优势,但老实说我会考虑这个。
射频部分有多稳定? 设备多久重新关联一次? 如果不经常的话,你可以很容易地实现一个懒惰的学习系统,设备关联,并发送一个单一的UDP帧“我有设备X”。 当设备X发送数据时,它可以把这些数据包装在UDP中,用一些信息来标记它在哪个设备插槽等等,然后传送给主机。
我不会为此使用TCP。 TCP有太多的状态。 有了UDP,你可能需要一些简单的发送/确认协议,或者尽可能的靠近高性能的计算机端来devise你的智能手机,并检测并询问丢失的数据,或者应对丢失的数据。
你有没有考虑在'piclist'这个问题上问这个问题?
8051是一个非常古老而小巧的微控制器。 根据所需的function,您可能难以在其上实施IP堆栈。 我也想象它是不足的,除非你正在以更高的时钟频率在fpga中实现它。 由于路由器和交换机元素在拓扑结构中,所以使用IP来说已经成为一个定局。 IP易于路由,以太网易于切换,并且使用IP协议栈可轻松将从服务器到接入点的所有中间控制/数据协议编程。 唯一不合适的是,如果接入点没有处理能力来处理将来自100个设备的RF发送数据复用到单个tcp / udpstream上,或者不能处理100个tcp / udpstream(更可能的场景)。
我的直觉是,在这个例子中,8051 MCU不能胜任这个任务,所以如果你习惯使用那个微控制器作为接入点,而你没有一个更快的控制处理器,你可能需要添加一个间接层在以太网交换机之后,就像一个控制节点,所以你可以有一个直接的串行协议与接入点/设备。 如果数据速率很低,你可以用UDP来生活,但可能是可行的。