上位机 & 下位机
"上位机"和"下位机"是嵌入式系统和工业控制系统中常见的一组术语,用于描述系统中控制层级关系 与通信模式。
上位机(Host / PC / Master)
定义 :
上位机通常指运行在 PC、工控机或服务器上的应用程序,用于控制、监视、配置或管理下位机。
典型特征:
- 一般计算能力强(如 Windows/Linux 系统)
- UI 友好,常有图形界面(如 Qt、C#、Python 开发)
- 负责下发控制命令、参数设置,采集数据
- 与多个下位机通信(串口、USB、CAN、Modbus、Ethernet 等)
常见开发语言/平台:
- C#/WPF
- Python(PyQt、Tkinter)
- C++(Qt)
- LabVIEW、MATLAB
下位机(Slave / Device / MCU)
定义 :
下位机通常指运行在嵌入式芯片(如 STM32、ESP32、51 单片机等)上的程序,主要负责执行上位机的控制命令,采集传感器数据等。
典型特征:
- 资源受限(如 Flash、RAM 小)
- 实时性强(使用 RTOS 或裸机)
- 通常没有复杂 UI
- 通过串口、CAN、SPI、I2C 等与上位机通信
常见开发平台:
- STM32CubeIDE / Keil / IAR
- FreeRTOS / bare-metal
- Arduino / ESP-IDF / Zephyr
上位机与下位机通信方式
方式 | 特点说明 |
---|---|
串口(UART) | 最常见,简单、低成本,点对点通信 |
USB | 上位机作为 Host,下位机作为 Device |
CAN 总线 | 适合多机通信,抗干扰能力强 |
Modbus 协议 | 工业控制常用协议(串口/以太网) |
Ethernet/TCP | 高速通信,适合传输大量数据 |
SPI/I2C | 多用于芯片间短距离通信(主从结构) |
举例
比如开发一个智能温控系统:
- 下位机:STM32 单片机 + 传感器模块,定时采集温度数据,通过串口发送给上位机。
- 上位机:PC 上运行的 C#/Qt 程序,读取数据、显示曲线图,设置目标温度阈值,通过串口发送控制命令给下位机。
常见使用场景
- 工业自动化(PLC+上位机 SCADA)
- 医疗设备(监控仪表、数据采集系统)
- 智能硬件(物联网终端 + 配套上位机)
- 机器人控制(控制台软件 + 嵌入式控制板)