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-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(掉电保存,谨慎操作)

  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 证明串口链路通。
  • 命令行 :输入任意固件支持的命令(如 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) 握手,界面只在收到板子真实响应后才刷新:

  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 写握手翻转并回读一致,均经板子真实响应刷新。

相关推荐
jianqiang.xue9 小时前
【CStackGUI 实战】画板 drawpad:鼠标拖拽作图、撤销 / 重做、导出 PNG
单片机·嵌入式·cstackgui·c语言gui·可视化拖拽
今夜有雨.9 小时前
图像运算、掩膜/ROI 与绘制交互
c语言·数据结构·c++·qt·算法·计算机视觉
新晨单片机设计10 小时前
S022A-基于STM32单片机音乐盒(数码管显示)【Proteus仿真+Keil程序+原理图】
stm32·单片机·proteus·音乐盒
知识分享小能手10 小时前
C学习教程,从入门到精通,C语言概述 —— 知识点详解(1)
c语言·开发语言·学习
深圳老胡10 小时前
STM32 MCU 国产替代型号简介
笔记·stm32·单片机·代码规范
东木月10 小时前
Windows C 盘清理指南:安全删除临时文件、缓存与 Prefetch
c语言·windows·安全
殷忆枫11 小时前
基于STM32的独居老人语音/一键双模紧急呼救系统设计与实现
stm32·嵌入式硬件·xcode
暖焰核心11 小时前
USART 概念篇——从高低电平到数据帧
stm32
水饺编程11 小时前
第1章,[Win32 章节]:Windows 的方方面面
c语言·c++·windows·visual studio
我就是不信11 小时前
用 C 语言实现一个支持 HTML 与视频的 HTTP(S) 服务器
c语言·html·音视频