
1) 【一句话结论】
实时数据采集系统需分层设计,传感器选型匹配精度与成本,传输协议选MQTT(低带宽实时)或Modbus(工业稳定),边缘节点负责本地预处理降延迟,数据存储分实时时序库与离线关系库。
2) 【原理/概念讲解】
老师口吻:设计实时数据采集系统要像搭积木一样分层,每层解决不同问题。
3) 【对比与适用场景】
| 对比项 | MQTT | Modbus |
|---|---|---|
| 定义 | 发布订阅消息协议 | 工业现场主从通信协议 |
| 特性 | 低开销、支持QoS、适合低带宽 | 稳定可靠、支持多种设备 |
| 使用场景 | 物联网设备、移动网络、实时性要求高的场景 | 工业控制现场、设备数量少、网络稳定 |
| 注意点 | 需Broker,网络不稳定可能丢包 | 需主设备控制,扩展性一般 |
4) 【示例】
假设设备是工业机器人,采集关节温度(PT100)和振动(加速度计)数据:
def process_sensor_data():
while True:
temp = read_temperature_sensor() # 读取温度
accel = read_vibration_sensor() # 读取振动
if temp > 100 or accel > 5: # 过滤异常值
continue
if time_since_last_send >= 2: # 压缩数据(每2秒发送一次)
send_data_to_mqtt(temp, accel)
time_since_last_send = 0
time_since_last_send += 1
5) 【面试口播版答案】
“面试官您好,针对专用设备实时数据采集系统设计,核心是分层架构:首先传感器选型要匹配应用场景,比如温度用PT100(高精度工业)、振动用加速度计(高频率);然后传输协议选MQTT(低带宽实时),因为设备可能移动;边缘节点负责本地预处理,比如过滤异常值、压缩数据,减少上传压力,同时响应时间短;数据存储分实时(InfluxDB)和离线(MySQL),实时数据用时序库支持高并发写入,离线数据用于分析。这样设计能保证数据采集的实时性、可靠性和效率。”
6) 【追问清单】
7) 【常见坑/雷区】