STM32从零到量产开发:四路继电器工业控制模块开发 - 上位机操作说明书

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. 第一次连接(必读)

  1. USB 转 RS232 线连接 PC 与 P02 板的 UART4(PC10/PC11)。
  2. 上位机顶部"端口"下拉框选择正确串口号(台架通常为 COM3)。若列表为空,点端口框右侧刷新或重启软件。
  3. 务必先关闭其他串口助手(如 SSCOM、友善串口助手),否则 COM 被占用会连接失败或全静默。
  4. 连接 。成功日志显示 [*] 已连接 COM3 @ 115200,并自动发一次 STATUS。
  5. PING 验证链路:日志出现 [OK] PING -> PONG (链路正常) 即 OK。
  6. 默认勾选"自动",软件每 1 秒自动轮询一次 STATUS,继电器/DI/时长实时刷新。

3. 功能操作指南

3.1 继电器控制(4 路)

操作 方法 预期
单路翻转 CH1~CH4 按钮 RELAY n ON/OFF,日志 OK;按钮变绿=吸合、灰=释放;约 1s 内被轮询校正
全部吸合 全开 RELAY ALL 15
全部释放 全断 RELAY ALL 0
位掩码控制 在"位掩码"框输入 0-150x0-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(掉电保存,谨慎操作)

  1. 在"配置"区填好参数:
    • ADDR :Modbus 从站地址 1-247
    • BAUD :RS485 波特索引 0(9600) / 1(19200) / 2(38400) / 3(57600) / 4(115200)
    • FS_EN :故障安全使能 0/1
    • FS_SEC :故障安全超时 1-254
  2. 应用 → 按填好的项分批发 ADDR/BAUD/FS EN/FS SEC 写 Flash,日志逐条回显 OK
    • 空着的输入框会被跳过;非法范围会在日志提示(如 ADDR 范围 1-247)。
  3. 恢复出厂 :二次确认弹窗(Yes/No),确认后发 FACTORY 重置 Modbus 地址/波特/故障安全为出厂值(建议重启生效)。

3.5 PING 与命令行透传

  • PING :心跳测试,回 PONG 证明串口链路通。
  • 命令行 :输入任意固件支持的命令(如 HELPSTATUSLEDRELAY 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.csSerialComm.csMainForm.cs 及固件 rs232_shell.c 对齐。


8. 上位机通信机制(指令+应答)

上位机与下位机采用 指令 + 应答(Command/Ack) 握手,界面只在收到板子真实响应后才刷新:

  1. 200ms 应答超时 :每条命令发出即启动 200ms 应答定时器(ackTimeoutMs=200);200ms 内无首字节 = 无应答 → 自动重发(最多 2 次,共 3 次)。
  2. 仅有效应答刷新 UI :只有"操作成功帧"(如 OK/RELAYn: ON)或"条件不满足帧"(如 ERR:...)才更新界面;超时/半包/纯回显行不刷新。
  3. 超时报错 :3 次尝试耗尽仍无应答 → 注入 ERR: 响应超时(已重发2次):命令无应答,按失败处理(不更新 UI、日志报错)。

界面状态永远由"板子真实回包经解析回调"驱动,绝不"发送成功即刷新"------与下位机故障安全(通信丢失即断输出)端到端一致。

闭环实测(2026-08-01,真板 RS232/COM3)

P02HostPC.exe --selftest COM3(P02 生产固件)→ PASS=7 FAIL=0:连接、STATUS/INFO/PING 握手填充、RELAY 写握手翻转并回读一致,均经板子真实响应刷新。

相关推荐
ShiMetaPi2 小时前
ShiMetaPi-Pico-G1快速入门:04 系统登录
stm32·单片机·嵌入式硬件
小僧景贤2 小时前
嵌入式C语言 第十一篇:成长路线|嵌入式C工程师完整进阶学习路径(从零到工程级落地|含周期+实战项目)
c语言·开发语言·学习
灵晔君2 小时前
【Linux】进程(四)——进程虚拟地址空间
linux·c语言·开发语言
天空'之城3 小时前
C 语言工业级通用组件手写 25:简易日志系统
c语言·开发语言·日志系统·嵌入式调试·调试打印
Run_Teenage3 小时前
嵌入式:深刻理解GPIO的上拉输入、下拉输入、浮空输入、模拟输入
单片机·嵌入式硬件
单片机杂货铺4 小时前
【单片机毕业设计选题】基于LoRa的智慧农业环境监测系统设计与实现
stm32·单片机·嵌入式硬件·51单片机·硬件工程·课程设计
热心网友俣先生4 小时前
2026年华数杯C 题 超详细解题思路
c语言·开发语言·人工智能
云泽8084 小时前
深入浅出 STM32(八):GPIO 寄存器底层原理与 CubeMX 点亮 LED 实战
stm32·单片机·嵌入式硬件
单片机杂货铺18 小时前
基于单片机的智能粮仓控制系统设计与实现
stm32·单片机·嵌入式硬件·物联网·计算机外设·51单片机·课程设计