前言

经过了第一章多路视频展示系统设计第二章AI分析模块的嵌入,我们设计的AI视频监控系统已经具备了基本的框架和雏形,具备基本的视频展示和AI分析功能,但是该系统仅有内部信息的流转,缺少有效的社会或生产价值,因为我们并没有有效的利用AI视频分析系统有效的分析结果,如将报警信息推送至信息汇总中心,及时消除报警威胁,或是将AI视频监控系统信息数据推送至数据分析中心,依靠大数据技术和数据分析算法有效提高信息的利用效率。所以在本章节我们需要完善AI视频监控系统的信息共享功能,具备数据生态圈的接入能力,使之成为工业生产、社会行为规范等领域的有力工具。


一、基本的信息通信机制及简介

一个完整的AI视频监控系统要实现信息共享与生态接入,必须根据不同的设备类型、应用场景和性能要求,采用多样化的通信机制。现代工业通信是一个分层体系,需要从传输层、协议层和应用层综合考量。本节将深入分析各类设备的通信需求,并详细介绍相应的通信协议与技术。

1. 通信基础:TCP与UDP的本质

在讨论具体协议前,必须明确TCP和UDP在网络体系结构中的位置。它们都属于传输层(Transport Layer) 协议,为应用层提供端到端的通信服务,但其特性截然不同。

为了更好地理解它们在协议栈中的位置及其核心区别,请见下图


传输层协议
TCP
面向连接/可靠
UDP
无连接/高效
应用层协议
HTTP/WebSocket
MQTT
Modbus
网络层 IP
数据链路层

  • TCP(传输控制协议):面向连接、可靠传输、保证顺序、流量控制

    • 适用场景:需要可靠数据传输的应用,如Web服务(HTTP)、邮件(SMTP)、文件传输

    • 特点:三次握手建立连接,保证数据包完整性和顺序,适合重要数据传输

  • UDP(用户数据报协议):无连接、不可靠传输、不保证顺序、低延迟

    • 适用场景:实时性要求高的应用,如视频流、语音通话、实时状态监测

    • 特点:无需建立连接,直接发送数据包,适合对实时性要求高于可靠性的场景


2. 不同设备类型的通信方案

2.1 服务器间通信

服务器间通信通常要求高可靠性和数据完整性,系统的复杂性要求我们为不同类型的设备选择合适的通信协议,其决策流程可概括如下:

低频/通用
高频/实时
资源受限/网络不稳定
极度受限/低功耗
为设备选择通信协议
设备类型是什么?
服务器/云服务
嵌入式设备
工业控制设备
通信频次与要求?
HTTP/REST API
WebSocket或gRPC
资源与网络条件?
MQTT
CoAP
Modbus RTU/TCP

低频次数据交互:

  • HTTP/HTTPS(RESTful API):

    • 协议层级:应用层协议(基于TCP)

    • 工作方式:请求-响应模式,客户端发起请求,服务器返回响应

    • 适用场景:配置管理、报表生成、低频事件上报

    • 优势:标准化、易于实现和调试、防火墙友好

    • 劣势:每次请求需要建立TCP连接(HTTP1.1支持持久连接但仍有头部开销)

    • 示意如下

客户端(Client) 服务器(Server) 1. 建立TCP连接 TCP连接请求 2. 发送HTTP请求 GET /api/data HTTP/1.1 3. 处理请求 处理业务逻辑 4. 返回HTTP响应 HTTP/1.1 200 OK 客户端(Client) 服务器(Server)

高频次实时数据交互:

  • WebSocket:

    • 协议层级:应用层协议(基于TCP)

    工作方式:先通过HTTP握手,然后升级为全双工通信通道

    • 适用场景:实时仪表盘、高频状态更新、实时协作应用

    • 优势:单连接持久化,减少连接建立开销,支持双向实时通信

  • 自定义TCP协议:

    • 协议层级:传输层+自定义应用层协议

    • 工作方式:基于TCP长连接,自定义二进制或文本协议

    • 适用场景:极高性能要求的内部系统通信

    • 优势:极致性能,最小化协议开销

    • 劣势:需要自行处理粘包、拆包、重连等机制


2.2 嵌入式设备通信

嵌入式设备通常资源有限(计算能力、内存、功耗),需要轻量级协议:

MQTT(消息队列遥测传输):

  • 协议层级:应用层协议(基于TCP)

  • 架构:发布/订阅模式,中心代理(Broker)架构

  • 适用场景:物联网设备数据上报、远程控制、状态监控

  • QoS级别:

    • QoS 0:最多一次交付(可能丢失)

    • QoS 1:至少一次交付(可能重复)

    • QoS 2:恰好一次交付(可靠但开销大)

  • 优势:

    • 极低的协议开销(最小报文仅2字节)

    • 支持离线消息(持久会话)

    • 适应不稳定网络环境

    • 一对多消息分发

  • 典型应用:AI边缘计算盒子上报分析结果、接收远程配置更新

  • 示意图如下:

Publisher MQTT Broker Subscriber Step 1: Subscribe to topic SUBSCRIBE(sensors/temperature, QoS=1) SUBACK Step 2: Publish message PUBLISH(sensors/temperature, "23.5C") PUBACK Step 3: Route message PUBLISH(sensors/temperature, "23.5C") PUBACK Publisher MQTT Broker Subscriber

