一、XMLSpy 版本推荐(编写 EtherCAT ESI/XML 配置)
1. 版本选择原则
- 必须选 Enterprise 版:EtherCAT ESI 依赖XML Schema 1.0/1.1、XPath、XSLT、Schema 验证、图形化编辑,Professional 版功能不足。
- 推荐版本:XMLSpy 2025r2 / 2026 Enterprise(最新稳定版,对 ETG.2000 ESI Schema 兼容性最好,支持大文件与批量编辑)Altova。
- 最低兼容版:XMLSpy 2020 Enterprise(不推荐,缺少现代 Schema 校验与批量工具)。
2. 关键功能要求(缺一不可)
- 完整支持 XML Schema 1.0/1.1(EtherCAT ESI 基于 XSD 规范)。
- 图形化 Schema 编辑器、实例编辑器、XPath 查询、批量替换、版本对比。
- 支持绑定 ETG 官方 ESI Schema 做实时语法 / 结构校验。
二、XMLSpy 编写 EtherCAT ESI(XML)配置文件完整教程
准备工作
- 安装 XMLSpy 2026 Enterprise(官网 / 授权渠道)。
- 下载 ETG 官方 ESI Schema:ETG.2000 EtherCAT Slave Information Schema(核心文件:
EtherCATSlaveInfo.xsd)。 - 准备从站基础信息:Vendor ID、Product Code、Revision Number、PDO 映射、对象字典(OD)。
步骤 1:新建 EtherCAT ESI XML 文件并绑定 Schema
- 打开 XMLSpy → 点击 File → New → XML Document。
- 在弹出的 Create XML Document 窗口:
- 选择 Use XML Schema → 点击 Browse,选中下载的
EtherCATSlaveInfo.xsd。 - 根元素选择 EtherCATSlaveInfo(ESI 标准根节点)→ 点击 OK。
- 选择 Use XML Schema → 点击 Browse,选中下载的
- 自动生成基础框架,切换到 Text/Grid/Design 视图编辑(推荐 Grid 视图直观编辑)。
基础 ESI 框架示例:
xml
<?xml version="1.0" encoding="UTF-8"?>
<EtherCATSlaveInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="EtherCATSlaveInfo.xsd">
<Descriptions>
<Device>
<!-- 从站信息、OD、SM、PDO 在此配置 -->
</Device>
</Descriptions>
</EtherCATSlaveInfo>
步骤 2:配置从站核心信息(Device 节点)
在
<Device> 内填写从站身份与基础参数(必填):xml
<Device>
<Type>0x00010001</Type> <!-- 设备类型:I/O从站 -->
<Name>STM32_ECAT_IO</Name>
<Vendor>
<Id>0x00000001</Id> <!-- 厂商ID(需向ETG申请) -->
<Name>MyCompany</Name>
</Vendor>
<Product>
<Code>0x00010001</Code> <!-- 产品代码 -->
<Revision>0x00010000</Revision> <!-- 版本号 -->
<Name>4DI4DO EtherCAT Slave</Name>
<Description>4路输入4路输出EtherCAT从站</Description>
</Product>
<!-- 后续配置:对象字典、SM、PDO -->
</Device>
步骤 3:配置对象字典(Dictionary)
定义从站所有数据对象(OD),含数据类型与变量:
xml
<Dictionary>
<DataTypes>
<!-- 定义BOOL类型 -->
<DataType>
<Name>BOOL</Name>
<BitSize>1</BitSize>
</DataType>
<!-- 定义8位无符号整数 -->
<DataType>
<Name>UINT8</Name>
<BitSize>8</BitSize>
</DataType>
</DataTypes>
<Objects>
<!-- 数字量输入对象(0x6000) -->
<Object>
<Index>0x6000</Index>
<Name>DI_Status</Name>
<Type>UINT8</Type>
<BitSize>8</BitSize>
<Access>ro</Access> <!-- 只读 -->
</Object>
<!-- 数字量输出对象(0x7000) -->
<Object>
<Index>0x7000</Index>
<Name>DO_Control</Name>
<Type>UINT8</Type>
<BitSize>8</BitSize>
<Access>rw</Access> <!-- 读写 -->
</Object>
</Objects>
</Dictionary>
步骤 4:配置同步管理器(SM)
定义 SM 通道(主从数据交换通道,EtherCAT 核心):
xml
<Sm>
<!-- SM0:邮箱输出(主→从) -->
<SmChannel>
<Index>0</Index>
<Type>MailboxOut</Type>
<StartAddress>0x1000</StartAddress>
<Length>0x80</Length>
<Flags>0x00000000</Flags>
</SmChannel>
<!-- SM1:邮箱输入(从→主) -->
<SmChannel>
<Index>1</Index>
<Type>MailboxIn</Type>
<StartAddress>0x1080</StartAddress>
<Length>0x80</Length>
<Flags>0x00000000</Flags>
</SmChannel>
<!-- SM2:过程数据输出(RxPDO,主→从) -->
<SmChannel>
<Index>2</Index>
<Type>ProcessDataOut</Type>
<StartAddress>0x1100</StartAddress>
<Length>0x01</Length> <!-- 1字节 -->
<Flags>0x00000000</Flags>
</SmChannel>
<!-- SM3:过程数据输入(TxPDO,从→主) -->
<SmChannel>
<Index>3</Index>
<Type>ProcessDataIn</Type>
<StartAddress>0x1110</StartAddress>
<Length>0x01</Length> <!-- 1字节 -->
<Flags>0x00000000</Flags>
</SmChannel>
</Sm>
步骤 5:配置 PDO 映射(RxPDO/TxPDO)
定义过程数据映射(主站读写的实时数据):
xml
<RxPdo>
<!-- RxPDO映射(0x1600,主→从,控制输出) -->
<Pdo Fixed="true" Mandatory="true" Sm="2">
<Index>0x1600</Index>
<Name>DO_RxPDO</Name>
<Entry>
<Index>0x7000</Index>
<SubIndex>0</SubIndex>
<BitLen>8</BitLen>
<Name>DO_Byte</Name>
<DataType>UINT8</DataType>
</Entry>
</Pdo>
</RxPdo>
<TxPdo>
<!-- TxPDO映射(0x1A00,从→主,反馈输入) -->
<Pdo Fixed="true" Mandatory="true" Sm="3">
<Index>0x1A00</Index>
<Name>DI_TxPDO</Name>
<Entry>
<Index>0x6000</Index>
<SubIndex>0</SubIndex>
<BitLen>8</BitLen>
<Name>DI_Byte</Name>
<DataType>UINT8</DataType>
</Entry>
</Pdo>
</TxPdo>
步骤 6:Schema 验证与错误修复(关键)
- 点击 XMLSpy 菜单 XML → Validate(或按 F8)。
- 软件自动按
EtherCATSlaveInfo.xsd校验:- 错误会在 Messages 窗口提示(如节点缺失、类型不匹配、索引重复)。
- 修复后重新验证,直到无错误、无警告。
- 高级校验:可配合 TwinCAT ESI Validator 二次校验(主站兼容性)。
步骤 7:保存与导出 ESI 文件
- 点击 File → Save As,命名为
[VendorID]_[ProductCode]_[Revision].xml(如00000001_00010001_00010000.xml)。 - 编码选择 UTF-8,确保主站可正常解析。
- 导出:将 ESI 文件导入主站(如 TwinCAT、CODESYS、SOEM),扫描从站即可识别。
步骤 8:XMLSpy 高效编辑技巧(进阶)
- Grid 视图:表格化编辑节点属性,直观修改索引、类型、长度。
- XPath 查询:
//Object[@Index='0x6000']快速定位对象节点。 - 批量替换:
Edit → Find and Replace批量修改 Vendor ID/Product Code。 - 版本对比:
XML → Compare Files对比不同版本 ESI 差异。 - 代码片段:保存常用 PDO/SM 模板,快速复用。
三、常见问题与注意事项
- Schema 绑定失败:检查
xsi:noNamespaceSchemaLocation路径是否正确,或重新加载EtherCATSlaveInfo.xsd。 - PDO 映射错误:确保
Sm索引与 SM 通道一致,Entry索引 / 子索引与对象字典匹配。 - 主站不识别:验证 ESI 编码为 UTF-8,无语法错误,Vendor ID/Product Code 与从站固件一致。
- 版本兼容性:优先用 XMLSpy 2025r2+,避免旧版 Schema 解析异常。
需要我把上述教程整理成一份可直接复制的完整 ESI XML 模板(含 Vendor/Product/OD/SM/PDO 全套配置),你只需替换 ID 与参数即可使用吗?
https://gitee.com/powes/,作者:前沿风暴,转载请注明原文链接:https://www.cnblogs.com/Kreos/p/19806055
浙公网安备 33010602011771号