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 仍按真实逻辑运行,因此可以在没有动子、没有驱动器的条件下验证程序逻辑。

Solution: XTS_VirtualDebug TwinCAT Project (.tsproj) PLC .plcproj 逻辑 / 状态机 / 接口 Motion NC 轴 / XTS 配置 耦合参数 / 运动学 IO EtherCAT 主站 过程映像 / 仿真从站 TcCOM Tc3_XTS / Tc3_XPlanar COM 对象 / 实时调用 ADS ADS ADS 仿真模式 / 真实模式 切换策略 仿真模式(Simulation Mode) IO 层:EtherCAT 仿真从站 Motion:虚拟轴 / XTS 仿真 无需真实驱动器与动子 真实模式(Real Mode) IO 层:真实 EtherCAT 从站 Motion:真实轴 / 实际动子 需连接驱动器与编码器 切换 切换

仿真模式与真实模式的切换策略

切换的核心在于 IO 层的处理。在仿真模式下,EtherCAT 主站下不挂接真实从站,而是使用 TwinCAT 提供的仿真从站(Simulation Slave)或直接禁用 IO 扫描。此时 Motion 中的轴需要设置为“虚拟轴”(Virtual Axis),XTS 的 TcCOM 模块则运行在仿真状态,动子位置由内部模型计算,不依赖实际编码器反馈。

切换到真实模式时,需要依次完成:

  1. 在 IO 节点下扫描真实 EtherCAT 从站,确认所有驱动器、编码器、XTS 供电模块均被识别。
  2. 将 Motion 中的虚拟轴替换为真实轴,或修改轴参数使其绑定到实际驱动器。
  3. 在 TcCOM 中确认 XTS 模块的 Simulation 标志位由 TRUE 改为 FALSE。
  4. 重新激活配置(Activate Configuration),并观察 TwinCAT 系统托盘图标是否进入 Run 状态。
建议在工程中保留两套 IO 配置:一套用于仿真,一套用于真实硬件。通过 TwinCAT 的“配置切换”功能或直接复制 Project 节点,可以快速在两种模式间切换,避免反复扫描硬件。

最小可运行虚拟调试工程的创建步骤

下面以一个 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 三者的数据链路已经打通。

虚拟调试时,TcCOM 模块的实时优先级必须与 PLC 任务周期匹配。若 PLC 任务周期为 1 ms,TcCOM 的调用周期也应设置为 1 ms 或整数倍,否则可能出现动子位置更新滞后或抖动。

工程组织中的常见问题与判断依据

在搭建过程中,最容易出现的问题有三类:一是 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 悬浮控制、多动子协同等高级调试才有意义。