<?xml version="1.0" encoding="UTF-8" ?> 
<!--
================================================================================
	 [ORiN2] CRD (Controller Resource Definition) Schema ver. 2.0
	 Copyright(C) 2003-	DENSO WAVE
================================================================================
-->

<xsd:schema xmlns="http://www.orin.jp/CRD/CRDSchema"
						xmlns:xsd="http://www.w3.org/2001/XMLSchema"
						targetNamespace="http://www.orin.jp/CRD/CRDSchema" elementFormDefault="qualified">

	<xsd:annotation>
		<xsd:documentation xmlns="http://www.w3.org/1999/xhtml">
			<p>[ORiN2] CRD Schema ver. 2.0</p> 
		</xsd:documentation>
	</xsd:annotation>

<!-- 
================================================================================
	 CRD primitives (Variant, Array, and common elements)
================================================================================
-->

	<!-- ********** Enumeration ********** -->
	
	<!-- VariantType -->
	<xsd:simpleType name="varType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="VT_BOOL"/>
			<xsd:enumeration value="VT_I1"/>
			<xsd:enumeration value="VT_UI1"/>
			<xsd:enumeration value="VT_I2"/>
			<xsd:enumeration value="VT_UI2"/>
			<xsd:enumeration value="VT_I4"/>
			<xsd:enumeration value="VT_UI4"/>
			<xsd:enumeration value="VT_R4"/>
			<xsd:enumeration value="VT_R8"/>
			<xsd:enumeration value="VT_DATE"/>
			<xsd:enumeration value="VT_BSTR"/>
			<xsd:enumeration value="VT_VARIANT"/>
			<xsd:enumeration value="VT_ARRAY"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- VariantType(Flat) -->
	<xsd:simpleType name="varTypeArray">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="VT_EMPTY"/>
			<xsd:enumeration value="VT_BOOL"/>
			<xsd:enumeration value="VT_I1"/>
			<xsd:enumeration value="VT_UI1"/>
			<xsd:enumeration value="VT_I2"/>
			<xsd:enumeration value="VT_UI2"/>
			<xsd:enumeration value="VT_I4"/>
			<xsd:enumeration value="VT_UI4"/>
			<xsd:enumeration value="VT_R4"/>
			<xsd:enumeration value="VT_R8"/>
			<xsd:enumeration value="VT_DATE"/>
			<xsd:enumeration value="VT_BSTR"/>
			<xsd:enumeration value="VT_VARIANT"/>
			<xsd:enumeration value="VT_ARRAY|VT_BOOL"/>
			<xsd:enumeration value="VT_ARRAY|VT_I1"/>
			<xsd:enumeration value="VT_ARRAY|VT_UI1"/>
			<xsd:enumeration value="VT_ARRAY|VT_I2"/>
			<xsd:enumeration value="VT_ARRAY|VT_UI2"/>
			<xsd:enumeration value="VT_ARRAY|VT_I4"/>
			<xsd:enumeration value="VT_ARRAY|VT_UI4"/>
			<xsd:enumeration value="VT_ARRAY|VT_R4"/>
			<xsd:enumeration value="VT_ARRAY|VT_R8"/>
			<xsd:enumeration value="VT_ARRAY|VT_DATE"/>
			<xsd:enumeration value="VT_ARRAY|VT_BSTR"/>
			<xsd:enumeration value="VT_ARRAY|VT_VARIANT"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- ********** CRD Variant ********** -->
	<!-- VariantData -->	
	<xsd:element name="boolVal" type="xsd:boolean"/>
	<xsd:element name="cVal" type="xsd:byte"/>
	<xsd:element name="bVal" type="xsd:unsignedByte"/>
	<xsd:element name="iVal" type="xsd:short"/>
	<xsd:element name="uiVal" type ="xsd:unsignedShort"/>
	<xsd:element name="lVal" type="xsd:int"/>
	<xsd:element name="ulVal" type="xsd:unsignedInt"/>
	<xsd:element name="fltVal" type="xsd:float"/>
	<xsd:element name="dblVal" type="xsd:double"/>
	<xsd:element name="date" type="xsd:dateTime"/>
	<xsd:element name="bstrVal" type="xsd:string"/>

	<!-- Variant -->
	<xsd:element name="varVal" type="Variant"/>
	<xsd:complexType name="Variant">
		<xsd:choice>
			<xsd:element ref="boolVal"/>
			<xsd:element ref="cVal"/>
			<xsd:element ref="bVal"/>
			<xsd:element ref="iVal"/>
			<xsd:element ref="uiVal"/>
			<xsd:element ref="lVal"/>
			<xsd:element ref="ulVal"/>
			<xsd:element ref="fltVal"/>
			<xsd:element ref="dblVal"/>
			<xsd:element ref="date"/>
			<xsd:element ref="bstrVal"/>
			<xsd:element ref="varVal"/>
			<xsd:element ref="array"/>
		</xsd:choice>
		<xsd:attribute name="type" type="varType" use="required"/>
	</xsd:complexType>

	<!-- ********** CRD Array ********** -->

	<!-- ArrayBound -->
	<xsd:element name="dimension" type="xsd:int" default="1"/>
	<xsd:element name="lBound" type="xsd:int" default="0"/>
	<xsd:element name="elements" type="xsd:int"/>
	
	<xsd:element name="arrayBound">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element ref="lBound"/>
				<xsd:element ref="elements"/>
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>

	<!-- ArrayData -->
	<xsd:element name="arrayData">
		<xsd:complexType>
			<xsd:choice>
				<xsd:element ref="boolVal" maxOccurs="unbounded"/>
				<xsd:element ref="cVal" maxOccurs="unbounded"/>
				<xsd:element ref="bVal" maxOccurs="unbounded"/>
				<xsd:element ref="iVal" maxOccurs="unbounded"/>
				<xsd:element ref="uiVal" maxOccurs="unbounded"/>
				<xsd:element ref="lVal" maxOccurs="unbounded"/>
				<xsd:element ref="ulVal" maxOccurs="unbounded"/>
				<xsd:element ref="fltVal" maxOccurs="unbounded"/>
				<xsd:element ref="dblVal" maxOccurs="unbounded"/>
				<xsd:element ref="date" maxOccurs="unbounded"/>
				<xsd:element ref="bstrVal" maxOccurs="unbounded"/>
				<xsd:element ref="varVal" maxOccurs="unbounded"/>
				<xsd:element ref="arrayData" maxOccurs="unbounded"/>
			</xsd:choice>
		</xsd:complexType>
	</xsd:element>
	
	<!-- Array -->
	<xsd:element name="array">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element ref="dimension"/>
				<xsd:element ref="arrayBound" maxOccurs="unbounded"/>
				<xsd:element ref="arrayData"/>
			</xsd:sequence>
			<xsd:attribute name="type" type="varType" use="required"/>
		</xsd:complexType>
	</xsd:element>

	<!-- ********** Method/Property Info Elements ********** -->
	 <xsd:complexType name="MemberInfoType">
		<xsd:sequence>
			<xsd:element ref="HelpString" minOccurs="0"/>
			<xsd:element ref="Args" minOccurs="0"/>
			<xsd:element ref="Result" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:element name="HelpString" type="xsd:string"/>

	<xsd:element name="Args" type="ArgsType"/>
	<xsd:complexType name="ArgsType">
		<xsd:sequence>
			<xsd:element ref="Arg" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:element name="Result" type="ResultType"/>
	<xsd:complexType name="ResultType">
		<xsd:sequence>
			<xsd:element ref="HelpString" minOccurs="0"/>
			<xsd:element ref="VarInfo" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:element name="Arg" type="ArgType"/>
	<xsd:complexType name="ArgType">
		<xsd:complexContent>
			<xsd:extension base="ResultType">
				<xsd:attribute name="index" type="xsd:int" use="required"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>

	<xsd:element name="VarInfo" type="VarInfoType"/>
	<xsd:complexType name="VarInfoType">
		<xsd:sequence>
			<xsd:element ref="DataInfo" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute name="type" type="varTypeArray"/>
	</xsd:complexType>

	<xsd:element name="DataInfo" type="DataInfoType"/>
	<xsd:complexType name="DataInfoType">
		<xsd:sequence>
			<xsd:choice>
				<xsd:sequence>
					<xsd:element ref="Min" minOccurs="0"/>
					<xsd:element ref="Max" minOccurs="0"/>
					<xsd:element ref="Step" minOccurs="0"/>
				</xsd:sequence>
				<xsd:element ref="List"	minOccurs="0" maxOccurs="unbounded"/>
				<xsd:element ref="VarInfo"	minOccurs="0"/>
			</xsd:choice>
		</xsd:sequence>
		<xsd:attribute name="index" type="xsd:int"/>
	</xsd:complexType>

	<xsd:element name="Min" type="xsd:double"/>
	<xsd:element name="Max" type="xsd:double"/>
	<xsd:element name="Step" type="xsd:double"/>
	<xsd:element name="List" type="xsd:string"/>
	
	<!-- ********** Common Elements ********** -->

	<xsd:attributeGroup name="comAttributes">
		<xsd:attribute name="name" type="xsd:string"/>
		<xsd:attribute name="option" type="xsd:string"/>
		<xsd:attribute name="key" type="xsd:string"/>
		<xsd:attribute name="helpstring" type="xsd:string"/>
	</xsd:attributeGroup>

	<xsd:element name="ObjectKey" type="xsd:string"/>

	<xsd:element name="Attribute" type="xsd:int"/>
	<xsd:element name="Help" type="xsd:string"/>
	<xsd:element name="ID" type="Variant"/>
	<xsd:element name="Value" type="Variant"/>
	<xsd:element name="DateTime" type="xsd:dateTime"/>

	<xsd:element name="DateCreated" type="xsd:dateTime"/>
	<xsd:element name="DateLastAccessed" type="xsd:dateTime"/>
	<xsd:element name="DateLastModified" type="xsd:dateTime"/>
	<xsd:element name="Path" type="xsd:string"/>
	<xsd:element name="Size" type="xsd:int"/>
	<xsd:element name="Type" type="xsd:string"/>
	<xsd:element name="FileName" type="xsd:string"/>
	<xsd:element name="Microsecond" type="xsd:int"/>
	<xsd:element name="Timeout" type="xsd:int"/>
	<xsd:element name="State" type="xsd:int"/>
	<xsd:element name="Parameters" type="Variant"/>
	<xsd:element name="Description" type="xsd:string"/>
	<xsd:element name="Destination" type="xsd:string"/>
	<xsd:element name="Source" type="xsd:string"/>

	<xsd:element name="Get_Attribute_Info" type="MemberInfoType"/>
	<xsd:element name="Get_Help_Info" type="MemberInfoType"/>
	<xsd:element name="Get_ID_Info" type="MemberInfoType"/>
	<xsd:element name="Put_ID_Info" type="MemberInfoType"/>
	<xsd:element name="Get_DateCreated_Info" type="MemberInfoType"/>
	<xsd:element name="Get_DateLastAccessed_Info" type="MemberInfoType"/>
	<xsd:element name="Get_DateLastModified_Info" type="MemberInfoType"/>
	<xsd:element name="Get_Path_Info" type="MemberInfoType"/>
	<xsd:element name="Get_Size_Info" type="MemberInfoType"/>
	<xsd:element name="Get_Type_Info" type="MemberInfoType"/>
	<xsd:element name="Get_Value_Info" type="MemberInfoType"/>
	<xsd:element name="Put_Value_Info" type="MemberInfoType"/>
	<xsd:element name="Get_FileName_Info" type="MemberInfoType"/>
	<xsd:element name="Get_DateTime_Info" type="MemberInfoType"/>
	<xsd:element name="Get_Microsecond_Info" type="MemberInfoType"/>
	<xsd:element name="Get_Parameters_Info" type="MemberInfoType"/>
	<xsd:element name="Put_Parameters_Info" type="MemberInfoType"/>
	<xsd:element name="Get_State_Info" type="MemberInfoType"/>
	<xsd:element name="Get_Timeout_Info" type="MemberInfoType"/>
	<xsd:element name="Put_Timeout_Info" type="MemberInfoType"/>
	<xsd:element name="Get_Description_Info" type="MemberInfoType"/>
	<xsd:element name="Get_Destination_Info" type="MemberInfoType"/>
	<xsd:element name="Get_Number_Info" type="MemberInfoType"/>
	<xsd:element name="Get_Source_Info" type="MemberInfoType"/>

	<xsd:element name="Get_ExtensionNames_Info" type="MemberInfoType"/>
	<xsd:element name="Get_FileNames_Info" type="MemberInfoType"/>
	<xsd:element name="Get_RobotNames_Info" type="MemberInfoType"/>
	<xsd:element name="Get_TaskNames_Info" type="MemberInfoType"/>
	<xsd:element name="Get_VariableNames_Info" type="MemberInfoType"/>
	<xsd:element name="Get_CommandNames_Info" type="MemberInfoType"/>

	<xsd:element name="Execute_Info" type="MemberInfoType"/>
	<xsd:element name="Copy_Info" type="MemberInfoType"/>
	<xsd:element name="Delete_Info" type="MemberInfoType"/>
	<xsd:element name="Move_Info" type="MemberInfoType"/>
	<xsd:element name="Run_Info" type="MemberInfoType"/>
	<xsd:element name="Accelerate_Info" type="MemberInfoType"/>
	<xsd:element name="Change_Info" type="MemberInfoType"/>
	<xsd:element name="Chuck_Info" type="MemberInfoType"/>
	<xsd:element name="Drive_Info" type="MemberInfoType"/>
	<xsd:element name="GoHome_Info" type="MemberInfoType"/>
	<xsd:element name="Halt_Info" type="MemberInfoType"/>
	<xsd:element name="Hold_Info" type="MemberInfoType"/>
	<xsd:element name="Rotate_Info" type="MemberInfoType"/>
	<xsd:element name="Speed_Info" type="MemberInfoType"/>
	<xsd:element name="Unchuck_Info" type="MemberInfoType"/>
	<xsd:element name="Unhold_Info" type="MemberInfoType"/>
	<xsd:element name="Start_Info" type="MemberInfoType"/>
	<xsd:element name="Stop_Info" type="MemberInfoType"/>
	<xsd:element name="Cancel_Info" type="MemberInfoType"/>
	<xsd:element name="Clear_Info" type="MemberInfoType"/>
	<xsd:element name="Reply_Info" type="MemberInfoType"/>

	<!-- 
