我们即将设计一个内部行业网络,其基本组成如下:1 个服务器通过有线方式连接到最多 100 个专有 RF 接入点(基本上是嵌入式设备),每个接入点都可以通过无线电连接到最多 100 个端点嵌入式设备。如下所示:
现在,我在想我们需要做出哪些设计决定,我相信市场上有很多类似的设计,也有很多人有这些设计的经验,有好的,也有坏的。也许你可以插话?
所有端点设备都是独立的,它们会将自己独特的数据传送给服务器,反之亦然。因此,服务器需要能够单独定位每个端点设备。每个端点设备都会与 1 个接入点配对,然后与其对话专有的 RF 协议,TCP/IP 不是这里的选项。
服务器将知道哪个端点设备与哪个接入点配对,因此当服务器需要与单个端点设备通信时,通信必须通过配对的接入点。因此,服务器需要直接寻址接入点。
问题:考虑到专有接入点中可用的资源有限,在这种情况下,建议在服务器和接入点之间使用 TCP/IP 吗?或者你会建议使用完全不同的方法?
答案1
如果有疑问,请在以太网上使用 IP。如果您想使用 UDP 或 TCP,则完全是另一个问题。两者都有优势,但老实说,我会考虑这个。
RF 部分有多稳定?设备多久重新关联一次?如果不经常关联,您可以很容易地实现一个惰性学习系统,其中设备关联,AP 发送一个 UDP 帧说“我有设备 X”。当设备 X 传输时,它可以获取该数据,将其包装在 UDP 中,用一些信息对其进行标记,说明它位于哪个设备插槽等,然后将其传输到主机。
我不会为此使用 TCP。TCP 有太多状态。但是使用 UDP,您需要某种简单的发送/确认协议,或者将您的智能设计得尽可能接近高性能计算机端,并让它检测和询问丢失的数据,或者应对丢失的数据。
您是否考虑过在“piclist”上询问这个问题——那里充满了非常聪明的 uP 类型?
答案2
8051 是一种非常古老且小型的微控制器。根据所需的功能,您可能难以在其上实现 IP 堆栈。我还可以想象它的功能不足,除非您在 fpga 中以更高的时钟速率实现它。话虽如此,使用 IP 几乎是必然的,因为您的拓扑中有路由器和交换机元素。IP 易于路由,以太网易于切换,使用 IP 协议栈,可以轻松地对从服务器到接入点的所有中间控制/数据协议进行编程。唯一不适合的情况是,如果接入点没有足够的处理能力将来自 100 个设备的 RF 传输数据多路复用到单个 tcp/udp 流上,或者无法处理一百个 tcp/udp 流(更可能的情况)。
我的直觉是,在这个例子中,8051 MCU 无法胜任这项任务,因此如果您坚持使用该微控制器作为接入点,并且您没有更快的控制处理器,则可能需要在以太网交换机后添加一个间接层,例如控制节点,以便您可以与接入点/设备建立直接串行协议。但是,如果数据速率非常低并且您可以使用 UDP,这可能是可行的。