嵌入式智能评审终端系统设计详细文档结构
嵌入式智能评审终端系统设计
基于您提供的项目背景(嵌入式工程师岗位智能评审系统落地场景)和附件核心需求,我为您生成了**《嵌入式智能评审终端系统设计说明书》。这份文档采用工业级嵌入式项目标准撰写规范**,结构完整、术语专业,可直接作为项目交付文档或研发指导手册使用。
嵌入式智能评审终端系统设计说明书
文档信息
|
项目名称 |
嵌入式智能评审终端系统 |
|---|---|
|
文档版本 |
V1.0.0 |
|
编制日期 |
2026年02月23日 |
|
编制部门 |
研发中心 - 嵌入式开发部 |
|
项目负责人 |
[您的姓名/团队名称] |
|
文档密级 |
内部公开 |
目录
-
引言
-
1.1 项目背景
-
1.2 项目目标
-
1.3 文档范围
-
1.4 参考标准
-
系统框架
-
2.1 总体架构设计
-
2.2 系统框架图
-
2.3 硬件架构图
-
2.4 软件架构图
-
硬件设计
-
3.1 硬件总体方案
-
3.2 核心控制单元
-
3.3 供电系统设计
-
3.4 状态指示系统
-
3.5 外围采集与控制接口
-
3.6 通信接口电路
-
3.7 PCB布局与EMC设计
-
软件流程
-
4.1 系统初始化流程
-
4.2 主程序调度流程
-
4.3 按键检测与处理流程
-
4.4 电压电流采集流程
-
4.5 故障诊断与处理流程
-
系统状态
-
5.1 状态机总体设计
-
5.2 详细状态定义
-
5.3 状态迁移规则
-
通信协议和接口设计
-
6.1 接口总体规划
-
6.2 内部通信接口(UART)
-
6.3 工业现场通信接口(CAN/CANopen)
-
6.4 上位机通信接口(Modbus-RTU)
-
6.5 数据帧格式定义
-
附录
-
7.1 术语与缩写
-
7.2 元器件清单
1. 引言
1.1 项目背景
随着工业4.0与智能制造的深度融合,工业现场对嵌入式终端的实时性、可靠性、可维护性提出了严苛要求。传统的人工评审模式已无法满足大规模、标准化的嵌入式工程师能力考核与项目验收需求。
本项目作为**“理工科岗位智能评审系统”**的核心硬件载体,旨在构建一套集数据采集、实时控制、多协议通信、故障诊断于一体的嵌入式终端。该终端将作为被测工程师的实操对象,通过模拟真实工业场景,全面验证其在硬件设计、驱动开发、RTOS应用、通信协议栈移植等核心领域的工程实践能力。
1.2 项目目标
-
能力验证载体:提供标准化的硬件平台,覆盖系统初始化、中断控制、RTOS任务管理、多协议通信等71个核心评审点。
-
高可靠性:满足工业级EMC标准,支持7x24小时稳定运行,具备完善的故障自诊断与保护机制。
-
灵活可配置:支持多种通信协议切换,具备可扩展的IO接口,适配不同难度等级的评审任务。
-
数据闭环:实现现场数据(电压、电流、状态)的采集、处理、上传,为智能评审系统提供客观评分依据。
1.3 文档范围
本文档详细规定了嵌入式智能评审终端的总体设计方案,包括系统框架、硬件电路设计、软件工作流程、系统状态机及通信协议。本文档是硬件研发、软件开发、测试验收的唯一技术依据。
1.4 参考标准
-
GB/T 17626:电磁兼容(EMC)试验和测量技术
-
ISO 11898:道路车辆控制器局域网(CAN)
-
CiA DS 301:CANopen应用层与通信协议
-
Modbus-IDA:Modbus RTU通信协议规范
-
IEC 60730:自动电气控制设备的安全标准
2. 系统框架
2.1 总体架构设计
系统采用**“分层化、模块化、高内聚、低耦合”的设计思想,整体分为感知层、控制层、传输层、应用层**四层架构。
-
感知层:负责物理量采集(电压、电流、温度)与外部事件检测(按键、故障输入)。
-
控制层:基于ARM Cortex-M4内核MCU,运行RTOS实时操作系统,实现任务调度与逻辑控制。
-
传输层:集成CAN、RS485、UART等多种通信接口,实现与上位机、工业总线的互联互通。
-
应用层:实现智能评审业务逻辑,包括状态管理、故障注入、数据上报等。
2.2 系统框架图
+--------------------------------------------------------------------------------------------------+
| 应用层 (Application Layer) |
| +----------------+ +----------------+ +----------------+ +----------------+ +--------------+ |
| | 智能评审逻辑 | | 系统状态管理 | | 故障注入与诊断 | | 参数配置管理 | | 数据日志记录 | |
| +----------------+ +----------------+ +----------------+ +----------------+ +--------------+ |
+--------------------------------------------------------------------------------------------------+
| 中间件层 (Middleware Layer) |
| +----------------+ +----------------+ +----------------+ +----------------+ +--------------+ |
| | RTOS内核 | | CANopen栈 | | Modbus栈 | | 设备驱动框架 | | 故障处理框架 | |
| | (FreeRTOS v10) | | (CANfestival) | | (Modbus-RTU) | | (HAL/LL API) | | (FSM) | |
| +----------------+ +----------------+ +----------------+ +----------------+ +--------------+ |
+--------------------------------------------------------------------------------------------------+
| 硬件抽象层 (HAL Layer) |
| +----------------+ +----------------+ +----------------+ +----------------+ +--------------+ |
| | GPIO/EXTI驱动 | | UART/SPI驱动 | | CAN/FD驱动 | | ADC/DAC驱动 | | TIM/PWM驱动 | |
| +----------------+ +----------------+ +----------------+ +----------------+ +--------------+ |
+--------------------------------------------------------------------------------------------------+
| 硬件层 (Hardware Layer) |
| +----------------+ +----------------+ +----------------+ +----------------+ +--------------+ |
| | 主控MCU (M4) | | 电源管理单元 | | 通信接口单元 | | 信号采集单元 | | 人机交互单元 | |
| +----------------+ +----------------+ +----------------+ +----------------+ +--------------+ |
+--------------------------------------------------------------------------------------------------+
2.3 硬件架构图
+----------------------------------------------------------------------------------------+
| 嵌入式智能评审终端硬件框图 |
+----------------------------------------------------------------------------------------+
| [ 电源模块 ] |
| +----------------+ +----------------+ +----------------+ |
| | 24V工业供电 |--->| LDO降压(5V/3.3V)|--->| 电源监测(ADC) | |
| +----------------+ +----------------+ +----------------+ |
+----------------------------------------------------------------------------------------+
| [ 主控核心 ] |
| +---------------------------------------------------------------------------------+ |
| | MCU (STM32F407) | |
| | [内核:Cortex-M4, 168MHz, FPU, 1MB Flash, 192KB RAM] | |
| +---------------------------------------------------------------------------------+ |
+----------------------------------------------------------------------------------------+
| [ 采集接口 ] [ 控制接口 ] |
| +----------------+ +----------------+ |
| | 电压采集(0-30V)| | 继电器输出 | |
| +----------------+ +----------------+ |
| +----------------+ +----------------+ |
| | 电流采集(0-5A) | | PWM输出 | |
| +----------------+ +----------------+ |
| +----------------+ |
| | 温度采集(NTC) | |
| +----------------+ |
+----------------------------------------------------------------------------------------+
| [ 通信接口 ] |
| +----------------+ +----------------+ +----------------+ +----------------+ |
| | CAN总线 (ISO11898) | RS485 (Modbus) | UART (调试/扩展)| USB (数据下载) | |
| +----------------+ +----------------+ +----------------+ +----------------+ |
+----------------------------------------------------------------------------------------+
| [ 人机交互 ] |
| +----------------+ +----------------+ +----------------+ |
| | 3位LED状态灯 | | 4位机械按键 | | OLED显示屏 | |
| +----------------+ +----------------+ +----------------+ |
+----------------------------------------------------------------------------------------+
2.4 软件架构图
+--------------------------------------------------------------------------------------------------+
| 应用任务层 (Application Tasks) |
+--------------------------------------------------------------------------------------------------+
| [Task_AppMain] [Task_Comm] [Task_Acq] [Task_Diag] [Task_UIFrame] |
| 主状态机管理 多协议通信处理 数据采集与滤波 故障诊断与处理 UI显示与按键 |
| (Priority: 2) (Priority: 3) (Priority: 4) (Priority: 1) (Priority: 5) |
+--------------------------------------------------------------------------------------------------+
| 中间件服务层 (Middleware Services) |
+--------------------------------------------------------------------------------------------------+
| [Queue] [Semaphore] [Timer] [CANopen] [Modbus] [FSM] [Logger] [Config] |
| 消息队列 信号量 软件定时器 CANopen协议 Modbus协议 状态机 日志服务 参数配置 |
+--------------------------------------------------------------------------------------------------+
| 驱动适配层 (Driver Abstraction) |
+--------------------------------------------------------------------------------------------------+
| [Drv_CAN] [Drv_RS485] [Drv_ADC] [Drv_LED] [Drv_Key] [Drv_Relay] [Drv_OLED] |
+--------------------------------------------------------------------------------------------------+
| 硬件层 (BSP) |
+--------------------------------------------------------------------------------------------------+
| [STM32 HAL] [Low Layer] [System Init] |
+--------------------------------------------------------------------------------------------------+
3. 硬件设计
3.1 硬件总体方案
硬件采用STM32F407ZET6作为主控芯片,该芯片基于ARM Cortex-M4内核,具备FPU浮点运算单元,主频高达168MHz,满足RTOS多任务调度和复杂算法运算需求。系统采用24V工业标准供电,具备完善的过压、过流、反接保护机制。
3.2 核心控制单元
-
MCU型号:STM32F407ZET6
-
时钟配置:外部晶振25MHz,PLL倍频至168MHz,APB1=42MHz,APB2=84MHz。
-
存储配置:板载1MB SPI Flash (W25Q64) 用于存储参数和日志;192KB片内SRAM满足系统运行。
-
复位电路:采用手动复位+看门狗复位双重机制,确保系统异常时可自动恢复。
3.3 供电系统设计
3.3.1 供电拓扑
-
输入:DC 18V~36V 宽电压输入(兼容24V工业电源)。
-
一级转换:通过DCDC芯片(LM2596)将24V转为5V,为继电器、通信接口等外设供电。
-
二级转换:通过LDO芯片(AMS1117-3.3)将5V转为3.3V,为MCU、传感器、存储器供电。
3.3.2 电源保护
-
反接保护:在电源输入端串联P沟道MOS管,防止电源正负极接反。
-
过流保护:DC-DC输出端配置自恢复保险丝,限制短路电流。
-
电源监测:利用MCU内部ADC采集5V和3.3V电压,实时监控电源健康状态。
3.3.3 电源状态指示
-
PWR LED (绿色):24V电源正常常亮。
-
SYS LED (蓝色):3.3V电源正常常亮。
3.4 状态指示系统
系统配备3位高亮度LED,用于指示系统运行状态,符合工业现场可视化需求。
|
LED颜色 |
标识 |
状态定义 |
驱动方式 |
|---|---|---|---|
|
红色 |
ALM |
常亮:严重故障;闪烁:一般故障;熄灭:无故障 |
推挽输出,低电平点亮 |
|
黄色 |
RUN |
1Hz闪烁:正常运行;2Hz闪烁:通信中;常亮:初始化中 |
推挽输出,低电平点亮 |
|
绿色 |
RDY |
常亮:准备就绪/空闲;熄灭:未就绪/运行中 |
推挽输出,低电平点亮 |
3.5 外围采集与控制接口
3.5.1 模拟量采集
-
电压采集:0-30V输入,通过电阻分压(100k:10k)将电压降至0-3V,接入ADC通道,采样精度12位。
-
电流采集:0-5A输入,通过霍尔电流传感器(ACS712)转换为电压信号,经滤波后接入ADC。
-
采集频率:采用DMA方式,对电压、电流、温度进行轮询采集,总采样率≥1kHz。
3.5.2 数字量控制
-
继电器输出:2路常开继电器,控制电压24V,负载能力5A,用于模拟工业负载的通断。
-
PWM输出:1路PWM信号,频率1kHz~10kHz可调,用于控制调速电机或调光设备。
3.6 通信接口电路
3.6.1 CAN接口
-
芯片:TJA1050
-
保护:配置共模电感、TVS管,具备ESD和浪涌保护能力。
-
终端电阻:板载120Ω终端电阻,通过拨码开关选择是否启用。
3.6.2 RS485接口
-
芯片:MAX485
-
控制:通过GPIO控制DE/RE引脚,实现半双工通信。
-
保护:TVS管防静电,自恢复保险丝防过流。
3.7 PCB布局与EMC设计
-
分区布局:模拟地与数字地分开布局,ADC采集电路远离功率器件。
-
接地设计:采用单点接地与多点接地结合方式,主芯片下方铺设完整地平面。
-
滤波设计:每个IC电源引脚就近放置0.1uF去耦电容,电源入口处放置10uF钽电容。
4. 软件流程
软件基于FreeRTOS实时操作系统开发,采用前后台结合的架构,中断处理紧急事件,任务处理业务逻辑。
4.1 系统初始化流
flowchart TD st([系统上电/复位]) --> op1[硬件复位初始化] op1 --> op2[系统时钟配置\n(PLL/分频)] op2 --> op3[外设GPIO初始化] op3 --> op4[HAL库与底层驱动初始化] op4 --> op5[中断向量表配置] op5 --> op6[RTOS内核初始化] op6 --> op7[创建设备驱动任务] op7 --> op8[创建应用业务任务] op8 --> op9[RTOS调度器启动] op9 --> e([进入主任务调度])
4.2 主程序调度流程
st=>start: 按键中断触发
e=>end: 发送消息队列
op1=>operation: 清除中断标志
op2=>operation: 启动消抖定时器(20ms)
op3=>operation: 定时器中断回调
op4=>operation: 读取GPIO电平
cond1=>condition: 按键仍按下?
op5=>operation: 记录按下时间戳
op6=>operation: 启动长按定时器(1s)
cond2=>condition: 按键释放?
op7=>operation: 计算按下时长
cond3=>condition: 时长 < 1s?
op8=>operation: 发送短按事件
op9=>operation: 发送长按事件
op10=>operation: 停止长按定时器
st->op1->op2->e
op3->op4->cond1
cond1(yes)->op5->op6->e
cond1(no)->e
cond2(yes)->op10->op7->cond3
cond3(yes)->op8->e
cond3(no)->op9->e
4.3 按键检测与处理流程
采用消抖+短按/长按识别算法,通过软件定时器实现,不阻塞主任务。
st=>start: ADC DMA完成
e=>end: 数据入队缓存
op1=>operation: 读取ADC原始值
op2=>operation: 死区与异常值判断
cond1=>condition: 数据有效?
op3=>operation: 丢弃异常数据
op4=>operation: 标度变换(电压/电流)
op5=>operation: 滑动窗口滤波(窗口=10)
op6=>operation: 更新历史数据缓存
op7=>operation: 触发阈值比较
st->op1->op2->cond1
cond1(no)->op3->e
cond1(yes)->op4->op5->op6->op7->e
4.4 电压电流检测流程
采用滑动平均滤波算法,剔除异常值,保证数据稳定性。
st=>start: ADC DMA完成
e=>end: 数据入队缓存
op1=>operation: 读取ADC原始值
op2=>operation: 死区与异常值判断
cond1=>condition: 数据有效?
op3=>operation: 丢弃异常数据
op4=>operation: 标度变换(电压/电流)
op5=>operation: 滑动窗口滤波(窗口=10)
op6=>operation: 更新历史数据缓存
op7=>operation: 触发阈值比较
st->op1->op2->cond1
cond1(no)->op3->e
cond1(yes)->op4->op5->op6->op7->e
4.5 故障诊断与处理流程
遵循**“先报警、后保护、再记录”**的原则,确保系统安全。
st=>start: 诊断任务调度
e=>end: 更新ALM LED状态
op1=>operation: 轮询各诊断项
cond1=>condition: 存在故障?
op2=>operation: 获取故障等级
cond2=>condition: 严重故障?
op3=>operation: 立即执行安全保护(停机)
op4=>operation: 记录故障代码与时间
op5=>operation: 发送故障上报报文
op6=>operation: 清除故障标志
op7=>operation: 恢复系统运行
st->op1->cond1
cond1(yes)->op2->cond2
cond2(yes)->op3->op4->op5->e
cond2(no)->op4->op5->e
cond1(no)->cond2
cond2(yes)->op6->op7->e
cond2(no)->e
5. 系统状态
系统采用有限状态机(FSM) 设计,共定义5个核心状态,状态迁移基于外部事件和内部条件,确保逻辑严谨。
5.1 状态机总体设计
[初始化状态] -->[就绪状态]
^ |
| v
[故障状态] <-- [运行状态] --> [通信配置状态]
|
+--> [待机状态]
5.2 详细状态定义
|
状态ID |
状态名称 |
英文标识 |
优先级 |
状态描述 |
LED指示 (ALM/RUN/RDY) |
|---|---|---|---|---|---|
|
S0 |
初始化状态 |
INIT |
最高 |
系统上电或复位后,进行硬件自检、参数加载、网络初始化。 |
灭/常亮/灭 |
|
S1 |
就绪状态 |
READY |
高 |
系统初始化完成,无故障,等待评审任务指令。 |
灭/1Hz闪/常亮 |
|
S2 |
运行状态 |
RUNNING |
中 |
接收评审任务,执行数据采集、控制逻辑、算法运算。 |
灭/2Hz闪/灭 |
|
S3 |
故障状态 |
FAULT |
最高 |
检测到严重错误(过压、过流、通信中断),系统进入保护模式。 |
常亮/灭/灭 |
|
S4 |
通信配置状态 |
CONFIG |
中 |
响应上位机指令,进行参数配置、协议切换、固件升级。 |
灭/双闪/灭 |
|
S5 |
待机状态 |
STANDBY |
低 |
故障清除后或空闲超时,关闭非必要外设,降低功耗。 |
灭/慢闪/常亮 |
5.3 状态迁移规则
|
当前状态 |
触发事件 |
目标状态 |
迁移动作 |
|---|---|---|---|
|
INIT |
自检通过 |
READY |
加载默认参数,启动看门狗 |
|
INIT |
自检失败 |
FAULT |
记录故障码,关闭输出 |
|
READY |
收到启动指令 |
RUNNING |
开启采集,启动控制任务 |
|
READY |
空闲超时(5min) |
STANDBY |
关闭显示屏,降低CPU主频 |
|
RUNNING |
任务完成/停止指令 |
READY |
停止输出,清除缓存 |
|
RUNNING |
检测到故障 |
FAULT |
立即切断输出,保存现场数据 |
|
FAULT |
故障清除/复位指令 |
INIT |
重启系统,重新自检 |
|
READY/RUNNING |
收到配置指令 |
CONFIG |
暂停业务,进入配置模式 |
|
CONFIG |
配置完成/超时 |
READY |
保存配置,恢复业务 |
|
STANDBY |
按键唤醒/指令唤醒 |
READY |
恢复外设,正常运行 |
6. 通信协议和接口设计
系统遵循**“异构网络,统一接口”**的设计原则,集成多种工业标准协议,满足不同评审场景的需求。
6.1 接口总体规划
|
接口名称 |
物理接口 |
通信协议 |
波特率 |
功能定位 |
评审点覆盖 |
|---|---|---|---|---|---|
|
COM1 |
UART (DB9) |
自定义ASCII |
115200 |
调试日志、参数查询 |
中断控制、UART驱动 |
|
COM2 |
RS485 (接线端子) |
Modbus-RTU |
9600 |
工业级数据交互 |
通信协议、数据解析 |
|
CAN1 |
CAN (接线端子) |
CANopen / 自定义CAN |
500k |
实时控制、多节点通信 |
CAN驱动、协议栈移植 |
|
USB |
USB SLAVE |
MSC/HID |
- |
固件升级、日志导出 |
存储管理、USB驱动 |
6.2 内部通信接口(UART)
6.2.1 帧格式
采用自定义ASCII帧,便于人工调试,帧头$,帧尾\r\n。
-
查询电压:
$RD,VA\r\n -
响应:
$OK,VA,24.50V\r\n -
错误:
$ER,01,Param Error\r\n
6.3 工业现场通信接口(CAN/CANopen)
6.3.1 CAN物理层参数
-
波特率:500 kbps
-
采样点:75%
-
SJW:1
-
总线长度:≤ 40m(带终端电阻)
6.3.2 CANopen对象字典(OD)
采用CANopen CiA 402运动控制协议子集,核心索引如下:
|
索引(Index) |
子索引(Sub) |
名称 |
访问权限 |
数据类型 |
初始值 |
|---|---|---|---|---|---|
|
0x6000 |
0x00 |
设备状态字 |
RO |
UNSIGNED16 |
0x0001 |
|
0x6001 |
0x00 |
控制字 |
RW |
UNSIGNED16 |
0x0000 |
|
0x6002 |
0x00 |
电压实际值 |
RO |
UNSIGNED16 |
0 |
|
0x6003 |
0x00 |
电流实际值 |
RO |
UNSIGNED16 |
0 |
|
0x6004 |
0x00 |
故障代码 |
RO |
UNSIGNED16 |
0 |
6.3.3 PDO映射配置
-
TxPDO1 (COB-ID: 0x180+NodeID):发送状态数据
-
0x6000:00 (设备状态字) - 2字节
-
0x6002:00 (电压实际值) - 2字节
-
0x6003:00 (电流实际值) - 2字节
-
-
RxPDO1 (COB-ID: 0x200+NodeID):接收控制指令
-
0x6001:00 (控制字) - 2字节
-
6.4 上位机通信接口(Modbus-RTU)
6.4.1 寄存器映射
采用保持寄存器(4xxxx) 映射系统参数,地址从0开始。
|
起始地址 |
寄存器数量 |
名称 |
数据类型 |
分辨率 |
访问权限 |
|---|---|---|---|---|---|
|
0x0000 |
1 |
系统状态 |
16位无符号 |
- |
RO |
|
0x0001 |
1 |
故障代码 |
16位无符号 |
- |
RO |
|
0x0002 |
2 |
电压值 |
32位浮点数 |
0.01V |
RO |
|
0x0004 |
2 |
电流值 |
32位浮点数 |
0.001A |
RO |
|
0x0006 |
1 |
控制指令 |
16位无符号 |
- |
RW |
|
0x0007 |
1 |
参数保存 |
16位无符号 |
- |
WO |
6.4.2 典型报文示例
读取电压值(地址0x0002,数量2)
-
主机请求:
01 03 00 02 00 02 C4 0B -
从机响应:
01 03 04 41 C8 00 00 76 87-
解析:0x41C80000 = 24.50 V
-
6.5 数据帧格式定义
6.5.1 自定义CAN数据帧(非CANopen模式)
用于快速数据传输,适用于实时性要求高的场景。
|
字节 |
功能 |
说明 |
|---|---|---|
|
Byte 0 |
帧类型 |
0x01:状态帧, 0x02:数据帧, 0x03:控制帧 |
|
Byte 1-2 |
时间戳 |
系统运行时间(ms) |
|
Byte 3-4 |
电压值 |
(电压*100),16位无符号整数 |
|
Byte 5-6 |
电流值 |
(电流*1000),16位无符号整数 |
|
Byte 7 |
状态标志 |
Bit0:运行, Bit1:故障, Bit2:就绪 |
7. 附录
7.1 术语与缩写
|
缩写 |
英文全称 |
中文释义 |
|---|---|---|
|
RTOS |
Real-Time Operating System |
实时操作系统 |
|
CAN |
Controller Area Network |
控制器局域网 |
|
FSM |
Finite State Machine |
有限状态机 |
|
HAL |
Hardware Abstraction Layer |
硬件抽象层 |
|
DMA |
Direct Memory Access |
直接存储器访问 |
|
EMC |
Electromagnetic Compatibility |
电磁兼容性 |
7.2 元器件清单(核心)
|
序号 |
型号 |
数量 |
用途 |
|---|---|---|---|
|
1 |
STM32F407ZET6 |
1 |
主控制芯片 |
|
2 |
TJA1050 |
1 |
CAN总线收发器 |
|
3 |
MAX485 |
1 |
RS485总线收发器 |
|
4 |
LM2596-5.0 |
1 |
DC-DC电源转换 |
|
5 |
AMS1117-3.3 |
2 |
LDO电源转换 |
|
6 |
ACS712-05B |
1 |
电流传感器 |
|
7 |
W25Q64JV |
1 |
SPI Flash存储器 |
更多推荐
所有评论(0)