Festo AX Controls / PLCnext (Professional)
此功能在 realvirtual 6.3.3 (Professional) 中添加 — Beta 版
概述
Festo AX Controls 接口将 realvirtual 直接连接到运行 PLCnext Technology 的 Festo AX Controls 控制器 — PLCnext Technology 是由 Phoenix Contact 开发并被 Festo 采用于其 AX Controls 系列的开放 IEC 61131-3 运行时平台。
通信使用 Festo 的 RSC (Remote Service Call) 库,通过 TCP 端口 41100 进行,提供对 PLCnext 全局数据空间 (Global Data Space, GDS) 变量的直接访问。该接口支持两种数据交换模式:订阅模式 (subscription mode),控制器以可配置的采样率推送变量更新;轮询模式 (polling mode),realvirtual 每个周期读取所有输出变量。
支持布尔、整数、浮点和字符串变量类型。编辑器按钮可在设计时连接到控制器,自动导入变量并创建 realvirtual 信号对象。

前提条件
- realvirtual Professional — Festo 接口和 RSC DLL 包含在 Professional 包中。
- 网络连接 — 您的开发 PC 必须能够访问 Festo 控制器上的 TCP 端口 41100。
- PLCnext 固件 — 控制器必须运行启用了 RSC 服务的 PLCnext 固件(所有 AX Controls 固件版本均默认支持)。
属性
连接设置
| 属性 | 描述 |
|---|---|
| Host | Festo PLCnext 控制器的 IP 地址或主机名(默认:192.168.1.10) |
| Port | RSC 服务 TCP 端口(默认:41100) |
| Use TLS | 为 RSC 连接启用 TLS 加密。建议在生产环境中使用 |
| Validate Certificate | 验证服务器的 TLS 证书。在测试环境中使用自签名证书时请禁用此选项 |
| Username | PLCnext 认证用户名(默认:admin) |
| Password | PLCnext 认证密码(默认:plcnext) |
| Connection Timeout Seconds | 连接和读/写操作的超时时间(秒)(默认:10) |
订阅设置
| 属性 | 描述 |
|---|---|
| Use Subscription | 对输出信号使用 PLCnext 实时订阅模式。禁用时改用轮询模式 |
| Subscription Cycle Ms | 订阅模式的采样率(毫秒)。值越小更新频率越高。最小有效值为 10 ms(默认:100) |
变量导入
| 属性 | 描述 |
|---|---|
| Import Root Path | 信号导入时在 PLCnext 上浏览变量的根组件路径(默认:Arp.Plc.Eclr,对应 IEC 61131-3 运行时)。留空则浏览所有组件 |
| Default Import Direction | 导入变量的默认信号方向(Input 或 Output) |
按钮:
- Import Signals from PLC — 从 Unity Editor 连接到控制器,浏览 Import Root Path 下的变量,并在接口组件下创建或更新 realvirtual 信号对象。
快速入门
- 通过 Add Component > realvirtual > Interfaces > Festo AX Controls (PLCnext) 将 Festo AX Controls (PLCnext) 组件添加到场景中的 GameObject 上
- 在 Edit > Project Settings > Player > Scripting Define Symbols 中添加
REALVIRTUAL_FESTO并重新编译 - 将 Host 设置为您的 Festo 控制器的 IP 地址
- 输入您的 Username 和 Password
- 配置 Import Root Path 指向您的 PLC 程序(例如
Arp.Plc.Eclr) - 点击 Import Signals from PLC — 接口将连接、浏览变量并创建信号对象
- 检查导入的信号,并将 Unity 需要写入 PLC 的变量设置为 Input 方向
- 按 Play — 接口自动连接并开始信号交换
信号地址格式
每个信号将其 PLCnext 变量路径存储在 Address 元数据字段中。路径格式遵循 PLCnext GDS 约定:
ComponentName/ProgramName.VariableName
示例:
| 信号 | 地址 |
|---|---|
| 布尔电机状态 | Arp.Plc.Eclr/MainInstance.Motor1_Running |
| 整数计数器 | Arp.Plc.Eclr/MainInstance.PartCounter |
| 数组元素 | Arp.Plc.Eclr/MainInstance.ConveyorSpeeds[0] |
| 数组切片 | Arp.Plc.Eclr/MainInstance.ConveyorSpeeds[0:9] |
| 结构体字段 | Arp.Plc.Eclr/MainInstance.DriveState.ActualPosition |
标准 IEC 61131-3 (Eclr) 运行时的组件名称为 Arp.Plc.Eclr。您的程序实例名称是在 PLCnext Engineer 项目中分配给程序的名称。
通信模式
订阅模式(默认)
启用 Use Subscription 时,接口向 PLCnext 订阅服务注册所有输出信号。控制器以配置的 Subscription Cycle Ms 速率推送更新值。这是实时仿真的推荐模式,因为它可以最大限度地减少延迟并降低网络开销。
如果 PLCnext 固件不支持订阅服务,接口会自动回退到轮询模式并记录警告日志。
轮询模式
禁用 Use Subscription 时,接口在每个通信周期对所有输出信号地址执行批量读取。此模式兼容所有 PLCnext 固件版本,但延迟高于订阅模式。
输入信号(Unity 写入 PLC)无论选择哪种模式,都始终使用批量写操作。连接后的第一个周期,所有输入值会被发送以初始化 PLC 状态。
从 PLC 导入信号
Import Signals from PLC 编辑器按钮提供一键信号发现功能:
- 接口使用配置的凭据连接到控制器
- 通过 PLCnext 变量浏览服务从 Import Root Path 浏览变量
- 为每个发现的变量在接口组件下创建 realvirtual 信号对象
Address元数据字段设置为完整的 PLCnext 实例路径- 所有导入的信号都会获得 Default Import Direction — 将 Unity 需要写回 PLC 的变量单独改为
Input
支持的 PLCnext 数据类型映射到 realvirtual 信号类型如下:
| PLCnext 类型 | realvirtual 信号类型 |
|---|---|
BOOL | Bool |
INT, UINT, SINT, DINT, UDINT, BYTE, WORD, DWORD | Int |
REAL, LREAL | Float |
STRING, WSTRING | Text |
不支持类型的变量将被跳过,并在 Unity 控制台中记录警告。
另请参见
- 接口概述 — 所有可用接口
- 信号管理器 — 管理 PLC 信号
- 自定义接口 — 如何构建自己的接口
- 编译器定义 — 添加脚本定义符号
- Keba 接口 (Professional) — 类似的基于 RSC 的控制器接口
- TwinCAT (Professional) — 另一个基于 IEC 61131-3 的接口
© 2025 realvirtual GmbH https://realvirtual.io - 版权所有。未经出版商事先书面许可,不得以任何形式或任何方式(包括打印、保存、复印、录制或其他电子或机械方法)复制、分发或传播本出版物的任何部分。