The OPC Binary XML Schema defines the format of OPC Binary TypeDictionaries. Each OPC Binary TypeDictionaryis an XML document that contains one or more TypeDescriptionsthat describe the format of a binary-encoded value. Applications that have no advanced knowledge of a particular binary encoding can use the OPC Binary TypeDescriptionto interpret or construct a value.
The OPC Binary Type Description System does not define a standard mechanism to encodedata in binary. It only provides a standard way to describe an existing binary encoding. Many binary encodings will have a mechanism to describe types that could be encoded; however, these descriptions are useful only to applications that have knowledge of the type description system used with each binary encoding. The OPC Binary Type Description System is a generic syntax that can be used by any application to interpret any binary encoding.
The OPC Binary Type Description System was originally defined in the OPC Complex Data Specification. The OPC Binary Type Description System described in Annex C is quite different and is correctly described as the OPC Binary Type Description System Version 2.0.
Each TypeDescription is identified by a TypeName which shall be unique within the TypeDictionarythat defines it. Each TypeDictionaryalso has a TargetNamespacewhich should be unique among all OPC Binary TypeDictionaries. This means that the TypeNamequalified with the TargetNamespacefor the dictionaryshould be a globally-unique identifier for aTypeDescription.
Each binary encoding is built from a set of opaque building blocks that are either primitive types with a fixed length or variable-length types with a structure that is too complex to describe properly in an XML document. These building blocks are described with an OpaqueType. An instance of one of these building blocks is a binary-encoded value.
The OPC Binary Type Description System defines a set of standard OpaqueTypes that all OPC Binary TypeDictionariesshould use to build their TypeDescriptions. These standard type descriptions are described in Clause E.3.
In some cases, the binary encoding described by an OpaqueTypemay have a fixed size which would allow an application to skip an encoded value that it does not understand. If that is the case, then the LengthInBitsattribute should be specified for the OpaqueType.If authors of TypeDictionaries need to define new OpaqueTypesthat do not have a fixed size then they should use the documentation elements to describe how to encode binary values for the type. This description should provide enough detail to allow a human to write a program that can interpret instances of the type.
A StructuredTypebreaks a complex value into a sequence of values that are described by a FieldType. Each FieldTypehas a name, type and a number of qualifiers that specify when the field is used and how many instances of the type exist. A FieldTypeis described completely in E.2.6.
An EnumeratedTypedescribes a numeric value that has a limited set of possible values, each of which has a descriptive name. EnumeratedTypesprovide a convenient way to capture semantic information associated with what would otherwise be an opaque numeric value.