================================================================================
	 CRD Structure (Object model)
================================================================================
-->

	<!-- ********** CRD [Root] ********** -->
	<xsd:element name="CRD" type="CRDType"/>
	<xsd:complexType name="CRDType">
		<xsd:sequence>
			<xsd:element ref="Help" minOccurs="0"/>
			<xsd:element ref="Version" minOccurs="0"/>
			<xsd:element ref="Controller_Info" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:choice minOccurs="0" maxOccurs="unbounded">
				<xsd:element ref="Controller"/>
			</xsd:choice>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:element name="Version" type="xsd:string"/>

	<!-- ********** CRD Controller ********** -->
	<xsd:element name="Controller" type ="ControllerType"/>
	<xsd:complexType name="ControllerType">
		<xsd:sequence>
			<xsd:element ref="Attribute" minOccurs="0"/>
			<xsd:element ref="Help" minOccurs="0"/>
			<xsd:element ref="ID" minOccurs="0"/>
			<xsd:choice minOccurs="0" maxOccurs="unbounded">
				<xsd:element ref="Extension"/>
				<xsd:element ref="File"/>
				<xsd:element ref="Robot"/>
				<xsd:element ref="Task"/>
				<xsd:element ref="Variable"/>
				<xsd:element ref="Command"/>
				<xsd:element ref="Message"/>
			</xsd:choice>
		</xsd:sequence>
		<xsd:attributeGroup ref="comAttributes"/>
		<xsd:attribute name="provider" type="xsd:string"/>
		<xsd:attribute name="machine" type="xsd:string"/>
	</xsd:complexType>

	<!-- ********** CRD Extension ********** -->
	<xsd:element name="Extension" type ="ExtensionType"/>
	<xsd:complexType name="ExtensionType">
		<xsd:sequence>
			<xsd:element ref="Attribute" minOccurs="0"/>
			<xsd:element ref="Help" minOccurs="0"/>
			<xsd:element ref="ID" minOccurs="0"/>
			<xsd:element ref="Variable" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attributeGroup ref="comAttributes"/>
	</xsd:complexType>

	<!-- ********** CRD File ********** -->
	<xsd:element name="File" type="FileType"/>
	<xsd:complexType name ="FileType">
		<xsd:sequence>
			<xsd:element ref="Attribute" minOccurs="0"/>
			<xsd:element ref="Help" minOccurs="0"/>
			<xsd:element ref="ID" minOccurs="0"/>
			<xsd:element ref="DateCreated" minOccurs="0"/>
			<xsd:element ref="DateLastAccessed" minOccurs="0"/>
			<xsd:element ref="DateLastModified" minOccurs="0"/>
			<xsd:element ref="Path" minOccurs="0"/>
			<xsd:element ref="Size" minOccurs="0"/>
			<xsd:element ref="Type" minOccurs="0"/>
			<xsd:element ref="Value" minOccurs="0"/>
			<xsd:choice minOccurs="0" maxOccurs="unbounded">
				<xsd:element ref="File"/>
				<xsd:element ref="Variable"/>
			</xsd:choice>
		</xsd:sequence>
		<xsd:attributeGroup ref="comAttributes"/>
	</xsd:complexType>

	<!-- ********** CRD Robot ********** -->
	<xsd:element name="Robot" type="RobotType"/>
	<xsd:complexType name="RobotType">
		<xsd:sequence>
			<xsd:element ref="Attribute" minOccurs="0"/>
			<xsd:element ref="Help" minOccurs="0"/>
			<xsd:element ref="ID" minOccurs="0"/>
			<xsd:element ref="Variable" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attributeGroup ref="comAttributes"/>
	</xsd:complexType>

	<!-- ********** CRD Task ********** -->
	<xsd:element name="Task" type="TaskType"/>
	<xsd:complexType name="TaskType">
		<xsd:sequence>
			<xsd:element ref="Attribute" minOccurs="0"/>
			<xsd:element ref="Help" minOccurs="0"/>
			<xsd:element ref="ID" minOccurs="0"/>
			<xsd:element ref="FileName" minOccurs="0"/>
			<xsd:element ref="Variable" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attributeGroup ref="comAttributes"/>
	</xsd:complexType>

	<!-- ********** CRD Variable ********** -->
	<xsd:element name="Variable" type="VariableType"/>
	<xsd:complexType name="VariableType">
		<xsd:sequence>
			<xsd:element ref="Attribute" minOccurs="0"/>
			<xsd:element ref="Help" minOccurs="0"/>
			<xsd:element ref="ID" minOccurs="0"/>
			<xsd:element ref="DateTime" minOccurs="0"/>
			<xsd:element ref="Microsecond" minOccurs="0"/>
			<xsd:element ref="Value" minOccurs="0"/>
		</xsd:sequence>
		<xsd:attributeGroup ref="comAttributes"/>
	</xsd:complexType>

	<!-- ********** CRD Command ********** -->
	<xsd:element name="Command" type="CommandType"/>
	<xsd:complexType name="CommandType">
		<xsd:sequence>
			<xsd:element ref="Attribute" minOccurs="0"/>
			<xsd:element ref="Help" minOccurs="0"/>
			<xsd:element ref="ID" minOccurs="0"/>
			<xsd:element ref="Timeout" minOccurs="0"/>
			<xsd:element ref="State" minOccurs="0"/>
			<xsd:element ref="Parameters" minOccurs="0"/>
		</xsd:sequence>
		<xsd:attributeGroup ref="comAttributes"/>
	</xsd:complexType>

	<!-- ********** CRD Message ********** -->
	<xsd:element name="Message" type="MessageType"/>
	<xsd:complexType name="MessageType">
		<xsd:sequence>
			<xsd:element ref="DateTime" minOccurs="0"/>
			<xsd:element ref="Description" minOccurs="0"/>
			<xsd:element ref="Destination" minOccurs="0"/>
			<xsd:element ref="Source" minOccurs="0"/>
			<xsd:element ref="Value" minOccurs="0"/>
		</xsd:sequence>
		<xsd:attribute name="number" type="xsd:int"/>
		<xsd:attribute name="key" type="xsd:string"/>
	</xsd:complexType>

	<!-- 
