[EtherCAT]将CIA402例程从2轴改为8轴

参考《EtherCAT|Module/Slot概念与OD分配》《EtherCAT|以CIA402例程为例介绍MDP设备的OD描述和处理》,本文将演示把SSC Tool工具生成的CIA402例程从默认的2轴改为8轴。

一、基于HPM CIA402模板修改和生成SSC代码

修改Device Name和Product Code与已有的设备进行区别,避免TwinCAT在处理设备的ESI时出现混淆, 修改后生成SSC代码和对应的ESI XML文件。

二、修改SSC代码中与轴相关的对象

  1. 在cia402appl.h中修改MAX_AXES为8

  2. 根据MAX_AXES宏定义在cia402appl.h中的使用发现0x1c12, 0x1c13, 0xf000, 0xf010, 0xf030, 0xf050对象与之相关(可通过《ETG.5001 Modular Device Profile》理解这些对象定义)。

    • 其中0x1c12, 0x1c13, 0xf010, 0xf030, 0xf050对象的数据结构根据轴数目调整,而0xf000只需要更新子索引2的数值。

    • 更改0xf010, 0xf030, 0xf050对象条目描述

    • 更改0x1c12, 0x1c13, 0xf010, 0xf030, 0xf050对象的默认值

三、修改ESI文件

  1. 添加更多Profile/ChannelInfo元素
  2. 添加更多Slots/Slot元素
  3. 修改0x1c12, 0x1c13, 0xf000, 0xf010, 0xf030, 0xf050对象的数据结构和默认值

修改后的cia402appl.h和ESI文件,见HPM_ECAT_CIA402_8_axis

四、测试运行

将新的程序编译下载到EVK, 将新的ESI xml复制到TwinCAT软件指定目录, 使用TwinCAT进行扫描和运行测试。

  1. TwinCAT扫描从站,可以看到正确识别到从站,有8个Axis, 能够进入OP状态。

  2. 查看从站的RxPDO分配对象0x1c12和TxPDO分配对象0x1c13.

    可以看出:
    轴N的RxPDO映射对象索引 = 0x1602 + (0x10 N)
    轴N的TxPDO映射对象索引 = 0x1A02 + (0x10
    N)
    由代码和ESI可知:0x1602是csv mode RxPDO mapping,0x1A02是csv mode TxPDO mapping, 所以默认状态下8个轴都是CSV控制模式。

  3. 查看轴的数据对象

  4. 进入RUN模式,使能DC, 使能轴运行, 测试正常。

  5. 修改Slot中分配的Module
    在从站的Slot页面, 可以修改Slot分配的Module。
    TwinCAT对于多轴的伺服驱动器,修改轴的控制模式(module),是直接通过修改0x1C12和0x1C13对象完成, 在Startup页面可以发现对应指令。
    值得提醒的是多轴伺服驱动器并未真正有效的使用0xF030(Configured Module List)对象去配置轴的控制模式(Module)。个人理解这应该与多轴伺服驱动器是属于Module Device,它的轴数是物理上已经确定了, 且每个轴的OD对象也相同,仅是最终配置的轴的PDO对象不同, 可能是出于简单直接的考虑的。

    • 配置Slot的Module

    • Startup命令

0
0

订阅

发表回复 0

Your email address will not be published. Required fields are marked *

captcha
Enter the characters shown in the image:
Reload

This CAPTCHA helps ensure that you are human. Please enter the requested characters.