< PreviousField Device Integration (FDI) – Part 2: Client RELEASED FCG TS62769-2 , Ed. 1.2.0, 27 Jun 2019 Page 79 of 145 • Menu • Page • RowBreak • Table • Window The content elements are • Action • Chart • Graph • Grid • Image • Parameter • Plugin • Text The algorithm for rendering these elements onto a computer screen is specified in FCG TS61804-4. NOTE 4 The definition of UIDs is heavily influenced by FCG TS61804-3 and FCG TS61804-4. 8.2 UID execution Figure 10 illustrates an example of the sequence of steps used by an FDI Client to call up and execute a UIDescription (UID). This example assumes as a pre-condition that the FDI Client has established a session with the FDI Server, the user has navigated to a Device using some form of Information Model browsing or lookup, and the FDI Client is presenting the user with a list of FunctionalGroups. The example includes a sub UID that is referenced in the XML of the UID and that contains conditional content. The example illustrates the modification of a Parameter used by the sub UID to calculate the conditional content. NOTE 1 The diagram shows UIDWindow, UIDInterpreter and Device Browser Window as subsystems of the FDI Client. It also shows UIDExecution as subsystem of the FDI Server. This is for explanatory reasons only. Field Device Integration (FDI) – Part 2: Client RELEASED FCG TS62769-2, Ed. 1.2.0, 27 Jun 2019 Page 80 of 145 DeleteHiddenNode(“UID.SubUIDs”) UID Window & UIDInterpreter FDIServer Browse(Filter:FncGrp.Handheld=false) UID Execution Reply(FncGrp NodeIDs) Device Browser Window AddMonitoredItem(FncGrp_UID RegisteredNodeId, Value) Reply(MonitoredItemId) New() Init(ContextId, FncGrp NodeId) Update(MonitoredSubItemId, value) Display Functional Groups Select a Functional Group Containing a UID and Open New() Init(FncGrp.UID) GenerateXML(“FncGrp.UID XML) Update(MonitoredItemId, value) AddMonitoredItem(subUID RegisteredNodeId[], Value) Reply(MonitoredSubItemIds) Update(MonitoredSubItemIds, values) Change Setting Write(Setting RegisteredNodeId, Value) ExecutePostWriteMethod() GenerateXML(UID.SubUID XML) GenerateXML(UID.SubUIDs XML) Reply() Display FncGrp.UID Determine What SubUIDs are needed Display SubUIDs Adjust SubUID Display according to Update Close DeleteMonitoredItem(MonitoredItemId, MonitoredSubItemIds) Close() The Write affects a conditional in one of the subUIDs Reply() Init(UID.SubUIDs) CreateHiddenNode(“UID.SubUIDs”) InitLock(DeviceNodeId) ExitLock(DeviceNodeId) GetEditContext() Reply(ContextId) RegisterNode(FncGrp NodeId) Reply(FncGrp RegisteredNodeId) RegisterNode(ContextId, FncGrp_UID NodeId) Reply(FncGrp_UID RegisteredNodeId) RegisterNode(ContextId, SubUID NodeId[]) Reply(subUID RegisteredNodeId[]) RegisterNode(ContextId, Setting NodePath) Reply(Setting RegisteredNodeId[]) Apply Apply(EditContext contextId) Reply() Transfer and clear edited values. Figure 10 – User Interface Description sequence diagram The sequence in Figure 10 begins with the user selecting one of the FunctionalGroups to open. The Device Browser Window initiates the opening of the UID associated with the selected FunctionalGroup by acquiring an EditContext and creating a new UID window and UID Interpreter that will be used to present the UID to the user. The newly created UID window is initialized by providing it with the EditContext and the NodeId of the selected FunctionalGroup in the EditContext. To retrieve this NodeId the RegisterNodesByRelativePath Method is called passing the BrowsePath of the FunctionalGroup and the EditContext as input. Field Device Integration (FDI) – Part 2: Client RELEASED FCG TS62769-2 , Ed. 1.2.0, 27 Jun 2019 Page 81 of 145 Locking is required for the Write Service. NOTE 2 The example therefore includes calls to lock (InitLock) and unlock (ExitLock) the Device. The UID Window begins by establishing a subscription to the value of the UID contained in the referenced FunctionalGroup using the OPC UA AddMonitoredItem service in order to obtain the content (i.e., the XML representation) of the UID. The FDI Server responds to the subscription request by creating a UID Execution machine and initializing it by passing an internal identifier of the selected UID. The UID Execution machine interprets the UID definition, creates the referenced non-browseable sub UID Nodes in the Information Model and generates the XML representation of the top level UID. The generated XML representation is maintained in the Information Model to support the UID Window’s subscribe. The NodePaths of the sub UIDs are included in the XML of the parent UIDs. Using the RegisterNodesByRelativePath Method the NodeSpecifiers are translated into NodeIds. The UID Window can use those NodeIds to create subsequent subscriptions. The FDI Server provides the content of the top level UID that was subscribed to by the UID Window. The UID Window interprets the XML content of the updated UID value provided by the subscription and renders the user interface. It also collects the references to the sub UIDs and issues a second OPC UA AddMonitoredItem service request to include the sub UIDs in the subscription. The FDI Server responds to the AddMonitoredItem by initializing the sub UIDs Nodes resulting in the generation of XML representations of the sub UID content. The FDI Server updates the UID Window with the generated value of each of the sub UIDs included in the OPC UA AddMonitoredItem request. NOTE 3 The example uses multiple sub UIDs (but is unspecific about how many). For example, AddMonitoredItem(UID.SubUIDs.value) adds the Nodes of all SubUIDs to the subscription. The UID Window responds to the subscription updates by rendering the sub UIDs in the user interface. In addition to the sub UIDs, UIDs also contain NodePaths referencing parameters and actions. Using the RegisterNodesByRelativePath those NodePaths are translated to NodeIds and the UID Window uses the AddMonitoredItem service to subscribe to the values of the parameters. The FDI Server provides the values to the UID Window. The UID is now fully displayed and ready. When the user starts making a change to a value the UID Window requests a lock using the InitLock Method. There are different strategies when to acquire a lock. At the latest it needs to be acquired before any pre-edit actions are executed or the value is written to the FDI server. If a pre-edit action is defined on the changed parameter the UID Window calls that action. When the user finished changing the value the value is written to the EditContext using the Write service. If a post-edit action is defined on the changed paramter the UID Window calls that action. The UID Execution determines that the value change results in the change of a conditional contained in one of the sub UIDs. The XML value of the sub UID that is affected is regenerated and the Information Model is updated. The FDI Server reacts to the Information Model update by notifying the UID Window of the change. The UID Window processes the value change of the sub UID and makes the necessary adjustments to the user interface to reflect the change. The user completes the example sequence by clicking on an apply button that instructs the UID Window to shut down. The UID Window calls the Apply Method for its EditContext and the changes are applied to the device. Any pre- and post-write actions are executed. The UID Window removes the subscriptions by calling the OPC UA DeleteMonitoredItem service call. The FDI Server processes the OPC UA DeleteMonitoredItem call by removing the items from the subscription. Afterwards the UID Window calls the Discard Method on the EditContext and the FDI server removes the non- browseable sub UID Nodes and closes the UID Execution. Field Device Integration (FDI) – Part 2: Client RELEASED FCG TS62769-2, Ed. 1.2.0, 27 Jun 2019 Page 82 of 145 Annex A (normative) XML schema A.1 General The following is the XML schema definitions for UIDs as well as Actions. The types are listed in alphabetical order. The namespace xs: in the elements refers to the W3C XML Schema. A.2 AbortRequestT This type specifies a request sent from an FDI Server to an FDI Client when an Action is aborted. The FDI Client may inform the user about the reason the Action is aborting. Upon acknowledgement from the user, the FDI Client sends an ActionResponse back to the FDI Server. The XML schema for an AbortRequestT type is: <xs:complexType name="AbortRequestT"> <xs:sequence> <xs:element name="Message" type="xs:string"/> </xs:sequence> </xs:complexType> The elements of an AbortRequestT type are described in Table A.1. Table A.1 – Elements of AbortRequestT Element Description Message This required element specifies the reason the action has been aborted. A.3 AccessT This type specifies whether the access shall be ONLINE or OFFLINE. The XML schema for an AccessT enumeration type is: <xs:simpleType name="AccessT"> <xs:restriction base="xs:string"> <xs:enumeration value="ONLINE"/> <xs:enumeration value="OFFLINE"/> </xs:restriction> </xs:simpleType> The enumeration values of an AccessT enumeration type are described in Table A.2. Table A.2 – Enumerations of AccessT Enumeration Description ONLINE The access shall be done ONLINE. OFFLINE The access shall be done OFFLINE. Field Device Integration (FDI) – Part 2: Client RELEASED FCG TS62769-2 , Ed. 1.2.0, 27 Jun 2019 Page 83 of 145 A.4 AcknowledgementRequestT This type specifies a request sent from an FDI Server to an FDI Client when the user needs to acknowledge a condition or state within an Action. Upon acknowledgement from the user, the FDI Client sends an AcknowledgementResponse back to the FDI Server. An AcknowledgementRequest shall only be used to acknowledge normal operating conditions. An AbortRequest shall be used to acknowledge a condition that leads to the Action being aborted. The XML schema for an AcknowledgementRequestT type is: <xs:complexType name="AcknowledgementRequestT"> <xs:sequence> <xs:element name="Message" type="xs:string"/> </xs:sequence> </xs:complexType> The elements of an AcknowledgementRequestT type are described in Table A.3. Table A.3 – Elements of AcknowledgementRequestT Element Description Message This required element specifies the condition the user is being asked to acknowledge in the form of a message to the user. A.5 ActionListT This type specifies a list of Action elements. The XML schema for an ActionListT type is: <xs:complexType name="ActionListT"> <xs:sequence maxOccurs="unbounded"> <xs:element name="Action" type="clnt:ActionT"/> </xs:sequence> </xs:complexType> The elements of an ActionListT type are described in Table A.4. Table A.4 – Elements of ActionListT Element Description Action An element of the list. A.6 AbortingNotificationT This type is used in the ActionRequest element to notify the client that the action has been aborted on the server. The XML schema for an AbortingNotificationT type is: <xs:complexType name="AbortingNotificationT"/> Field Device Integration (FDI) – Part 2: Client RELEASED FCG TS62769-2, Ed. 1.2.0, 27 Jun 2019 Page 84 of 145 A.7 ActionRequestT This type specifies an action request from the FDI server. The XML schema for an ActionRequestT type is: <xs:complexType name="ActionRequestT"> <xs:sequence> <xs:element name="EditContext" type="xs:string"/> <xs:choice> <xs:element name="AbortingNotification" type="clnt:AbortingNotificationT"/> <xs:element name="AcknowledgementRequest" type="clnt:AcknowledgementRequestT"/> <xs:element name="AbortRequest" type="clnt:AbortRequestT"/> <xs:element name="UIDRequest" type="clnt:UidRequestT"/> <xs:element name="SelectionRequest" type="clnt:SelectionRequestT"/> <xs:element name="InputRequest" type="clnt:InputRequestT"/> <xs:element name="ParameterInputRequest" type="clnt:ParameterInputRequestT"/> <xs:element name="InfoRequest" type="clnt:InfoRequestT"/> <xs:element name="DelayMessageRequest" type="clnt:DelayMessageRequestT"/> </xs:choice> </xs:sequence> </xs:complexType> The elements of an ActionRequestT type are described in Table A.5. Table A.5 – Elements of ActionRequestT Element Description EditContext This element specifies the EditContext to be used when editing Variables for this Action. AbortingNotification This element specifies that the action has been aborted on the server. To ensure correct abort processing, the User Interface shall not allow the cancellation of further action requests. AcknowledgementRequest This optional element specifies a request from an FDI Server to an FDI Client for the user to acknowledge a condition. The FDI Client will not respond to the FDI Server until the user acknowledged the condition. AbortRequest This optional element specifies a request from an FDI Server to an FDI Client to notify the user the Action is aborting. UIDRequest This optional element specifies a request from an FDI Server to an FDI Client to display complex user interface. SelectionRequest This optional element specifies a request from an FDI Server to an FDI Client for the user to make a selection from a list of possible alternatives InputRequest This optional element specifies a request from an FDI Server to an FDI Client for the user to edit data. ParameterInputRequest This optional element specifies a request from an FDI Server to an FDI Client for the user to edit a parameter. InfoRequest This optional element specifies a request from an FDI Server to an FDI Client for a message to be displayed to the user. The message does not require user acknowledgement and the FDI Client will respond immediately after displaying the message. Field Device Integration (FDI) – Part 2: Client RELEASED FCG TS62769-2 , Ed. 1.2.0, 27 Jun 2019 Page 85 of 145 DelayMessageRequest This type specifies a request sent from an FDI Server to an FDI Client when a delay is requested within an Action. The FDI Client informs the user of the reason for and duration of the delay. The FDI Client times the delay and sends a DelayMessageResponse back to the FDI Server after the time has elapsed. A.8 ActionResponseT This type specifies an action response to the FDI Server. The XML schema for an ActionResponseT type is: <xs:complexType name="ActionResponseT"> <xs:choice> <xs:element name="AbortingNotificationConfirmation" type="clnt:ResponseT"/> <xs:element name="AcknowledgementResponse" type="clnt:ResponseT"/> <xs:element name="AbortResponse" type="clnt:ResponseT"/> <xs:element name="UidResponse" type="clnt:UidResponseT"/> <xs:element name="SelectionResponse" type="clnt:SelectionResponseT"/> <xs:element name="InputResponse" type="clnt:InputResponseT"/> <xs:element name="ParameterInputResponse" type="clnt:ResponseT"/> <xs:element name="InfoResponse" type="clnt:ResponseT"/> <xs:element name="DelayMessageResponse" type="clnt:ResponseT"/> </xs:choice> </xs:complexType> The elements of an ActionResponseT type are described in Table A.6. Table A.6 – Elements of ActionResponseT Element Description AbortingNotificationConfirmation This optional element specifies the response of an FDI Client to an AbortingNotification from an FDI Server. AcknowledgementResponse This optional element specifies the response of an FDI Client to an AcknowledgementRequest from an FDI Server. AbortResponse This optional element specifies the response of an FDI Client to an AbortRequest from an FDI Server. UidResponse This optional element specifies the response of an FDI Client to an UIDRequest from an FDI Server. SelectionResponse This optional element specifies the response of an FDI Client to a SelectionRequest from an FDI Server. InputResponse This optional element specifies the response of an FDI Client to an InputRequest from an FDI Server. ParameterInputResponse This optional element specifies the response of an FDI Client to an ParameterInputRequest from an FDI Server. InfoResponse This optional element specifies the response of an FDI Client to an InfoRequest from an FDI Server. DelayMessageResponse This optional element specifies the response of an FDI Client to a DelayMessageRequest from an FDI Server. Field Device Integration (FDI) – Part 2: Client RELEASED FCG TS62769-2, Ed. 1.2.0, 27 Jun 2019 Page 86 of 145 A.9 ActionT This type specifies an Action, which is a sequence of steps that requires collaboration between an FDI Client and an FDI Server. The XML schema for an ActionT type is: <xs:complexType name="ActionT"> <xs:complexContent> <xs:extension base="clnt:UiElementT"> <xs:sequence> <xs:element name="Name" type="xs:string"/> <xs:element name="Access" type="clnt:AccessT" minOccurs="0"/> <xs:element name="Class" type="clnt:ActionClassT" minOccurs="0"/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> The elements of an ActionT type are described in Table A.7. Table A.7 – Elements of ActionT Element Description Name This required element specifies the name of the Action, which may be passed to the InvokeAction method of a UID Node in an FDI Server. Access This optional element specifies whether the action shall be used ONLINE or OFFLINE. Class This optional element specifies the EDD CLASS attribute of the action. A.10 AxisListT This type specifies list of named axis elements of a graph or a chart. The XML schema for an AxisListT type is: <xs:complexType name="AxisListT"> <xs:sequence minOccurs="0" maxOccurs="unbounded"> <xs:element name="Axis" type="clnt:AxisT"/> </xs:sequence> </xs:complexType> The elements of an AxisListT type are described in Table A.8. Table A.8 – Elements of AxisListT Element Description Axis An element of the AxisListT. A.11 AxisT This type specifies an axis of a graph or a chart. Field Device Integration (FDI) – Part 2: Client RELEASED FCG TS62769-2 , Ed. 1.2.0, 27 Jun 2019 Page 87 of 145 The XML schema for an AxisT type is: <xs:complexType name="AxisT"> <xs:complexContent> <xs:extension base="clnt:LabelHelpT"> <xs:sequence> <xs:element name="MaximumValue" type="clnt:VariantT" minOccurs="0"/> <xs:element name="MinimumValue" type="clnt:VariantT" minOccurs="0"/> <xs:element name="DisplayedRange" minOccurs="0"> <xs:complexType> <xs:attribute name="NodePathViewMinimum" type="xs:string" use="required"/> <xs:attribute name="NodePathViewMaximum" type="xs:string" use="required"/> </xs:complexType> </xs:element> <xs:element name="Scaling" type="clnt:ScalingT" default="Linear" minOccurs="0"/> <xs:element name="Unit" type="xs:string" minOccurs="0"/> </xs:sequence> <xs:attribute name="Name" type="xs:string" use="required"/> </xs:extension> </xs:complexContent> </xs:complexType> The attributes of an AxisT type are described in Table A.9. Table A.9 – Attributes of AxisT Attribute Description Name Unique name of axis in the context of Chart/Graph that this axis is present. The elements of an AxisT type are described in Table A.10. Table A.10 – Elements of AxisT Element Description MaximumValue This required element specifies the largest value that lies within the bounds of the axis. MinimumValue This required element specifies the smallest value that lies within the bounds of the axis. DisplayedRange Sn1p1t Sn1p1t Scaling This optional element specifies how the values should be scaled. The default is Linear. Unit This optional element specifies the engineering unit of the axis. A.12 BitEnumerationItemListT This type specifies the content of a bit enumeration The XML schema for a BitEnumerationItemListT type is: Field Device Integration (FDI) – Part 2: Client RELEASED FCG TS62769-2, Ed. 1.2.0, 27 Jun 2019 Page 88 of 145 <xs:complexType name="BitEnumerationItemListT"> <xs:sequence maxOccurs="unbounded"> <xs:element name="BitEnumerationItem" type="clnt:BitEnumerationItemT"/> </xs:sequence> </xs:complexType> The elements of a BitEnumerationItemListT type are described in Table A.11. Table A.11 – Elements of BitEnumerationItemListT Element Description BitEnumerationItem An element of the bit enumeration. A.13 BitEnumerationItemT This type specifies the meaning of a single bit of a bitmapped value. The XML schema for a BitEnumerationItemT type is: <xs:complexType name="BitEnumerationItemT"> <xs:complexContent> <xs:extension base="clnt:LabelHelpT"> <xs:sequence> <xs:element name="Value" type="xs:unsignedLong"/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> The elements of a BitEnumerationItemT type are described in Table A.12. Table A.12 – Elements of BitEnumerationItemT Element Description Value This required element specifies the bit as a bit mask, i.e., 0x1 specifies the least significant bit, 0x2 specifies the second least significant bit, 0x4 specifies the third most significant bit, and so on. A.14 ButtonListT This type specifies a list of Button elements. The UID response contains the 0-based index of the selected button. The XML schema for a ButtonListT type is: <xs:complexType name="ButtonListT"> <xs:sequence maxOccurs="unbounded"> <xs:element name="Button" type="clnt:LabelT"/> </xs:sequence> </xs:complexType> The elements of a ButtonListT type are described in Table A.13. Next >