Graph 自动化
Graph 是自动化流程的可视化编排工具。类比:它相当于 PLC 的 SFC(顺序功能图)或梯形图,但以设备对象为基本单元。不需要写寄存器地址,通过连接节点来组织设备动作。
什么场景用 Graph
| 场景 | 举例 |
|---|---|
| 设备启停流程 | 初始化 → 回零 → 自检 → 待机 |
| 工艺步骤编排 | 下降 → 保压 → 泄压 → 上升 |
| 条件跳转 | 合格走正常流程,NG 走排料流程 |
| 外部系统交互 | 查 MES 工单 → 调配方 → 启动作业 → 报结果 |
| 需要断点调试的逻辑 | 暂停在某个步骤,观察变量值,再继续 |
简单的连续动作(比如一个按钮触发一个设备方法)直接在画面动作中完成,不需要 Graph。Graph 用于多步骤的、有条件的、可调试的流程。
打开与编辑
在文件区打开 .qxgraph 文件,中间区域显示流程画布。
截图占位:Graph 画布界面
左上角的 method 列表可以快速跳转到入口节点。
节点类型
Method 节点
外部调用入口。一个 Graph 可以有多个 method 节点,分别对应不同的启动路径。
Function 节点
调用设备对象的方法。从对象树上把设备拖到画布即可生成。属性面板中选择具体的调用方法(如 回零()、绝对定位())。
Query 节点
调用 app 级的查询(如 MES 工单查询)。
Script 节点
调用标准库流程节点。
| 常用脚本节点 | 功能 |
|---|---|
| Wait Until | 等待条件满足。反复检查 Condition 布尔输入,满足时走 Success,超时后走 Timeout |
| GetVariable / SetVariable | 读写变量 |
| If / Switch | 条件分支 |
Subgraph 节点
调用同一个设备对象的其他 Graph method。
连线
连线分两种:
| 类型 | 端口形态 | 含义 |
|---|---|---|
| 控制流 | 三角 pin | 表示执行顺序,"这一步做完再做下一步" |
| 数据流 | 圆形 pin | 表示值传递,"这一步的输出是下一步的输入" |
悬停端口可以看到端口类型和说明。连接时编辑器会检查类型是否匹配。
截图占位:端口连接示意图
变量
Graph 可以定义内部变量,也可以读写 app 级变量。
| 变量种类 | 来源 | 用途 |
|---|---|---|
| Graph 局部变量 | 在 Graph 属性中定义 | 流程内部使用的临时值 |
| App 变量 | variables.json | 跨画面和流程共享的值 |
变量默认值与覆盖
Graph 变量的 value 是默认值。如果勾选 Inspector 可编辑:
- 绑定该 Graph 的设备对象会在属性面板显示这个变量。
- 可以为不同的对象实例设置不同的覆盖值。
- 覆盖值只影响该实例,不改变 Graph 默认值。
典型用法:同一个 Graph 绑定了两台相同设备,但两台的 Z 轴速度不一样。在 Graph 中定义变量 速度,勾选 Inspector 可编辑,然后在两台设备的属性面板分别设置。
等待与超时
现场最常见的需求:执行一个动作后,等待某个条件满足再继续。
示例:等待气缸到位
- 执行动作:
气缸.伸出() - 添加 Wait Until 节点:
Condition输入:绑定气缸.前限位信号Check分支:不需要额外动作Success→ 继续下一步Timeout→ 走报警处理或重试
Wait Until 的超时参数在属性面板设置。
调试
调试时可以用到以下功能:
| 功能 | 操作 | 效果 |
|---|---|---|
| 设置断点 | 点击节点左侧边距 | 运行到该节点暂停 |
| 暂停 | Navbar 点击 Pause | 暂停当前执行 |
| 继续 | Navbar 点击 Continue | 从暂停点继续 |
| 查看变量 | 暂停时查看调试面板 | 当前变量值、对象状态 |
| 单步执行 | 暂停后逐步执行 | 每次执行一个节点 |
暂停时画布上当前节点高亮。继续或停止后高亮清除。
截图占位:断点和调试状态
常见问题
| 问题 | 原因 | 处理 |
|---|---|---|
| 节点缺少输入 | 必需的值端口没连线 | 补齐连线或设置默认值 |
| 端口类型不匹配 | 数字输出连到了字符串输入 | 检查节点定义 |
| 对象引用失效 | 设备对象已被删除或改名 | 重新选择目标设备 |
| 修改后不生效 | 没保存或没重新构建 | 先保存 Graph,再在 Navbar 点 Build |
| 运行时找不到方法 | 自定义代码编译失败或未构建 | 检查构建状态,修复编译错误后重建 |
构建与运行
修改 Graph 后需要构建 app project 才能进入运行状态。详见构建流程。
编写原则
- 一个 Graph method 做一件事(启动、停止、复位),不要把所有逻辑堆在一起。
- 把稳定能力封在设备对象方法里(如
轴.回零()),Graph 只负责编排调用顺序和条件。 - 等待条件用 Wait Until 节点,不要在代码中写轮询循环。
- 外部 IO 和延时类操作由对象的异步方法封装,Graph 按正常端口调用即可。