对象与设备
对象就是把设备抽象成可调用的功能块。它封装了底层协议、寄存器地址和通信细节,向 HMI 画面和流程提供语义化接口。
理解对象
传统 PLC 编程中,你要写寄存器地址 D100、M200:
// 传统方式:操作员要在画面上知道地址
MOV K1 D100 // 启动命令写到 D100
对象方式下,你调用设备的方法:
// 对象方式:操作员看到的是语义动作
控制器.启动()
轴.回零()
对象内部负责把"启动"翻译成正确的寄存器写入。画面上不需要出现任何地址。
对象树
对象树在编辑器左侧资源区的最上方。它以树形结构组织设备层级。
典型的现场设备层级:
产线
├── 工位1
│ ├── PulsarController(控制器)
│ │ ├── Z轴(PulsarAxis)
│ │ ├── 翻转轴(PulsarAxis)
│ │ └── IO板(PulsarIoBank)
│ └── 扫码枪(自定义对象)
├── 工位2
│ └── ...
└── RecipeManager(配方管理,整个 app 一个)
基本操作
| 操作 | 方式 |
|---|---|
| 添加根级设备 | 右键对象树空白处 → 选择设备类型 |
| 添加子设备 | 右键父对象(如控制器)→ 添加轴或 IO 板 |
| 查看设备详情 | 单击选中,右侧属性面板显示参数 |
| 调整层级 | 拖拽到目标位置 |
| 删除对象 | 右键菜单 |
| 拖到流程图 | 从对象树把设备拖到 Graph 画布,自动生成节点 |
截图占位:对象树层次结构示例
缺失类型
如果对象树中出现红色标记,说明该设备类型在当前环境中不存在(例如缺少插件或自定义代码编译失败)。补齐后重新加载即可。
设备属性
选中对象后,右侧属性面板显示可配置参数。以 Pulsar 控制器为例:
| 参数类别 | 内容 |
|---|---|
| 连接参数 | IP 地址、端口号、从站 ID |
| 总线配置 | 通信周期、超时时间、重试次数 |
| 拓扑信息 | 挂载的轴和 IO 模块列表 |
| 绑定 Graph | 设备启动/停止时自动执行的流程 |
轴的属性:
| 参数类别 | 内容 |
|---|---|
| 轴号与绑定 | 轴 ID、绑定的控制器 |
| 运动参数 | 最大速度、加速度、减速度、JOG 速度 |
| 限位 | 软限位正负值、硬限位信号映射 |
| 回零参数 | 回零方式、回零速度、偏移量 |
| 错误处理 | 跟随误差阈值、急停减速度 |
截图占位:轴属性面板
修改属性后保存。部分参数(如通信参数)需要重启应用生效。
内置设备类型
启心自动化平台 标准库提供以下常用设备类型。
运动控制(Pulsar)
| 对象类型 | 功能 |
|---|---|
| PulsarController | Pulsar 总线控制器,管理通信和拓扑 |
| PulsarAxis | 伺服/步进轴:回零、绝对/相对定位、速度模式、停止 |
| PulsarIoBank | 数字量 IO(DI/DO)和模拟量 IO(AI/AO) |
使用前提:app 的 manifest.json 中 modules.pulsar 设为 true。
通信协议
| 对象类型 | 适用设备 |
|---|---|
| OmronHostLink | 欧姆龙 PLC(Host Link 协议) |
| ModbusTcp | Modbus TCP 设备(PLC、仪表、变频器) |
| ModbusRTU | Modbus RTU 设备(串口) |
| S7_200_Smart | 西门子 S7-200 Smart PLC |
数据处理
| 对象类型 | 功能 |
|---|---|
| RecipeManager | 配方管理:产品型号 → 工艺参数集。每个 app 最多一个实例。 |
| RecordStore | 数据表:字段可配置,支持文件持久化或内存临时表。适合 IO 点位配置表、工艺参数表、批次记录。 |
| Logger | 运行日志记录 |
通用
| 对象类型 | 功能 |
|---|---|
| GenericNode | 通用树节点,用于组织层级(如按产线→工位→设备分组) |
运动控制配置示例
下面以一套典型的跌落试验机为例,走一遍完整配置流程。
第一步:创建控制器
- 右键对象树 → PulsarController。
- 属性面板填控制器 IP 和端口。
- 保存。
第二步:添加 Z 轴
- 右键 PulsarController → PulsarAxis。
- 重命名为"Z轴"。
- 配置运动参数:
- 最大速度:50 mm/s
- 回零速度:10 mm/s
- 软限位:+200 / -5
- 打开 Axis Config 面板配置更多细节(回零方式、电子齿轮比等)。
- 保存。
第三步:添加翻转轴
同样的方式添加翻转轴。
第四步:添加 IO 板
- 右键 PulsarController → PulsarIoBank。
- 配置 DI 信号映射:光幕、急停、插销前限/后限、摆臂就位。
- 配置 DO 信号映射:电磁阀、指示灯、蜂鸣器。
- 保存。
第五步:在画面和流程中使用
配置完成后,这些对象的方法出现在可用设备列表中:
- Z轴.回零()
- Z轴.绝对定位(100)
- 翻转轴.相对定位(90)
- IO板.DO[0].置位()
- IO板.DI[0].读取()
在画面的按钮动作中调用,或在 Graph 流程图中编排。
截图占位:Pulsar 三层对象(控制器→轴+IO×3→方法列表)
数据表(RecordStore)配置示例
以工位 IO 点位配置表为例:
- 添加 RecordStore 对象。
- 属性面板定义字段:
点位名称(文本)、地址(文本)、类型(下拉)、初始值(数值)、备注(文本)。 - 将
storageMode设为"file",数据保存到data/record-stores/。 - 在页面添加 Table 控件,绑定该 RecordStore。
- 操作员可在运行页增删改查点位配置。
自定义设备(Script)
当内置设备类型不满足需要(如特殊的扫码枪协议、非标仪表、客户自有设备),可通过自定义代码扩展。
自定义代码编写后需要编译构建,编译成功后新设备类型出现在对象树的可添加列表中,与内置设备使用方法完全一致。
详见构建流程。
设备引用关系
对象之间有两种关系:
| 关系 | 含义 | 例子 |
|---|---|---|
| 父子(Children) | 拥有关系 | 控制器拥有多个轴 |
| 引用(ObjectRef) | 使用关系 | 工位对象引用它所使用的控制器 |
在属性面板中,ObjectRef 显示为对象选择器下拉框。
现场注意事项
- 修改通信参数后需要重启应用。
- 删除设备前确认没有画面或流程仍在引用它。
- 对象动作依赖底层设备就绪:确认急停释放、通讯正常、驱动器无报警。
- 不要绕过对象直接在画面或流程中写寄存器地址。
- 未知设备类型导致 app 加载失败时,检查自定义代码编译或插件是否缺失。