< PreviousField Device Integration (FDI) – Part 5: Information Model RELEASED FCG TS62769-5 , Ed. 1.2.0, 22 Jul 2019 Page 39 of 67 DirectDeviceAccess Object The support of DirectDeviceAccess for an Object is declared by aggregating an instance of the DirectDeviceAccess Type as illustrated in Figure 19. Com_41 InstanceSpace TypeSpace XYZ-DeviceType DirectDeviceAccess Type DirectAccess InitDirectAccess EndDirectAccess Transfer Figure 19 – DirectDeviceAccess instance This Object is used as container for the DirectDeviceAccess Methods and shall have the BrowseName DirectAccess. It is formally defined in Table 29. HasComponent is used to reference from a TopologyElement (for example, a Device) to its “DirectDeviceAccess” Object. The DirectDeviceAccessType and each DirectAccess Object share the same Methods. Table 29 – DirectDeviceAccess Instance Definition Attribute Value BrowseName DirectAccess References NodeClass BrowseName DataType TypeDefinition ModellingRule HasTypeDefinition ObjectType DirectDeviceAccessType Defined in 9.4.2. InitDirectAccess Method InitDirectAccess opens a logic communication channel. The Device to access is specified via the ObjectId argument of the Call Service. It is up to the FDI Server whether this Method already opens a connection to the physical device. The signature of this Method is specified below. Table 30 and Table 31 specify the arguments and AddressSpace representation, respectively. Signature Field Device Integration (FDI) – Part 5: Information Model RELEASED FCG TS62769-5, Ed. 1.2.0, 22 Jul 2019 Page 40 of 67 InitDirectAccess( [in] String Context, [out] Int32 InitDirectAccessError); Table 30 – InitDirectAccess Method Arguments Argument Description Context A string used to provide context information about the current activity going on in the FDI Client/UIP. InitDirectAccessError 0 – OK -1 – E_NotSupported – the device can not be directly accessed -2 – E_LockRequired – the element is not locked as required -3 – E_InvalidState – the device is already in DirectAccess mode Table 31 – InitDirectAccess Method AddressSpace Definition Attribute Value BrowseName InitDirectAccess References NodeClass BrowseName DataType TypeDefinition ModellingRule HasProperty Variable InputArguments Argument[] PropertyType Mandatory HasProperty Variable OutputArguments Argument[] PropertyType Mandatory EndDirectAccess Method EndDirectAccess ends direct access. The directly accessed Device is specified via the ObjectId argument of the Call Service. The signature of this Method is specified below. Table 32 and Table 33 specify the arguments and AddressSpace representation, respectively. Signature EndDirectAccess( [in] Boolean InvalidateCache, [out] Int32 EndDirectAccessError); Table 32 – EndDirectAccess Method Arguments Argument Description InvalidateCache If True, the FDI Server will invalidate any cached values for Device Parameters. This means that these Parameters will be re-read before they are used again. EndDirectAccessError 0 – OK -1 – E_InvalidState – the device is not in DirectAccess mode. Table 33 – EndDirectAccess Method AddressSpace Definition Attribute Value BrowseName EndDirectAccess References NodeClass BrowseName DataType TypeDefinition ModellingRule HasProperty Variable InputArguments Argument[] PropertyType Mandatory HasProperty Variable OutputArguments Argument[] PropertyType Mandatory Transfer Method Transfer is used to transfer data to and from the Device. The format of send or receive data is protocol specific. Field Device Integration (FDI) – Part 5: Information Model RELEASED FCG TS62769-5 , Ed. 1.2.0, 22 Jul 2019 Page 41 of 67 The signature of this Method is specified below. Table 34 and Table 35 specify the arguments and AddressSpace representation, respectively. Signature Transfer( [in] String SendData, [out] String ReceiveData, [out] Int32 TransferError); Table 34 – Transfer Method Arguments Argument Description SendData XML document based on the TransferSendDataType as specified in the communication profile-specific XML schema. See FCG TS62769-4 and FCG TS 62769-10x. ReceiveData XML document based on the TransferResultDataType as specified in the communication profile-specific XML schema. See FCG TS62769-4 and FCG TS 62769-10x. TransferError 0 – OK -1 – E_InvalidState – the device is not in DirectAccess mode. Table 35 – Transfer Method AddressSpace Definition Attribute Value BrowseName Transfer References NodeClass BrowseName DataType TypeDefinition ModellingRule HasProperty Variable InputArguments Argument[] PropertyType Mandatory HasProperty Variable OutputArguments Argument[] PropertyType Mandatory 10 Parameter Types 10.1 General IEC 62541-100 defines a Parameter as “a variable of the Device that can be used for configuration, monitoring or control purposes. In the Information Model it is synonymous to an OPC UA DataVariable.” When discussing Parameter Types we have to consider DataType and VariableType. Each OPC UA DataVariable (Parameter) has a Value Attribute, which is of a certain DataType. OPC UA has already defined a set of built-in DataTypes, which are sufficient for the majority of types needed for FDI. VariableTypes represent the type definition of (Data)Variables. Such a type definition typically defines certain behaviour as well as mandatory or optional Properties. The HasTypeDefinition Reference is used to define the VariableType for a Variable. OPC UA already defines a set of VariableTypes as illustrated in Figure 20. BaseDataVariableType is the base type and can be used if no more specialized type information is available (see IEC 62541-5). AnalogItemType and DiscreteItemTypes (see IEC 62541-8) are more concrete types. Field Device Integration (FDI) – Part 5: Information Model RELEASED FCG TS62769-5, Ed. 1.2.0, 22 Jul 2019 Page 42 of 67 DataItemType AnalogItemType (DataType: Number) DiscreteItemType Definition:: PropertyType ValuePrecision:: PropertyType InstrumentRange:: PropertyType EURange:: PropertyType EngineeringUnits:: PropertyType BaseDataVariableType TwoStateDiscreteType (DataType: Boolean) MultiStateDiscreteType (DataType: UInteger) TrueState:: PropertyType EngineeringUnits:: PropertyType EnumStrings:: PropertyType TimeZone:: PropertyType DaylightSavingTime:: PropertyType Not defined on the TypeDefinition Node, but can be applied on each DataVariable Figure 20 – OPC UA VariableTypes including OPC UA DataAccess The mapping of EDD Data Types to OPC UA DataTypes and VariableTypes is specified in 15.6. 10.2 ScalingFactor Property The Value Attribute of Variables contains the raw value returned from the device. However, Servers can expose the Property ScalingFactor. It is suggested, that the (raw) value is multiplied by this factor before being displayed. The Property shall be aggregated by each Variable that it applies to. It is formally defined in Table 36. Table 36 – ScalingFactor Property Definition Name DataType Description ScalingFactor Double This Property specifies the scaling factor to be used when displaying the Variable value. 10.3 Min_Max_Values Property This Property specifies one or more ranges to which a Variable value shall be set. If there are multiple ranges they shall not overlap. A “Null” for the MIN_Value or the MAX_Value indicates that this boundary is not limited. The Property shall be aggregated by each Variable that it applies to. It is formally defined in Table 36. Field Device Integration (FDI) – Part 5: Information Model RELEASED FCG TS62769-5 , Ed. 1.2.0, 22 Jul 2019 Page 43 of 67 Table 37 – Min_Max_Values Property Definition Name DataType Description Min_Max_Values Variant_Range[] This Property specifies the range or ranges to which a Variable Value shall be set. The Variant_Range structure specifies a single range (a MIN_Value and a MAX_Value). The BaseDataType is used, because such a range can be applied to Variables of different DataTypes – in particular integer, floating point, date and duration. The actual datatype used has to match the DataType of the Variable value. It can also be Null which means that this boundary is not defined. Its elements are defined in Table 38. Table 38 – Variant_Range DataType Structure Name Type Description Variant_Range structure MIN_Value BaseDataType Specifies the upper bound of values to which a Variable shall be set. Null indicates that MIN_Value has no limit. MAX_Value BaseDataType Specifies the lower bound of values to which a Variable shall be set. Null indicates that MAX_Value has no limit. Its representation in the AddressSpace is defined in Table 39. Table 39 – Variant_Range Definition Attributes Value BrowseName Variant_Range 11 FDI StatusCodes Clause 11 defines OPC UA StatusCodes that are specific to FDI Servers. 11.1 Structure of the StatusCode The general structure of the StatusCode is specified in IEC 62541-4. The exact bit assignments based on IEC 62541-4 are shown in Table 40. Field Device Integration (FDI) – Part 5: Information Model RELEASED FCG TS62769-5, Ed. 1.2.0, 22 Jul 2019 Page 44 of 67 Table 40 – StatusCode Bit Assignments Field Bit Range Description Severity 30 .. 31 Indicates whether the StatusCode represents a good, bad or uncertain condition. These bits have the following meanings: Severity Bits Description Good Success 00 The operation was successful; results may be used. Uncertain Warning 01 The operation was partially successful; results might not be suitable for some purposes. Bad Failure 10 The operation failed and any associated results cannot be used. Reserved 11 Reserved for future use. Should also be treated as “Bad”. Reserved 29 .. 28 Reserved for future use. Shall always be zero. SubCode 16 .. 27 The code is a numeric value assigned to represent different conditions. Each code has a symbolic name and a numeric value. All descriptions in this specification refer to the symbolic name. The numeric values are defined within the FDI Type Libraries.. Reserved 12 .. 15 Reserved for future use. Shall always be zero. InfoType 10 .. 11 The type of information contained in the info bits. These bits have the following meanings: InfoType Bits Description NotUsed 00 The info bits are not used and shall be set to zero. DataValue 01 The StatusCode and its info bits are associated with a data value returned from the FDI Server. Reserved 1X Reserved for future use. The info bits shall be ignored. InfoBits 0 .. 9 Additional information bits that depend on the Info Type field. Table 41 describes the structure of the InfoBits when the Info Type is set to DataValue (01). Table 41 – DataValue InfoBits Info Type Bit Range Description LimitBits 8 .. 9 The limit bits associated with the data value. The limits bits have the following meanings: Limit Bits Description None 00 The value is free to change. Low 01 The value is at the lower limit for the data source. High 10 The value is at the higher limit for the data source. Constant 11 The value is constant and cannot change. Overflow 7 If this bit is set, not every detected change has been returned since the FDI Server’s queue buffer for the subscribed Variable reached its limit and had to purge out data. Reserved 0 .. 6 Reserved for future use. Shall always be zero. 11.2 FDI specific operation level result codes IEC 62541-4 includes a set of common operational result codes which also apply to FDI. Table 42 contains Good (success) codes that are specifically defined for FDI. Table 42 – Good operation level result codes Symbolic Id Description Good_Edited This status applies to Variable values that are part of an EditContext (see 9.3 ). It is returned with values that are read or received in a DataChangeNotification from a Subscription. It defines that it is an edited value that has not been transferred from the EditContext to the Device. Good_PostActionFailed The value of a Variable was successfully read or written but one of the post actions failed. Good_DependentValueChanged This status applies to Variable values that are part of an EditContext (see 9.3 ). It is delivered with a dominant Variable value when all the following conditions apply: - the value of the Variable has not been changed, Field Device Integration (FDI) – Part 5: Information Model RELEASED FCG TS62769-5 , Ed. 1.2.0, 22 Jul 2019 Page 45 of 67 - the value of the Variable is legal, i.e. it is within the range or a valid enumeration value - the value of any of its dependent Variables was changed - all the changes have not been applied, yet. Good_Edited _DependentValueChanged This status applies to Variable values that are part of an EditContext (see 9.3 ). It is delivered with a dominant Variable value when all the following conditions apply: - the value of the Variable has been changed, - the value of the Variable is legal, i.e. it is within the range or a valid enumeration value - the value of any of its dependent Variables was changed - all the changes have not been applied, yet. Good_Edited _DominantValueChanged This status applies to Variable values that are part of an EditContext (see 9.3 ). It is delivered with a dependent Variable value when all the following conditions apply: - the value of the Variable has been changed, - the value of the Variable is legal, i.e. it is within the range or a valid enumeration value - the value of its dominant Variable was changed - all the changes have not been applied, yet. Good_Edited _DominantValueChanged _DependentValueChanged This status applies to Variable values that are part of an EditContext (see 9.3 ). It is delivered with a dependent Variable value when all the following conditions apply: - the value of the Variable has been changed, - the value of the Variable is legal, i.e. it is within the range or a valid enumeration value - the value of its dominant Variable was changed - the value of any of its dependent Variables was changed, - all the changes have not been applied, yet. Table 43 contains Uncertain codes that are specifically defined for FDI. Table 43 – Uncertain operation level result codes Symbolic Id Description Uncertain_DominantValueChanged This status applies to Variable values that are part of an EditContext (see 9.3 ).It is delivered with a dependent Variable value when a dominant value – e.g. an engineering unit – was changed and the dependent Variable may have to be recalculated. Uncertain_DependentValueChanged This status applies to Variable values that are part of an EditContext (see 9.3 ).It is delivered with a dominant Variable value when any of its dependent Variables was changed and not yet applied. The “uncertain” status indicates that the dominant variable value itself has uncertain quality. Uncertain _NoCommunicationLastUsableValue Communication to the data source has failed. The Variable value is the last value that had a good quality. Uncertain_LastUsableValue Whatever was updating this value will no longer be doing so. Uncertain_SubstituteValue The value is an operational value that was manually overwritten. Uncertain_InitialValue The value is an initial value for a Variable that normally receives its value from another Variable. Uncertain_SensorNotAccurate The value is at one of the sensor limits. Uncertain_EngineeringUnitsExceeded The value is outside of the range of values defined for this parameter. Uncertain_SubNormal The value is derived from multiple sources and has less than the required number of good sources. Table 44 contains Bad codes that are specifically defined for FDI. Field Device Integration (FDI) – Part 5: Information Model RELEASED FCG TS62769-5, Ed. 1.2.0, 22 Jul 2019 Page 46 of 67 Table 44 – Bad operation level result codes Symbolic Id Description Bad_Edited_OutOfRange This status applies to Variable values that are part of an EditContext (see 9.3 ). It is delivered with a Variable value when all the following conditions apply: - the value of the Variable has been changed, - the value is not a legal value (e.g. out of range or an invalid enumeration value) Bad_InitialValue_OutOfRange This status applies to Variable values that are part of an EditContext (see 9.3 ). It is delivered with a Variable value when all the following conditions apply: - the value is an initial value for a Variable that normally receives its value from another Variable, - the value is not a legal value (e.g. out of range or an invalid enumeration value) Bad_DominantValueChanged This status applies to Variable values that are part of an EditContext (see 9.3 ). It is delivered with a dependent Variable value when a dominant value – e.g. an engineering unit – was changed and the dependent Variable can not be accessed. Bad_DependentValueChanged This status applies to Variable values that are part of an EditContext (see 9.3 ).It is delivered with a dominant Variable value when any of its dependent Variables was changed and not yet applied. Bad_OutOfRange _DominantValueChanged This status applies to Variable values that are part of an EditContext (see 9.3 ). It is delivered with a dependent Variable when all the following conditions apply: - the value is not a legal value (e.g. out of range or an invalid enumeration value) - the value of its dominant Variable was changed - all the changes have not been applied, yet. Bad_Edited _OutOfRange _DominantValueChanged This status applies to Variable values that are part of an EditContext (see 9.3 ). It is delivered with a dependent Variable when all the following conditions apply: - the value of the Variable has been changed, - the value is not a legal value (e.g. out of range or an invalid enumeration value) - the value of its dominant Variable was changed - all the changes have not been applied, yet. Bad_OutOfRange _DominantValueChanged _DependenValueChanged This status applies to Variable values that are part of an EditContext (see 9.3 ). It is delivered with a dependent Variable when all the following conditions apply: - the value is not a legal value (e.g. out of range or an invalid enumeration value) - the value of its dominant Variable was changed - all the changes have not been applied, yet. Bad_Edited _OutOfRange _DominantValueChanged _DependenValueChanged This status applies to Variable values that are part of an EditContext (see 9.3 ). It is delivered with a dependent Variable when all the following conditions apply: - the value of the Variable has been changed, - the value is not a legal value (e.g. out of range or an invalid enumeration value), - the value of its dominant Variable was changed, - the value of any of its dependent Variables was changed, - all the changes have not been applied, yet. Bad_ConfigurationError There is a problem with the configuration that affects the usefulness of the value. Bad_DeviceFailure There has been a failure in the device/data source that generates the value. Bad_NodeInvalid The identifier does not refer to a valid Node in the Device Model. This result code is used both as service- and as operation-level result code. Bad_NotConnected The Variable should receive its value from another Variable, but has never been configured to do so. Bad_OutOfService The source of the data is not operational. Bad_SensorFailure There has been a failure in the sensor from which the value is derived by the device/data source. Bad_UIPHandleInvalid The handle does not refer to a subscribed Node Attribute. Bad_WaitingForInitialData Waiting for the FDI Server to obtain values from the underlying data source. After subscribing to Variables, it may take some time before values are delivered. In such cases an initial update may be sent with this status prior to the Notification with the first valid value. Field Device Integration (FDI) – Part 5: Information Model RELEASED FCG TS62769-5 , Ed. 1.2.0, 22 Jul 2019 Page 47 of 67 12 Specialized topology elements Devices and other topology eleme nts can be specialized using the modelling elements defined in this standard or in IEC 62541-100. No specific ObjectType is needed. A Communication Device for instance will have the CommunicationServices capability (Communication Devices and CommunicationServices are specified in FCG TS62769-7). Other specializations are possible applying the same techniques, for example, a Modular Communication Device. See IEC 62541-100 for the definition of Block Device and Modular Device. 13 Auditing 13.1 General Auditing is a requirement in many systems. It provides a means for tracking activities that occur as part of the normal operation of the system. It also provides a means for tracking abnormal behaviour. It is also a requirement from a security standpoint. When an audit trail is maintained by the FDI Server, all audit trail records related to services invoked by FDI Clients will be implicitly created. In addition, FDI Clients have means for providing additional audit context information as specified in 13.2 and 13.3. FDI Servers shall generate AuditEvents as specified in IEC 62541-4 and IEC 62541-5. These standards define AuditEvents for the following OPC UA Services: • Secure Channel Services • Session Services • NodeManagement Service Set (AddNode, DeleteNode) • Write Service • Method Service (“Call”) No AuditEvents are defined for reading and for subscriptions. The FDI Server generates AuditEvents using the standard OPC UA event mechanism. This allows an external OPC UA Client to subscribe to and store the audit entries in a log file or other storage location. 13.2 FDI Client-provided context information FDI Clients have various means for providing context information for the purpose of auditing: • the ClientDescription and SessionName passed by the FDI Client when creating the Session, • the context text from the Methods to initialise Lock or Direct Device Access. When an AuditUpdateMethodEvent is generated for the EnterLock and InitDirectAccess Methods, the audit context information will be used for the Message field of this event. 13.3 LogAuditTrailMessage Method LogAuditTrailMessage is used by the FDI Client to insert information about the current activity going on in the FDI Client into the audit trail of the FDI Server. Since it is a Method, it will be also inserted into the stream of AuditEvents. The message will be timestamped in the FDI Server. This Method shall be a component of the Server Object. The ObjectId parameter of the Call Service shall be the NodeId of the Server Object. Field Device Integration (FDI) – Part 5: Information Model RELEASED FCG TS62769-5, Ed. 1.2.0, 22 Jul 2019 Page 48 of 67 FDI Clients do not have to browse for the LogAuditTrailMessage Method. Rather they can use the well known NodeId of the Method declaration as the MethodId of the Call Service. The signature of this Method is specified below. Table 45 and Table 46 specify the arguments and AddressSpace representation, respectively. Signature LogAuditTrailMessage( [in] String Message); Table 45 – LogAuditTrailMessage Method Arguments Argument Description Message Free text describing the context. Table 46 – LogAuditTrailMessage Method AddressSpace Definition Attribute Value BrowseName LogAuditTrailMessage References NodeClass BrowseName DataType TypeDefinition ModellingRule HasProperty Variable InputArguments Argument[] PropertyType Mandatory When an AuditUpdateMethodEvent is generated for the LogAuditTrailMessage Method, the Message argument will be used for the Message field of this event. 14 FDI Server Version The FDI Technology Version supported by an FDI Server is exposed via an FDI-specific Property. The version exposed with this Property applies to • the Information Model, and • the XML Schema as used for UIDs and Actions. The Property shall be aggregated by the OPC UA Server Object. It is formally defined in Table 47. Table 47 – FDIServerVersion Property Definition Name DataType Description FDIServerVersion String This Property specifies the FDI Technology Version that this FDI Server supports. The syntax of the string is as defined in FCG TS62769-4. 15 Mapping FDI Package information to the FDI Information Model 15.1 General Clause 15 defines the mapping of EDDL and other FDI Package Information to the FDI Information Model and the underlying OPC UA and OPC UA Devices information models, respectively. The OPC UA Object Model provides a standard way for Servers to represent Objects to Clients. In order to meet this objective, the OPC UA Object Model allows the definition of Objects in terms of Variables and Methods. It also allows relationships to other Objects to be expressed. Next >