产品展示

PRODUCTS

+
  • 主图02(1794448990539).jpg

YXDSP-F28388D一体板&至尊板EtherCAT操作说明-2

本文档详细介绍南京研旭公司 YXDSP-F28388D 一体板/至尊板上运行 EtherCAT 从站 CiA402(伺服驱动子协议)例程的完整方法,内容包括 EtherCAT 与 CiA402 的基本原理、硬件说明、例程工程的导入编译与下载、TwinCAT3 主站组态、分布式时钟(DC)同步配置、CiA402 轴的使能与运动测试,以及常见故障的排查方法。

关键词:

YXDSP-F28388D

一体板

至尊板

EtherCAT

所属分类:

嵌入式开发板


联系我们

产品描述

NANJING YANXU ETHERCAT GUIDE

YXDSP-F28388D 开发板 EtherCAT 操作说明

 

基于 CiA402 协议栈的从站配置与运动调试全流程

ESC

从片上 ESC 到 TwinCAT 3,全流程与 8 类故障排查

CiA402TwinCAT 3

EDITOR NOTE

阅读导引

本文整理自《YXDSP-F28388D 开发板 EtherCAT 操作说明》,覆盖硬件资源、EtherCAT 从站协议栈、CiA402 虚轴运动控制,以及 TwinCAT 3 主站侧的完整调试流程与8 类常见故障排查,收藏备用。

项目

说明

适用对象

YXDSP-F28388D 一体板 / 至尊板,主控芯片 TMS320F28388DPTPSR

例程工程

F28388D_CPU1_cia402_solution(CCS 独立版工程)

软件环境

CCS 12.2+ / C2000Ware 5.02+ / SSC 5.12 / TwinCAT 3

MAX_AXES

2

0x6502

0x280(CSP + CSV)

SYNC0 周期

≥ 100 μs

01

PART

概述

OVERVIEW

本方案基于 TMS320F28388D 片上 EtherCAT ESC 外设 与 SSC 5.12 协议栈,实现 CiA402 标准的虚轴运动控制从站;配合 TwinCAT 3 主站,无需任何专用从站芯片即可完成 EtherCAT 通信与 CSP/CSV 运动调试。

例程速览

项目

说明

例程名称

F28388D_CPU1_cia402_solution

协议栈

SSC 5.12

轴数量

MAX_AXES = 2(Axis 0 / Axis 1)

运行模式

CSP(模式 8)/ CSV(模式 9),支持运行中动态切换

配套 ESI

F2838x CPU1 EtherCAT Slave-cia402.xml

阅读前提:建议先熟悉 CCS 的工程导入与编译操作,以及 TwinCAT 3 的工程创建、网卡安装与从站扫描流程。

02

PART

硬件说明

HARDWARE

2.1核心资源与 EtherCAT IPCORE

主控芯片 TMS320F28388DPTPSR(LQFP-176 封装),片上集成 EtherCAT ESC;外部配置两路 PHY 与 RJ45 网口,P0 为 EtherCAT IN、P1 为 EtherCAT OUT,可级联组网。

EtherCAT IP 框图
图 2.1 EtherCAT IP 框图

2.3使用前说明(拨码开关)SWITCH

使用一体板 EtherCAT 功能前,需将 J4 连通(拨到 ON)、J9 关断(拨到 OFF)。

J4 与 J9 拨码原理图
图 2.6 J4 / J9 拨码原理图

提示

特别注意:受两片 PHY 内部结构影响,与其共用引脚的其他功能(数码管、外扩 RAM、外扩 FLASH 等)不可同时使用。一体板面向学习使用;工控场景请选购 BGA 封装的至尊板。

2.4通信原理COMM

EtherCAT 采用「飞读飞写」机制:主站发出的一个以太网帧在从站间依次传递,各从站由 ESC 硬件读取属于自己的数据并写回反馈,报文停留时间仅几百纳秒。帧类型 0x88A4,不依赖 IP 协议;子报文由 10 字节头、数据与 2 字节工作计数器(WKC)组成,WKC 是错误检测的核心。

SyncManager

用途

方向

SM0

邮箱输出(MBoxOut)

主站 → 从站

SM1

邮箱输入(MBoxIn)

从站 → 主站

SM2

过程数据输出(Outputs)

主站 → 从站

SM3

过程数据输入(Inputs)

从站 → 主站

三种同步模式

模式

说明

DC 依赖

FreeRun

收到数据即处理,周期抖动最大

无

SM-Synchron

SM2 事件触发应用

无

DC-Synchron

SYNC0 脉冲触发,各站严格对齐