CoAP(受限应用协议):

  • 协议层级:应用层协议(基于UDP)

  • 特点:专为受限设备设计,类似HTTP的语义但更轻量

  • 适用场景:极低功耗设备,如电池供电的传感器

  • 优势:基于UDP,头部开销极小,支持多播


2.3 工业设备与控制通信

对于直接控制声光报警器、门禁控制器等工业设备,需要实时可靠的工业协议:

Modbus协议:

  • 协议变体:

    • Modbus RTU:基于串行通信(RS-485/RS-232),二进制格式

    • Modbus TCP:基于以太网/TCP,封装Modbus帧

  • 工作模式:主从架构,主机发起请求,从设备响应

  • 数据模型:

    • 线圈(Coils):读写布尔值(1位)

    • 离散输入(Discrete Inputs):只读布尔值

    • 输入寄存器(Input Registers):只读16位值

    • 保持寄存器(Holding Registers):读写16位值

  • 适用场景:PLC控制、传感器数据采集、设备状态监控

典型应用流程:

  1. AI分析服务器检测到安全事件(如入侵)

  2. 通过MQTT上报云端管理平台

  3. 管理平台通过Modbus TCP/RTU向现场的PLC发送控制指令

  4. PLC驱动声光报警器启动,同时控制门禁系统锁闭相关区域

示意流程如下:

主设备(Master) 从设备(Slave) 1. 构建Modbus请求帧 事务标识符: 0x0001 协议标识符: 0x0000 长度: 0x0006 单元标识符: 0x01 功能码: 0x03(读保持寄存器) 起始地址: 0x0000 寄存器数量: 0x0002 发送请求帧 2. 从设备处理请求 解析功能码和地址 读取寄存器数据 3. 构建响应帧 事务标识符: 0x0001 协议标识符: 0x0000 长度: 0x0005 单元标识符: 0x01 功能码: 0x03 字节计数: 0x04 寄存器值: 0x1234, 0x5678 发送响应帧 4. 主设备处理响应 验证事务标识符 解析寄存器数据 更新系统状态 主设备(Master) 从设备(Slave)

3. 协议选择决策矩阵

设备类型 典型场景 推荐协议 优势 注意事项
云端服务器 数据聚合、API提供 HTTP/REST 通用性强,生态完善 高频场景性能开销大
服务器集群内部 微服务通信、数据同步 gRPC/Thrift 高性能,接口严格 需要服务发现机制
实时Web应用 监控仪表盘、实时通知 WebSocket 全双工实时通信 需要连接管理
嵌入式AI设备 分析结果上报 MQTT 轻量,支持不稳定网络 需要Broker服务器
极低功耗传感器 周期性数据采集 CoAP 极低功耗,简单 可靠性较低
工业控制设备 设备控制、状态读取 Modbus 工业标准,广泛支持 功能相对简单
实时音视频传输 视频流、语音对讲 RTP/UDP 低延迟,实时性好 需配合QoS机制

4.系统通信架构示例

  • 一个完整的AI视频监控系统的通信架构可能如下所示:
数据层
应用层
云平台
边缘层
MQTT over TLS/JSON数据上报
HTTP Webhook
WebSocket/实时状态更新
REST API/业务数据交互
gRPC/Thrift/高性能内部通信
Modbus TCP/RTU/控制指令
WebSocket/实时状态更新
HTTP API
数据分析服务
大数据分析
Web监控平台
移动APP/第三方系统集成
MQTT Broker
消息中间件
后端微服务集群
边缘AI计算设备
摄像头+分析盒
工业控制设备
声光报警器/门禁
边缘网关/PLC
  • 参考的文本流程图如下:
┌─────────────────┐    MQTT over TLS    ┌─────────────────┐
│  边缘AI计算设备  │ ←─────────────────→ │   MQTT Broker   │
│ (摄像头+分析盒)  │    JSON数据上报     │   (消息中间件)  │
└─────────────────┘                     └─────────┬───────┘
                                                  │ HTTP Webhook
                                                  ▼
┌─────────────────┐    Modbus TCP/RTU    ┌───────────────┐    WebSocket     ┌───────────────┐
│ 工业控制设备     │ ←─────────────────→ │ 边缘网关/PLC  │ ←──────────────→ │ Web监控平台   │
│ (声光报警器/门禁)│   控制指令、状态读取   │               │   实时状态更新   │               │
└─────────────────┘                     └───────────────┘                 └───────────────┘
                                                  │  HTTP API
                                                  ▼
                                           ┌───────────────┐    REST API      ┌───────────────┐
                                           │ 后端微服务集群 │ ←──────────────→ │ 移动APP/第三方 │
                                           │               │   业务数据交互   │ 系统集成      │
                                           └───────────────┘                 └───────────────┘
                                                  │ gRPC/Thrift
                                                  ▼
                                           ┌───────────────┐
                                           │ 数据分析服务   │
                                           │ (大数据分析)  │
                                           └───────────────┘

总结

本小节主要的目的是为了让大家明白基本的通信机制和原理,可以根据使用情况合适的选择有效的通信机制,在下一小节,我们将针对常用的通信机制,实现最小单元级别的案例。

下期预告

  1. http请求推送数据。
  2. mqtt请求推送数据。
  3. modbus请求控制设备。
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