================================================================================
	 CRD Structure (Device capability)
================================================================================
-->

	<!-- ********** CRD Controller ********** -->
	<xsd:element name="Controller_Info" type ="ControllerInfoType"/>
	<xsd:complexType name="ControllerInfoType">
		<xsd:sequence>
			<xsd:element ref="ObjectKey" minOccurs="0"/>
			<xsd:element ref="HelpString" minOccurs="0"/>
			<xsd:element ref="Args" minOccurs="0"/>
			<xsd:element ref="Get_Attribute_Info" minOccurs="0"/>
			<xsd:element ref="Get_Help_Info" minOccurs="0"/>
			<xsd:element ref="Put_ID_Info" minOccurs="0"/>
			<xsd:element ref="Get_ID_Info" minOccurs="0"/>
			<xsd:element ref="Get_ExtensionNames_Info" minOccurs="0"/>
			<xsd:element ref="Get_FileNames_Info" minOccurs="0"/>
			<xsd:element ref="Get_RobotNames_Info" minOccurs="0"/>
			<xsd:element ref="Get_TaskNames_Info" minOccurs="0"/>
			<xsd:element ref="Get_VariableNames_Info" minOccurs="0"/>
			<xsd:element ref="Get_CommandNames_Info" minOccurs="0"/>
			<xsd:element ref="Execute_Info" minOccurs="0"/>
			<xsd:choice minOccurs="0" maxOccurs="unbounded">
				<xsd:element ref="Extension_Info"/>
				<xsd:element ref="File_Info"/>
				<xsd:element ref="Robot_Info"/>
				<xsd:element ref="Task_Info"/>
				<xsd:element ref="Variable_Info"/>
				<xsd:element ref="Command_Info"/>
				<xsd:element ref="Message_Info"/>
			</xsd:choice>
		</xsd:sequence>
	</xsd:complexType>

	<!-- ********** CRD Extension ********** -->
	<xsd:element name="Extension_Info" type ="ExtensionInfoType"/>
	<xsd:complexType name="ExtensionInfoType">
		<xsd:sequence>
			<xsd:element ref="ObjectKey" minOccurs="0"/>
			<xsd:element ref="HelpString" minOccurs="0"/>
			<xsd:element ref="Args" minOccurs="0"/>
			<xsd:element ref="Get_Attribute_Info" minOccurs="0"/>
			<xsd:element ref="Get_Help_Info" minOccurs="0"/>
			<xsd:element ref="Put_ID_Info" minOccurs="0"/>
			<xsd:element ref="Get_ID_Info" minOccurs="0"/>
			<xsd:element ref="Get_VariableNames_Info" minOccurs="0"/>
			<xsd:element ref="Execute_Info" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>

	<!-- ********** CRD File ********** -->
	<xsd:element name="File_Info" type="FileInfoType"/>
	<xsd:complexType name ="FileInfoType">
		<xsd:sequence>
			<xsd:element ref="ObjectKey" minOccurs="0"/>
			<xsd:element ref="HelpString" minOccurs="0"/>
			<xsd:element ref="Args" minOccurs="0"/>
			<xsd:element ref="Get_Attribute_Info" minOccurs="0"/>
			<xsd:element ref="Get_Help_Info" minOccurs="0"/>
			<xsd:element ref="Put_ID_Info" minOccurs="0"/>
			<xsd:element ref="Get_ID_Info" minOccurs="0"/>
			<xsd:element ref="Get_DateCreated_Info" minOccurs="0"/>
			<xsd:element ref="Get_DateLastAccessed_Info" minOccurs="0"/>
			<xsd:element ref="Get_DateLastModified_Info" minOccurs="0"/>
			<xsd:element ref="Get_Path_Info" minOccurs="0"/>
			<xsd:element ref="Get_Size_Info" minOccurs="0"/>
			<xsd:element ref="Get_Type_Info" minOccurs="0"/>
			<xsd:element ref="Put_Value_Info" minOccurs="0"/>
			<xsd:element ref="Get_Value_Info" minOccurs="0"/>
			<xsd:element ref="Get_FileNames_Info" minOccurs="0"/>
			<xsd:element ref="Get_VariableNames_Info" minOccurs="0"/>
			<xsd:element ref="Copy_Info" minOccurs="0"/>
			<xsd:element ref="Delete_Info" minOccurs="0"/>
			<xsd:element ref="Move_Info" minOccurs="0"/>
			<xsd:element ref="Run_Info" minOccurs="0"/>
			<xsd:element ref="Execute_Info" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>

	<!-- ********** CRD Robot ********** -->
	<xsd:element name="Robot_Info" type="RobotInfoType"/>
	<xsd:complexType name="RobotInfoType">
		<xsd:sequence>
			<xsd:element ref="ObjectKey" minOccurs="0"/>
			<xsd:element ref="HelpString" minOccurs="0"/>
			<xsd:element ref="Args" minOccurs="0"/>
			<xsd:element ref="Get_Attribute_Info" minOccurs="0"/>
			<xsd:element ref="Get_Help_Info" minOccurs="0"/>
			<xsd:element ref="Put_ID_Info" minOccurs="0"/>
			<xsd:element ref="Get_ID_Info" minOccurs="0"/>
			<xsd:element ref="Get_VariableNames_Info" minOccurs="0"/>
			<xsd:element ref="Accelerate_Info" minOccurs="0"/>
			<xsd:element ref="Change_Info" minOccurs="0"/>
			<xsd:element ref="Chuck_Info" minOccurs="0"/>
			<xsd:element ref="Drive_Info" minOccurs="0"/>
			<xsd:element ref="GoHome_Info" minOccurs="0"/>
			<xsd:element ref="Halt_Info" minOccurs="0"/>
			<xsd:element ref="Hold_Info" minOccurs="0"/>
			<xsd:element ref="Move_Info" minOccurs="0"/>
			<xsd:element ref="Rotate_Info" minOccurs="0"/>
			<xsd:element ref="Speed_Info" minOccurs="0"/>
			<xsd:element ref="Unchuck_Info" minOccurs="0"/>
			<xsd:element ref="Unhold_Info" minOccurs="0"/>
			<xsd:element ref="Execute_Info" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>

	<!-- ********** CRD Task ********** -->
	<xsd:element name="Task_Info" type="TaskInfoType"/>
	<xsd:complexType name="TaskInfoType">
		<xsd:sequence>
			<xsd:element ref="ObjectKey" minOccurs="0"/>
			<xsd:element ref="HelpString" minOccurs="0"/>
			<xsd:element ref="Args" minOccurs="0"/>
			<xsd:element ref="Get_Attribute_Info" minOccurs="0"/>
			<xsd:element ref="Get_Help_Info" minOccurs="0"/>
			<xsd:element ref="Put_ID_Info" minOccurs="0"/>
			<xsd:element ref="Get_ID_Info" minOccurs="0"/>
			<xsd:element ref="Get_FileName_Info" minOccurs="0"/>
			<xsd:element ref="Get_VariableNames_Info" minOccurs="0"/>
			<xsd:element ref="Delete_Info" minOccurs="0"/>
			<xsd:element ref="Start_Info" minOccurs="0"/>
			<xsd:element ref="Stop_Info" minOccurs="0"/>
			<xsd:element ref="Execute_Info" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>

	<!-- ********** CRD Variable ********** -->
	<xsd:element name="Variable_Info" type="VariableInfoType"/>
	<xsd:complexType name="VariableInfoType">
		<xsd:sequence>
			<xsd:element ref="ObjectKey" minOccurs="0"/>
			<xsd:element ref="HelpString" minOccurs="0"/>
			<xsd:element ref="Args" minOccurs="0"/>
			<xsd:element ref="Get_Attribute_Info" minOccurs="0"/>
			<xsd:element ref="Get_Help_Info" minOccurs="0"/>
			<xsd:element ref="Put_ID_Info" minOccurs="0"/>
			<xsd:element ref="Get_ID_Info" minOccurs="0"/>
			<xsd:element ref="Get_DateTime_Info" minOccurs="0"/>
			<xsd:element ref="Get_Microsecond_Info" minOccurs="0"/>
			<xsd:element ref="Put_Value_Info" minOccurs="0"/>
			<xsd:element ref="Get_Value_Info" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>

	<!-- ********** CRD Command ********** -->
	<xsd:element name="Command_Info" type="CommandInfoType"/>
	<xsd:complexType name="CommandInfoType">
		<xsd:sequence>
			<xsd:element ref="ObjectKey" minOccurs="0"/>
			<xsd:element ref="HelpString" minOccurs="0"/>
			<xsd:element ref="Args" minOccurs="0"/>
			<xsd:element ref="Get_Attribute_Info" minOccurs="0"/>
			<xsd:element ref="Get_Help_Info" minOccurs="0"/>
			<xsd:element ref="Put_ID_Info" minOccurs="0"/>
			<xsd:element ref="Get_ID_Info" minOccurs="0"/>
			<xsd:element ref="Put_Timeout_Info" minOccurs="0"/>
			<xsd:element ref="Get_Timeout_Info" minOccurs="0"/>
			<xsd:element ref="Get_State_Info" minOccurs="0"/>
			<xsd:element ref="Put_Parameters_Info" minOccurs="0"/>
			<xsd:element ref="Get_Parameters_Info" minOccurs="0"/>
			<xsd:element ref="Cancel_Info" minOccurs="0"/>
			<xsd:element ref="Execute_Info" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>

	<!-- ********** CRD Message ********** -->
	<xsd:element name="Message_Info" type="MessageInfoType"/>
	<xsd:complexType name="MessageInfoType">
		<xsd:sequence>
			<xsd:element ref="ObjectKey" minOccurs="0"/>
			<xsd:element ref="HelpString" minOccurs="0"/>
			<xsd:element ref="Get_Number_Info" minOccurs="0"/>
			<xsd:element ref="Get_DateTime_Info" minOccurs="0"/>
			<xsd:element ref="Get_Description_Info" minOccurs="0"/>
			<xsd:element ref="Get_Destination_Info" minOccurs="0"/>
			<xsd:element ref="Get_Source_Info" minOccurs="0"/>
			<xsd:element ref="Get_Value_Info" minOccurs="0"/>
			<xsd:element ref="Clear_Info" minOccurs="0"/>
			<xsd:element ref="Reply_Info" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>

</xsd:schema>

