上位机与下位机是工业控制和嵌入式系统里按层级划分的设备角色:上位机更靠近人机界面、监控、配置和调度,下位机更靠近现场采集、实时控制和硬件执行。
它们不是固定的硬件品类,而是相对某个系统边界的角色。PC 可以是上位机,PLC、主控板、网关也可以是上位机;MCU 板、传感器、驱动器、执行器控制板常作为下位机。
核心问题
复杂设备通常不是一块板完成所有事情。系统需要分层:
- 上层负责配置、监控、策略、数据记录、用户界面或远程管理。
- 下层负责采样、执行、闭环控制、实时响应和硬件保护。
“上位机/下位机”解决的是设备协作中的职责划分问题。它让文档能明确说明:谁发命令,谁执行动作,谁保存配置,谁产生原始数据,谁对安全边界负责。
核心对象
| 对象 | 典型例子 | 主要职责 |
|---|---|---|
| 上位机 | PC 工具、HMI、PLC、主控 SoC、边缘网关 | 配置、监控、调度、日志、数据汇聚、用户交互 |
| 下位机 | MCU 控制板、传感器、伺服驱动器、仪表、从控模块 | 采样、执行、保护、实时控制、协议响应 |
| 通信链路 | [[UART 与串口 | 串口]]、CAN、以太网、USB、RS-485 |
| 上行数据 | 下位机或中间设备发往上位机的数据 | 状态、采样值、告警、日志、执行结果 |
| 下行命令 | 上位机发往下位机的控制或配置 | 参数设置、动作指令、升级、复位 |
| 中间设备 | 网关、采集器、主控板 | 可能同时作为上级的下位机和下级的上位机 |
核心机制
1. 职责按实时性和抽象层次拆分
常见分层是:
用户 / 云端 / 运维系统
|
上位机
|
通信协议与链路
|
下位机
|
传感器 / 电机 / 阀 / 执行器上位机通常不直接操作每个 GPIO 或寄存器,而是发出较高层的命令,例如“读取温度”“设置目标速度”“开始采集”。下位机把这些命令转换成硬件操作,并把状态或结果返回。
2. 一个设备可能同时处在上下两种角色
层级是相对的。比如一个边缘网关:
云平台
-> 边缘网关
-> 采集器
-> 传感器边缘网关面对云平台时是下位机或设备端;面对采集器时又是上位机。采集器面对网关时是下位机;面对传感器时又可能是上位机。
这就是为什么 下行口 要和具体设备边界一起说明,不能脱离上下文孤立解释。
3. 控制面和数据面可以分开
上位机和下位机之间不一定只有一条链路。常见设计会把 控制面 和 数据面 分开:
- 控制面:配置、命令、状态、心跳、告警。
- 数据面:图像、点云、采样流、日志批量上传。
在低速设备中,两者可能共用一个串口;在高吞吐设备中,控制面可能走串口或 CAN,数据面走 USB、以太网或 PCIe。混在一起时,需要协议帧清楚地区分消息类型和优先级。
工程用途
- 系统架构说明:明确 PC 工具、主控板、从控板和外设模块之间的层级。
- 协议设计:规定哪些命令只能由上位机发起,哪些状态必须由下位机上报。
- 故障定位:上位机无响应时查应用、权限、链路和协议;下位机无响应时查供电、复位、固件、实时任务和外设。
- 安全边界:下位机应保护硬件安全,不应完全信任上位机每个命令。
- 测试分工:上位机侧测 UI、配置、记录和调度;下位机侧测时序、保护、执行和传感器读数。
边界与常见坑
- 不是绝对身份:一台设备在一个系统里是上位机,在另一个系统里可能是下位机。
- 上位机不一定是 PC:PLC、主控 SoC、边缘网关、测试治具都可能扮演上位机。
- 下位机不等于低价值模块:下位机常承担实时性和安全保护,错误后果可能比上位机更严重。
- 不要把权限全交给上位机:电机限位、温度保护、急停等硬约束应在下位机或更底层保护逻辑中执行。
- 通信方向不要和角色混淆:下位机可以主动上报,上位机也可能被动接收;角色说的是职责层级,不是单向数据流。
- 协议文档要写清视角:同一条命令在上位机文档里叫下发,在下位机文档里叫接收。