STM32从零到量产开发:四路继电器工业控制模块开发 – — 上位机操作说明书
配套固件:P02_Relay_Controller_4Channels(STM32F103RCT6,4 路继电器 + 4 路数字量输入 DI) 通信方式:RS232(UART4,115200 8N1,行文本协议) 软件版本:P02HostPC v1.0(C# / .NET 8 / WinForms) 适用场景:产线调试、现场维护、演示展示
1. 软件获取与启动
1.1 环境要求
- Windows 10 / 11(WinForms 原生)
- Visual Studio 2022+(勾选“.NET 桌面开发”工作负载)
1.2 界面总览
┌──────────────────────────────────────────────────────────────────────┐
│ 端口[COM3▾] 波特[115200▾] [连接/断开] │
├─────────────── 继电器控制 ───────────┬────────── 数字量输入 DI ──────┤
│ [CH1 OFF][CH2 OFF][CH3 OFF][CH4 OFF] │ [DI1][DI2][DI3][DI4] │
│ [全开][全断] 位掩码[ ] [发送] │ 状态:UPTIME 51s RESETS 3 │
├─────────────── 只读信息 ─────────────┼────────── 配置(写 Flash)─────┤
│ [INFO][PARAM][STATS][FS] │ ADDR[ ] BAUD[0(9600)▾] [应用] │
│ ┌─────────────────────────────────┐ │ FS_EN[0▾] FS_SEC[ ] │
│ │(只读信息显示区) │ │ [恢复出厂] [PING] │
│ └─────────────────────────────────┘ │ │
├─────────────── 日志终端 ─────────────────────────────────────────────┤
│ [TX> / RX< 收发与提示,带时间戳] │
├──────────────────────────────────────────────────────────────────────┤
│ 命令行[ ] [发送] 轮询[1▾] [✓自动] │
└──────────────────────────────────────────────────────────────────────┘
2. 第一次连接(必读)
3. 功能操作指南
3.1 继电器控制(4 路)
| 单路翻转 | 点 CH1~CH4 按钮 | 发 RELAY n ON/OFF,日志 OK;按钮变绿=吸合、灰=释放;约 1s 内被轮询校正 |
| 全部吸合 | 点 [全开] | 发 RELAY ALL 15 |
| 全部释放 | 点 [全断] | 发 RELAY ALL 0 |
| 位掩码控制 | 在“位掩码”框输入 0-15 或 0x0-0xF,点 [发送] | 如 5=CH1+CH3、0xF=全开、0x0=全断 |
位掩码规则:bit0=CH1,bit1=CH2,bit2=CH3,bit3=CH4。非法输入(如 16、0x10、字母)会弹窗提示,不发送。 单路 ON/OFF 命令成功后立即更新按钮颜色;全开/全断/位掩码依赖“自动轮询”在 1s 内回刷显示。
3.2 数字量输入 DI(只读)
- 4 个 DI 指示灯:绿色=高电平(1),灰色=低电平(0)。
- 受外部输入电平实时驱动,由 STATUS 轮询刷新。
- 也可点只读信息区下方命令行输入 DI 单独查询。
3.3 只读信息(点按钮查询,结果显示在信息框)
| INFO | INFO | 固件版本、MCU 型号、运行时长/复位、Modbus 帧数/CRC 错误、Flash 魔术字与 CRC |
| PARAM | PARAM | Modbus 从站地址、RS485 波特索引(文本)、链路使能 |
| STATS | STATS | 诊断:帧数/CRC 错误/异常;各通道继电器动作累计次数;寿命告警掩码;运行秒/小时 |
| FS | FS | 故障安全:使能状态、超时秒、当前是否已进入安全态(active=1=通信超时) |
信息框为共用显示区,每次查询覆盖上次内容。
3.4 配置写 Flash(掉电保存,谨慎操作)
- ADDR:Modbus 从站地址 1-247
- BAUD:RS485 波特索引 0(9600) / 1(19200) / 2(38400) / 3(57600) / 4(115200)
- FS_EN:故障安全使能 0/1
- FS_SEC:故障安全超时 1-254 秒
- 空着的输入框会被跳过;非法范围会在日志提示(如 ADDR 范围 1-247)。
3.5 PING 与命令行透传
- [PING]:心跳测试,回 PONG 证明串口链路通。
- 命令行:输入任意固件支持的命令(如 HELP、STATUS、LED、RELAY 2 ON…),点 [发送] 或按 回车 透传。所有收发记录在日志终端。
3.6 日志终端
- 实时记录所有 TX>(发出命令) 与 RX<(收到响应),带 HH:mm:ss 时间戳。
- 自动滚到底部。可用于排查通信问题(如长时间无 RX 可能是串口占用或波特不对)。
4. 定时轮询
- “轮询”数值框:刷新间隔 1-10 秒(默认 1)。
- “自动”复选框:勾选后连接期间持续自动发 STATUS 刷新面板;取消则停止自动刷新(手动点按钮查询)。
- 轮询仅读 STATUS,不触发任何写操作,安全可常开。
5. 故障排查
| 连接失败弹窗“无法打开 COMx” | 端口被占用 / 不存在 | 关串口助手;确认端口号;重插 USB |
| 连上后日志无 RX | 波特不对 / 线接错 / 板子未上电 | 确认 115200 8N1;查 UART4 接线;查板供电 |
| 继电器按钮点了没反应 | 未连接 / 自动轮询未开 | 确认已[连接];勾选[自动]或手动点 STATUS |
| 状态栏一直 UPTIME –s | 解析未命中(固件版本不符) | 确认烧的是 P02 固件;看日志原始 RX 格式 |
| 写 ADDR/BAUD 报 ERR | 超出范围 | ADDR 1-247;BAUD 0-4;FS_SEC 1-254 |
| 界面卡死/无响应 | 串口线程异常 | 点[断开]再[连接];必要时关软件重开 |
6. 命令速查(固件支持)
HELP 列出全部命令
STATUS 继电器/DI/运行时长/复位次数
DI 读取 4 路数字量输入
RELAY n ON|OFF 单路控制(n=1-4)
RELAY ALL <val> 批量(0-15 或 0x0-0xF)
PARAM 读 Modbus 参数
ADDR <1-247> 设从站地址(写 Flash)
BAUD <0-4> 设 RS485 波特索引(写 Flash)
FACTORY 恢复出厂
INFO 固件与统计
STATS 诊断统计
FS 查故障安全
FS EN 0|1 设故障安全使能
FS SEC <1-254> 设故障安全超时(秒)
PING 心跳回显 PONG
LED 4 路 LED 自检
上位机所有按钮本质就是向板子发送上述命令并解析响应,命令行可发送任意一条做调试。
7. 已实现功能验收(实测)
上位机全部功能已通过离线逻辑实测(每个按钮 = 构造命令 → 解析响应,共 90 项断言全 PASS):
- ✅ 连接/断开(COM3、115200)、自动轮询 STATUS
- ✅ 单路继电器 ON/OFF、全开、全断、位掩码(0-15 / 0x0-0xF,含非法拦截)
- ✅ DI 指示灯(兼容 STATUS 与 DI 命令两种空格格式)
- ✅ 只读信息 INFO / PARAM / STATS / FS(active=1 安全态正确解析)
- ✅ 配置写 Flash:ADDR / BAUD / FS_EN / FS_SEC / 恢复出厂(二次确认)
- ✅ PING 链路验证、命令行透传、日志终端
- ✅ 鲁棒性:脏数据/空响应不崩溃、值 ON/off 大小写容忍、回显与提示符包裹兼容
文档生成:2026-07-31 | 与 HostPC/src/Protocol.cs、SerialComm.cs、MainForm.cs 及固件 rs232_shell.c 对齐。
8. 上位机通信机制(指令+应答)
上位机与下位机采用 指令 + 应答(Command/Ack) 握手,界面只在收到板子真实响应后才刷新:
界面状态永远由"板子真实回包经解析回调"驱动,绝不"发送成功即刷新"——与下位机故障安全(通信丢失即断输出)端到端一致。
闭环实测(2026-08-01,真板 RS232/COM3)
P02HostPC.exe –selftest COM3(P02 生产固件)→ PASS=7 FAIL=0:连接、STATUS/INFO/PING 握手填充、RELAY 写握手翻转并回读一致,均经板子真实响应刷新。