有(0x300)

DC 关键寄存器:0x0910 本地系统时间;0x0980 SYNC 单元激活(bit8 同步输出单元 / bit9 SYNC0 / bit10 SYNC1);0x09A0 SYNC0 周期(ns);0x09A4 SYNC1 周期。本固件 AssignActivate = 0x300。

2.4.4AL 状态机AL STATE

INIT → PREOP → SAFEOP → OP,另有 BOOT(FoE 固件下载)。状态请求写 0x0120;AL Status(0x0130)低 4 位为状态号,bit4 为错误标志;具体失败原因看 AL Status Code(0x0134):0x0017 SM 配置非法、0x001D / 0x001E PDO 长度不匹配、0x0036 SYNC0 周期非法。

2.5CoE 与 CiA402 协议COE

对象字典以 16 位索引 + 8 位子索引定位(如 0x6040:0 控制字、0x6064:0 实际位置)。SDO 走邮箱通道用于配置与诊断;PDO 走 SM2/SM3 过程数据通道用于实时数据。RxPDO 映射表 0x1600~0x17FF,TxPDO 映射表 0x1A00~0x1BFF,0x1C12 / 0x1C13 决定实际生效的 PDO。

CiA402 控制字与状态字

控制字

动作

0x0006

Shutdown(Ready to switch on)

0x0007

Switch on(Switched on)

0x000F

Enable operation(开始执行运动指令)

0x0002

Quick stop(快速停止)

0x0080

Fault reset(故障复位,bit7 上升沿有效)

状态字 0x6041 判读

含义

& 0x21

Ready to switch on

& 0x23

Switched on

& 0x27

Operation enabled

& 0x40

Switch on disabled

& 0x08

Fault

判断状态时通常忽略 bit4、bit9 等附加位,只看掩码后的值。只有状态机到达 Operation enabled 且使能条件成立时,固件才执行运动指令——这是「控制字写了却不动作」的常见原因。

CSP 与 CSV 运行模式

CSP(模式 8):主站每周期下发 0x607A 目标位置;CSV(模式 9):主站每周期下发 0x60FF 目标速度,位置由速度积分得到。模式由 0x6060 写入、0x6061 回显;0x6502 以位图声明支持的模式,本工程为 0x280(同时支持 CSP 与 CSV)。

本例程为虚轴实现:0x6064 由固件虚拟运动控制(CiA402_DummyMotionControl)计算,不驱动真实负载;位置是「速度 × 周期」的积分结果,周期与速度单位必须匹配,否则会位置飞车(见第四章问题六)。

2.5.4ESI 文件与模块化组态ESI

ESI 按 ETG.2000 规范编写,描述设备标识、SM 配置、默认 PDO 映射、DC 能力与模块定义。本从站提供两个槽位(Axis 0 / Axis 1),可插入三种模块:#x119800(csv,csp - axis,动态切换)、#x219800(csp - axis,预置 0x6060 = 8)、#x319800(csv - axis,预置 0x6060 = 9)。修改 ESI 后必须重新导入 TwinCAT 并重扫设备,否则仍使用旧 PDO 结构。

03

PART

软件说明

SOFTWARE

3.1软件环境ENV

需安装 CCS 12.2 及以上、C2000Ware 5.02 及以上、SSC(仅支持 5.12)与 TwinCAT 3。

3.2创建 SSC 工程(8 步)8 STEPS

01

安装上述所需软件。

02

运行 C2000Ware 安装目录 /libraries/communications/Ethercat/f2838x/ 下的 ethercat_slave_ssc_and demo_setup.exe,提取 F2838x SSC 配置文件与 echoback 应用文件,生成 ssc_configuration 目录。

03

打开 SSC 工具,在 New Project 对话框中选择导入 f2838x_ssc_config.xml。

04

在自定义下拉菜单中选择 TI F2838x CPU1 FoE Download Solution,点击 OK。

SSC 配置窗口
图 3.2.1 SSC 配置窗口

05

弹出询问是否需要外部文件继续时,点击 Yes。

06

保存 SSC 项目。

07

转到 Project → Create new Slave Files:源文件夹目录改为 /examples/f2838x_cpu1_foe_download_solution,ESI 文件目录保持不变,点击 Start 后 OK。

08

将 /examples/f2838x_cpu1_foe_download_solution 的示例导入 CCS,按 RAM 或 FLASH 构建。

3.4.3.1例程简介与工程结构STRUCT

F28388D_CPU1_cia402_solution 为独立版工程,不依赖 C2000Ware 安装,导入 CCS 后可直接编译;包含 RAM 与 FLASH 两个构建配置。

  device/ 

