<Schema name="FDTSERCOSChannelParameterSchema" xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes" xmlns:fdt="x-schema:FDTDataTypesSchema.xml" xmlns:appId="x-schema:FDTApplicationIdSchema.xml">

	<!-- Definition of Attributes -->
	<AttributeType name="schemaVersion" dt:type="number" default="1.0"/> 
	<AttributeType name="frameApplicationTag" dt:type="string"/>
	<AttributeType name="protectedByChannelAssignment" dt:type="boolean"/>
	<!-- Range of slaveIndex: 0 - 255 -->
	<AttributeType name="slaveIndex" dt:type="ui1"/>	
	<!-- attribute of operation data -->
	<AttributeType name="attribute" dt:type="ui4"/>
	<AttributeType name="connectionInstance" dt:type="ui1"/>
  <AttributeType name="bitOffsetInConnection" dt:type="ui4"/>
  <AttributeType name="width" dt:type="ui4"/>

	<AttributeType name="iecDataType" dt:type="enumeration" dt:values="BOOL SINT INT DINT LINT USINT UINT UDINT ULINT REAL LREAL TIME DATE TimeOfDay DateAndTime STRING BYTE WORD DWORD LWORD WSTRING"/>
	<AttributeType name="arrayElements" dt:type="ui4"/> 
  <!--
			The attribute resourceInfo indicates whether the channel is describing the 
			real-time data or real-time data status/control (depending on connection direction)			
			If this attribute is omitted, real-time data is described.
	-->
	<AttributeType name="resourceInfo" dt:type="boolean" default="0"/>
	
	<ElementType name="Connection" content="mixed" model="closed">	
		<!--  connection number the signal is put into.  -->
		<attribute type="connectionInstance" required="yes"/>
		<!--  Bit offset of the signal inside the connection.  -->
		<attribute type="bitOffsetInConnection" required="yes"/>
	</ElementType>

	<ElementType name="ConnectionList" content="eltOnly" model="closed">		  
		<element   type="Connection" minOccurs="1" maxOccurs="*"/>	 
	</ElementType>  

	<ElementType name="FSP_IO" content="mixed" model="closed">
	  <attribute type="width" required="yes"/>
		<element type="fdt:EnumeratorEntry" minOccurs="1" maxOccurs="*"/>
	</ElementType>	
	
	<ElementType name="FDTChannel" content="eltOnly" model="closed" order="seq">
		<attribute type="fdt:nodeId" required="no"/>
		<!-- reference id, refered by ChannelReference@idref in paramter XML -->
		<attribute type="fdt:id" required="yes"/>		
		<attribute type="fdt:tag" required="yes"/>
		<attribute type="frameApplicationTag" required="no"/>
		<attribute type="protectedByChannelAssignment" required="yes"/>
		<attribute type="appId:applicationId" required="no"/>     			
		<attribute type="fdt:signalType" required="yes"/>
		<attribute type="fdt:name" required="no"/>     
		<attribute type="fdt:descriptor" required="no"/>     
		<attribute type="fdt:dataType" required="yes"/>
		<attribute type="fdt:bitLength" required="yes"/>
		<attribute type="iecDataType" required="yes"/>
		<attribute type="arrayElements" required="no"/> 
		<!--
				If a connection defines status word or control word 
				(in case of FSP_IO:    IOStatus Word or IOControl Word,
				 in case of FSP_Drive: DriveStatus or DriveControl Word),
				they're regarded also as a process data. In this case deviceDTM 
				shall expose Status/Control Word as an extra fdt channel as follows: 
				... resourceInfo="true" ...	
		-->
		<attribute type="resourceInfo" required="no"/>		
		
		<!--  The channel is exposed by a deviceDTM that manages up to 256 slaves (subdevices).
			    Slave index is unique and not configurable like the ADR of the corresponding slave -->
		<attribute type="slaveIndex" required="yes"/>
		
		<attribute type="attribute" required="no"/>
		<element type="FSP_IO" minOccurs="0" maxOccurs="1"/>
		
		<element   type="ConnectionList" minOccurs="1" maxOccurs="1"/>
		<!-- real-time data -->
		<element type="fdt:SemanticInformation" minOccurs="0" maxOccurs="1"/>
		<element type="fdt:Unit" minOccurs="0" maxOccurs="1"/>
		<element type="fdt:Ranges" minOccurs="0" maxOccurs="1"/> 
	</ElementType>

	<ElementType name="FDTChannelType" content="eltOnly" model="closed">
		<attribute type="fdt:nodeId" required="no"/>
		<element type="fdt:VersionInformation" minOccurs="1" maxOccurs="1"/>
	</ElementType>
	
	<ElementType name="FDT" content="eltOnly" model="closed">
		<attribute type="schemaVersion" required="no"/>                    
		<attribute type="fdt:nodeId" required="no"/>
		<element type="FDTChannelType" minOccurs="1" maxOccurs="1"/>
		<element type="FDTChannel" minOccurs="1" maxOccurs="1"/>
	</ElementType>
</Schema>
