Keba 接口 (Professional)
Keba 接口 (Keba Interface) 提供与 Keba 自动化控制器的高性能通信。
概述
Keba 接口支持 Unity 仿真与 Keba 自动化控制器之间的实时双向数据交换。此 Professional 专用接口支持自动变量导入、基于模式的信号方向检测和高效的变量订阅,以实现最佳性能。
该接口使用标准网络通信协议连接到 Keba 控制器。变量可以从控制器自动导入,也可以根据需要手动配置。
此接口需要 realvirtual Professional,并与支持变量服务的 Keba 自动化控制器通信。
安装
Keba 接口包含在 realvirtual Professional 中,可通过以下方式添加到场景:
- 菜单方式:选择 Tools > realvirtual > Add Interface > Keba
- 手动方式:将
KebaInterface脚本添加到空的 GameObject 上
接口文件位于:Assets/realvirtual/Interfaces/Keba/
属性

连接设置
- Base URL (string): Keba 自动化控制器的 IP 地址或主机名。默认:"192.168.1.100"
- Username (string): Keba 控制器认证用户名。默认:"Administrator"
- Password (string): Keba 控制器认证密码。默认:"tobechanged"
- HTTP Port (int): 控制器通信的 HTTP 端口号。默认:80
- WebSocket Port (int): 变量服务通信的端口号。默认:80
- Connection Timeout (float): 连接超时时间(秒)。默认:5.0
变量导入和主题
- Import Root Paths (list): 导入变量的根路径(如 "SYS"、"PLC"、"SYS.HW")。默认:\["SYS"]
- Import Recursive (boolean): 递归导入子目录中的变量。默认:true
- Default Signal Direction (enum): 导入变量的默认信号方向(Input = Unity→Keba, Output = Keba→Unity)。默认:Output
- Use Pattern Matching (boolean): 对变量名称使用模式匹配以自动确定信号方向。默认:true
- Input Patterns (list): 标识输入信号 (Unity→Keba) 的名称模式。默认:\["input", "INPUT"]
- Output Patterns (list): 标识输出信号 (Keba→Unity) 的名称模式。默认:\["output", "OUTPUT"]
- Output Topic Name (string): 从 Keba 控制器订阅输出变量的主题名称。默认:"realvirtual_outputs"
- Input Topic Name (string): 向 Keba 控制器发送输入变量的主题名称。默认:"realvirtual_inputs"
- Subscription Cycle Time Ms (int): 变量订阅的更新周期时间(毫秒)。默认:20
- Use OnChange Subscription (boolean): 仅在变量发生变化时订阅以获得更好的性能。默认:true
诊断
- WebSocket Queue Size (int): 通信队列中当前等待处理的消息数量(只读)
控制器配置
启用变量服务
配置 Keba 自动化控制器以接受连接:
- 控制器设置:
- 在控制器配置中启用变量服务
- 配置 HTTP 端口(通常为 80)用于通信
- 配置通信端口(通常为 80)用于变量访问
- 确保用户账户具有适当的变量访问权限
- 网络设置:
- 确保控制器和 Unity PC 在同一网络中
- 配置静态 IP 地址以确保可靠连接
- 使用 ping 命令测试连通性
- 安全设置:
- 使用强密码替代默认的 "tobechanged"
- 配置用户权限以进行变量读/写访问
- 确保防火墙允许在配置端口上进行通信
变量组织
为获得最佳性能和组织效果:
- 结构化变量:在逻辑路径中组织变量(如 SYS 用于系统变量,PLC 用于程序逻辑)
- 使用命名规范:在变量名中包含 "input" 或 "output" 以自动检测方向
- 分组相关变量:将相关变量放在同一路径中以实现高效的批量操作
手动信号创建
为精确控制信号配置,您可以手动创建单个信号。接口通过元数据自动将信号映射到 Keba 变量。
基本设置流程
- 将接口添加到场景:
- 创建一个空的 GameObject 并命名为 "KebaController"
- 添加 KebaInterface 组件
- 配置连接设置(IP 地址、用户名、密码)
- 创建信号 GameObject:
- 在层级视图中右键点击接口 GameObject
- 选择 Create Empty 添加子 GameObject
- 为其指定描述性名称(如 "ConveyorMotorStart"、"SystemStatus"、"TemperatureReading")
- 添加信号组件:
- 选择信号 GameObject
- 添加适当的信号组件:
- PLCInputBool - 向 Keba 控制器发送布尔值
- PLCOutputBool - 从 Keba 控制器读取布尔值
- PLCInputFloat - 向 Keba 控制器发送数值
- PLCOutputFloat - 从 Keba 控制器读取数值
- 配置信号属性:
- Name:设置为与 Keba 变量名完全匹配
- Comment:添加描述信号用途的文档
- 设置 Keba 变量元数据:
- 接口需要 "KebaVariable" 元数据来将信号映射到控制器变量
- 这通常通过变量导入自动设置
- 对于手动设置,使用信号 Inspector 的元数据部分
自动映射:接口通过元数据自动将信号名称映射到 Keba 变量名。使用 变量导入 功能进行自动设置,或手动配置元数据以实现自定义映射。
变量导入
变量导入功能支持从 Keba 控制器变量自动创建信号,可大幅减少大型系统的设置时间。
Unity 中的导入流程
- 配置连接设置:
- 将 Base URL 设置为您的 Keba 控制器 IP
- 输入有效的 Username 和 Password
- 验证 HTTP Port 与控制器配置匹配
- 配置导入设置:
- Import Root Paths:指定要导入的变量路径(如 "SYS"、"PLC")
- Import Recursive:启用以从子目录导入
- Pattern Matching:配置模式以自动检测信号方向
- Default Signal Direction:为不匹配模式的变量设置回退方向
- 测试连接:
- 点击 🔌 Test Connection 按钮验证控制器访问
- 验证认证和变量访问是否正常
- 在导入前解决任何连接问题
- 执行导入:
- 点击 ⬇️ Import Variables 按钮开始导入过程
- 监控 Unity Console 查看导入进度和任何警告
- 在层级视图中查看创建的信号
变量路径示例
| 路径 | 描述 | 典型内容 |
|---|---|---|
| SYS | 系统变量 | 控制器状态、诊断 |
| PLC | PLC 程序变量 | 用户程序输入/输出 |
| SYS.HW | 硬件变量 | I/O 模块状态、硬件诊断 |
| SYS.CPU | CPU 变量 | CPU 负载、内存使用 |
模式匹配
接口可以根据变量名称自动确定信号方向:
- 输入模式 (Input Patterns) (Unity→Keba):包含 "input" 或 "INPUT" 的变量成为输入信号
- 输出模式 (Output Patterns) (Keba→Unity):包含 "output" 或 "OUTPUT" 的变量成为输出信号
- 无模式匹配:使用默认信号方向设置
导入后组织
成功导入后,您将获得:
- 已组织的信号:每个变量成为一个正确配置的信号 GameObject
- 正确的方向:从模式或默认设置自动确定
- 元数据映射:"KebaVariable" 元数据将信号链接到控制器变量
- 即用信号:立即可用于连接仿真组件
支持的数据类型
接口支持标准的 Keba 自动化数据类型:
| Keba 类型 | realvirtual 信号 | 描述 | 用途 |
|---|---|---|---|
| BOOL | Bool | 布尔值 | 数字输入/输出、状态标志 |
| STRING | Text | 文本字符串 | 消息、状态文本 |
| DWORD, UDINT | Int | 32 位无符号整数 | 计数器、大数值 |
| DINT, INT | Int | 有符号整数 | 位置值、温度 |
| UINT, WORD | Int | 16 位无符号整数 | 小型计数器、状态码 |
| BYTE | Int | 8 位无符号整数 | 小数值、标志 |
| REAL | Float | 32 位浮点数 | 速度值、测量值 |
| LREAL | Float | 64 位浮点数 | 高精度值 |
故障排除
连接问题
无法连接到控制器:
- 验证控制器 IP 地址是否正确
- 检查 HTTP 和 WebSocket 端口与控制器配置匹配
- 使用 ping 命令测试:
ping 192.168.1.100 - 验证防火墙设置允许在配置端口上通信
- 检查控制器是否已开机且网络可访问
认证失败:
- 验证用户名和密码是否正确
- 检查用户账户是否具有适当权限
- 确保账户未被锁定或过期
- 如果最近更改过,尝试使用默认凭据
导入问题
变量导入失败:
- 先使用 Test Connection 按钮验证控制器访问
- 检查 Import Root Paths 是否在控制器中存在
- 验证用户权限是否允许变量枚举
- 查看 Unity Console 中的具体错误消息
未找到变量:
- 验证指定路径是否包含变量
- 如果变量在子目录中,检查 Import Recursive 设置
- 确保控制器在指定路径中配置了变量
通信问题
更新速率慢:
- 减小 Subscription Cycle Time Ms 以获得更快的更新
- 启用 Use OnChange Subscription 以进行事件驱动更新
- 检查 Unity 与控制器之间的网络延迟
- 监控通信队列大小是否存在瓶颈
通信断开:
- 检查网络稳定性和带宽
- 如果网络较慢,增加 Connection Timeout
- 监控高频更新时的控制器 CPU 负载
- 查看 Unity Console 中的具体通信错误
性能问题
通信队列大小过高:
- 表示消息到达速度快于 Unity 的处理速度
- 在控制器中降低变量订阅速率
- 增加 Unity 的 Update Cycle Ms 设置
- 考虑同时订阅更少的变量
内存使用增加:
- 检查诊断中的消息队列堆积
- 验证接口关闭时连接是否正确清理
- 监控 Unity Profiler 中的内存分配模式
另请参见
外部资源
- Keba Automation - Keba 自动化官方产品和文档
© 2025 realvirtual GmbH https://realvirtual.io - 版权所有。未经出版商事先书面许可,不得以任何形式或任何方式(包括打印、保存、复印、录制或其他电子或机械方法)复制、分发或传播本出版物的任何部分。