< PreviousField Device Integration (FDI) – Part 2: Client RELEASED FCG TS62769-2 , Ed. 1.2.0, 27 Jun 2019 Page 129 of 145 <xs:element name="Xvalues" type="clnt:WaveformVectorT" minOccurs="1" maxOccurs="1"/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> The elements of a WaveformTypeVerticalT type are described in Table A.80. Table A.80 – Elements of WaveformTypeVerticalT Element Description Xvalues From EDD-Spec: The X_VALUES attribute specifies the X coordinate of each vertical line in the WAVEFORM. A.86 WaveformTypeYTT From EDD-Spec: The YT attribute specifies a WAVEFORM that contains a list of points that are defined via an initial X coordinate, an X increment between successive points and a list of Y values. The XML schema for a WaveformTypeYTT type is: <xs:complexType name="WaveformTypeYTT"> <xs:complexContent> <xs:extension base="clnt:WaveformTypeT"> <xs:sequence> <xs:element name="Yvalues" type="clnt:WaveformVectorT" minOccurs="1" maxOccurs="1"/> <xs:element name="Xinitial" type="clnt:VariantT" minOccurs="1" maxOccurs="1"/> <xs:element name="Xincrement" type="clnt:VariantT" minOccurs="1" maxOccurs="1"/> <xs:element name="NumberOfPoints" type="xs:nonNegativeInteger" minOccurs="0" maxOccurs="1"/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> The elements of a WaveformTypeYTT type are described in Table A.81. Table A.81 – Elements of WaveformTypeYTT Element Description Yvalues From EDD-Spec:The Y_VALUES attribute specifies the Y coordinate of each point in the WAVEFORM. Xinitial From EDD-Spec:The X_INITIAL attribute specifies the X coordinate of the first point in the WAVEFORM. Xincrement From EDD-Spec:The X_INCREMENT attribute specifies difference between the X coordinates of adjacent points in the WAVEFORM. NumberOfPoints From EDD-Spec: The NUMBER_OF_POINTS attribute specifies the number of valid data points in X_VALUES. By default, the number of points in the WAVEFORM without a NUMBER_OF_POINTS attribute equals the size of X_VALUES. Field Device Integration (FDI) – Part 2: Client RELEASED FCG TS62769-2, Ed. 1.2.0, 27 Jun 2019 Page 130 of 145 A.87 WaveformTypeXYT From EDD-Spec: The XY attribute specifies a WAVEFORM that contains a list of (x,y) points. The XML schema for a WaveformTypeXYT type is: <xs:complexType name="WaveformTypeXYT"> <xs:complexContent> <xs:extension base="clnt:WaveformTypeT"> <xs:sequence> <xs:element name="Xvalues" type="clnt:WaveformVectorT" minOccurs="1" maxOccurs="1"/> <xs:element name="Yvalues" type="clnt:WaveformVectorT" minOccurs="1" maxOccurs="1"/> <xs:element name="NumberOfPoints" type="xs:nonNegativeInteger" minOccurs="0" maxOccurs="1"/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> The elements of a WaveformTypeXYT type are described in Table A.82. Table A.82 – Elements of WaveformTypeXYT Element Description Xvalues From EDD-Spec: The X_VALUES attribute specifies the X coordinate of each point in the WAVEFORM. For each X coordinate specified in X_VALUES there shall be a corresponding Y coordinate specified in Y_VALUES. Yvalues From EDD-Spec: The Y_VALUES attribute specifies the Y coordinate of each point in the WAVEFORM. For each Y coordinate specified in Y_VALUES there shall be a corresponding X coordinate specified in X_VALUES. NumberOfPoints From EDD-Spec: The NUMBER_OF_POINTS attribute specifies the number of valid data points in X_VALUES and Y_VALUES. By default, the number of points in the WAVEFORM without a NUMBER_OF_POINTS attribute equals the size of X_VALUES and Y_VALUES. A.88 WaveformKeyPointListT From EDD-Spec: The KEY_POINTS attribute specifies key points in the WAVEFORM that should be highlighted by the EDD application. The key points need not directly correspond to the data points specified via the TYPE attribute. The way in which these points are highlighted is defined by the EDD specification. By default, a WAVEFORM without a KEY_POINTS attribute should not have any of its points highlighted. The XML schema for a WaveformKeyPointListT type is: <xs:complexType name="WaveformKeyPointListT"> <xs:complexContent> <xs:extension base="clnt:WaveformTypeT"> <xs:sequence> <xs:element name="Xvalues" type="clnt:WaveformVectorT" minOccurs="1" maxOccurs="1"/> Field Device Integration (FDI) – Part 2: Client RELEASED FCG TS62769-2 , Ed. 1.2.0, 27 Jun 2019 Page 131 of 145 <xs:element name="Yvalues" type="clnt:WaveformVectorT" minOccurs="1" maxOccurs="1"/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> The elements of a WaveformKeyPointListT type are described in Table A.83. Table A.83 – Elements of WaveformKeyPointListT Element Description Xvalues From EDD-Spec: The X_VALUES attribute specifies the X coordinate of each point that is to be highlighted. For each X coordinate specified in X_VALUES there shall be a corresponding Y coordinate specified in Y_VALUES. Yvalues From EDD-Spec: The Y_VALUES attribute specifies the Y coordinate of each point that is to be highlighted. For each Y coordinate specified in Y_VALUES, there shall be a corresponding X coordinate specified in X_VALUES. A.89 WaveformVectorT WaveformVectorT represents the whole information of a waveform vector, for example the nodepath for the array of scalar values and additional information about these values such as Handling, Range, Type. The XML schema for a WaveformVectorT type is: <xs:complexType name="WaveformVectorT"> <xs:sequence> <xs:element name="WaveformVectorElementList" type="clnt:WaveformVectorElementListT" minOccurs="1" maxOccurs="1"/> </xs:sequence> <xs:attribute name="DataArrayNodePath" type="xs:string" use="required"/> </xs:complexType> The attributes of a WaveformVectorT type are described in Table A.84. Table A.84 – Attributes of WaveformVectorT Attribute Description DataArrayNodePath The nodepath that is used by the client to request the waveform vector. The elements of a WaveformVectorT type are described in Table A.85. Table A.85 – Elements of WaveformVectorT Element Description WaveformVectorElementList WaveformVectorElementList contains static information about each individual element of a waveform vector. Field Device Integration (FDI) – Part 2: Client RELEASED FCG TS62769-2, Ed. 1.2.0, 27 Jun 2019 Page 132 of 145 A.90 WaveformVectorElementListT It represents the static information of a waveform vector, except the nodepath for the array of scalar values. The XML schema for a WaveformVectorElementListT type is: <xs:complexType name="WaveformVectorElementListT"> <xs:sequence> <xs:element name="WaveformVectorElement" type="clnt:WaveformVectorElementT" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> The elements of a WaveformVectorElementListT type are described in Table A.86. Table A.86 – Elements of WaveformVectorElementListT Element Description WaveformVectorElement The static information of an individual waveform vector element. A.91 WaveformVectorElementT It represents the whole information of a single element in a waveform vector. It contains additional information about one value such as Handling, Range, Type. It belongs to the corresponding element in the result array of DataArrayNodePath The XML schema for a WaveformVectorElementT type is: <xs:complexType name="WaveformVectorElementT"> <xs:sequence> <xs:element name="DataType" type="clnt:NumericDataT" default="SignedInteger" minOccurs="0"/> <xs:element name="RangeList" type="clnt:RangeListT" minOccurs="0"/> <xs:element name="Handling" type="clnt:HandlingT" default="rw" minOccurs="0" maxOccurs="1"/> <xs:element name="PreEditActionsList" type="clnt:ActionListT" minOccurs="0" maxOccurs="1"/> <xs:element name="PostEditActionsList" type="clnt:ActionListT" minOccurs="0" maxOccurs="1"/> <xs:element name="ScalingFactor" type="xs:double" minOccurs="0"/> <xs:element name="DisplayFormat" type="clnt:FormatSpecifierT" minOccurs="0"/> <xs:element name="EditFormat" type="clnt:FormatSpecifierT" minOccurs="0"/> </xs:sequence> </xs:complexType> The elements of a WaveformVectorElementT type are described in Table A.87. Table A.87 – Elements of WaveformVectorElementT Element Description DataType This required element specifies the data type of the value in the corresponding element of the result array of DataArrayNodePath. Field Device Integration (FDI) – Part 2: Client RELEASED FCG TS62769-2 , Ed. 1.2.0, 27 Jun 2019 Page 133 of 145 RangeList This optional element specifies the acceptable range of the value in the corresponding element of the result array of DataArrayNodePath. Handling This optional element specifies whether or not the current data value may be modified. The default is ReadWrite. PreEditActionsList This optional element specifies the PreEditActions of the value in the corresponding element of the result array of DataArrayNodePath. PostEditActionsList This optional element specifies the PostEditActions of the value in the corresponding element of the result array of DataArrayNodePath. ScalingFactor This optional element specifies the scaling factor of the value in the corresponding element of the result array of DataArrayNodePath. DisplayFormat This optional element specifies the display format of the value in the corresponding element of the result array of DataArrayNodePath. EditFormat This optional element specifies the edit format of the value in the corresponding element of the result array of DataArrayNodePath. Field Device Integration (FDI) – Part 2: Client RELEASED FCG TS62769-2, Ed. 1.2.0, 27 Jun 2019 Page 134 of 145 Annex B (informative) Action example The following is an example of an EDD method being executed by an FDI Server and the resulting interaction with an FDI Client. The EDDL used by this example is shown below followed by a sequence diagram and the description of the sequence. VARIABLE device_var1 { LABEL "device var1"; HELP ""; CLASS DEVICE; HANDLING READ & WRITE; CONSTANT_UNIT "constUnit"; TYPE INTEGER; PRE_EDIT_ACTIONS { PreEditAction1 } POST_EDIT_ACTIONS { PostEditAction1 } } VARIABLE process_value { LABEL "Level"; HELP ""; CLASS DYNAMIC; HANDLING READ; CONSTANT_UNIT "m"; TYPE FLOAT; } VARIABLE newI { LABEL "new i"; HELP "new value of i"; CLASS DEVICE; HANDLING READ & WRITE; TYPE INTEGER; } VARIABLE newJ { LABEL "new j"; HELP "new value of j"; CLASS DEVICE; HANDLING READ & WRITE; TYPE INTEGER; } MENU MethodMenu { Field Device Integration (FDI) – Part 2: Client RELEASED FCG TS62769-2 , Ed. 1.2.0, 27 Jun 2019 Page 135 of 145 LABEL "MethodMenu"; HELP "This menu is used in a method"; STYLE DIALOG; ITEMS { newI, newJ } } METHOD UIReqRespCategories { LABEL "Request Response Categories"; HELP "This method demonstrates different categories of messages that are passed between server and client during a method execution"; DEFINITION { int i, j, k, selection; add_abort_method(AbortMethod); //Acknowledgement ACKNOWLEDGE("Please hit OK to acknowledge the start of this method"); // A010 i = 5; PUT_MESSAGE("i = %{i}"); //Info // A020 j = 10; PUT_MESSAGE("j = %{j}"); //Info // A030 k = i+j; DELAY(5, "k = %{k}"); //Delay // A040 GET_DEV_VAR_VALUE("Enter new value for the %[L]%[U]{device_var1}%[U]",device_var1); //Input // A050 selection = SELECT_FROM_LIST("Is the value entered, correct? ", "YES;NO"); //selection // A060 if (selection == 1) { device_var1 = 0; abort(); //abort --- this will trigger the AbortMethod as well; // A070 } k = k + device_var1; if (k == i + j) { display_comm_status(2);//Error – 2 == "Buffer Overflow" -- HART; // A080 } display("Current level is %{process_value}%[U]{process_value}!"); // A090 MenuDisplay(MethodMenu,"APPLY;DISCARD",selection); //UIDMessage // A100 if(selection == 0) { i = newI; j = newJ; ACKNOWLEDGE("new value of k = %{k}"); // A110 } ACKNOWLEDGE("This concludes the method !!"); // A120 } } METHOD AbortMethod { LABEL "AbortMethod"; Field Device Integration (FDI) – Part 2: Client RELEASED FCG TS62769-2, Ed. 1.2.0, 27 Jun 2019 Page 136 of 145 HELP "This is a simple Abort Method"; DEFINITION { ACKNOWLEDGE("Method was aborted due to a call to abort()"); // B010 } } METHOD PreEditAction1 { LABEL "Action1"; HELP "This is a simple Pre Edit Warning"; DEFINITION { ACKNOWLEDGE("Do you really want to edit this variable"); // C010 } } METHOD PostEditAction1 { LABEL "Action2"; HELP "This is a simple Post Edit Message"; DEFINITION { ACKNOWLEDGE("You actually edited the variable now!!!"); // D010 } } MENU FDIActions { LABEL "FDI Actions"; HELP "This menu contains methods for verifying FDI UID contents"; ITEMS { MethodMenu, UIReqRespCategories } } The example assumes as a precondition that the FDI Client has already established a Session with the FDI Server, the user has navigated to the Device (MyDevice), and the user has initiated the opening of the function group (FDIActions). The sequence begins with the FDI Client subscribing to the value of the UID in order to retrieve the UID content from the FDI Server. The FDI Client adds a monitored item and waits for the user to provide the initial value. The sequence is illustrated in Figure B.1 along with the XML string that will be returned from the FDI Server. Field Device Integration (FDI) – Part 2: Client RELEASED FCG TS62769-2 , Ed. 1.2.0, 27 Jun 2019 Page 137 of 145 FDI Client FDI Server AddMonitoredItem(“MyDevice.FDIMethods.UID.value”) AddMonitoredItemResponse(UIDMonitoredItemId) Update(UIDMonitoredItemId, XMLstring) Display content of MonitoredItem1 <Window> <Label> FDI Actions </Label> <Help> This menu contains methods for verifying FDI UID contents </Help> <Items> <Dialog NodePath="/MethodMenu"> <Label> MethodMenu </Label> <Help> This menu is used in a method </Help> </Dialog> <Action> <Name> UIReqRespCategories </Name> <Label> Request Response Categories </Label> <Help> This method demonstrates different categories… </Help> </Action> </Items> </Window> Figure B.1 – Action example (step 1) The FDI Client interprets the XML string and presents the menu to the user as four action buttons with each button containing the text defined in the < Label > element. The FDI Client then waits for the user to select one of the actions. In the next step of the example the sequence begins with the user clicking the action button (UIReqRespCategories ) presented in the menu. The FDI Client reacts by initiating an OPC UA Call service request (see IEC 62541-4), specifying the OPC UA method (MyDevice.ActionSet.InvokeAction) and the EDDL method (UIReqRespCategories). The FDI Server responds by locating the EDDL method and initiating execution of it. The FDI Server responds with a unique node Id (Action NodeId1) that represents the running method. The FDI Client subscribes to the value of the method using the node Id (ActionNodeId.value). The FDI Server provides the current value of the method as any XML string. The initial value of this XML string indicates that the method has started. The sequence of this step is illustrated in Figure B.2. Field Device Integration (FDI) – Part 2: Client RELEASED FCG TS62769-2, Ed. 1.2.0, 27 Jun 2019 Page 138 of 145 CallResponse(ActionNodeId) FDI Server FDI Client AddMonitoredItem(ActionNodeId.value) AddMonitoredItemResponse(ActionStateNodeId) Update(ActionStateNodeId, XMLstring) Call(MyDevice.ActionSet.InvokeAction, “UIReqRespCatagories”) Click Action Button Update User Interface <ActionRequest> <ActionState>Running</ActionState> </ActionRequest> Figure B.2 – Action example (step 2) In the next step of the example the method has run up to the “ACKNOWLEDGE” statement. The FDI Server processes the statement by setting the ActionNodeID value to indicate that a user acknowledgement is needed before the method can continue. The change to the value results in the FDI Server issuing a subscription update. Upon receiving the value update the FDI Client detects that an acknowledge request is pending. The FDI Client reacts by opening a dialog to present the message received in the value update also with an OK button. The user reads the message and presses the OK button resulting in the FDI Client issuing a RespondAction method call to the FDI Server. The FDI Server, receiving the RespondAction call, continues the execution of the method. The sequence of this step is illustrated in Figure B.3. Next >