XML文件与SSC生成程序对应关系解读

前言:EtherCAT作为工业以太网领域的主流协议之一,其协议栈的开发与配置常依赖SSC工具生成的代码框架,而XML文件作为协议栈配置的核心载体,其与自动生成程序间的映射逻辑直接影响协议栈的正确性与可维护性。本文将围绕数据映射关系、XML与程序的基本对应规则、程序源文件的关键内容展开,通过具体实例解析0x7000、0x1600等数据对象在XML配置与程序代码中的关联方式,以及CoE协议对象字典的内在关系,帮助读者掌握XML配置调整协议栈功能的方法,理解程序如何解析并实现这些配置逻辑,为EtherCAT设备的协议栈开发与调试提供实用参考。

EtherCAT XML 文件:遵循 ETG.2000/ETG.2100 规范的配置文件,纯文本格式,用于声明从站设备的身份、通信对象(PDO/SDO)、同步管理器(SM)、邮箱、诊断等所有核心特性。

SSC 工具:ETG 官方提供的从站协议栈代码生成工具(支持 C 语言)。

本文以5.13版本的SSC工具生成的协议栈作为实例,详细阐述XML与程序之间的对应关系。

数据映射关系

下面以0x7000、0x1600和0x1c12为例,具体阐释这三者之间的映射关系。

(1)0x7000用于定义一个数据对象。

(2)0x1600为0x7000构建了一个映射,其作用是在Sm通道中传输对象字典里0x7000所对应的数据。

(3)0x1c12将0x1600所建立的映射添加至Sm2中,如此一来,便可在主站和从站的通信过程中传输数据。

通常情况下,CoE协议的对象字典中存在如下关系。

(1)0x6000 - 0x9fff,例如0x7000,其用途是定义数据对象。

(2)0x1600 - 0x17ff,以0x1600为例,它是为输出数据构建映射的。

(3)0x1a00 - 0x1bff,比如0x1a00,它是为输入数据建立映射的。

(4)0x1c10 - 0x1c2f,以0x1c12为例,它会依次将映射添加到Sm0 - Sm31中,从而在主站和从站的通信过程中传输数据。

XML和程序的基本对应

程序中与对象字典相关的定义位于el9800applObjects.h文件之中。

1.输出数据映射(以0x1600输出映射索引为例)

(1)0x1600数据类型

对应程序:

对应XML:

(2)0x1600对象:

对应程序:

(3)数据缓冲区映射0x70000201,代表索引7000,子索引02,长度01。其意义在于将7000的数字量数据结构映射至1600。

对应XML:

(4)SubItem的DefaultData是具体的映射位置,其内容是以两个数字为单位倒序排列,例如"01020070"应为"70000201",其中,"7000"代表映射索引号;"02"代表索引7000对应的第二位SubIdx;"01"代表数据大小为1位。

2.数据对象

由于索引0x1600将输出过程数据映射到0x7000中,因此以0x7000的数据类型和对象进行讲解。

(1)0x7000数据类型

对应程序:

对应XML:

(2)0x7000对象

对应程序:

(3)7000数字量数组初始化。

对应XML:

3.映射到Sm

将输出数据映射的1600添加至SM2对应的1c12中。

对应程序:

对应XML:

4.数据映射

在进行数据映射时,将DOOutputs0x7000的变量映射至7000的字典,把采集到的数字量值赋给DOOutputs0x7000即可。

程序源文件相关内容

程序中有关变量赋值部分在el9800appl.c文件中。

1.数据变量与硬件关联

2.输出数据的读取

3.输入数据的读取