PC 自动化设备控制软件开发流程(18 步)
C 语言为基础的设备控制软件开发流程,从设备结构分析到量产支持与维护,18 步全流程梳理。
本文按顺序介绍 C 语言为基础的设备控制软件开发流程。
下述顺序为常见做法,但若开发人员较多,部分步骤可以并行或提前进行。请把它当作大致的流程指引,根据各自项目情况、开发者经验与人员投入加以调整。
前提
- 基础 IO 库与电机库已经搭建完成。
- 通用 GUI 画面已经开发并可复用。
1. 把握设备结构
先与机械设计者一起评审设备。
需要把握设备整体的运动结构。任何设备最终都要通过执行器(电机、气缸等)对物料进行加工或搬运,因此必须理解物料如何流转、各电机和气缸在其中如何作用,才能设计出合适的控制结构。
- 电机轴数,各电机的运动方向与目标位置。
- 气缸的位置、方向与动作结构。
- 各传感器在何种情形下触发、为何安装,是否缺少控制必需的传感器。
- 控制 PC 上安装的板卡种类、与 PC 连接的通信与接口类型。
软件工程师最好从设备立项阶段就介入,而不是等机械组装完成后才开始分析结构 — 这样可以提前解决从控制角度看到的问题。
2. 控制结构设计与评审
基于上面对结构的理解,先做高层级的控制结构设计。
哪些部分并发运行、物料数据需要哪些字段、主画面应展示哪些信息 — 把这些问题想清楚,再与其他开发者评审一次会很有帮助。
3. 创建项目
控制方案敲定后,创建新项目。要么用 Visual Studio 新建,要么基于已有项目剥离掉所有设备专属代码,只保留通用部分。
每个具体设备的项目只放该设备相关源码,通用代码应剥离到独立的 DLL 库。整理出来供控制使用的通用库集合,有些团队就称之为 框架。
4. 基础数据制作
制作基础数据:
- IO Map
- Cylinder Data
- Motor Data
按各公司框架使用的格式写即可。
虽然不用配置文件、单纯靠源码也能开发,但一旦不用配置文件,任何参数微调都要重新编译并替换可执行文件;硬件稍有差异,同一份可执行文件就难以共用。让基础控制对象支持从数据文件配置,这是框架应有之义。
5. IO · Cylinder · Motor 检测
设备与控制 PC 上电后,检查 IO、气缸、电机是否正常工作:
- 传感器是否正确检测物料?
- 气缸方向与传感器是否正常进入?
- 电机方向、传感器状态、移动距离等。
6. 互锁开发(Check 函数)
正式开始时序开发前,务必严格地编写互锁条件,防止电机或气缸误动作引发碰撞。
互锁初期要严,后续根据实际情况逐步放宽。若初期就放得很松,时序开发过程中难免出现 bug、操作失误或 jog 误动作,极易造成机械碰撞。轻则电机报警,重则机械损坏 — 而最致命的不是金钱损失,而是纳期延误:量产计划无法等待。除此之外,意外动作还可能导致作业人员受伤。互锁工作值得花足够时间。
请在互锁上多花心思。
7. Teaching 参数制作
随着运动结构清晰,记录下每个电机需要移动的 Teaching 值。
- 在 GUI 上提供设置画面,允许移动电机后实际调试。
- 时序代码侧也要定义能消费这些 GUI 设置值的数据结构。
8. Sequence 开发
正式进入时序开发与连接。
时序按并发模块为单位开发,每个模块由一个或多个线程驱动。时序代码控制电机、气缸、IO 输出等执行器搬运/加工物料,并更新物料相关数据。
通常时序用 if-else 或 switch-case 结构编写,并配套错误处理结构。
时序的控制结构因公司、开发者而异,不标准化的话每台设备的时序代码都会变成一团乱麻。资深工程师必须确立时序控制的基础结构,并将其作为公用库,使所有开发者按同一结构开发。
9. 主画面 GUI 开发
整理主画面要展示的信息并实现。部分内容可与时序开发并行进行。
10. 视觉算法与 Teaching 画面开发
含 Vision Align 或 Inspection 功能的设备,需要开发视觉算法与视觉 Teaching 画面。
若有专门的视觉工程师,且视觉程序运行于另一台 PC 或独立可执行文件,则视觉工程师独立开发,设备控制程序通过通信获取结果用于控制。
11. 时序调试
基础时序就绪后,以 IDLE RUN(DRY RUN)运行,验证各模块时序正常工作,且模块间的衔接条件正确。
这一阶段最易因失误或 bug 引发机械碰撞 — 严格的互锁条件能保护硬件。
12. MES 开发与测试
若开发人员充足,MES 开发可与其他工作并行启动。
先解读 MES 规格、基础协议和数据结构,然后按场景开发。每个场景或事件需要收发的数据要妥善处理,并与时序开发、GUI 开发同步进行。
MES 的常规步骤:
- 规格分析
- 基础协议开发
- 单事件数据收发测试
- 场景开发
- 本地服务器协议与场景测试
- 量产服务器测试
13. Full Auto Run 测试与调试
时序开发完成后,投入实际物料进行最终测试。
投入实物后,会暴露大量预想之外的传感器、时间、机械问题。此时与机械、硬件、CS 工程师协作逐项解决。软件本身的 bug 需修复,可以由软件补救的非软件问题也尽量处理。
控制问题用软件解决最便宜。 (但不要滥用)
14. 手动功能与便利功能开发
为了让现场调试更顺,尽早提供手动操作功能很重要。
仔细观察调试过程(或开发者亲自调试),迅速开发能提升便利性的功能。新软件的首次现场调试,最好由开发者本人执行。
开发者要会吃自己做的狗粮。
15. 错误与消息数据补充
理想情况下,时序开发与错误数据整理并行,但实际中大多数人都聚焦于时序逻辑,错误码常常滞后整理。等时序调试稳定后,认真整理错误码和消息,使现场人员一眼就能看懂内容。同时支持多语言。
XMachineStudio 允许你在编写时序的同时便捷地添加 ERROR 数据。
16. 多语言数据制作
为上述错误/消息数据制作多语言版本。GUI 画面的多语言数据也一并制作。
17. 软件使用手册
撰写软件安装与使用手册。客户如有需要,可委托翻译。
18. 量产支持 · Bug 修复 · 维护
设备验收或交付后,在量产过程中持续修复 bug 并提供长期维护支持。