EtherCAT设备ESI文件中的ESC描述:深入解析
在EtherCAT技术中,ESI(EtherCAT Slave Information)文件扮演着至关重要的角色。它详细描述了EtherCAT从站设备的特性和功能。本文将深入探讨ESI文件中ESC(EtherCAT Slave Controller)的描述方式,涵盖单ESC和多ESC设备的情况。
1. 单ESC设备的描述
对于只有一个ESC的EtherCAT设备,其描述通常直接包含在ESI文件的元素中。以下是一个完整的例子:
<?xml version="1.0" encoding="UTF-8"?>
<EtherCATInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="EtherCATInfo.xsd" Version="1.2">
<Vendor>
<Id>0x00000ABC</Id>
<Name>ExampleCorp EtherCAT Devices</Name>
</Vendor>
<Descriptions>
<Devices>
<Device Physics="YY">
<Type ProductCode="#x12345678" RevisionNo="#x0001">ExampleCorp Single ESC Device</Type>
<Name>EC-SingleESC-1000</Name>
<Info>
<EtherCAT SlaveType="1" ProductCode="#x12345678" RevisionNo="#x0001" PortPhys="Y" MaxSlotCount="256" MaxSlotGroupCount="1" SlotPdoIncrement="1" SlotIndexIncrement="16" Type="EC-SingleESC-1000" Desc="ExampleCorp Single ESC Device"/>
</Info>
<GroupType>EC-SingleESC-1000</GroupType>
<Fmmu>Outputs</Fmmu>
<Fmmu>Inputs</Fmmu>
<Fmmu>MBoxState</Fmmu>
<Sm ControlByte="#x26" StartAddress="#x1000" DefaultSize="128" Enable="1">MBoxOut</Sm>
<Sm ControlByte="#x22" StartAddress="#x1080" DefaultSize="128" Enable="1">MBoxIn</Sm>
<Sm ControlByte="#x24" StartAddress="#x1100" DefaultSize="1024" Enable="1">Outputs</Sm>
<Sm ControlByte="#x20" StartAddress="#x1500" DefaultSize="1024" Enable="1">Inputs</Sm>
<RxPdo Fixed="1" Mandatory="1">
<Index>#x1600</Index>
<Name>Output</Name>
<Entry>
<Index>#x7000</Index>
<SubIndex>1</SubIndex>
<BitLen>32</BitLen>
<Name>Output Data</Name>
<DataType>UDINT</DataType>
</Entry>
</RxPdo>
<TxPdo Fixed="1" Mandatory="1">
<Index>#x1A00</Index>
<Name>Input</Name>
<Entry>
<Index>#x6000</Index>
<SubIndex>1</SubIndex>
<BitLen>32</BitLen>
<Name>Input Data</Name>
<DataType>UDINT</DataType>
</Entry>
</TxPdo>
<Eeprom>
<ByteSize>2048</ByteSize>
<ConfigData>8002000000000000</ConfigData>
</Eeprom>
<Dictionary>
<Item>
<Index>0x1000</Index>
<Name>Device Type</Name>
<DataType>UDINT</DataType>
<DefaultValue>0x00001389</DefaultValue>
</Item>
<!-- 更多字典项 -->
</Dictionary>
</Device>
</Devices>
</Descriptions>
</EtherCATInfo>
关键元素解析:
- : 包含ESC的基本信息,如ProductCode、RevisionNo等。
- : 描述同步管理器的配置。
- 和: 定义过程数据对象。
- : 包含EEPROM的配置信息。
- : 列出对象字典的条目。
2. 多ESC设备的描述
对于包含多个ESC的复杂EtherCAT设备,主ESC通常在元素中描述,而额外的ESC则作为元素描述。以下是一个多ESC设备的完整例子:
<?xml version="1.0" encoding="UTF-8"?>
<EtherCATInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="EtherCATInfo.xsd" Version="1.2">
<Vendor>
<Id>0x00000ABC</Id>
<Name>ExampleCorp EtherCAT Devices</Name>
</Vendor>
<Descriptions>
<Devices>
<Device Physics="YY">
<Type ProductCode="#x12345678" RevisionNo="#x0001">ExampleCorp Multi-ESC Device</Type>
<Name>EC-MultiESC-2000</Name>
<Info>
<EtherCAT SlaveType="1" ProductCode="#x12345678" RevisionNo="#x0001" PortPhys="YY"/>
</Info>
<GroupType>EC-MultiESC-2000</GroupType>
<Fmmu>Outputs</Fmmu>
<Fmmu>Inputs</Fmmu>
<Sm ControlByte="#x26" StartAddress="#x1000" DefaultSize="128" Enable="1">MBoxOut</Sm>
<Sm ControlByte="#x22" StartAddress="#x1080" DefaultSize="128" Enable="1">MBoxIn</Sm>
<Sm ControlByte="#x24" StartAddress="#x1100" DefaultSize="1024" Enable="1">Outputs</Sm>
<Sm ControlByte="#x20" StartAddress="#x1500" DefaultSize="1024" Enable="1">Inputs</Sm>
<RxPdo Fixed="1" Mandatory="1">
<Index>#x1600</Index>
<Name>Output</Name>
<Entry>
<Index>#x7000</Index>
<SubIndex>1</SubIndex>
<BitLen>32</BitLen>
<Name>Output Data</Name>
<DataType>UDINT</DataType>
</Entry>
</RxPdo>
<TxPdo Fixed="1" Mandatory="1">
<Index>#x1A00</Index>
<Name>Input</Name>
<Entry>
<Index>#x6000</Index>
<SubIndex>1</SubIndex>
<BitLen>32</BitLen>
<Name>Input Data</Name>
<DataType>UDINT</DataType>
</Entry>
</TxPdo>
<Eeprom>
<ByteSize>2048</ByteSize>
<ConfigData>8002000000000000</ConfigData>
</Eeprom>
<!-- 主ESC (不需要PreviousDevice和PreviousPortNo属性) -->
<SubDevice ProductCode="#x12345678" RevisionNo="#x0001" Hideable="0"/>
<!-- 第一个子ESC -->
<SubDevice ProductCode="#x87654321" RevisionNo="#x0002" PreviousDevice="0" PreviousPortNo="1" Hideable="1">
<Info>
<EtherCAT SlaveType="1" ProductCode="#x87654321" RevisionNo="#x0002" PortPhys="YY"/>
</Info>
<Sm ControlByte="#x24" StartAddress="#x2000" DefaultSize="512" Enable="1">Outputs</Sm>
<Sm ControlByte="#x20" StartAddress="#x2200" DefaultSize="512" Enable="1">Inputs</Sm>
<RxPdo Fixed="1" Mandatory="1">
<Index>#x1601</Index>
<Name>SubDevice1 Output</Name>
<Entry>
<Index>#x7100</Index>
<SubIndex>1</SubIndex>
<BitLen>16</BitLen>
<Name>SubDevice1 Output Data</Name>
<DataType>UINT</DataType>
</Entry>
</RxPdo>
<TxPdo Fixed="1" Mandatory="1">
<Index>#x1A01</Index>
<Name>SubDevice1 Input</Name>
<Entry>
<Index>#x6100</Index>
<SubIndex>1</SubIndex>
<BitLen>16</BitLen>
<Name>SubDevice1 Input Data</Name>
<DataType>UINT</DataType>
</Entry>
</TxPdo>
</SubDevice>
<!-- 第二个子ESC -->
<SubDevice ProductCode="#xABCD1234" RevisionNo="#x0003" PreviousDevice="1" PreviousPortNo="2" Hideable="0">
<Info>
<EtherCAT SlaveType="1" ProductCode="#xABCD1234" RevisionNo="#x0003" PortPhys="YY"/>
</Info>
<Sm ControlByte="#x24" StartAddress="#x3000" DefaultSize="256" Enable="1">Outputs</Sm>
<Sm ControlByte="#x20" StartAddress="#x3100" DefaultSize="256" Enable="1">Inputs</Sm>
<RxPdo Fixed="1" Mandatory="1">
<Index>#x1602</Index>
<Name>SubDevice2 Output</Name>
<Entry>
<Index>#x7200</Index>
<SubIndex>1</SubIndex>
<BitLen>8</BitLen>
<Name>SubDevice2 Output Data</Name>
<DataType>USINT</DataType>
</Entry>
</RxPdo>
<TxPdo Fixed="1" Mandatory="1">
<Index>#x1A02</Index>
<Name>SubDevice2 Input</Name>
<Entry>
<Index>#x6200</Index>
<SubIndex>1</SubIndex>
<BitLen>8</BitLen>
<Name>SubDevice2 Input Data</Name>
<DataType>USINT</DataType>
</Entry>
</TxPdo>
</SubDevice>
</Device>
</Devices>
</Descriptions>
</EtherCATInfo>
多ESC设备的关键点:
- 主ESC: 在元素中描述,包含设备的主要信息。
- 子ESC: 使用元素描述,每个子ESC都有自己的ProductCode和RevisionNo。
- 连接关系: 通过PreviousDevice和PreviousPortNo属性定义子ESC之间的连接关系。
- 可隐藏性: Hideable属性指示配置工具是否可以隐藏该子ESC。
3. SubDevice元素的特殊用途
虽然SubDevice主要用于描述多ESC设备,但在某些情况下,即使是单ESC设备也可能使用SubDevice元素:
- 标准化描述: 有些制造商可能选择使用SubDevice来描述主设备本身,以保持ESI文件结构的一致性。
- 未来扩展: 为可能的硬件扩展预留SubDevice描述。
- 虚拟子设备: 描述设备内部的逻辑分区或功能模块。
- 配置工具兼容性: 某些EtherCAT配置工具可能期望看到SubDevice元素。
结论
ESI文件中ESC的描述方式取决于设备的复杂性。单ESC设备通常直接在元素中描述,而多ESC设备则使用元素来描述额外的ESC。理解这些描述方式对于正确配置和使用EtherCAT设备至关重要。在开发或配置EtherCAT设备时,应始终参考具体的设备规范和所使用的配置工具要求。
这篇博客全面介绍了EtherCAT设备ESI文件中ESC的描述方式,包括单ESC和多ESC设备的完整例子。它涵盖了关键元素的解析,多ESC设备的特殊考虑,以及SubDevice元素的特殊用途。这些信息应该能够为EtherCAT开发者和用户提供有价值的参考。