<Schema name="FDTProfinetIOParameterSchema" xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes" xmlns:fdt="x-schema:FDTDataTypesSchema.xml">
 <!-- Version of the Schema -->
 <AttributeType name="schemaVersion" dt:type="number" default="1.00"/>

 <!--AR attributes-->
 <AttributeType name="arType" dt:type="ui2"/>
 <AttributeType name="arProperties" dt:type="ui4"/>
 <AttributeType name="arUUID" dt:type="uuid"/>

 <!--AlarmCR attributes-->
 <AttributeType name="alarmCRType" dt:type="ui2"/>
 <AttributeType name="alarmCRProperties" dt:type="ui4"/>
 <AttributeType name="rtaTimeoutFactor" dt:type="ui2"/>
 <AttributeType name="rtaRetries" dt:type="ui2"/>
 <AttributeType name="localAlarmReference" dt:type="ui2"/>
 <AttributeType name="maxAlarmDataLength" dt:type="ui2"/>

 <!--Identification attributes-->

 <AttributeType name="infoText" dt:type="string"/>
 <AttributeType name="localIndex" dt:type="ui2"/>

 <!--Network attributes-->
 <AttributeType name="nameOfStation" dt:type="string"/>
 <AttributeType name="dynIpAddress" dt:type="boolean"/>
 <AttributeType name="ipAddress" dt:type="string"/>
 <AttributeType name="ipSubnetMask" dt:type="string"/>
 <AttributeType name="ipDefaultGateway" dt:type="string"/>
 <AttributeType name="macAddress" dt:type="string"/>
 <AttributeType name="extAddrSupported" dt:type="boolean"/>

 <!--Module attributes-->
 <AttributeType name="slotNumber" dt:type="ui2"/>
 <AttributeType name="moduleIdentNumber" dt:type="ui4"/>
 <AttributeType name="moduleProperties" dt:type="ui2"/>

 <!--SubModule attributes-->
 <AttributeType name="subSlotNumber" dt:type="ui2"/>
<AttributeType name="subModuleIdentNumber" dt:type="ui4"/>
<AttributeType name="api" dt:type="ui4"/>
<!--SubModule attributes / Submodule properties-->
<AttributeType name="ioType" dt:type="enumeration" dt:values="Input Output InputAndOutput"/>
<AttributeType name="sharedInput" dt:type="enumeration" dt:values="IOController IOControllerShare"/>
<AttributeType name="reduceInputSubmoduleDataLength" dt:type="enumeration" dt:values="Expected Zero"/>
<AttributeType name="reduceOutputSubmoduleDataLength" dt:type="enumeration" dt:values="Expected Zero"/>
<AttributeType name="discardIOXS" dt:type="enumeration" dt:values="Expected Zero"/>

 <!--RecordParamData attributes-->
 <AttributeType name="index" dt:type="ui2"/>
 <AttributeType name="recordData" dt:type="bin.hex"/>

 <!--InputDataList attributes-->
 <AttributeType name="consistency" dt:type="enumeration" dt:values="itemConsistency allItemsConsistency"/>

 <!--DataItem attributes-->
 <AttributeType name="sendClockFactor" dt:type="ui2"/>
 <AttributeType name="reductionRatio" dt:type="ui2"/>
 <AttributeType name="watchdogFactor" dt:type="ui2"/>
 <AttributeType name="dataHoldFactor" dt:type="ui2"/>

 <!--Definition of Element RecordParamData-->
 <ElementType name="RecordParamData" content="empty" model="closed">
     <attribute type="index" required="yes"/>
     <attribute type="recordData" required="yes"/>
     <attribute type="fdt:name" required="no"/>
 </ElementType>

 <!--Definition of Element RecordParamDataList-->
 <ElementType name="RecordParamDataList" content="eltOnly" model="closed">
     <element type="RecordParamData" minOccurs="1" maxOccurs="*"/>
 </ElementType>

 <!--Definition of Element OutputDataList-->
 <ElementType name="OutputDataList" content="eltOnly" model="closed">
     <attribute type="consistency" required="no" default="itemConsistency"/>
     <element type="fdt:ChannelReferences" minOccurs="1" maxOccurs="1"/>
 </ElementType>

 <!--Definition of Element InputDataList-->
 <ElementType name="InputDataList" content="mixed" model="closed">
     <attribute type="consistency" required="no" default="itemConsistency"/> 
     <element type="fdt:ChannelReferences" minOccurs="1" maxOccurs="1"/>
 </ElementType>

<!--Definition of Element SubModuleProperties-->
<ElementType name="SubModuleProperties" content="empty" model="closed">
     <attribute type="ioType" required="yes"/>
     <attribute type="sharedInput" required="yes"/>
     <attribute type="reduceInputSubmoduleDataLength" required="yes"/>
     <attribute type="reduceOutputSubmoduleDataLength" required="yes"/>
     <attribute type="discardIOXS" required="yes"/>
