第4章:联网架构设计——AGV与调度服务器的网络拓扑、边缘节点部署、数据流设计

好,咱们进入正题。这一章聊的是联网架构,说白了就是AGV小车怎么跟调度服务器“说话”,数据走哪条路,中间有没有“二传手”。我做了这么多年AGV项目,见过太多因为网络架构没想清楚,最后现场乱成一锅粥的案例。嗯,咱们今天就把这事掰扯清楚。

4.1 网络拓扑:星型还是Mesh?

先问个问题:你的AGV车队是几十台,还是几百台?这直接决定了拓扑选型。

我个人习惯,小规模车队(20台以内)用星型拓扑。每台AGV直接连到调度服务器,简单粗暴。但超过50台,星型就扛不住了——服务器网卡先撑爆,Wi-Fi AP也容易过载。

这时候我推荐分层星型+Mesh混合。什么意思?

  • 第一层:AGV跟附近的边缘节点通信(Wi-Fi或5G)
  • 第二层:边缘节点通过有线骨干网连到调度服务器
  • 第三层:边缘节点之间可以Mesh互连,做冗余备份

我在一个汽车工厂的项目里遇到过这种情况:车间里金属货架多,Wi-Fi信号到处是死角。后来我们改用这种混合拓扑,边缘节点挂在立柱上,AGV走到哪都有信号。说白了,物理环境决定了你的拓扑选择,别硬套理论。

核心原则:控制面(调度指令)走低延迟路径,数据面(状态上报)可以容忍稍高延迟。两者最好逻辑分离。

4.2 边缘节点部署:别小看这个“二传手”

边缘节点是什么?你可以理解成一个“本地小脑”。它不负责全局路径规划,但负责:

  • 实时转发AGV的状态心跳
  • 缓存调度指令(防止网络抖动丢包)
  • 做简单的冲突检测(比如两车在同一个路口)

部署位置怎么选? 我建议按区域划分。比如一个仓库分A、B、C三个区,每个区放一个边缘节点。节点最好装在区域中心的天花板或立柱上,高度3米以上,避免AGV遮挡。

硬件选型,我踩过坑。曾经用普通的工控机做边缘节点,结果夏天车间温度40度,工控机频繁死机。后来换成工业级无风扇设计,IP65防护等级,才稳定下来。你想想看,AGV调度是7x24小时跑的,边缘节点挂了,整个区域的车都得停。

避坑指南:我曾经在一个项目中,边缘节点和AGV用同一个Wi-Fi频段,结果互相干扰。后来强制边缘节点用5.8GHz,AGV用2.4GHz,问题解决。频段隔离很重要。

4.3 数据流设计:从AGV到服务器的“高速公路”

数据流设计,说白了就是定义“谁在什么时候发什么数据”。我把它分成三个层次:

4.3.1 上行数据流(AGV → 服务器)

AGV每隔100ms上报一次状态,包括:

  • 当前位置(x, y, 角度)
  • 速度、电量
  • 当前任务ID
  • 异常标志(急停、碰撞等)

这里有个细节:不要所有数据都实时上报。比如电量,每5秒上报一次就够了。位置和状态必须高频。我在项目里见过有人把AGV的传感器原始数据也往上发,结果带宽直接打满。嗯,这是典型的“过度设计”。

4.3.2 下行数据流(服务器 → AGV)

调度服务器下发的主要是:

  • 路径指令(一串坐标点)
  • 任务指令(去A点取货,再到B点放货)
  • 控制指令(停车、加速、减速)

我建议,下行数据用“确认-重传”机制。AGV收到指令后必须回复ACK,服务器没收到ACK就重发。为什么?因为AGV在移动中,Wi-Fi丢包是常态。我曾经因为没做重传,导致AGV在路口没收到停车指令,差点撞上。从那以后,这个机制成了我的标配。

4.3.3 边缘节点数据流

边缘节点在中间做“缓存+转发”。具体流程:

  1. AGV上报数据 → 边缘节点接收
  2. 边缘节点做本地处理(比如检查是否在允许区域)
  3. 边缘节点将数据打包,通过MQTT或gRPC发给服务器
  4. 服务器下发指令 → 边缘节点缓存 → 按序转发给AGV

这里有个关键点:边缘节点要维护一个“指令队列”。如果AGV暂时离线,指令先存在边缘节点,等AGV重新连上再发。我见过有些方案让服务器直接重发,结果网络恢复时指令乱序,AGV直接跑偏。

注意:边缘节点和服务器之间的通信,一定要用有线网络。别图省事用Wi-Fi,否则边缘节点本身就成了瓶颈。我吃过这个亏,后来全部改有线。

4.4 数据流协议选型

我常用的组合是:

层级 协议 原因
AGV ↔ 边缘节点 MQTT(QoS 1) 轻量、支持离线消息、带宽占用小
边缘节点 ↔ 服务器 gRPC(双向流) 低延迟、强类型、支持流式传输
心跳/监控 HTTP/2 简单、便于调试

为什么AGV和边缘节点之间用MQTT?说白了,AGV的算力有限,MQTT的客户端库几乎零依赖。而边缘节点和服务器之间,gRPC的流式传输能保证指令顺序,不会乱序。我在一个项目里试过用HTTP轮询,结果延迟高得离谱,AGV都走到货架跟前了,指令还没到。

4.5 一个实战案例

最后分享一个我实际做过的案例。某电商仓库,100台AGV,面积2万平米。

  • 拓扑:分4个区域,每个区域1个边缘节点(工控机+5G CPE)
  • 边缘节点部署:挂在区域中心的天花板,高度4米
  • 数据流:AGV每100ms上报位置,每5秒上报电量。边缘节点缓存最近10条指令
  • 协议:AGV ↔ 边缘节点用MQTT,边缘节点 ↔ 服务器用gRPC
  • 结果:端到端延迟平均15ms,丢包率0.1%以下,运行一年没出过网络相关故障

这个架构后来成了我们公司的标准模板。你想想看,其实核心就三点:分层、缓存、协议分离。把这三点想清楚,AGV联网调度就不会出大问题。

总结一句话:网络拓扑决定能不能连,边缘节点决定稳不稳,数据流设计决定快不快。三者缺一不可。