Subclause 5.5.1states: “Objectsare used to represent systems, system components, real-world objects, and software objects.” Therefore ObjectTypesshould be used if a type definition of thoseObjectTypesis useful (see A.2).
From a more abstract point of view Objectsare used to group Variablesand other Objectsin the AddressSpace. Therefore ObjectTypesshould be used when some common structures/groups of Objectsand/or Variablesshould be described. Clientscan use this knowledge to program against the ObjectTypestructure and use the TranslateBrowsePathsToNodeIds Servicedefined in OPC 10000-4on the instances.
Simple objects only having one value (e.g. a simple heat sensor) can also be modelled as VariableTypes. However, extensibility mechanisms should be considered (e.g. a complex heat sensor subtype could have several values) and whether that object should be exposed as an object in the Client's GUI or just as a value. Whenever a modeller is in doubt as to which solution to use the ObjectTypehaving one Variableshould be preferred.