<Schema  name="FDTSERCOSCommunicationSchema" xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes" 
				xmlns:fdt="x-schema:FDTDataTypesSchema.xml">
	<AttributeType name="schemaVersion" dt:type="number" default="1.0"/>	
	<!-- communication reference used in 'negotiation' -->
	<AttributeType name="communicationReference" dt:type="uuid"/>
	<AttributeType name="sercosAddress" dt:type="ui2"/>
	<AttributeType name="CP" dt:type="enumeration" dt:values="noCP CP0 CP1 CP2 CP3 CP4"/>
	<!--                      IDN                          -->
	<AttributeType name="idn" dt:type="ui4"/>
	<!--  data block element of the IDN, range: 1 - 7 -->
	<AttributeType name="dbElement" dt:type="ui1"/>
	<AttributeType name="sequenceTime" dt:type="ui4"/>
	<AttributeType name="delayTime" dt:type="ui4"/>
	
	<AttributeType name="errorCode" dt:type="bin.hex"/>
	<AttributeType name="errorInfo" dt:type="string"/>
	<AttributeType name="errorType" dt:type="enumeration"  dt:values="not_handled sercosSlave sercosMaster"/>
	<!--                                                        -->
	<!--                 error description                -->
	<!--                                                        -->
	<ElementType name="sercosError" content="empty" model="closed">
		<attribute type="errorType" required="yes"/>
		<attribute type="errorCode" required="no"/>
		<attribute type="errorInfo" required="no"/>
	</ElementType>

	<!--                                                           -->
	<!--             connect, disconnect, abort                    -->
	<!--                                                           -->
	<ElementType name="ConnectRequest" content="empty" model="closed">
		<attribute type="fdt:nodeId" required="no"/>
		<attribute type="fdt:systemTag" required="no"/>
		<attribute type="sercosAddress" required="yes"/>
	</ElementType>
	
	<ElementType name="ConnectResponse" content="mixed" model="closed">
		<attribute type="fdt:nodeId" required="no"/>
		<!-- Success: communicationReference of the established connection. -->
		<attribute type="communicationReference" required="yes"/> 
		<attribute type="sercosAddress" required="yes"/>
		<!-- current Communication Phase -->
		<attribute type="CP" required="yes"/>	
		<!-- If CP < 2 than the connect request failed -->
		<element type="sercosError" minOccurs="0" maxOccurs="1"/>
	</ElementType>
	
	<ElementType name="DisconnectRequest" content="empty" model="closed">
		<attribute type="fdt:nodeId" required="no"/>
		<attribute type="communicationReference" required="yes"/> 
	</ElementType>
	
	<ElementType name="DisconnectResponse" content="mixed" model="closed">
		<attribute type="fdt:nodeId" required="no"/>
		<attribute type="communicationReference" required="yes"/> 
		<element type="sercosError" minOccurs="0" maxOccurs="1"/>
	</ElementType>
	
	<ElementType name="Abort" content="empty" model="closed">
		<attribute type="communicationReference" required="yes"/>
	</ElementType>
	
	<!--                                                          -->
	<!--                    sequences                      -->
	<!--                                                          -->
	<ElementType name="SequenceBegin" content="empty" model="closed">
		<attribute type="sequenceTime" required="no"/>
		<attribute type="delayTime" required="no"/>
		<attribute type="communicationReference" required="yes"/>
	</ElementType>
	<ElementType name="SequenceEnd" content="empty" model="closed">
		<attribute type="communicationReference" required="yes"/>
		</ElementType>
		<ElementType name="SequenceStart" content="empty" model="closed">
		<attribute type="communicationReference" required="yes"/>
	</ElementType>	
		
	<!--                                                                 -->
	<!--                   read, write                               -->
	<!--                                                                 -->
	<ElementType name="ParameterReadRequest" content="mixed" model="closed">
		<attribute type="fdt:nodeId" required="no"/>
		<attribute type="communicationReference" required="yes"/>
		<attribute type="idn" required="yes"/>
		<attribute type="dbElement" required="yes"/>
	</ElementType>
	
	<ElementType name="ParameterReadResponse" content="mixed" model="closed">
		<attribute type="fdt:nodeId" required="no"/>
		<attribute type="communicationReference" required="yes"/>
		<attribute type="idn" required="yes"/>
		<attribute type="dbElement" required="yes"/>
		<element type="fdt:CommunicationData" minOccurs="0" maxOccurs="1"/>
		<element type="sercosError" minOccurs="0" maxOccurs="1"/>
	</ElementType>

	<ElementType name="ParameterWriteRequest" content="eltOnly" model="closed">
		<attribute type="fdt:nodeId" required="no"/>
		<attribute type="communicationReference" required="yes"/>  
		<attribute type="idn" required="yes"/>		
		<attribute type="dbElement" required="yes"/>
		<element type="fdt:CommunicationData" minOccurs="1" maxOccurs="1"/>
	</ElementType>		
	
	<ElementType name="ParameterWriteResponse" content="mixed" model="closed">
		<attribute type="fdt:nodeId" required="no"/>
		<attribute type="communicationReference" required="yes"/>
		<attribute type="idn" required="yes"/>
		<attribute type="dbElement" required="yes"/>
		<element type="sercosError" minOccurs="0" maxOccurs="1"/>
	</ElementType>
	
	<ElementType name="DataStatusReadRequest" content="mixed" model="closed">
		<attribute type="fdt:nodeId" required="no"/>
		<attribute type="communicationReference" required="yes"/>
		<attribute type="idn" required="yes"/>
	</ElementType>
	
	<ElementType name="DataStatusReadResponse" content="mixed" model="closed">
		<attribute type="fdt:nodeId" required="no"/>
		<attribute type="communicationReference" required="yes"/>
		<attribute type="idn" required="yes"/>
		<element type="fdt:CommunicationData" minOccurs="0" maxOccurs="1"/>
		<element type="sercosError" minOccurs="0" maxOccurs="1"/>
	</ElementType>

	<!--                                                  -->
	<!--                schema root                -->
	<!--                                                  -->
	<ElementType name="FDT" content="eltOnly" model="closed">
		<attribute type="schemaVersion" required="no"/>
		<attribute type="fdt:nodeId" required="no"/>
		<group order="one">
			<element type="ConnectRequest"/>
			<element type="ConnectResponse"/>
			<element type="DisconnectRequest"/>
			<element type="DisconnectResponse"/>
			<element type="Abort"/>
			<element type="SequenceBegin"/>
			<element type="SequenceEnd"/>
			<element type="SequenceStart"/>
			<element type="ParameterReadRequest"/>
			<element type="ParameterReadResponse"/>
			<element type="ParameterWriteRequest"/>
			<element type="ParameterWriteResponse"/>
			<element type="DataStatusReadRequest"/>
			<element type="DataStatusReadResponse"/>
			<element type="fdt:CommunicationError"/>
		</group>
	</ElementType>
</Schema>
