You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1408 lines
57 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:include schemaLocation="EtherCATBase.xsd"/>
<xs:element name="EtherCATInfo">
<xs:complexType>
<xs:sequence>
<xs:element name="InfoReference" type="xs:string" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>List of referenced info files</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Vendor">
<xs:annotation>
<xs:documentation>information of the vendor</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="VendorType">
<xs:attribute name="FileVersion" type="xs:int">
<xs:annotation>
<xs:documentation>version number of this file, a greater number indicates a newer file</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="Descriptions">
<xs:complexType>
<xs:sequence>
<xs:element name="Groups">
<xs:annotation>
<xs:documentation>devices are ordered in groups</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="Group" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:complexContent>
<xs:extension base="GroupType">
<xs:attribute name="SortOrder" type="xs:int">
<xs:annotation>
<xs:documentation>Helps to display multiple groups in the order intended by the vendor</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="ParentGroup">
<xs:annotation>
<xs:documentation>Type of an optional parent group - only for additional display order possibilities</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Devices">
<xs:complexType>
<xs:sequence>
<xs:element name="Device" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:complexContent>
<xs:extension base="DeviceType">
<xs:attribute name="Invisible" type="xs:boolean" use="optional"/>
<xs:attribute name="Physics" type="PhysicsType" use="required">
<xs:annotation>
<xs:documentation>Y = Ethernet cable (100BaseTX)
K = E-Bus backplane
' ' = Port disabled but present
B = E-Bus cable</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Modules" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="Module" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:complexContent>
<xs:extension base="ModuleType">
<xs:attribute name="Crc32"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="Version" type="xs:string" use="optional">
<xs:annotation>
<xs:documentation>Schema version (actual 1.3)</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:complexType name="DeviceType">
<xs:sequence>
<xs:element name="Type">
<xs:annotation>
<xs:documentation>type name of the device (vendor specific</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="ProductCode" type="HexDecValue" use="optional">
<xs:annotation>
<xs:documentation>ProductCode (1018:2h) to identify the device
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="RevisionNo" type="HexDecValue" use="optional">
<xs:annotation>
<xs:documentation>RevisionNo (1018:3h) to identify the device</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="SerialNo" type="HexDecValue" use="optional">
<xs:annotation>
<xs:documentation>optional SerialNo (1018:4h) to identify the device</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="CheckProductCode" use="optional">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="NONE"/>
<xs:enumeration value="EQ"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="CheckRevisionNo" use="optional">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="NONE"/>
<xs:enumeration value="EQ"/>
<xs:enumeration value="EQ_OR_G"/>
<xs:enumeration value="LW_EQ"/>
<xs:enumeration value="LW_EQ_HW_EQ_OR_G"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="CheckSerialNo" use="optional">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="NONE"/>
<xs:enumeration value="EQ"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="TcSmClass" type="xs:string" use="optional">
<xs:annotation>
<xs:documentation>TwinCAT internal information
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="TcCfgModeSafeOp" type="xs:boolean" use="optional">
<xs:annotation>
<xs:documentation>LEGACY: TwinCAT internal information (see Info/StateMachine/Behavior)</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="UseLrdLwr" type="xs:boolean" use="optional"/>
<xs:attribute name="ModulePdoGroup" type="xs:int">
<xs:annotation>
<xs:documentation>Represents PDO mapping order</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="DownloadModuleList" type="xs:boolean"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="HideType" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>contains ProductCode and RevisionNo of devices that will be hidden by the new one</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="ProductCode" type="HexDecValue" use="optional">
<xs:annotation>
<xs:documentation>ProductCode of the device(s) that will be hidden</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="RevisionNo" type="HexDecValue" use="optional">
<xs:annotation>
<xs:documentation>RevisionNo of the device(s) that will be hidden</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="ProductRevision" type="xs:string" use="optional">
<xs:annotation>
<xs:documentation source="Beckhoff notation of ProductCode and RevisionNo">Legacy reference (Beckhoff internally - dont use any more)</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="AlternativeType" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>contains ProductCode and RevisionNo alternative types for the same hardware. Device can be changed to alternative type by end-user</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="ProductCode" type="HexDecValue" use="optional">
<xs:annotation>
<xs:documentation>ProductCode of the alternative device</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="RevisionNo" type="HexDecValue" use="optional">
<xs:annotation>
<xs:documentation>RevisionNo of the alternative device</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="SubDevice" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>contains ProductCode and RevisionNo of devices </xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="ProductCode" type="HexDecValue" use="optional">
<xs:annotation>
<xs:documentation>ProductCode of the device(s) that will be added automatically</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="RevisionNo" type="HexDecValue" use="optional">
<xs:annotation>
<xs:documentation>RevisionNo of the device(s) that will be added automatically</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="Name" type="NameType" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>display name of the device</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Comment" type="NameType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="URL" type="NameType" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>optional URL to additional device information on the web</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Info" type="InfoType" minOccurs="0">
<xs:annotation>
<xs:documentation>additional information for the device</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="GroupType" type="xs:string">
<xs:annotation>
<xs:documentation>reference to "Groups" section in this file</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Profile" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:complexContent>
<xs:extension base="ProfileType">
<xs:attribute name="Channel" type="xs:int" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="Fmmu" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>default usage of fmmu</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="OpOnly" type="xs:boolean" use="optional"/>
<xs:attribute name="Sm" type="xs:int" use="optional">
<xs:annotation>
<xs:documentation>sync manager corresponding to this fmmu</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Su" type="xs:int" use="optional">
<xs:annotation>
<xs:documentation>sync unit for this fmmu</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="Sm" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>default usage of sync manager</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="MinSize" type="HexDecValue" use="optional"/>
<xs:attribute name="MaxSize" type="HexDecValue" use="optional"/>
<xs:attribute name="DefaultSize" type="HexDecValue" use="optional"/>
<xs:attribute name="StartAddress" type="HexDecValue" use="optional">
<xs:annotation>
<xs:documentation>start address of the SM</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="ControlByte" type="HexDecValue" use="optional"/>
<xs:attribute name="Enable" type="HexDecValue" use="optional"/>
<xs:attribute name="OneByteMode" type="xs:boolean" use="optional">
<xs:annotation>
<xs:documentation>SM deactivated, only watchdog trigger and PDI IRQ available</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Virtual" type="xs:boolean" use="optional">
<xs:annotation>
<xs:documentation>Sm used for configuration only - no use of hardware unit</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Watchdog" type="xs:boolean" use="optional"/>
<xs:attribute name="OpOnly" type="xs:boolean" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="Su" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>additional info for sync units</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="SeparateSu" type="xs:boolean" use="optional"/>
<xs:attribute name="SeparateFrame" type="xs:boolean" use="optional"/>
<xs:attribute name="DependOnInputState" type="xs:boolean" use="optional"/>
<xs:attribute name="FrameRepeatSupport" type="xs:boolean" use="optional">
<xs:annotation>
<xs:documentation>Sm can be read or write multiple within one cycle</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="RxPdo" type="PdoType" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>available RxPDOs of the device</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="TxPdo" type="PdoType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="Mailbox" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="AoE" minOccurs="0">
<xs:annotation>
<xs:documentation>device supports AoE</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="InitCmd" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>AoE init commands to send</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="Transition" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>init cmd will be send at the defined transitions</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="PS"/>
<xs:enumeration value="SO"/>
<xs:enumeration value="SP"/>
<xs:enumeration value="OP"/>
<xs:enumeration value="OS"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Data" type="xs:hexBinary">
<xs:annotation>
<xs:documentation>data of the AoE cmd (excl. the mailbox)</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Comment" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="AdsRouter" type="xs:boolean" use="optional"/>
<xs:attribute name="GenerateOwnNetId" type="xs:boolean" use="optional"/>
<xs:attribute name="InitializeOwnNetId" type="xs:boolean" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="EoE" minOccurs="0">
<xs:annotation>
<xs:documentation>device supports EoE</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="InitCmd" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>EoE init commands to send</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="Transition" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>init cmd will be send at the defined transitions</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="PS"/>
<xs:enumeration value="SO"/>
<xs:enumeration value="SP"/>
<xs:enumeration value="OP"/>
<xs:enumeration value="OS"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Type" type="xs:int">
<xs:annotation>
<xs:documentation>type of the EoE cmd</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Data" type="xs:hexBinary">
<xs:annotation>
<xs:documentation>data of the EoE cmd (excl. the mailbox and EoE header)</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Comment" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="IP" type="xs:boolean" use="optional" default="0">
<xs:annotation>
<xs:documentation>device needs an IP address</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="MAC" type="xs:boolean" use="optional" default="0">
<xs:annotation>
<xs:documentation>device needs a virtual MAC address</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="TimeStamp" type="xs:boolean" use="optional" default="0">
<xs:annotation>
<xs:documentation>device has Timestamp support</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="CoE" minOccurs="0">
<xs:annotation>
<xs:documentation>device supports CoE</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="Object" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Index" type="xs:int">
<xs:annotation>
<xs:documentation>SDO index</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="SubIndex" type="xs:int">
<xs:annotation>
<xs:documentation>SDO subindex</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Data" type="xs:hexBinary">
<xs:annotation>
<xs:documentation>SDO data</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Comment" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="InitCmd" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>SDO download cmds</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="Transition" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>init cmd will be send at the defined transitions</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="PS"/>
<xs:enumeration value="SO"/>
<xs:enumeration value="SP"/>
<xs:enumeration value="OP"/>
<xs:enumeration value="OS"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Index" type="HexDecValue">
<xs:annotation>
<xs:documentation>SDO index</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="SubIndex" type="HexDecValue">
<xs:annotation>
<xs:documentation>SDO subindex</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Data">
<xs:annotation>
<xs:documentation>SDO data</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:hexBinary">
<xs:attribute name="AdaptAutomatically">
<xs:annotation>
<xs:documentation>for a standard entry or a profile specific entry the configuration tool will adapt the data automatically if this attribute set (f.e. 0x1C32:02 will be adapted with the cycle time of the EtherCAT master)</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="Comment" type="xs:string" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="Fixed" type="xs:boolean" use="optional"/>
<xs:attribute name="CompleteAccess" type="xs:boolean" use="optional"/>
<xs:attribute name="OverwrittenByModule" type="xs:boolean">
<xs:annotation>
<xs:documentation>If this attribute is True, the InitCmd shall not be considered if the configurator supports the modular device description because this InitCmd will be defined via the module definition (only for configurators supporting V1.3). </xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="SdoInfo" type="xs:boolean" use="optional"/>
<xs:attribute name="PdoAssign" type="xs:boolean" use="optional"/>
<xs:attribute name="PdoConfig" type="xs:boolean" use="optional"/>
<xs:attribute name="PdoUpload" type="xs:boolean" use="optional"/>
<xs:attribute name="CompleteAccess" type="xs:boolean" use="optional"/>
<xs:attribute name="EdsFile" type="xs:string" use="optional"/>
<xs:attribute name="DS402Channels" type="xs:int" use="optional"/>
<xs:attribute name="SegmentedSdo" type="xs:boolean" use="optional"/>
<xs:attribute name="DiagHistory">
<xs:annotation>
<xs:documentation>The diagnosis history object 0x10F3 is supported as defined in the EtherCAT Guidelines and Protocol Enhancements</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="FoE" minOccurs="0">
<xs:annotation>
<xs:documentation>device supports FoE</xs:documentation>
</xs:annotation>
<xs:complexType/>
</xs:element>
<xs:element name="SoE" minOccurs="0">
<xs:annotation>
<xs:documentation>device supports SoE</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="InitCmd" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>service channel write req</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="Transition" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>init cmd will be send at the defined transitions</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="PS"/>
<xs:enumeration value="SO"/>
<xs:enumeration value="SP"/>
<xs:enumeration value="OP"/>
<xs:enumeration value="OS"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="IDN" type="xs:int">
<xs:annotation>
<xs:documentation>IDN to write</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Data" type="xs:hexBinary">
<xs:annotation>
<xs:documentation>data to write</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Comment" type="xs:string" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="Chn" type="xs:int" default="0"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="ChannelCount" type="xs:int" use="optional"/>
<xs:attribute name="DriveFollowsBit3Support" type="xs:boolean" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="VoE" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:any/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="VendorSpecific" type="VendorSpecificType" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="DataLinkLayer" type="xs:boolean" use="optional" default="0"/>
</xs:complexType>
</xs:element>
<xs:element name="Dc" minOccurs="0">
<xs:annotation>
<xs:documentation>device supports DC</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="OpMode" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>one or more predefined DC operation modes. The first OpMode is the default one</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="Name" type="xs:string">
<xs:annotation>
<xs:documentation>internal reference name of the mode</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Desc" type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation>display name of the mode</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="AssignActivate" type="HexDecValue">
<xs:annotation>
<xs:documentation>value of register 0980h and 0981h</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="CycleTimeSync0" minOccurs="0">
<xs:annotation>
<xs:documentation>cycle time of SYNC0. If 0 and attribute "Factor" is set, the cycle time is calculated as "Factor" * sync unit cycle time. If "Factor" is negative, cycle time is sync unit cycle time / "-Factor"</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:int">
<xs:attribute name="Factor" type="xs:int" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="ShiftTimeSync0" minOccurs="0">
<xs:annotation>
<xs:documentation>shift time of SYNC0 relating to global DC reference</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:int">
<xs:attribute name="Factor" type="xs:int" use="optional">
<xs:annotation>
<xs:documentation>if "Factor" is positive a value of sync unit cycle * "Factor" will be added; if "Factor" is negatvie a value of sync unit cycle / "-Factor" will be added</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Input" type="xs:boolean">
<xs:annotation>
<xs:documentation>DC timing used for inputs - consider input DC timing</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="CycleTimeSync1" minOccurs="0">
<xs:annotation>
<xs:documentation>cycle time of SYNC1. If 0 and attribute "Factor" is set, the cycle time is calculated as "Factor" * SYNC0 cycle. If "Factor" is negative, cycle time is "-Factor" * sync unit cycle time</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:int">
<xs:attribute name="Factor" type="xs:int" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="ShiftTimeSync1" minOccurs="0">
<xs:annotation>
<xs:documentation>shift time of SYNC1 relating to SYNC0 reference</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:int">
<xs:attribute name="Factor" type="xs:int" use="optional">
<xs:annotation>
<xs:documentation>if "Factor" is positive a value of sync unit cycle * "Factor" will be added; if "Factor" is negatvie a value of sync unit cycle / "-Factor" will be added</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="Sm" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="SyncType" type="xs:int" minOccurs="0"/>
<xs:element name="CycleTime" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:int">
<xs:attribute name="Factor" type="xs:int" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="ShiftTime" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:int">
<xs:attribute name="MinAfterSync" type="xs:int" use="optional"/>
<xs:attribute name="MinBeforeFrame" type="xs:int" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="Pdo" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="HexDecValue">
<xs:attribute name="OSFac" type="xs:int"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="No" type="xs:int" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="VendorSpecific" type="VendorSpecificType" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="VendorSpecific" type="VendorSpecificType" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="UnknownFRMW" type="xs:boolean" use="optional"/>
<xs:attribute name="Unknown64Bit" type="xs:boolean" use="optional"/>
<xs:attribute name="ExternalRefClock" type="xs:boolean" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="Slots" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="Slot" type="SlotType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="ModulePdoGroup" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="Alignment">
<xs:annotation>
<xs:documentation>alignment of ModulePdoGroup in bytes</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="RxPdo">
<xs:annotation>
<xs:documentation>PdoNo for alignment</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="TxPdo">
<xs:annotation>
<xs:documentation>PdoNo for alignment</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="MaxSlotCount"/>
<xs:attribute name="MaxSlotGroupCount"/>
<xs:attribute name="SlotPdoIncrement"/>
<xs:attribute name="SlotGroupPdoIncrement"/>
<xs:attribute name="SlotIndexIncrement"/>
<xs:attribute name="SlotGroupIndexIncrement"/>
<xs:attribute name="IdentifyModuleBy">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="ModuleIdent"/>
<xs:enumeration value="IdentityObjekt"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="OpMode" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>one or more predefined operation modes. The first OpMode is the default one</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="Name" type="xs:string">
<xs:annotation>
<xs:documentation>internal reference name of the mode</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Desc" type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation>display name of the mode</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Dc" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="AssignActivate" type="HexDecValue">
<xs:annotation>
<xs:documentation>value of register 0980h and 0981h</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="CycleTimeSync0" minOccurs="0">
<xs:annotation>
<xs:documentation>cycle time of SYNC0. If 0 and attribute "Factor" is set, the cycle time is calculated as "Factor" * sync unit cycle time. If "Factor" is negative, cycle time is sync unit cycle time / "-Factor"</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:int">
<xs:attribute name="Factor" type="xs:int" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="ShiftTimeSync0" minOccurs="0">
<xs:annotation>
<xs:documentation>shift time of SYNC0 relating to global DC reference</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:int">
<xs:attribute name="Factor" type="xs:int" use="optional">
<xs:annotation>
<xs:documentation>if "Factor" is positive a value of sync unit cycle * "Factor" will be added; if "Factor" is negatvie a value of sync unit cycle / "-Factor" will be added</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Input" type="xs:boolean">
<xs:annotation>
<xs:documentation>DC timing used for inputs - consider input DC timing</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="CycleTimeSync1" minOccurs="0">
<xs:annotation>
<xs:documentation>cycle time of SYNC1. If 0 and attribute "Factor" is set, the cycle time is calculated as "Factor" * SYNC0 cycle. If "Factor" is negative, cycle time is "-Factor" * sync unit cycle time</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:int">
<xs:attribute name="Factor" type="xs:int" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="ShiftTimeSync1" minOccurs="0">
<xs:annotation>
<xs:documentation>shift time of SYNC1 relating to SYNC0 reference</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:int">
<xs:attribute name="Factor" type="xs:int" use="optional">
<xs:annotation>
<xs:documentation>if "Factor" is positive a value of sync unit cycle * "Factor" will be added; if "Factor" is negatvie a value of sync unit cycle / "-Factor" will be added</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Sm" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="SyncType" type="xs:int" minOccurs="0">
<xs:annotation>
<xs:documentation>SyncType (0x1C3x:01), shall be downloaded by the master in the state transition PS</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="MinCycleTime" minOccurs="0">
<xs:annotation>
<xs:documentation>Minimum Cycle Time (0x1C3x:05) </xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:int">
<xs:attribute name="Variable">
<xs:annotation>
<xs:documentation>Minimum Cycle Time is variable and should be measured as defined in the Synchronization part of the EtherCAT Guidelines and Protocol Enhancements</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="CalcAndCopyTime" minOccurs="0">
<xs:annotation>
<xs:documentation>CalcAndCopyTime (0x1C3x:06)</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:int">
<xs:attribute name="Variable">
<xs:annotation>
<xs:documentation>CalcAndCopyTime is variable and should be measured as defined in the Synchronization part of the EtherCAT Guidelines and Protocol Enhancements</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="DelayTime" type="xs:int" minOccurs="0">
<xs:annotation>
<xs:documentation>DelayTime (0x1C3x:09)</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="ShiftTimeChangable" minOccurs="0">
<xs:annotation>
<xs:documentation>Indicates if the ShiftTime is changeble</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:boolean"/>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="DownloadCycleTime" type="xs:boolean" minOccurs="0">
<xs:annotation>
<xs:documentation>The Cycle Time (0x1C3x:02) shall be downloaded by the master before the state transition PS</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute name="No" type="xs:int" use="required"/>
<xs:attribute name="ControlByte" type="xs:int"/>
</xs:complexType>
</xs:element>
<xs:element name="VendorSpecific" type="VendorSpecificType" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ESC" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="Reg0108" type="HexDecValue" minOccurs="0">
<xs:annotation>
<xs:documentation>init value for register 0400h</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Reg0400" type="HexDecValue" minOccurs="0">
<xs:annotation>
<xs:documentation>init value for register 0400h</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Reg0410" type="HexDecValue" minOccurs="0">
<xs:annotation>
<xs:documentation>init value for register 0410h</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Reg0420" type="HexDecValue" minOccurs="0">
<xs:annotation>
<xs:documentation>init value for register 0420h</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="VendorSpecific" type="VendorSpecificType" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Eeprom" minOccurs="0">
<xs:annotation>
<xs:documentation>used to generate the information of the EEPROM</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="EepromType">
<xs:attribute name="AssignToPdi" type="xs:boolean"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:choice minOccurs="0">
<xs:element name="Image16x14" type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation>a reference name to an internal image</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="ImageFile16x14" type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation>a file path to a BMP file (dimensions should be 16x14)</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="ImageData16x14" type="xs:hexBinary" minOccurs="0">
<xs:annotation>
<xs:documentation>hex binary data of a BMP file (dimensions should be 16x14)</xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
<xs:element name="VendorSpecific" type="VendorSpecificType" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="GroupType">
<xs:sequence>
<xs:element name="Type">
<xs:annotation>
<xs:documentation>a reference name corresponding to the GroupType value in the device description</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string"/>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="Name" type="NameType" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>a visible name for the group</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Comment" type="NameType" minOccurs="0" maxOccurs="unbounded"/>
<xs:choice>
<xs:element name="Image16x14" type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation>a reference name to an internal image</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="ImageFile16x14" type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation>a file path to a BMP file (dimensions should be 16x14)</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="ImageData16x14" type="xs:hexBinary" minOccurs="0">
<xs:annotation>
<xs:documentation>hex binary data of a BMF file (dimensions should be 16x14)</xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
<xs:element name="VendorSpecific" type="VendorSpecificType" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="EepromType">
<xs:choice>
<xs:element name="Data" type="xs:hexBinary">
<xs:annotation>
<xs:documentation>complete eeprom data</xs:documentation>
</xs:annotation>
</xs:element>
<xs:sequence>
<xs:element name="ByteSize" type="xs:int">
<xs:annotation>
<xs:documentation>byte size of eeprom</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="ConfigData" type="xs:hexBinary">
<xs:annotation>
<xs:documentation>data of first 7 words of eeprom (missing word are filled with 0)</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="BootStrap" type="xs:hexBinary" minOccurs="0">
<xs:annotation>
<xs:documentation>data of word 20-23 (must be 4 word long) (data of word 24-27 (mailbox cfg) is retrieved from SM0 und SM1 configuration)</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Category" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="CatNo" type="xs:int">
<xs:annotation>
<xs:documentation>category type number</xs:documentation>
</xs:annotation>
</xs:element>
<xs:choice>
<xs:element name="Data" type="xs:hexBinary"/>
<xs:element name="DataString" type="xs:string"/>
<xs:element name="DataUINT" type="xs:int"/>
<xs:element name="DataUDINT" type="xs:int"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:element name="VendorSpecific" type="VendorSpecificType" minOccurs="0"/>
</xs:choice>
</xs:complexType>
<xs:complexType name="InfoType">
<xs:sequence>
<xs:element name="Electrical" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="EBusCurrent" type="xs:int">
<xs:annotation>
<xs:documentation>power consumption on the EBus. negative values are power supplieres</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="StateMachine" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="Timeout" minOccurs="0">
<xs:annotation>
<xs:documentation>timeout defaults for state machine transitions</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="PreopTimeout" type="xs:int"/>
<xs:element name="SafeopOpTimeout" type="xs:int"/>
<xs:element name="BackToInitTimeout" type="xs:int"/>
<xs:element name="BackToSafeopTimeout" type="xs:int"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Behavior" minOccurs="0">
<xs:complexType>
<xs:attribute name="StartToInit" type="xs:boolean"/>
<xs:attribute name="StartToPreop" type="xs:boolean"/>
<xs:attribute name="StartToSafeop" type="xs:boolean"/>
<xs:attribute name="StartToSafeopNoSync" type="xs:boolean"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Mailbox" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="Timeout">
<xs:annotation>
<xs:documentation>timeout defaults for mailbox communications</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="RequestTimeout" type="xs:int"/>
<xs:element name="ResponseTimeout" type="xs:int"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="EtherCATController" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="DpramSize" type="xs:int" default="4096" minOccurs="0"/>
<xs:element name="SmCount" type="xs:int" minOccurs="0"/>
<xs:element name="FmmuCount" type="xs:int" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Port" minOccurs="0" maxOccurs="4">
<xs:complexType>
<xs:sequence>
<xs:element name="Type">
<xs:annotation>
<xs:documentation>defines the Port Type (MII, EBUS, NONE)</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="MII"/>
<xs:enumeration value="EBUS"/>
<xs:enumeration value="NONE"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Connector" type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation>Physical layer connector, for the allowed values see the device description specification</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Label" type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation>printed label on the device</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="RxDelay" type="xs:int" minOccurs="0">
<xs:annotation>
<xs:documentation>in 100ps</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="TxDelay" type="xs:int" minOccurs="0">
<xs:annotation>
<xs:documentation>in 100ps</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ExecutionUnit" minOccurs="0" maxOccurs="2">
<xs:complexType>
<xs:sequence>
<xs:element name="Type">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="PRIMARY"/>
<xs:enumeration value="SECONDARY"/>
<xs:enumeration value="NONE"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="RxDelay" type="xs:int" minOccurs="0">
<xs:annotation>
<xs:documentation>in 100ps</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="TxDelay" type="xs:int" minOccurs="0">
<xs:annotation>
<xs:documentation>in 100ps</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="VendorSpecific" type="VendorSpecificType" minOccurs="0"/>
<xs:element name="BackupParameterSupport" minOccurs="0">
<xs:annotation>
<xs:documentation>standard backup parameter support as defined in the Device Replacement chapter of the EthercAT Guidelines and Protocol Enhancements</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="NO_SUPPORT"/>
<xs:enumeration value="AUTOMATIC_STORAGE"/>
<xs:enumeration value="MANUAL_STORAGE"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="ErrorHandlingSupport" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>for each supported behaviour one element is listed here as defined in the Error Handling chapter of the EtherCAT Guidelines and Protocol Enhancements</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="PDOSTATE_SUPPORTED"/>
<xs:enumeration value="STATECHANGE_SUPPORTED"/>
<xs:enumeration value="VENDORSTATE_SUPPORTED"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="StationAliasSupported" minOccurs="0">
<xs:annotation>
<xs:documentation>station alias support as defined in the Station Alias chapter of the EtherCAT Guidelines and Protocol Enhancements</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="NO_SUPPORT"/>
<xs:enumeration value="REGISTER_SUPPORT"/>
<xs:enumeration value="PROCESSDATA_SUPPORT"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="DeviceFeature" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>The allowed device features are defined in the device description specification</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="Name" type="xs:string"/>
<xs:element name="Value" type="xs:string" minOccurs="0"/>
<xs:element name="Description" type="xs:string" minOccurs="0"/>
<xs:element name="Register" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="StartAddress" type="xs:int">
<xs:annotation>
<xs:documentation>in bytes</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Length" type="xs:int">
<xs:annotation>
<xs:documentation>in bytes</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="BitMask" type="HexDecValue" minOccurs="0">
<xs:annotation>
<xs:documentation>defines which bits are belonging to the feature</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="PhysicsType">
<xs:restriction base="xs:string">
<xs:pattern value="[Y,K, ,B]{0,4}"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="SlotType">
<xs:sequence>
<xs:element name="Name" type="NameType" minOccurs="0" maxOccurs="unbounded"/>
<xs:choice>
<xs:element name="ModuleIdent" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="HexDecValue">
<xs:attribute name="Default">
<xs:annotation>
<xs:documentation>indicates, if this module should be connected by default</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="ModuleClass" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Class" type="xs:string"/>
<xs:element name="VendorId" type="HexDecValue" minOccurs="0"/>
<xs:element name="Name" type="NameType" minOccurs="0" maxOccurs="unbounded"/>
<xs:choice minOccurs="0">
<xs:element name="Image16x14" type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation>a reference name to an internal image</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="ImageFile16x14" type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation>a file path to a BMP file (dimensions should be 16x14)</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="ImageData16x14" type="xs:hexBinary" minOccurs="0">
<xs:annotation>
<xs:documentation>hex binary data of a BMP file (dimensions should be 16x14)</xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
<xs:choice minOccurs="0">
<xs:element name="Image16x14" type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation>a reference name to an internal image</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="ImageFile16x14" type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation>a file path to a BMP file (dimensions should be 16x14)</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="ImageData16x14" type="xs:hexBinary" minOccurs="0">
<xs:annotation>
<xs:documentation>hex binary data of a BMP file (dimensions should be 16x14)</xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
</xs:sequence>
<xs:attribute name="SlotGroup"/>
<xs:attribute name="MinInstances" use="required"/>
<xs:attribute name="MaxInstances" use="required"/>
<xs:attribute name="SlotPdoIncrement">
<xs:annotation>
<xs:documentation>overwrites value of "slots" element</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="SlotGroupPdoIncrement">
<xs:annotation>
<xs:documentation>overwrites value of "slots" element</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="SlotIndexIncrement">
<xs:annotation>
<xs:documentation>overwrites value of "slots" element</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="SlotGroupIndexIncrement">
<xs:annotation>
<xs:documentation>overwrites value of "slots" element</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="TreeView">
<xs:annotation>
<xs:documentation>can be used in the configurator for the GUI</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="SLOTGROUP"/>
<xs:enumeration value="SLOT"/>
<xs:enumeration value="PDO"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:schema>