3. TwinCAT 3项目架构与虚拟调试环境搭建
在开始 XTS 或 XPlanar 的虚拟调试之前,必须先理解 TwinCAT 3 的工程组织方式。TwinCAT 3 不是单一程序,而是一个由多个工程节点组成的解决方案(Solution)。Solution 是顶层容器,其下可以挂接一个或多个 TwinCAT Project(.tsproj),每个 Project 内部再按功能划分为 PLC、Motion、IO、TcCOM 等模块。虚拟调试的本质,就是让这些模块在“无真实硬件”或“有真实硬件”两种模式下都能正确建立连接并运行。
Solution 与 Project 的层级关系
一个典型的 XTS 虚拟调试工程结构如下:Solution 名为 XTS_VirtualDebug,其中包含一个 TwinCAT Project,Project 下挂接四个核心节点:
- PLC:存放 PLC 程序,通常以
.plcproj形式存在,负责逻辑控制、状态机、与 Motion 的接口调用。 - Motion:存放 NC 轴、XTS 系统配置、耦合参数,是运动控制的核心。
- IO:存放 EtherCAT 主站、从站、过程映像,虚拟模式下由仿真从站替代真实硬件。
- TcCOM:存放 TcCOM 对象,如 XTS 的
Tc3_XTS模块、XPlanar 的Tc3_XPlanar模块,它们以 COM 对象形式被 PLC 或 Motion 调用。
这四个节点不是孤立的,而是通过 TwinCAT 的实时内核和 ADS 路由相互通信。PLC 通过 ADS 读写 Motion 的轴状态,Motion 通过 TcCOM 接口驱动 XTS 动子,IO 则负责将物理信号映射到过程映像。虚拟调试时,IO 层被替换为仿真从站,Motion 和 TcCOM 仍按真实逻辑运行,因此可以在没有动子、没有驱动器的条件下验证程序逻辑。
仿真模式与真实模式的切换策略
切换的核心在于 IO 层的处理。在仿真模式下,EtherCAT 主站下不挂接真实从站,而是使用 TwinCAT 提供的仿真从站(Simulation Slave)或直接禁用 IO 扫描。此时 Motion 中的轴需要设置为“虚拟轴”(Virtual Axis),XTS 的 TcCOM 模块则运行在仿真状态,动子位置由内部模型计算,不依赖实际编码器反馈。
切换到真实模式时,需要依次完成:
- 在 IO 节点下扫描真实 EtherCAT 从站,确认所有驱动器、编码器、XTS 供电模块均被识别。
- 将 Motion 中的虚拟轴替换为真实轴,或修改轴参数使其绑定到实际驱动器。
- 在 TcCOM 中确认 XTS 模块的
Simulation标志位由TRUE改为FALSE。 - 重新激活配置(Activate Configuration),并观察 TwinCAT 系统托盘图标是否进入
Run状态。
最小可运行虚拟调试工程的创建步骤
下面以一个 XTS 虚拟调试最小工程为例,说明从零搭建的完整过程。示例参数为教学假设,实际使用时需根据硬件型号调整。
1. 新建 TwinCAT 3 项目
File → New → Project → TwinCAT Project
命名:XTS_VirtualDebug
选择“Empty TwinCAT Project”
2. 添加 PLC 节点
右键 Solution → Add → New Project → PLC → Standard PLC Project
命名:XTS_PLC
在 MAIN 程序中声明 XTS 接口变量
3. 添加 Motion 节点
右键 Solution → Add → New Item → Motion → NC-PLC
在 NC 中新建轴 Axis1,类型选“Continuous Axis”
设置虚拟轴模式:Simulation = TRUE
4. 添加 IO 节点
右键 Solution → Add → New Item → I/O → EtherCAT Master
不扫描真实从站,直接添加“Simulation Slave”
配置过程映像大小:Input 64 bytes / Output 64 bytes
5. 添加 TcCOM 对象
右键 Solution → Add → New Item → TcCOM Objects
选择 Tc3_XTS 模块,插入到 Project 下
设置 XTS 系统参数:
动子数量:4
轨道长度:1200 mm
最大速度:2 m/s
加速度:10 m/s²
将 Simulation 标志设为 TRUE
6. 建立 PLC 与 TcCOM 的链接
在 PLC 中通过 ADS 读取 TcCOM 的动子位置
使用 Tc3_XTS 提供的功能块:
FB_XTS_Init
FB_XTS_MoveToPosition
FB_XTS_ReadStatus
7. 激活配置并运行
点击 Activate Configuration
确认 TwinCAT 进入 Run 模式
在 PLC 中触发 FB_XTS_Init,观察动子位置是否按预期变化
若动子位置在 0~1200 mm 之间循环,说明虚拟调试环境搭建成功
完成上述步骤后,可以在 PLC 中编写一个简单的测试逻辑:让 4 个动子依次从位置 0 移动到 300 mm、600 mm、900 mm,每个位置停留 500 ms。通过 TwinCAT 的 Scope View 或 PLC 的在线变量监控,可以观察每个动子的实际位置、速度、状态字。如果动子位置平滑变化且无报错,说明 Motion、TcCOM、PLC 三者的数据链路已经打通。
工程组织中的常见问题与判断依据
在搭建过程中,最容易出现的问题有三类:一是 IO 仿真从站未正确映射,导致 PLC 读不到过程映像;二是 Motion 轴未设置为虚拟轴,激活时报“轴未使能”;三是 TcCOM 模块未注册,PLC 调用功能块时返回 0x8000_0001 错误。判断方法很简单:先看 TwinCAT 托盘图标是否绿色 Run,再看 PLC 在线变量中 FB_XTS_Init 的 bBusy 和 bError 标志,最后用 Scope View 抓取动子位置曲线。如果曲线是一条水平直线,说明 TcCOM 没有真正运行;如果曲线有阶跃但无平滑过渡,说明 Motion 参数需要调整。
一个最小可运行的虚拟调试工程,不要求动子数量多、轨道复杂,但必须保证 PLC、Motion、IO、TcCOM 四个节点全部激活且无错误。只有在这个基础上,后续的 XTS 轨迹规划、XPlanar 悬浮控制、多动子协同等高级调试才有意义。