Professional Documents
Culture Documents
Highperformance Extensions Library User'S Manual: Version 2.0.89 (12/06/2021)
Highperformance Extensions Library User'S Manual: Version 2.0.89 (12/06/2021)
I
CHAPTER
Introduction
1
This document contains information needed to understand the functionality of a set of libraries that are an extension to
HighPerformance Template Library.
The goal of this extension is to allow using and extracting data from an E3 application modeled using the Plant Model
Library, but using the same models and concepts of the HighPerformance Template Library.
The Plant Model Library allows performing the modeling of a supervisory and control process by using standard
objects, such as Analog Measurements, Discrete Measurements, Parameters, Commands, and Interlocks. For more
information about this library, please check the Plant Model Library User's Manual.
The HighPerformance Extensions Library, by its turn, allows displaying and interacting with the Plant Model Library
in several ways, organized in the group of files described on the next table.
1 Introduction
CHAPTER
Installation in an Application
2
To use the HighPerformance Extensions Library, add to the Domain the file extensions.e3pkg, available on the
Packages folder of its distribution. If users want to add files individually, copy the Extensions folder with all folders and
files to the application's root folder. Then, in Studio, insert in the Domain all library (.lib) and project (.prj) files from the
XLibraries and XProjects folders, respectively. Library and project files of the HighPerformance Extensions Library
always use an hpX prefix, so that they can be easily differentiated from application objects.
Installation in an Application 2
CHAPTER
Objects
3
This section contains information about the objects of the HighPerformance Extensions Library.
3.1.1 hpXCommandButton
Allows sending commands to objects of type xfCommandUnit. This object performs permission checks on the object
and its behavior is different, depending on the type of configured command for the linked xfCommandUnit object.
This object contains a vertical rectangle on its right side, which indicates the interlock and feedback statuses.
The Interlocked status is retrieved automatically from the xfCommandUnit object, indicating that there is a process
situation that could block the command. If the Interlocked status is active, a command's effective block happens
depending on the InterlockMode property of the xfCommandUnit object, which can be 0: Do not block, 1: Warns, or
2: Blocks.
The Feedback status, which is optional, is retrieved from a digital status (xfDiscreteInfo) that indicates the return of a
command. It can indicate active (ColorStatusOn), inactive (ColorStatusOff), and invalid (ColorStatusInvalid) statuses
and can be inverted using the InverseFeedBack property.
1. Checks if the command is authorized, that is, if a user's group belongs to the list of authorized groups for the
command or to a higher level (PlantFolder).
3. If there is a confirmation and an electronic signature, performs the request and check.
The result, whether it is a success or a failure, is logged to the xoLogger object from Plant Model Library, which must
be instantiated as Logger.LogSvc, with the next parameters in the input array.
· Element 0: "xfCommandUnit"
· Element 3: Result of the operation. Possible values are 0: OK, 1: Failure, 2: Not authorized, or 3: Blocked
· Element 4: Name of the computer from where the command was sent
· Element 6: Time
PROPERTY DESCRIPTION
CmdObject Link to an xfCommandUnit object
3 Objects
PROPERTY DESCRIPTION
EnableClick Enable this object to respond to a mouse click
3.2.1 hpXBarGraphAlarmLimHoriz
The hpXBarGraphAlarmLimHoriz object is a horizontal bar chart that displays the limits of alarms as flags stacked
over an indication bar, and it must be linked to an xfAnalogInfo-type of object for the value and to another one for
the setpoint.
The ways to display it are similar to the hpBarGraphAlarmLimHorizontal object from HighPerformance Template
Library, with the following differences:
· The limits are retrieved from the EURangeHigh and EURangeLow properties of the xfAnalogInfo object
· The engineering unit is retrieved from the EU property of the xfAnalogInfo object
· The Tag name is retrieved from the Name property of the xfAnalogInfo object
· The format is retrieved from the Format property of the xfAnalogInfo object
PROPERTY DESCRIPTION
AlarmSource Link to an Analog Alarm Source object
Objects 4
PROPERTY DESCRIPTION
HideSPLegend Displays or hides the setpoint's legend
3.2.2 hpXBarGraphAlarmLimVert
The hpXBarGraphAlarmLimVert object is a vertical bar chart that displays alarm limits as flags stacked over an
indication bar, and it must be linked to an xfAnalogInfo-type of object for the value and to another one for the
setpoint.
The ways to display it are very similar to the hpBarGraphAlarmLimVertical object, with the same differences listed for
the hpXBarGraphAlarmLimHoriz object.
PROPERTY DESCRIPTION
AlarmSource Link to an Analog Alarm Source object
5 Objects
PROPERTY DESCRIPTION
EventClick Increments the value from 1 (one) to 9 (nine) when this
object receives a left-click mouse event
3.2.3 hpXDigitalDisplay
The hpXDigitalDisplay object is an indicator for digital variables linked to an xfDiscreteInfo object, and displays the
On, Off, or Bad Quality statuses.
PROPERTY DESCRIPTION
CustomText Text alternative to the text defined in the xfDiscreteInfo
object, that is, the Caption or Name properties
Objects 6
PROPERTY DESCRIPTION
Inverse Toggle statuses for visual indication
3.2.4 hpXDigitalDisplayPopUp
The hpXDigitalDisplayPopUp object is an indicator for digital variables linked to an xfDiscreteInfo object, and
displays the On, Off, or Bad quality statuses.
The difference for an hpXDigitalDisplay object is the possibility of opening a Faceplate Screen when clicking it.
PROPERTY DESCRIPTION
CustomText Text alternative to the text defined in the xfDiscreteInfo
object, that is, the Caption or Name properties
3.2.5 hpXDynValueAnalog
The hpXDynValueAnalog object is an indicator of dynamic value, that is, displays the value and the unit of a variable
linked to an xfAnalogInfo object. If that variable's quality is bad, this object displays a "???" indication.
7 Objects
Properties of the hpXDynValueAnalog object
PROPERTY DESCRIPTION
AnalogInfo Link to an xfAnalogInfo object
3.2.6 hpXDynValueDiscrete
Allows listing the possible statuses of a default xfDiscreteInfo object and listing these values when using an
OperatorSource data source.
PROPERTY DESCRIPTION
DiscreteInfo Link to an xfDiscreteInfo object
3.2.7 hpXManualValueIO
This object is used to display and send setpoints linked to an xfParameter object. This indication of manual value
differs visually from the indication of dynamic value of the hpXDynValueAnalog object basically by the color. However,
for some types of visual impairments, both colors can be very similar, making it hard to differentiate them. So, a dot
was added between the value and the unit. If the variable's quality is bad, this object displays a "???" indication.
This object also performs permission checks over an object, logging the result, success or failure, in the xoLogger
object from Plant Model Library, which must be instantiated as Logger.LogSvc, with the following parameters as its
input array.
Objects 8
· Element 0: "xfParameter"
· Element 3: Result of the operation. Possible values are 0: OK, 1: Failure, or 2: Not authorized
· Element 5: Time
PROPERTY DESCRIPTION
CustomFormat Custom format overwriting the default format of the
linked xfParameter object. If this value is an empty
String, it enables the format configured in the
xfParameter object
3.3.1 hpXBlockILIndicator
This object displays an icon when the linked Interlock Unit object is blocked and an icon if the linked object is not
blocked.
The available property in this object is InterlockUnit, which indicates a Link to an xfInterlockUnit object.
3.3.2 hpXBlockIndicator
This object displays an icon when the linked Command Unit object is blocked and an icon if the linked object is not
blocked. In addition, it allows opening a new pop-up Screen indicating which Interlocks are active.
PROPERTY DESCRIPTION
DataObject Link to an xfCommandUnit object, which is sent as a
parameter to the Screen to open
9 Objects
PROPERTY DESCRIPTION
FaceplateGroupExpand Name of a group to display if the Faceplate Screen is
expanded
3.3.3 hpXBlockIndicatorBypass
This object displays an icon or an icon if the ByPassState property is configured to False or True, respectively.
If the LinkMode property is configured to True, clicking this object allows executing the command linked in the
CommandUnit property to change the by-pass.
PROPERTY DESCRIPTION
ByPassState Link to an object indicating the by-pass status
3.3.4 hpXCollapseExpand
This object is used internally on the Faceplate Screen to control a minimum or expanded display. It is used when
the number of objects exceeds the default size of the Faceplate Screen, thus allowing it to expand all objects.
PROPERTY DESCRIPTION
Active Indicates whether the hpXCollapseExpand object is
visible and operational
Objects 10
3.3.5 hpXFaceplateTemplate
This object's main functions are to store the configuration of data content to display on a Faceplate Screen (do not
mistake it for the hpPopUpTemplate object, which configures a window style) and to inform the names of the library
and symbol to display for the indication of operational status.
PROPERTY DESCRIPTION
DeviceControlGallery Name of the library file that contains a device's icon
The order of these letters define how Links appear on the pop-up window. For example, the expression "A;C;S"
indicates the display of Analog, Commands, and Status tabs. Unless explicitly indicated, described on topic Markers,
the window opens and displays the first declared tab, in this case the Analog tab.
· The tab displays the CustomDisplay1, object, created in the custom.lib library
· This tab's icon is the CustomIcon1 object, created in the custom.lib library. For more information, please check
topic Creating a Customized Icon
· The button to open this tab contains a help text "Here comes a custom tip"
· This tab does contain a command to expand the window, therefore its size is fixed
11 Objects
3.3.5.3 CustomExpandable-Type Tabs
Users can create an expandable tab, that is, a tab that contains a button on the right side to expand the window and
display more controls. The syntax is the same as the Custom type, but adds a class to the end of the declaration, as in
the next syntax.
U=(XControl,Icon,Tip)|(ExpandedXControl,Size)
· The collapsed tab displays the CustomDisplay1 object, created in the custom.lib library
· This icon's tab is the CustomIcon1 object, created in the custom.lib library
· The button to open this tab contains a help text "Here comes a custom tip"
· The expanded tab displays the CustomDisplay2 object, created in the custom.lib library
· The window's with when expanding is 700 pixels, while its height is 600 pixels
3.3.5.4 Markers
The * (asterisk) marker indicates the tab that must be displayed when opening the window for the first time and it must
be declared immediately before the corresponding letter. The # (number sign) marker indicates the use of a custom
button that works as a command and not to display content from a regular tab. One usage scenario is when users want
to open another window with a mouse click.
In this example, the Link bar is assembled with the next elements.
· The second element is the Analog Measurements tab, which is also displayed when opening the window
· The fourth element is defined by the users and does not display any object on the tab, indicating that is executes a
function implemented on the CustomTab button from the custom library. For more information, please check
topic Creating a Custom Tab Button
3.3.5.6 Instances
The hpXFaceplateTemplate objects must be instantiated on the folder hpXObjects.FaceplateTemplates, inside the
hpXMain project.
3.3.6 hpXProtection
This object is used to display the name and status of an Elipse Power Protection.
Objects 12
Properties of the hpXProtection object
PROPERTY DESCRIPTION
ProtectionDevice Link to a PowerProtectionDevice object
3.4.1 DataObjectBridge
Object used internally on the Faceplate Screen to store and provide XML code from a data object sent to the Faceplate
Screen.
3.4.2 hpXContainer
Object used internally on the Faceplate Screen, its function is to calculate the coordinates of up to 256 grid cells
according to a user configuration, creating and positioning objects automatically as children. It can also be used
outside a Faceplate Screen, in the context of a normal process Screen where users must display a grid of objects. Its
mais functions are the following:
· Receiving all grid settings, such as the number of columns, rows and breaks
· Calculating the coordinates of each grid cell, based on the parameters passed on
· Receiving settings for adding objects, that is, the parameters used in the AddObject method
This way, all objects created are children of a container that calculates and places each one of these objects
automatically.
3.4.2.1 Properties
The hpXContainer object contains several properties, which can be grouped by their functions, according to the next
topics.
PROPERTY DESCRIPTION
CellHeight Height of a grid cell, in Himetric
13 Objects
PROPERTY DESCRIPTION
Rows Number of rows of a grid
PROPERTY DESCRIPTION
ColumnBreak Number of rows to fill before a column break occurs
PROPERTY DESCRIPTION
ShowOfflineText Displays or hides the text that appears on Studio
PROPERTY DESCRIPTION
ActivateStatus Informs whether an object is created activated or
deactivated
Objects 14
PROPERTY DESCRIPTION
Reset Removes all objects created, returning the object to its
initial condition
PROPERTY DESCRIPTION
CurrentGroupNum Number of the current group. Whenever a column break
or row break occurs, the cells filled immediately before
that break form a group. Each group of cells receive a
progressive number for identification
CurrentRowNumRel Relative number of the current row, that is, the number of
the row inside the respective group
NOTE
All properties indicated in this topic are read-only and are only available at run time.
1. Configure in Studio the properties regarding Grid Size and Formats and Filling Cells.
2. Execute the CustomConfig event to calculate the coordinates. The Status property indicates the progress of that
calculation.
4. At run time, configure all properties related to the Creation of Objects and execute the command to create objects
in the CreateNewObject property.
5. The object returns the PathName property of the object created in the NewObjectPathName property.
In a scenario of grid filling by script, repeat the steps 4 (four) and 5 (five), adjusting the parameters to create objects.
The next topics contain some scenarios describing the order in which cells are filled in.
15 Objects
3.4.2.2.1 Filling by Column
1. Grid with nine cells distributed on three rows (the Rows property equal to 3) by three columns (the Columns
property equal to 3), completely filling a column before moving to the next one (the Orientation property equal to
zero), without a column break (the ColumnBreak property equal to zero or 3).
2. Grid with nine cells distributed on three rows (the Rows property equal to 3) by three columns (the Columns
property equal to 3), completely filling a column before moving to the next one (the Orientation property equal to
zero), with a column break after filling two cells (the ColumnBreak property equal to 2).
1. Grid with nine cells distributed on three rows (the Rows property equal to 3) by three columns (the Columns
property equal to 3), completely filling a row before moving to the next one (the Orientation property equal to 1),
without a row break (the LineBreak property equal to zero or 3).
2. Grid with nine cells distributed on three rows (the Rows property equal to 3) by three columns (the Columns
property equal to 3), completely filling a row before moving to the next one (the Orientation property equal to 1),
with a row break after filling two cells (the LineBreak property equal to 2).
The next script references an hpXContainer object and creates up to 9 (nine) objects of type hpLinkIcon, placing them
on the grid defined in an hpXGridCalc object. When reaching the limit of objects, these are deleted and the counting is
then restarted.
Objects 16
Sub hpCommandButton1_OnEventClick()
Set Container = Screen.Item("hpXContainer1")
With Container
'Deletes objects from the grid
'and restarts counting in the Index property
If .Index > (.Columns * .Rows) Then .Reset = True
'Creates an hpLinkIcon-type object
'already placed on the grid
.ClassName = "hpLinkIcon" 'Class of the object
.CreateNewObject = True 'Creates the object
End With
End Sub
If users want to access an object created inside a container previously, use the GetChildObject object of the
hpXContainer object. For more information, please check the NewObjectPathName property.
3.4.3 hpXGridCalc
Object used internally on the Faceplate Screen, its function is to calculate and store the coordinates of up to 256 grid
cells according to a user configuration. It can also be used outside a Faceplate Screen, in the context of a normal
process Screen where users must configure a grid.
This object was created to meet a demand for performance and flexibility relative to the hpXContainer object, but
without the native automation.
· Receives the whole grid configuration, such as the number of columns, rows, and breaks
· Calculates the coordinates of each grid cell, based on the parameters received
· Provides the calculated coordinates to users, as well as other information about tracking cell filling
The hpXGridCalc object performs the same calculation and passes on the same tracking information of an
hpXContainer object, but does not create any internal object. It is a calculator of coordinates and not a container of
objects.
3.4.3.1 Properties
The hpXGridCalc object contains several properties, which can be grouped by their function, according to the next
topics.
PROPERTY DESCRIPTION
CellHeight Height of a grid cell, in Himetric
17 Objects
3.4.3.1.2 Filling Cells
PROPERTY DESCRIPTION
ColumnBreak Number of columns to fill before a column break occurs
PROPERTY DESCRIPTION
ShowOfflineText Displays or hides the text shown in Studio
3.4.3.1.4 Coordinates
PROPERTY DESCRIPTION
X1, X2, ..., Xn Horizontal coordinate of the cell indicated by the number
of the property. X1 refers to the first cell to fill, X2 refers
to the second cell to fill, and so on
Y1, Y2, ..., Yn Vertical coordinate of the cell indicated by the number of
the property. Y1 refers to the first cell to fill, Y2 refers to
the second cell to fill, and so on
PROPERTY DESCRIPTION
CurrentGroupNum Number of the current group. Whenever a column or row
break occurs, the cells filled immediately before that
break form a group. Each group of cells receives a
progressive number for identification
Objects 18
PROPERTY DESCRIPTION
CurrentRowNumRel Relative number of the current row, that is, the number of
the row inside the respective group
NOTE
All properties indicated in this topic are read-only and are only available at run time.
1. Configure in Studio the properties regarding Grid Size and Formats and Filling Cells.
2. Execute the CustomConfig event to calculate the coordinates. The Status property indicates the progress of this
calculation.
4. At run time, write to the Index property the number of a cell, such as 3 (three).
5. This object returns, in its Xindex and Yindex properties, the horizontal and vertical coordinates for the indicated
cell.
In a scenario of grid filling by script, repeat the steps 4 (four) and 5 (five), changing the cell address in the Index
property and reading the coordinates in the Xindex and Yindex properties. The next topics contain some scenarios
describing the order in which cells are filled in.
1. Grid with nine cells distributed on three rows (the Rows property equal to 3) by three columns (the Columns
property equal to 3), completely filling a column before moving to the next one (the Orientation property equal to
zero), without a column break (the ColumnBreak property equal to zero or 3).
2. Grid with nine cells distributed on three rows (the Rows property equal to 3) by three columns (the Columns
property equal to 3), completely filling a column before moving to the next one (the Orientation property equal to
zero), with a column break after filling two cells (the ColumnBreak property equal to 2).
19 Objects
Filling by column with a break
1. Grid with nine cells distributed on three rows (the Rows property equal to 3) by three columns (the Columns
property equal to 3), completely filling a row before moving to the next one (the Orientation property equal to 1),
without a row break (the LineBreak property equal to zero or 3).
2. Grid with nine cells distributed on three rows (the Rows property equal to 3) by three columns (the Columns
property equal to 3), completely filling a row before moving to the next one (the Orientation property equal to 1),
with a row break after filling two cells (the LineBreak property equal to 2).
The next script references an hpXGridCalc object and creates up to 9 (nine) hpLinkIcon-type objects, placing them on
the grid defined in an hpXGridCalc object. After reaching the limit of 9 (nine) objects, these ones are deleted and
counting is then restarted.
Sub hpCommandButton1_OnEventClick()
Set gridCalc = Screen.Item("hpXGridCalc1")
With gridCalc
'Defines initial coordinates
Xini = .X
Yini = .Y
'Deletes grid objects
'and restarts Index counting
If .Index > (.Columns * .Rows) Then
.Index = 1
For Each obj In Screen
If InStr(obj.Name,"hpLinkIconTestGridA") <> 0 Then
Screen.DeleteObject(obj.Name)
End If
Next
End If
'Creates an hpLinkIcon-type object
'already placed on the grid
Set elm = Screen.AddObject("hpLinkIcon", False, "hpLinkIconTestGridA")
elm.X = Xini + .Xindex
elm.Y = Yini + .Yindex
elm.IconName = "hpIcon" & CStr(.Index)
elm.Activate()
Objects 20
elm.BringToFront()
'Points Index to the next object to create
.Index = .Index + 1
End With
End Sub
21 Objects
CHAPTER
Faceplate Screen
4
A Faceplate Screen reads code specified in the PopupCode property of an hpXFaceplateTemplate object, in the
control structure, and then assembles tabs and controls according to a configuration, as shown on the next figure.
Faceplate Screen
The next topics describe the necessary steps to configure an application for using a Faceplate Screen.
· OutputMode: Configure with the value 1 (one, stores the XML code generated in the xmlData property of each
xfPlantFolder object)
Faceplate Screen 22
· RunOnStart: Configure to False for a better performance when starting Viewer, but requires executing it using the
CustomConfig method
These settings allow generating an XML code already optimized for use with the Faceplate Screen, which is saved in
each object on the data structure that represents a device.
It is important to ensure that the root folder of each device, whose type is xfPlantFolder, have their StoreXML
property configured as True. This allows storing the XML code in the xmlData property, which is read by the Faceplate
Screen during its opening.
The Faceplate Screen does not accept XML code containing nodes with an xfPMRef type, that is, nodes referencing
external content. Therefore, when generating an XML file where the XMLTemplate property is equal to 3 (three,
Faceplate), automatically the value of the XRefMode changes to 1 (one), to remove the shortcuts and merge the
external content with the resulting XML code.
23 Faceplate Screen
Hidden or inactive titlebar buttons
Hidden titlebar
In this case, users must configure the Internal Tag hShift to a value different from 0 (zero), as shown on the next figure,
to display a Close button on the window's body.
Faceplate Screen 24
Close button instantiated on a window
This Tag is on Faceplate - hpData - Start - Vars, and its value must be less than 0 (zero), because it refers to a
horizontal shifting that starts on the window's right border. The value 0 (zero) refers to the border. On the example of
the previous figure, it was configured with the value -600, which is the recommended value. To keep this button
invisible, configure the value of the hShift Tag with the value 0 (zero).
Users are recommended to create a template for each type of device, such as one for Pumps and another one for
Valves. In some cases, it can be interesting to classify templates by device manufacturer with similar functionality and
symbolism. This, however, is not a fixed rule and every application has their own peculiarities.
Each device must configure the path of the hpXFaceplateTemplate object in the FaceplateTemplate property of the
data object, the same one configured in the DataObject property of device's instances on Screens.
In addition, every symbol displayed on the Faceplate Screen must obey the next criteria.
· Having a property called DataObject, of type xfPlantFolder, with an initial empty value. This property receives a
Link to the PathName property of the data object
25 Faceplate Screen
· Having a property called Orientation, of type Integer, with an initial value of 0 (zero). This property indicates
whether the object must be represented vertically or horizontally, or else to the right or to the left. For example, a
valve can be represented in four different orientations, defined by the Orientation property with the values 0
(zero), 1 (one), 2 (two), or 3 (three)
· All E3 primitives or images composing a graphical object implemented by an application developer must be
contained in a Group or Animation called Device
· Inside each Device Group or Animation, users must instantiate an hpPopupOpen-type object called
hpPopupOpen1. When opening, the Faceplate Screen automatically disables this object, so that a new instance of
the Faceplate Screen can be opened from the Screen itself
To hide a device icon on the Faceplate Screen, configure the DeviceControlName property of the
hpXFaceplateTemplate object to an empty String.
2. Based on any icon from the hpIcons library, copy and paste the primitives and properties to this new XControl.
Whenever this custom button is declared in the PopupCode property of the hpXFaceplateTemplate object, it must
follow the format Library.Icon, where Library is the name of the library file that contains the icon and Icon is the name
of the object.
2. Based on the hpLinkIcon object from the hpMenus library, copy and paste only the primitives to this new
XControl. Exclude properties and scripts from the original object.
3. The Object group can be ungrouped, resulting in only two objects on this XControl's root, MouseArea and
Background.
4. Insert an icon on the XControl's root, which can be any icon from the hpIcons library or similar.
5. Simplify the Link in the Foreground property of the Background object with the next expression.
-1*CInt(Parent.MouseArea.MouseOver)
NOTE
The Links registered on the multiple connections window of this Link must remain unchanged. Only the Source field of
the original Link must be changed.
6. In the MouseArea object, keep only the Link in the FillStyle property.
7. Configure this XControl's script, such as on the Click event of the MouseArea object, with the next code.
Sub MouseArea_Click()
MsgBox "Hello!"
End Sub
Faceplate Screen 26
8. Select the MouseArea object and click Bring to Front.
Whenever this custom button is declared in the PopupCode property of the hpXFaceplateTemplate object, it must
follow the format Library.XControl, where Library is the name of the library file that contains the XControl and XControl
is the name of the object.
27 Faceplate Screen
Headquarters Branch in Taiwan
Rua Mostardeiro, 322/Cj. 902, 1001 e 1002 9F., No.12, Beiping 2nd St., Sanmin
90430-000 — Porto Alegre — RS Dist.
Phone: (+55 51) 3346-4699 807 — Kaohsiung City — Taiwan
Fax: (+55 51) 3222-6226 Phone: (+886 7) 323-8468
E-mail: elipse-rs@elipse.com.br Fax: (+886 7) 323-9656
E-mail: evan@elipse.com.br
Check our website for information about a representative in your city or country.
www.elipse.com.br
kb.elipse.com.br
forum.elipse.com.br
www.youtube.com/elipsesoftware
elipse@elipse.com.br