</ElementType>

 <!--Definition of Element SubModule-->
 <!--sendClockfactor, reduction ratio etc. are set by CommDTM, but saved at DeviceDTM-->
 <ElementType name="SubModule" content="eltOnly" model="closed">
     <attribute type="subSlotNumber" required="yes"/>
     <attribute type="fdt:name" required="yes"/>
     <attribute type="fdt:descriptor" required="no"/>
     <attribute type="subModuleIdentNumber" required="yes"/>
     <attribute type="api" required="yes"/>
     <attribute type="sendClockFactor" required="yes"/>
     <attribute type="reductionRatio" required="yes"/>
     <attribute type="watchdogFactor" required="yes"/>
     <attribute type="dataHoldFactor" required="yes"/>
     <element type="InputDataList" minOccurs="0" maxOccurs="1"/>
     <element type="OutputDataList" minOccurs="0" maxOccurs="1"/>
     <element type="RecordParamDataList" minOccurs="0" maxOccurs="1"/>     
     <element type="SubModuleProperties" minOccurs="0" maxOccurs="1"/>     
 </ElementType>

 <!--Definition of Element SubModuleList-->
 <ElementType name="SubModuleList" content="eltOnly" model="closed">
     <element type="SubModule" minOccurs="1" maxOccurs="*"/>
 </ElementType>

 <!--Definition of Element Module-->
 <ElementType name="Module" content="eltOnly" model="closed">
     <attribute type="slotNumber" required="yes"/>
     <attribute type="moduleIdentNumber" required="yes"/>
     <attribute type="moduleProperties" required="yes"/>
     <attribute type="fdt:name" required="yes"/>
     <attribute type="fdt:descriptor" required="no"/>
     <element type="SubModuleList" minOccurs="1" maxOccurs="1"/>
 </ElementType>

 <!--Definition of Element ModuleList-->
 <ElementType name="ModuleList" content="eltOnly" model="closed">
     <element type="Module" minOccurs="1" maxOccurs="*"/>
 </ElementType>

 <!--Definition of Element AlarmCR-->
 <!--only for saving at Device DTM-->
 <ElementType name="AlarmCR" content="empty" model="closed">
     <attribute type="alarmCRType" required="yes"/>
     <attribute type="alarmCRProperties" required="yes"/>
     <attribute type="rtaTimeoutFactor" required="yes"/>
     <attribute type="rtaRetries" required="yes"/>
     <attribute type="localAlarmReference" required="yes"/>
     <attribute type="maxAlarmDataLength" required="yes"/>
 </ElementType>

 <!--Definition of Element AR-->
 <!--only for saving at Device DTM-->
 <ElementType name="AR" content="eltOnly" model="closed">
     <attribute type="arType" required="yes"/>
     <attribute type="arProperties" required="yes"/>
     <attribute type="arUUID" required="yes"/>
     <element type="AlarmCR" minOccurs="1" maxOccurs="1"/>
     <element type="ModuleList" minOccurs="0" maxOccurs="1"/>
 </ElementType>

 <!--Definition of Element Identification-->
 <ElementType name="Identification" content="eltOnly" model="closed">
     <attribute type="localIndex" required="yes"/>
     <attribute type="fdt:deviceTypeId" required="yes"/>
     <attribute type="fdt:manufacturerId" required="yes"/>
     <attribute type="infoText" required="no"/>
     <element type="fdt:VersionInformation" minOccurs="0" maxOccurs="1"/>
 </ElementType>

<!--Definition of Element SendClockFactor-->
 <ElementType name="SendClockFactor" content="empty" model="closed">
     <attribute type="sendClockFactor" required="yes"/>
</ElementType>

<!--Definition of Element ReductionRatio-->
 <ElementType name="ReductionRatio" content="empty" model="closed">
     <attribute type="reductionRatio" required="yes"/>
 </ElementType>

 <!--Definition of Element TimingProperties-->
 <ElementType name="TimingProperties" content="eltOnly" model="closed">
     <element type="SendClockFactor" minOccurs="1" maxOccurs="*"/>
     <element type="ReductionRatio" minOccurs="1" maxOccurs="*"/>
 </ElementType>

 <!--Definition of Element Device-->
 <ElementType name="Device" content="eltOnly" model="closed">
     <element type="Identification" minOccurs="1" maxOccurs="1"/>
     <element type="AR" minOccurs="0" maxOccurs="*"/>
     <element type="TimingProperties" minOccurs="0" maxOccurs="1"/>
 </ElementType>

 <!--Definition of Element Network-->
 <ElementType name="Network" content="empty" model="closed">
     <attribute type="nameOfStation" required="yes"/>
     <attribute type="dynIpAddress" required="yes"/>
     <attribute type="ipAddress" required="yes"/>
     <attribute type="ipSubnetMask" required="yes"/>
     <attribute type="ipDefaultGateway" required="yes"/>
     <attribute type="extAddrSupported" required="yes"/>
     <attribute type="macAddress" required="no"/>
 </ElementType>

 <!--Definition of DeviceList Element, needed for multiple PNIO Instances on one physical device !-->
 <ElementType name="DeviceList" content="eltOnly" model="closed">
     <element type="Network" minOccurs="1" maxOccurs="1"/>
     <element type="Device" minOccurs="1" maxOccurs="*"/>
 </ElementType>
</Schema>
