新建   文章列表   相册  后台  网摘
 

Kreos

Kreos 无所不能

一、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)配置文件完整教程

 

准备工作

 
  1. 安装 XMLSpy 2026 Enterprise(官网 / 授权渠道)。
  2. 下载 ETG 官方 ESI Schema:ETG.2000 EtherCAT Slave Information Schema(核心文件:EtherCATSlaveInfo.xsd)。
  3. 准备从站基础信息:Vendor ID、Product Code、Revision Number、PDO 映射、对象字典(OD)。
 

 

步骤 1:新建 EtherCAT ESI XML 文件并绑定 Schema

 
  1. 打开 XMLSpy → 点击 File → New → XML Document。
  2. 在弹出的 Create XML Document 窗口:
    • 选择 Use XML Schema → 点击 Browse,选中下载的 EtherCATSlaveInfo.xsd
    • 根元素选择 EtherCATSlaveInfo(ESI 标准根节点)→ 点击 OK。
     
  3. 自动生成基础框架,切换到 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 验证与错误修复(关键)

 
  1. 点击 XMLSpy 菜单 XML → Validate(或按 F8)。
  2. 软件自动按 EtherCATSlaveInfo.xsd 校验:
    • 错误会在 Messages 窗口提示(如节点缺失、类型不匹配、索引重复)。
    • 修复后重新验证,直到无错误、无警告。
     
  3. 高级校验:可配合 TwinCAT ESI Validator 二次校验(主站兼容性)。
 

 

步骤 7:保存与导出 ESI 文件

 
  1. 点击 File → Save As,命名为 [VendorID]_[ProductCode]_[Revision].xml(如 00000001_00010001_00010000.xml)。
  2. 编码选择 UTF-8,确保主站可正常解析。
  3. 导出:将 ESI 文件导入主站(如 TwinCAT、CODESYS、SOEM),扫描从站即可识别。
 

 

步骤 8:XMLSpy 高效编辑技巧(进阶)

 
  1. Grid 视图:表格化编辑节点属性,直观修改索引、类型、长度。
  2. XPath 查询://Object[@Index='0x6000'] 快速定位对象节点。
  3. 批量替换:Edit → Find and Replace 批量修改 Vendor ID/Product Code。
  4. 版本对比:XML → Compare Files 对比不同版本 ESI 差异。
  5. 代码片段:保存常用 PDO/SM 模板,快速复用。
 

 

三、常见问题与注意事项

 
  1. Schema 绑定失败:检查xsi:noNamespaceSchemaLocation路径是否正确,或重新加载EtherCATSlaveInfo.xsd
  2. PDO 映射错误:确保Sm索引与 SM 通道一致,Entry索引 / 子索引与对象字典匹配。
  3. 主站不识别:验证 ESI 编码为 UTF-8,无语法错误,Vendor ID/Product Code 与从站固件一致。
  4. 版本兼容性:优先用 XMLSpy 2025r2+,避免旧版 Schema 解析异常。
 

 
需要我把上述教程整理成一份可直接复制的完整 ESI XML 模板(含 Vendor/Product/OD/SM/PDO 全套配置),你只需替换 ID 与参数即可使用吗?

posted on 2026-04-01 11:45  前沿风暴  阅读(9)  评论(0)    收藏  举报

导航


校内网 © 2004-2026

京公网安备 33010602011771号 京ICP备2021040463号-3