返回列表
工程

PC 自动化设备控制软件开发流程(18 步)

C 语言为基础的设备控制软件开发流程,从设备结构分析到量产支持与维护,18 步全流程梳理。

12 分钟阅读· ofalv

本文按顺序介绍 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-elseswitch-case 结构编写,并配套错误处理结构。

时序的控制结构因公司、开发者而异,不标准化的话每台设备的时序代码都会变成一团乱麻。资深工程师必须确立时序控制的基础结构,并将其作为公用库,使所有开发者按同一结构开发。

9. 主画面 GUI 开发

整理主画面要展示的信息并实现。部分内容可与时序开发并行进行。

10. 视觉算法与 Teaching 画面开发

含 Vision Align 或 Inspection 功能的设备,需要开发视觉算法与视觉 Teaching 画面。

若有专门的视觉工程师,且视觉程序运行于另一台 PC 或独立可执行文件,则视觉工程师独立开发,设备控制程序通过通信获取结果用于控制。

11. 时序调试

基础时序就绪后,以 IDLE RUN(DRY RUN)运行,验证各模块时序正常工作,且模块间的衔接条件正确。

这一阶段最易因失误或 bug 引发机械碰撞 — 严格的互锁条件能保护硬件。

12. MES 开发与测试

若开发人员充足,MES 开发可与其他工作并行启动。

先解读 MES 规格、基础协议和数据结构,然后按场景开发。每个场景或事件需要收发的数据要妥善处理,并与时序开发、GUI 开发同步进行。

MES 的常规步骤:

  1. 规格分析
  2. 基础协议开发
  3. 单事件数据收发测试
  4. 场景开发
  5. 本地服务器协议与场景测试
  6. 量产服务器测试

13. Full Auto Run 测试与调试

时序开发完成后,投入实际物料进行最终测试。

投入实物后,会暴露大量预想之外的传感器、时间、机械问题。此时与机械、硬件、CS 工程师协作逐项解决。软件本身的 bug 需修复,可以由软件补救的非软件问题也尽量处理。

控制问题用软件解决最便宜。 (但不要滥用)

14. 手动功能与便利功能开发

为了让现场调试更顺,尽早提供手动操作功能很重要。

仔细观察调试过程(或开发者亲自调试),迅速开发能提升便利性的功能。新软件的首次现场调试,最好由开发者本人执行

开发者要会吃自己做的狗粮。

15. 错误与消息数据补充

理想情况下,时序开发与错误数据整理并行,但实际中大多数人都聚焦于时序逻辑,错误码常常滞后整理。等时序调试稳定后,认真整理错误码和消息,使现场人员一眼就能看懂内容。同时支持多语言。

XMachineStudio 允许你在编写时序的同时便捷地添加 ERROR 数据。

16. 多语言数据制作

为上述错误/消息数据制作多语言版本。GUI 画面的多语言数据也一并制作。

17. 软件使用手册

撰写软件安装与使用手册。客户如有需要,可委托翻译。

18. 量产支持 · Bug 修复 · 维护

设备验收或交付后,在量产过程中持续修复 bug 并提供长期维护支持。

PC 控制自动化设备开发流程时序MES