器件支持文件与预编译 driverlib 库

  F28388D_CPU1_cia402_solution/ 

EtherCAT 从站协议栈(ecatslv.c、ecatappl.c、ecatcoe.c 等)与 CiA402 应用(cia402appl.c、objdef.c、coeappl.c 等)

  ethercat_slave_cpu1_hal.c 

硬件抽象层,已完成一体板引脚适配(PHY、I2C-EEPROM、运行/故障指示灯)

  2838x_RAM / FLASH_lnk_ecat_cpu1_cia402.cmd 

RAM、FLASH 配置的链接命令文件

  TMS320F28388D.ccxml 

XDS100v3 调试目标配置(按实际仿真器型号修改)

主要参数速查

参数 / 对象

值与说明

MAX_AXES

2,对应 ESI 中 Axis 0 / Axis 1 两个槽位

0x6502

0x280,同时支持 CSP 与 CSV

MIN_PD_CYCLE_TIME

0x186A0(100 μs),SYNC0 周期下限

0x1C32 / 0x1C33

SM-Synchron 时为 1;DC 同步时由 ESC 状态自动置 2

配套 ESI

F2838x CPU1 EtherCAT Slave-cia402.xml

3.4.3.2导入、编译与下载(6 步)BUILD

01

CCS 中选择 Project → Import CCS Projects…,Select search-directory 指向包含 .project 文件的那一层目录,勾选工程后 Finish。

02

右键工程 → Build Configurations → Set Active:调试选 RAM 配置,脱机运行选 FLASH 配置。

03

Project → Build Project 编译,Console 应提示 0 error(仅协议栈自带若干警告)。

04

XDS100v3 仿真器连接 JTAG 并给板卡上电,右键工程 → Debug As → Code Composer Debug Session 进入调试。

05

点击 Resume(F8)全速运行:进入 OP 后RUN_LED 常亮,ERR_LED 熄灭。

06

FLASH 配置需通过 On-Chip Flash 工具擦除并烧写 .out 文件,复位后自动从 Flash 启动。

3.4.3.3安装 ESI 与扫描从站(7 步)SCAN

01

把 F2838x CPU1 EtherCAT Slave-cia402.xml 复制到 TwinCAT 的 ESI 目录(C:/TwinCAT/3.1/Config/Io/EtherCAT),覆盖同名文件后重启 TwinCAT。

02

首页选择 New TwinCAT Project → TwinCAT XAE Project (XML format),自定义名称后 OK。

新建 TwinCAT 工程
图 3.4.3.1 新建 TwinCAT 工程

03

TWINCAT → Show Realtime Ethernet Compatible Devices…:选择与一体板相连的网卡并 Install;再双击 Device 1,在 Adapter 页选中该网卡。

选择实时以太网网卡
图 3.4.3.2 选择实时以太网网卡

04

用网线连接计算机网口与一体板的 EtherCAT IN(P0)口,确认链路指示灯点亮。

05

右键 Device 1 → Scan,弹出提示选择「是」,扫描到 1 个 EtherCAT 从站(Box 1)。

扫描 EtherCAT 从站
图 3.4.3.3 扫描 EtherCAT 从站

06

