工控方案
定位确认:这个模式非常契合 C+++FreeRTOS 路线
客户是设备厂,最终控制逻辑由你们维护,设备厂不具备修改底层业务逻辑的权限。 设备厂 / 现场人员只允许在威纶通触摸屏修改参数:速度、温度阈值、延时、限位位置、配方参数;业务流程、联锁、安全逻辑全部固化在固件里,修改业务必须找你们,由你们改代码、编译、发布固件版本。
✅ 完全不需要做梯形图 / ST 解释器、上位 PLC 编辑器,直接 C++ 开发,大幅降低开发量,缩短交付周期,同时还形成了技术壁垒。
一、整体架构复盘(两套硬件平台,同一套设计思想)
- 普通工艺设备(输送线、杀菌锅):STM32 + FreeRTOS + C++
- 1ms 周期扫描任务(输入采样 → 业务逻辑运算 → 输出刷新)
- DI/AI 采集、PID 温控、阀门 / 接触器输出、Modbus 从站对接威纶通
- 安全联锁、故障判断全部 C++ 编码固化
- 伺服运动设备:STM32+FPGA + FreeRTOS + C++
- STM32:周期业务逻辑、IO-Link 读取位置、Modbus 交互、运动指令下发
- FPGA:硬件 PTO 脉冲、脉冲计数、硬件级急停 / 限位切断脉冲(独立硬件安全兜底)
- C++ 封装轴对象
CAxis,对外提供接口:MoveAbs()、MoveRel()、Jog、Stop、GetActualPos()
两套硬件复用统一的软件设计范式:映像区、变量管理、Modbus 映射、故障处理,方便团队维护。
二、变量分层设计(重点,区分【可现场修改参数】和【固化业务逻辑】)
分成两类变量,边界清晰:
- HMI 可配置参数(存 Flash,触摸屏可读写) 例如:杀菌锅保压时间、输送线启动延时、伺服左右换向位置、最大速度。 设备厂家在威纶通上修改,断电保存,不需要重新烧固件。 放在一个结构体,Modbus 直接映射,修改后自动写入 Flash。
- 固化业务逻辑(写死在 C++ 代码,编译进固件) 比如:杀菌锅的工艺流程(排气→升温→保压→泄压)、急停联锁逻辑、故障停机条件、安全互锁。
想要改动这部分业务,必须你们修改 C++ 源码,编译新版本固件,升级控制器。
示例 C++ 结构体
// ====================== HMI可配置参数(可触摸屏修改,掉电保存Flash) ======================
struct MachineParam_t
{
float temp_setpoint_max; //最高允许温度
uint32_t servo_left_pos; //左换向位置
uint32_t servo_right_pos; //右换向位置
uint16_t move_speed; //运行速度
uint16_t hold_time_ms; //保压时间
};
extern MachineParam_t g_machine_param;
// ====================== HMI交互状态变量(只读/命令,Modbus映射) ======================
struct HmiState_t
{
bool cmd_start; //触摸屏启动命令
bool cmd_stop;
bool estop_flag; //急停状态
float actual_temp; //实际温度
uint32_t actual_pos; //伺服当前位置
uint16_t error_code; //故障码
};
extern HmiState_t g_hmi_state;
// ====================== PLC扫描映像区(内部使用,不直接暴露给HMI) ======================
struct InputImage_t
{
bool di_estop;
bool di_sensor;
float ai_temp;
};
struct OutputImage_t
{
bool do_heat;
bool do_valve;
};
extern InputImage_t g_input_img;
extern OutputImage_t g_output_img;
三、固件升级方案(交付给设备厂的配套能力)
既然业务逻辑修改需要你们发固件,就要配套一套简单可靠的升级方案:
- 方案 A:串口 / RS485 固件升级(推荐) 利用现有的 485 接口,做 Modbus 自定义功能码实现固件 OTA。不用额外增加硬件;威纶通触摸屏甚至可以做简易固件升级页面。
- 方案 B:预留 SD 卡(可选) 放入固件 bin 文件,控制器上电自动检测升级,适合不方便接电脑的现场。
版本管理:固件内置版本号,HMI 可以读取显示版本号,方便现场确认当前固件版本。
四、安全与技术壁垒(贴合你的商业模式)
- 代码逻辑固化 没有梯形图解释器,客户无法反向拿到业务流程;固件可以增加固件加密、代码签名,防止固件被直接拷贝、篡改。
- 安全逻辑双重保障
- 软件层:C++ 周期扫描内的联锁判断;
- 硬件层(伺服机型 FPGA):急停、限位硬件回路,不依赖 STM32 软件,独立切断脉冲输出;
- 工业设备最佳实践:重大安全回路仍然加独立硬件安全继电器,作为第三层兜底(杀菌锅这类压力容器尤其重要)。
- 故障诊断体系 自定义故障码,故障代码、故障时间、故障触发条件存入 Flash 日志,HMI 可以查看报警记录,方便远程 / 现场排查,减少售后沟通成本。
五、团队开发和项目交付流程
- 前期:设备厂提供工艺要求、IO 清单、运动曲线;你们编写 C++ 控制程序,仿真 + 硬件测试。
- 样机阶段:烧录固件,配合威纶通 HMI 画面联调,调整 HMI 可配置参数列表。
- 批量交付:交付控制器 + HMI 程序,提供操作手册(仅说明怎么修改参数,不开放业务逻辑修改权限)。
- 后续变更:设备厂提出业务流程改动需求 → 你们修改 C++ 代码 → 编译新版本固件 → 通过 OTA / 烧录方式更新现场控制器。
六、对比自研 PLC 解释器方案,你的商业模式收益
- 开发周期短,新项目交付更快;
- 技术栈统一:C++/FreeRTOS/FPGA,团队不需要同时维护 PLC 虚拟机、解释器、上位 IDE;
- 天然形成技术壁垒:客户无法自行修改业务,业务变更产生持续技术服务;
- 成本可控,无 CODESYS 授权费;
- 性能高,没有解释器带来的额外开销。
七、需要注意的风险点
- 版本管理:项目多了之后,不同设备型号会存在多个固件分支,必须做好 git 版本管理,每次修改做好变更记录、回归测试,避免版本混乱。
- 参数合法性校验 触摸屏可以修改参数,固件里面必须加参数范围校验。例:如果操作人员在 HMI 把伺服换向位置设置成非法值,固件要拦截,报故障,防止撞机。 > > 所有来自 HMI 的参数,进入业务逻辑之前做边界检查。
- 现场调试手段 可以预留简单调试接口,比如通过 Modbus 读取内部变量,方便远程查看运行状态,不需要 ST-Link 去现场。
1. STM32(ST 意法半导体)⭐【首选主力,推荐优先使用】
推荐系列:STM32F4 / F7 / H7(工业型号,不要选 F103,老、停产风险大)
- F4:性价比之王,足够绝大多数输送线、杀菌锅;最高 168M,SPI、ADC、UART 丰富,工业温度版本
-40~85℃ - F7:更高主频、更强 FPU,浮点数运算(PID)更快
- H7:400M,Cache,大 RAM/Flash,适合复杂项目、IO-Link、多任务,算力冗余大
✅ 优点
- 生态最强:FreeRTOS 原生支持,HAL 库成熟;调试工具 ST-Link 稳定,社区资料极多,遇到问题好查。
- 外设齐全:多路 SPI、UART、ADC,硬件看门狗,外部中断,支持 Modbus、SPI 对接 FPGA。
- 工业版本宽温,供货稳定,国内代理商渠道成熟。
- C++ 开发友好,支持 RTOS,适合你的周期扫描框架。
❌ 缺点
- 价格相比国产 MCU 略贵;
- 部分型号有缺货历史(选 F4/F7 相对稳定)。
👉 适用场景:新项目主力,普通工艺设备 + 搭配 FPGA 伺服运动设备,优先选用 STM32F4/F7
2. NXP i.MX RT 系列(跨界 MCU,强烈推荐高端机型)
推荐:i.MX RT1052 / RT1064 / RT1170(不是 Linux,是无 MPU 的 MCU,跑 FreeRTOS)
注意:i.MX RT 是 Cortex-M 内核,没有 Linux,上电直接裸机 / FreeRTOS 启动,不是 Linux 工控板
✅ 优点
- 性能极强,硬件 FPU,大 RAM/Flash;EMC 性能天生优秀,工业设备很吃香。
- 外设丰富,SDRAM、SPI、QSPI,和 FPGA 高速 SPI 通信非常稳。
- NXP 工业芯片供货周期长,生命周期很长,适合产品长期量产(5~10 年供货)。
- 抗干扰、ESD 性能普遍优于 STM32 同级别,杀菌锅这类强干扰工业现场加分。
❌ 缺点
- 价格比 STM32 F4 高;
- 生态、中文资料少于 STM32,上手门槛略高;
- 编译调试环境稍微笨重。
👉 适用场景:高端设备、复杂工艺、IO-Link 多路采集、多 Modbus 链路,对 EMC 和长期供货要求高的机型;搭配 FPGA 伺服控制器的高端版本
3. ESP32(乐鑫) ⚠️ 仅适合特定场景,不推荐作为工业设备主控
ESP32-C3 / ESP32-S3 ✅ 优点:便宜,自带 WiFi/BLE;开发简单。 ❌ 致命短板(工业设备硬伤)
- 温度等级差:标准型号大多 0~70℃,很少宽温工业版本;
- 射频模块(WiFi / 蓝牙)本身就是干扰源!工业控制柜内,无线会干扰模拟量采集、RS485、传感器信号,EMC 调试非常痛苦;
- 上电复位、电源噪声鲁棒性弱于 ST/NXP;看门狗、可靠性设计不如工业 MCU;
- 供货波动大,生命周期短,不适合长期批量工业设备。
👉 仅推荐:调试样机、带无线数据上传的辅助采集板;绝对不要做杀菌锅、输送线、伺服控制器主控
4. 国产 MCU(兆易 GD32、芯海、国民技术、极海 APM)⭐【降本备选】
首选:GD32F4 系列(兆易创新),引脚 / 寄存器兼容 STM32F4,迁移成本最低。
✅ 优点
- 价格优势明显,BOM 成本低;国产,供货不受海外芯片缺货影响;
- 内核 Cortex-M4,带 FPU,外设对标 STM32F4;FreeRTOS、C++ 完全支持。
❌ 缺点
- 生态、参考资料、原厂技术支持弱于 ST/NXP;
- 早期版本部分型号 ESD/EMC 底子略差,需要 PCB 硬件上做更多防护;
- 产品生命周期相比国际大厂短一点,需要关注型号停产通知。
👉 适用场景:成熟稳定、大批量、成本敏感的输送线设备;前期样机建议先用 STM32 验证软件,再迁移 GD32,降低风险。不建议新项目直接上国产 MCU 做伺服 + FPGA 主控(复杂项目优先 ST/NXP)
快速选型推荐表
表格
| MCU | 推荐型号 | 工业适用性 | 成本 | 推荐场景 |
|---|---|---|---|---|
| STM32 | F407/F429,F746 | ⭐⭐⭐⭐⭐ | 中等 | 主力首选,所有常规项目、FPGA 搭配方案 |
| NXP i.MX RT | RT1052/RT1064 | ⭐⭐⭐⭐⭐ | 偏高 | 高端设备,强干扰现场,长期量产 |
| GD32 (国产) | GD32F407 | ⭐⭐⭐⭐ | 低 | 大批量、成本敏感、工艺成熟的输送线 |
| ESP32 | S3/C3 | ⭐⭐ | 很低 | 仅无线辅助采集板,禁止做主控制器 |
针对你的两套产品的推荐组合方案
方案 A:普通工艺设备(杀菌锅、输送线,纯 MCU 无 FPGA)
- 样机、小批量:STM32F407,生态好,调试快;
- 大批量降本:软件验证稳定后,迁移到 GD32F407。
方案 B:伺服运动机型(MCU + FPGA)
MCU 任务:SPI 和 FPGA 通信、Modbus、IO-Link、业务逻辑;时序交给 FPGA 优先 STM32F7 / NXP RT1052
- STM32F7:平衡成本与开发效率,SPI 高速通信稳定;
- NXP RT1052:如果客户现场环境恶劣(电机干扰大、高温)优先选 NXP。
几个工程上的重要提醒
- 优先选带
-40~85℃宽温工业级型号,不要选用商业级 0~70℃版本,工业柜夏天内部温度很容易超过 70℃。 - 尽量选带硬件 FPU(Cortex-M4/M7),你的项目大量用到浮点数(PID、位置、温度),FPU 对运算速度提升巨大。Cortex-M0/M3 不要作为主控。
- Flash/RAM 余量留足:固件后续增加故障日志、参数存储、IO-Link 协议,会持续占用空间,不要把内存用到 90% 以上。
- 不管选哪颗 MCU:硬件层面做好电源隔离、TVS、RS485 隔离,这比芯片选型更影响现场稳定性。
文档信息
版权声明:可自由转载(请注明转载出处)-非商用-非衍生
发表时间:2026年10月18日 16:34