TwinCAT (Pro)
请注意,此接口仅在 realvirtual.io Professional 中可用
简介
TwinCAT 是 Beckhoff PLC 的编程框架。
realvirtual.io TwinCAT 接口使用 ADS 作为与 Beckhoff PLC 的通信框架。Beckhoff PLC 可以是虚拟的,例如随 TwinCAT 编程环境一起提供的版本(可在 https://www.beckhoff.de/twincat3/ 免费下载),也可以是通过网络与您的 PC 连接的真实 PLC。
TwinCAT 编程环境仅为开发目的提供免费的 7 天试用许可用于 TwinCAT PLC 运行时。虚拟 PLC 也可以作为 OPCUA 服务器运行,同时也可以使用 OPCUA 接口。但如果您只需要与 Beckhoff PLC 通信,我们建议直接使用 TwinCAT 接口,因为该接口速度更快且开销比 OPCUA 接口更小。
TwinCAT Beckhoff 接口教程
TwinCAT ADS 通信前提条件
要建立 TwinCAT ADS 通信,您必须在 PC 上安装完整的 TwinCAT3 环境(包括虚拟 PLC、编程环境和 ADS 路由器),也可以选择仅安装 TwinCAT ADS 组件(TC1000 TwinCAT 3 ADS)。所需软件可从官方网站下载。
TwinCAT3 下载
接口配置
TwinCAT 接口通过选择 Tools > realvirtual > Add Component > Interface > TwinCAT 或通过将脚本 TwinCATADSinterface 添加到空的 GameObject 来添加到场景中。

您将看到如下所示的检查器窗口:

要访问虚拟或硬件 Beckhoff PLC,您需要在 Net Id 下配置 NetID 地址以及 Port 端口号。接口的默认设置适用于本地安装的 TwinCAT3 开发环境和本地虚拟 PLC。对于 TwinCAT2,必须更改端口号。有关 NetID 和端口配置的更多信息,请参阅 Beckhoff 文档。
导入信号
使用 Import signals 可以导入当前 TwinCAT 项目的所有信号。
请确保 NetID 和 PortID 已配置且 TwinCAT 配置已激活。否则尝试导入信号时会出现错误。Windows 任务栏中的 TwinCAT 图标此时应变为绿色。

导入信号后,您将在场景中获得所有信号作为 GameObject:

信号导入的 RegEx 正则表达式
要限制信号数量,您可以使用 RegEx 正则表达式(参见 https://en.wikipedia.org/wiki/Regular_expression)定义特殊过滤器。在最简单的情况下,RegEx 是可以从 Symbol 名称中找到的部分字符串。

RegEx Import Signals(导入信号正则表达式)

要限制导入信号的数量,可以使用另一个 RegEx。在 RegEx Import Signals 中,可以定义一个或多个 RegEx 作为信号名称的一部分。如果列表为空,则导入所有内容。如果列表中定义了一个或多个 RegEx,则只导入匹配这些 RegEx 的信号。例如,定义如下 RegEx:
则只有名称为 IO.... 的信号会被导入,例如 IO.TestInputBool, IO.TestOutputBool 等。
RegEx Skip Signals(跳过信号正则表达式)
如果在此处提供一个或多个字符串,所有匹配这些字符串的信号将不会被导入。
RegEx Symbol is PLC Input(符号为 PLC 输入正则表达式)
如果导入的信号在 TwinCAT 项目中定义为输入或输出,则相应的 realvirtual.io 信号类型将附加到该信号。
对于未分配输入或输出区域的全局 TwinCAT 变量,这是不可能的,因为未定义该信号应为 PLC 输出还是输入。如果未定义,默认设置将所有内容作为输入导入。您可以手动更改,例如将 PLCOutputBool 脚本替换为 PLCInputBool 脚本。
如果在此处提供一个或多个字符串,所有匹配这些字符串的信号将被作为输入导入。这仅对无法检测其为输入还是输出的全局变量是必要的。
导入信号时的子文件夹
TwinCAT 以面向对象的方式组织变量。信号 Symbol 名称通常为 \[object].\[name]。
如果选择 Create sub folders(创建子文件夹)选项,则每个 \[object] 会在 Signal 层次结构中创建一个额外的层级。
接口通信模式
TwinCAT 接口提供 3 种不同的操作模式。根据所选模式,所有信号以循环方式交换或基于变更事件交换。您应该选择最适合您应用和性能需求的模式。
CyclicSumCommand
这是标准选项,也是大量快速变化信号时性能最佳的模式。TwinCAT 接口在此情况下以多线程模式运行,线程状态显示在检查器中。在此模式下,所有信号在每个线程周期内通过一次 ADS 读命令和一次 ADS 写命令进行交换。例如,大约 700 个输入和输出信号可以在约 30ms 的周期内交换。使用 MinCommCycleMS 定义最小通信周期,如果通信速度更快,并行线程将等待下一个周期。通信线程独立于主 Unity 线程运行,信号数据交换不会降低您的仿真速度。
Cyclic(循环)
AdsNotification 事件以循环方式触发。
通知将在 ADS 服务器端注册为循环触发器(取决于时间参数),并绑定到所寻址目标的"默认"任务。对于 PLC 目标(例如端口 851),默认任务是第一个配置的任务。
每次"默认"任务完成其周期后,实时系统将检查是否超过周期时间,并在到期时发送 AdsNotification 消息。请注意,服务器端"变更"通知会加重实时系统的负担,应谨慎使用。
OnChange(变更时)
通知将在 ADS 服务器端注册为变更触发和可选的循环触发器(取决于参数),并绑定到所寻址目标的"默认"任务。对于 PLC 目标(例如端口 851),默认任务是第一个配置的任务。
每次此任务完成其周期后,实时系统将检查变更值和可选的到期周期时间,并发送通知。
请注意,Cyclic 和 OnChange 模式在大量快速变化信号时可能会严重增加通信负担,由于事件数量众多,Unity 和 PLC 的性能可能会显著下降。请仅在信号变化速度和变化信号数量有限的情况下使用此选项。
© 2025 realvirtual GmbH https://realvirtual.io - 版权所有。未经出版商事先书面许可,不得以任何形式或通过任何方式(包括打印、保存、复印、录制或其他电子或机械方法)复制、分发或传输本出版物的任何部分。