Scan for boxes 提示选择「是」;若弹出模块选择对话框,选「csv,csp - axis」(模块标识 #x119800),这是支持运行中动态切换 CSP/CSV 的默认模块。

从站及槽位扫描完成
图 3.4.3.4 从站及槽位扫描完成

07

扫描完成后 Box 1 图标变绿,板卡 RUN_LED 常亮,从站进入 OP。

3.4.3.4配置 DC 分布式时钟KEY STEP

01

双击 Box 1 打开从站配置,EtherCAT 选项卡 → DC 页。

02

DC 模式选择 DC-Synchron,AssignActivate 按 ESI 自动取 0x300,无需手工填写。

03

设置 Sync0 cycle time:本固件最小支持 100 μs,推荐 1 ms 或 2 ms,并与 TwinCAT 任务周期一致。周期小于最小值时从站会在 PREOP→SAFEOP 拒绝切换并回写 AL Status Code 0x0036。

04

OK 保存后右键 Device 1 → Activate Configuration 激活并进入运行。

注意

本从站的 CiA402 运动控制只在DC 同步激活(bDcSyncActive = TRUE)且 0x6060 为有效模式时才执行。仅用 SM-Synchron 或 FreeRun 时从站可进入 OP、PDO 也能收发,但 0x6064 不会按指令更新——这是协议栈设计约定,不是故障。

3.4.3.5PDO 结构与模块映射检查PDO

RxPDO 0x1600(Outputs,12 B)

TxPDO 0x1A00(Inputs,12 B)

0x6040 控制字(2 B)

0x6041 状态字(2 B)

0x607A 目标位置(4 B)

0x6064 实际位置(4 B)

0x60FF 目标速度(4 B)

0x606C 实际速度(4 B)

0x6060 运行模式(1 B)+ 填充

0x6061 模式回显(1 B)+ 填充

需要固定单一模式时,可在槽位中选择 #x219800(csp - axis)或 #x319800(csv - axis):这两个模块通过启动 SDO 分别把 0x6060 预置为 8 或 9,PDO 中不再包含 0x6060 / 0x6061。

提示

使用动态模式模块时,PDO 中的 0x6060 槽必须每周期给出有效值(8 或 9);若为 0,从站停留在「无运行模式」状态,轴不会运动(安全设计)。

3.4.3.6轴使能与 CSV 速度模式运行CSV

01

右键 Device 1 → Activate Configuration 把配置下载到主站并切换到运行模式,确认 Box 1 状态为 OP。

02

Outputs 映射中把 0x6060 写为 9(CSV),确认 Inputs 中 0x6061 回读为 9。

03

按 CiA402 使能序列写 0x6040:0x0006(确认 0x6041 为 0x21)→ 0x0007(确认 0x23)→ 0x000F(确认 0x27)。状态字按「实际值 & 对应值」判读,如实际 0x1237 & 0x27 = 0x27 即正确。

04

0x60FF 写入 10000(counts/s):0x6064 持续增大、0x606C 显示 10000,虚轴按 1:1 速度积分(1 ms 周期时每周期 +10 counts)。

05

0x60FF 写 0 停止;再写 0x6040 = 0x0007 退出使能,0x6041 回到 0x23。

06

需要快速停止写 0x6040 = 0x0002;若报故障,写 0x0080 复位后重新执行使能序列。

本节验证「控制字 → 状态机 → 速度指令 → 位置反馈」完整链路。若 0x6041 一直停留在 0x21 或 0x23,参考第四章问题七排查。

3.4.3.7CSP 位置模式运行CSP

01

先把轴置为未使能(0x6040 = 0x0007),再把 0x6060 写为 8(CSP),确认 0x6061 回读为 8。

02

按 0x0006 → 0x0007 → 0x000F 序列重新使能轴。

03

0x607A 写入目标位置(如 100000):0x6064 在一个通信周期内跟随到目标值并稳定,0x6041 的 bit10(Target reached)置位。

04

连续修改 0x607A 可让虚轴跟随新目标。本固件为位置回显式实现,0x6064 与目标值之间无加减速过程,该模式主要用于验证通信与协议流程。

3.4.3.8运行状态与数据监视MONITOR

01

Box 1 → Online 页:State 应显示 OP,AL Status 为 0x0008(无错误)。

02

同一页面观察 SM2/SM3 帧计数、WorkCounter 与丢失计数,判断链路质量。

03

CoE Online → 0x1C32/0x1C33:读取同步类型(2 表示 SYNC0)与周期时间,确认 DC 已生效。

04

勾选监视 0x6041、0x6064、0x606C,TwinCAT 以曲线显示变化,便于观察周期抖动。

05

RUN_LED 常亮表示 OP;ERR_LED 闪烁表示通信或状态机异常,对照第四章排查。

04

PART

故障检查

TROUBLESHOOTING

本章整理了使用 TwinCAT 或示例时最常见的问题,按「环境与组态(01—04)」「运行与数据(05—08)」两类组织,逐条对照排查。

问题 01示例无法导入 CCS 工作空间

确认 CCS 已安装最新的 C2000 设备支持包:Help → Check for Updates。

确认已安装 C2000 与 ARM 所需的最低编译器版本:Help → Install Code Generation Compiler Tools。

若示例曾导入后删除、无法再次导入,请确认它已从CCS 工作区(而不只是项目资源管理器)中彻底删除。

问题 02TwinCAT 运行时 EtherCAT 网络初始化失败

现象:包括「重新加载设备」失败、「扫描」设备失败、「在配置模式下重新启动 EtherCAT」失败。

对控制卡进行电源循环,确认 EtherCAT 示例已加载并运行。

验证是否安装了实时以太网适配器:Visual Studio 中选择 TwinCAT 菜单 → Show Realtime Ethernet Compatible Devices。

在「已安装和可随时使用的设备」类别下,若无「(实时可用)」的连接,请从「兼容设备」列表中选择一个并单击 Install。

问题 03尝试启用 ESCSS 调试访问时卡住

重启开发板。若之前从一个内核运行 EtherCAT,随后改从另一个内核运行而未重启,就会出现此问题。

问题 04EEPROM 与从站堆栈已加载,但设备无法进入 OP

在配置模式下重新启动 TwinCAT(见图 4.1)。

重启开发板与 CCS,重新启动 TwinCAT,并重新扫描从站。

在配置模式下重启 TwinCAT
图 4.1 Restart TwinCAT (Config Mode)

问题 05DC 模式下无法进入 SAFEOP(AL 0x0036)

现象:SM-Synchron 模式下从站可正常进入 OP;切换到 DC-Synchron 后 TwinCAT 报 PREOP to SAFEOP failed,AL Status 0x0012 read and 0x0004 expected,AL Status Code 0x0036。

原因:从站进入 SAFEOP 时会校验主站写入 ESC 寄存器 0x09A0 的 SYNC0 周期:小于 MIN_PD_CYCLE_TIME 或大于 MAX_PD_CYCLE_TIME 时直接返回 0x0036 并停留在 PREOP。该检查位于协议栈 ecatslv.c 的 StartInputHandler();SM-Synchron 不涉及 DC 寄存器,因此不会触发。

在 Box 1 → EtherCAT → DC 页把 Sync0 cycle time 设置为不小于从站最小周期(本固件 100 μs),推荐 1 ms 或 2 ms,并与任务周期保持一致。

若确需更小周期,修改从站 ecat_def.h 中的 MIN_PD_CYCLE_TIME(单位 ns):250 μs 对应 0x3D090、200 μs 对应 0x30D40、100 μs 对应 0x186A0,重新编译下载后再扫描从站。

修改后可在线读取 0x1C32:05(Minimum Cycle Time)确认从站上报的最小周期,避免主站再次配置超限值。

若误选了激活 SYNC1 的 DC 模式(AssignActivate 含 0x400),则会改报 0x0037(SYNC1 cycle time),处理方式相同。

问题 06轴使能后位置飞车或严重滞后(0x4550)

现象:写入 0x60FF 速度指令后,0x6064 的位置变化速度与指令严重不符(放大上千倍或几乎不动),NC 轴运行时提示跟随误差超限。

原因:虚拟运动控制 CiA402_DummyMotionControl() 中的位置增量因子与速度单位不匹配。CiA402 速度单位是 counts/s,而周期时间 u32CycleTime 单位是 μs,每周期位置增量应为「速度 × 周期(s)」,增量因子应取 0.000001 × u32CycleTime;若沿用 SSC 示例常数 0.0010922,位置积分速度会被放大上千倍。

打开 cia402appl.c,确认 CiA402_DummyMotionControl() 中 IncFactor 为 (float)0.000001 * (float)u32CycleTime。

CSP 分支改用浮点除法计算速度,避免 IncFactor 取整为 0 造成除零。

重新编译下载后使能轴,核对「位置增量 ≈ 0x60FF × 周期」:0x60FF = 10000、周期 1 ms 时,每周期应增加 10 counts。

问题 07已进入 OP,但轴不动作、0x6064 不更新

原因:本从站的运动控制执行条件较为严格,下列任意一项不满足都不会输出运动。请逐项核对后再判断是否为硬件故障。

① DC 已激活:DC 页为 DC-Synchron,且 0x1C32:01 回读为 2;非 DC 模式下 bDcSyncActive 为 FALSE,固件会跳过运动控制。

② 0x6060 已写入有效模式(8 或 9)且 0x6061 回读一致;动态模式下若 0x6060 为 0,从站不会输出运动。

③ 0x6502 的对应位为 1(本工程为 0x280,支持 CSP/CSV);若被误改为 0,固件不执行任何模式。

④ 控制字已按 0x0006 → 0x0007 → 0x000F 的顺序写入,状态字 0x6041 达到 0x27(Operation enabled)。

问题 08修改 ESI 后扫描到的 PDO 仍是旧结构

确认新的 ESI 文件已覆盖 C:/TwinCAT/3.1/Config/Io/EtherCAT 下的同名文件,并重新启动 TwinCAT。

删除 TwinCAT 中已扫描的 Box 与 Device,重新执行 Scan;必要时重启 EtherCAT 实时服务。

ESI 中的模块标识(ModuleIdent)必须与固件对象 0xF010/0xF050 上报的模块列表一致,否则扫描时会提示模块不匹配。

注:实操视频可到南京研旭微信公众号获取资料链接。

NOTICE