OpenSCADAWiki: Home Page En/Doc/VC Aconcept/part4 ...

Home | Index | Changes | Comments | Users | Registration | Login  Password:  
 

4 Projection

4.1 Problem definition

4.1.1 Tasks of the SCADA system

In the present days, when constructing the automated process control the user interface with the control system are implemented using computer systems. This approach is due to several reasons: the compactness (in the physical and energetic sense) of modern computer technics, maturity of the methods of presentation the information, great functionality and variability of control systems.


The application of computer technology in the ACS TP in general, and in the workplaces of the operators in particular, has led to the origin of class of software (SW), known as SCADA (Supervisory control and data acquisition).


Thus, the key purpose of SCADA is to provide the interface between the operator and control system of the TP. Often, SCADA also implements the following tasks: the formation of alarm about the violation in TP, making the parameters' archives of TP and protocols of events.


Therefore, SCADA software can be regarded as a set of subsystems: the database of the parameters of TP and connections with the control systems of TP (controllers), the formation of alarms about the violations of TP, archiving, logging, visualization of the operational and archival data.


In addition to the above problems it can be included the separation of access rights for read-modify those or other parameters of TP, implemented in the security subsystem.


Thus modern SCADA systems are fairly complex software systems.


The subject of this subproject is to develop the concept of visualization and control are (VCA) and implementations of VCA's on the basic ways of representation for OpenSCADA SCADA system.


Visualization means the next set of tasks:


VCA must operate in two modes - editing (development) and execution. The first phase is planned to implement the development mode only for the QT-version of the VCA!


In the operation process the VCA must use data from other subsystems:


The screen image should be formed from the limited set of basic widgets (primitives). Presentation and interface of the basic widgets for each VCA should be done separately. This is done to optimize performance and simplify the task of creating the library of basic widgets. With the purpose of compatibility between different implementations of the VCA is planned the creation of the general description of the library of basic widgets (data model) with the subsequent implementation of its interface in each VCA.


Basic widgets are to be grouped and form derivatives of widgets, with the further accumulation of them in the user's widget library/frame.

4.1.2 Tasks of monitoring system

Given the purpose of the OpenSCADA system, as a system for monitoring data in many related fields, it is necessary to formulate the tasks for such systems in general.


In monitoring systems, as a rule, there is no control possibility, but the interactive elements must be present.


The primary objective of such systems is the continuous provision of information in an accessible form and on the background of the basic work.


4.2 Formalization

Lets conceptually describe the VCA model using the UML with use case diagram.


Any VCA can operate in two modes - the development and execution. As an actor, in the first case, acts the engineer of the top-level of ACS-TP setting, in the other - the operator.


In development mode lets select the following options of using the VCA:


Use case diagram for operation of the VCA in development mode is shown in Fig. 4.2.1.


 (67 Êá)
Fig.4.2.1 Use case diagram of the VCA in development mode.

Using variants in the execution mode:


Using diagram of the VCA in the execution mode is shown in Fig.4.2.2.


 (17 Êá)
Fig.4.2.2 Using diagram of the VCA in the execution mode.

Based on the requirements and general considerations the VCA structure can be represented as it shown on the Fig.4.2.3.


 (214 Êá)
Fig.4.2.3 Generalized structure of the VCA.

It should be noted that this approach allows to implement the support of three levels of complexity of the development process of the control interfaces. As a consequence, an ACS-TP engineer can use (to start) the level at which he has enough skill with the ability to improve it further, actually eliminating the rejection of the system because of the over-complexity at the early stage of learning and saving at the same time the considerable flexibility and power of the system. Lets enumerate these levels:

  1. VC(visualization and control) interface formation with the help of library of template frames, by placing the frame's templates into the project and their dynamisation.
  2. In addition to the first level the formation of its own frames on the basis of libraries of derivatives and basic widgets is done. It is possible as the direct appointment of the dynamics in the widget, and the subsequent its appointment in the project.
  3. In addition to the second level the independent formation of derivatives of widgets, the new template frames, and frames with the use of the mechanism of description of logic of interaction and event processing in the language of user programming of OpenSCADA system.

4.3. Frames and elements of visualization (widgets)

Frame is the window which directly provides information to the user in a graphical or text form. The group of interconnected frames creates whole user interface of VC.


The contents of the frame is forming from the elements of visualization (widgets). Widgets may be the basic primitives (different flat shapes, text, trend, etc.) and derivatives (formed from the basic or other derivatives of widgets). All the widgets are grouped into the libraries. In the process, you can build your own library of derivative widgets.


Actually the frame is also a widget that is used as a final element of visualization. This means that the widget libraries can store the blanks of frames and the templates of the resulting pages of the user interface.


Frames and widgets are passive elements that do not normally contain links to the dynamics and other frames, but only provide information about the properties of the widget and the nature of the dynamics (configuration), connected to the properties of the frame. Activated frames, ie containing links to the dynamics and active connections, form the user interface and are stored in the projects. In some cases, it is possible the direct appointment of the dynamics in the blanks of frames.


Derivative frames/widgets can contain other widgets (attached), which can be glued (associated) with the logic of one another by one of the languages of programming available in the OpenSCADA system (Fig.4.3). For ease of editing the support of grouping of the embedded widgets and then working with the group of widgets as a whole.


 (204 Êá)
Fig.4.3 Example of the structure of the derived widget.

The widget is an element, by means of which it is provided:


Tuning and linkage of the widgets is done through their properties. Parent widget and the widgets it contains, can be complemented by user properties. Then the user and static attributes are associated with the properties of embedded widget by internal logic. To show the dynamics (ie, current and archived data), properties of widgets are dynamized, that is linked with the attributes of the parameters of OpenSCADA or properties of other widgets. Using to link of the nested widgets by means of the internal logic with the available programming language of the OpenSCADA system eliminates the question of the implementation of complex logic of visualization, thus providing high flexibility. Practically, you can create fully dynamized frames with complex interactions at the level of the user.


4.4. Project

Direct configuration and properties of the final visualization interface are contained in the project of the visualization interface of the VCA. It may be created a lot of projects of the visualization interfaces.


Each project includes frames from the libraries of the frames/widgets. A frame provides a tool for the dynamics to the properties described therein. All properties of the frame may be associated with dynamics or authorized by the constants, and can act as a template for the formation of derivative pages. In fact, each frame may contain multiple pages with their own dynamics. This mechanism allows to extremely simplify the process of creating the same type of the frames by the ACS-TP engineer or by the user of OpenSCADA for easy monitoring. An example of such one-type frames may be: groups of contours, groups of graphs, reports and various tables. Mnemonic schemes of technological processes rarely come under this scheme and will be formed directly in the description of the frame.


To provide the possibility of creation of a complex hierarchical interfaces of VC the frames, placed into the project, can be grouped by name in the hierarchical form and by the appropriate visualization in the form of a tree. In addition to this a mechanism of associative description of the calling of the frames through regular expressions is provided.


Example of hierarchical representations of components of the project of the classical interface of VC of the technological process with the description of standard expressions is given in Fig. 4.4.


 (40 Êá)
Fig.4.4 Hierarchical view of components of the project of classical interface of VC of the technological process.

Execution of the project is made in the session of the project. For each project can be opened many sessions. Specific implementations of the VCA connect to the or create the new session of the project. All calculations over the project are made in the sessions. VCA implementations only use the data in the session for the visualization and the collection of user actions. This separation will allow easy to build VCA's for different ways of presenting data.


To provide an opportunity for considering the individual characteristics and preferences of users the mechanism of profiling is provided. In your profile you can set individual color and font preferences, as well as the preferred card of events for the VC interface control.


4.5. Styles

We know that people can have individual characteristics in the perception of graphical information. If these features are not taken into account, it is possible to obtain the rejection and seizure of the user to the interface of VC. This rejection and seizure can lead to fatal errors in the management of TP, as well as traumatize the human by the continuous work with such interface. In SCADA systems the agreements are adopted, which regulate the requirements for creating a unified interface of VC normally perceived by most people. This is actually eliminates the features of people with some deviations.


In order to take this into account and allow centralized and easy to change the visual properties of the interface module is scheduled to implement a theme manager of the visualization interface.


User can create many themes, each of which will keep the color, font and other properties of the elements of the frame. Simple changing of the theme will allow you to change the interface of VC, and the possibility of appointing an individual theme in the user's profile allows to take into account his individual characteristics.


To realize this opportunity, when you create a frame, it is necessary for the properties of color, font and others set the «Config» ( of the table if the «process» tab) in the value of «From style». And in the parameter «Config template» to specify the identifier of the style field. Further, this field will automatically appear in the Style Manager and will be there to change. Style Manager is available on the project configuration page in the tab «Styles». On this tab you can create new styles, delete old ones, change the field of the style and delete unnecessary.


In general the styles are available from the project level. At the level of libraries of widgets you can only define styles fields of widgets. At the project level, at the choice of style it is started the work with styles, which includes access to the fields of styles instead of direct attribute values. In fact, this means that when reading or writing a widget attribute these operations will be carried out with the corresponding field of the chosen style.


When you run the project execution it will be used the set in the project style. Subsequently, the user can select a style from the list of available ones. The user's style will be saved and used next time you run the project.


4.6. Events, their processing and the events' maps

Given the range of tasks for which the OpenSCADA system may be used, it is necessary to provide a tool for management of interactive user events. This is due to the fact that in dealing with individual tasks of embedded systems, input and control devices can greatly vary. But it is enough to look at the regular office keyboard and notebook one, that would remove any doubt about the necessity for the manager of events.


Event manager must work using the maps of events. Map of the events - is the list of named events, indicating their origin. The origin of the events can be a keyboard, mouse, paddle, joystick, etc. If you have any event manager of the events is looking for it in the active map and compares with the name of the event. A comparison name of the event is placed in the queue for processing. Widgets in this case must process the given queue of events.


The active map of events is specified in the profile of each user or is set by default.


In general, four types of events are provided:


Event itself represents little information, especially if its processing occurs at higher level. For the unequivocal identification of the event and its source in the whole the event is recorded as follows: "ws_BtPress:/curtime". Where:

ws_BtPress - event;
/curtime - the path to the child element that has generated the event.

Table 4.5 provides a list of standard events, the support of which should be provided in visualizers of VCA.


Table 4.6. Standard events

IdDescription
Keyboard events: key_[pres|rels][Ctrl|Alt|Shift]{Key}
*SC#3b Scan code of the kye.
*#2cd5 Code of the unnamed key.
*Esc "Esc".
*BackSpace Removing of the previous character - "<--".
*Return, *Enter Enter - "Enter".
*Insert Insertion - "Insert".
*Delete Deleting - "Delete".
*Pause Pause - "Pause".
*Print Print of the screen - "Print Screen".
*Home Home - "Home".
*End End - "End".
*Left Left - "<-".
*Up Up - '^'.
*Right Right - "->".
*Down Down - '\/'.
*PageUp Page up - "PageUp".
*PageDown Page down - "PageDown".
*F1 - *F35 Function key from "F1" to "F35".
*Space Space - ' '.
*Apostrophe Apostrophe - '`'.
*Asterisk Asterisk on an additional field of the keyboard - '*'.
*Plus Plus on an additional field of the keyboard - '+'.
*Comma Comma - ','.
*Minus Minus - '-'.
*Period Period - '.'.
*Slash Slash - '\'.
*0 - *9 Number from '0' to '9'.
*Semicolon Semicolon - ';'.
*Equal Equal - '='.
*A - *Z Keys of Latin alphabet from 'A' to 'Z'.
*BracketLeft Left square bracket- '['.
*BackSlash Backslash - '/'.
*BracketRight Right square bracket - ']'.
*QuoteLeft Left quote - '''.
Keyboard focus events.
ws_FocusIn Focus is obtained by a widget.
ws_FocusOut Focus is lost by a widget.
Mouse events:
key_mouse[Pres|Rels][Left|Right|Midle] Pressed/released the mouse button.
key_mouseDblClick Double-click the left mouse button.
Events of the primitive of elemental figure ElFigure:
ws_Fig{n}[Left|Right|Midle] Activating of the figure (fill) {n} by the mouse button.
Events of the primitive of form elements FormEl:
ws_LnAccept A new value in the input line is set.
ws_TxtAccept The value of the the text editor is changed.
ws_ChkChange The state of the flag is changed.
ws_BtPress The button is pressed.
ws_BtRelease The button is released.
ws_BtToggleChange Button toggle is changed.
ws_CombChange The value of the combo box is changed.
ws_ListChange The current list item is changed.
ws_SliderChange Changing of the the slider position.
Events of the primitive of media content Media:
ws_MapAct{n}[Left|Right|Midle] Media area with the number {n} is activated by the mouse button.

Events are the main mechanism of notification and is actively used for user interaction. For the event processing there are two mechanisms: the scriptû used to control the opening of the pages and the computational procedure of the widget.


The mechanism "Scenario of the opening pages control" is based on the core attribute of the widget "evProc", which contains the list of scenarios of operations of the opening pages with the following syntax:<event>:<evSrc>:<com>:<prm>. Where:


The following commands are implemented:


Special characters of the template are deciphered as follows:


As an example lets cite the scenario of operation of the main page of the user interface:

ws_BtPress:/prev:prev:/pg_so/*/*/$
ws_BtPress:/next:next:/pg_so/*/*/$
ws_BtPress:/go_mn:open:/pg_so/*/mn/*
ws_BtPress:/go_graph:open:/pg_so/*/ggraph/*
ws_BtPress:/go_cadr:open:/pg_so/*/gcadr/*
ws_BtPress:/go_view:open:/pg_so/*/gview/*
ws_BtPress:/go_doc:open:/pg_so/*/doc/*
ws_BtPress:/go_resg:open:/pg_so/rg/rg/*
ws_BtPress:/so1:open:/pg_so/1/*/*
ws_BtPress:/so2:open:/pg_so/2/*/*
ws_BtPress:/so3:open:/pg_so/3/*/*
ws_BtPress:/so4:open:/pg_so/4/*/*
ws_BtPress:/so5:open:/pg_so/5/*/*
ws_BtPress:/so6:open:/pg_so/6/*/*
ws_BtPress:/so7:open:/pg_so/7/*/*
ws_BtPress:/so8:open:/pg_so/8/*/*
ws_BtPress:/so9:open:/pg_so/9/*/*
ws_BtPress:*:open:/pg_control/pg_terminator


The mechanism "Processing the event with the help of computational procedure of the widget" is based on the attribute "event" and the user procedure of calculating written with the help of the language of the user programming of OpenSCADA. Events, in process of receipt, are accumulated in the attribute "event" till the moment of call of computational procedure. Computational procedure is called with the specified frequency of calculating the widget and receives a value for the attribute "event" as the list of events. In the calculation procedure the user can: analyze, process and delete the processed events from the list, and add to the list new events. The remaining, after the procedure execution, events are analyzed for compliance with the conditions of the call by means of script of the first mechanism, after which the remaining events are transmitted to the upper by the hierarchy widget to be processed by it, with the correction of the path of events in accordance with the hierarchy of the penetration of the event.


The contents of the attribute "event" is a list of events in the format <event>:<evSrc>, with the event on the separate line. Here is an example of processing events in the Java-like programming language of the OpenSCADA:

using Special.FLibSYS;
ev_rez = "";
off = 0;
while(true)
{
  sval = strParse(event,0,"\n",off);
  if( sval == "" ) break;
  else if( sval == "ws_BtPress:/cvt_light" ) alarmSt = 0x1000001;
  else if( sval == "ws_BtPress:/cvt_alarm" ) alarmSt = 0x1000002;
  else if( sval == "ws_BtPress:/cvt_sound" ) alarmSt = 0x1000004;
  else ev_rez+=sval+"\n";
}
event=ev_rez;



4.7. Signaling (Alarms)

An important element of any visualization interface is the user notification about the violation - alarm. To simplify the perception, but also in mind the close connectivity of visualization and notification (typically notification is amplified with the visualization) it is decided to integrate the interface of a notification in the visualization interface. To do this, all the widget provides two additional attributes ( of the session level): "alarm" and "alarmSt". Attribute "alarm" is used to form the signal by the widget, according to his logic, and attribute "alarmSt" is used to control the signaling fact of the branch of the tree of the session of the project.


Attribute "alarm" is a line and has the following format: {lev|categ|message|type|tp_arg}
Where:


Attribute "alarmSt" is an integer number that represents the maximum alarm level and the fact of the quittance of the branch of the tree of the session of the project. Format of the number is as follows:


Alarm formation and receipt of it by the visualizer.
Alarm formation is performed by the widget by setting its own attribute "alarm" in appropriate way and in accordance with it the attribute "alarmSt" of current and the parent widget is set. Visualizers receive notification of the alarm using a standard mechanism for notifications of the changes of attributes of widgets.


This mechanism provides the ability to build the signaling (alarm) interfaces at the level of subsystems "data acquisition", or directly at the level of representation.


Taking into account that the processing of conditions of the signaling is made in the widgets, the page containing the objects of signaling should be performed in the background, regardless of their openness to the moment. This is done by setting a flag of the background execution of the page.


Although the mechanism of signaling is built in the visualization area the possibility of formation of visual signaling elements remains, for example by creating the page that will never be opened.


Quittance
Quittance is done by specifying the root of the branch of the widgets and the types of notification. This allows to make quittance on the side of visualizer both as by groups, for example by the signaling objects as well as individually by the objects. It is possible to independently quit different types of alarms. Setting of the quittance is made by the simple modification of the attribute "alarmSt".


Example of the script to work with the signals is listed below:

//Allocation of the existence of alarms of different ways of notification
cvt_light_en = alarmSt&0x100; cvt_alarm_en = alarmSt&0x200; cvt_sound_en = alarmSt&0x400;
//Allocation of the existence of not quited alarms of different ways notification
cvt_light_active = alarmSt&0x10000; cvt_alarm_active = alarmSt&0x20000; cvt_sound_active = alarmSt&0x40000;
//Processing of the event  buttons of quittance and quittance of different ways of notification
ev_rez = "";
off = 0;
while(true)
{
  sval = strParse(event,0,"\n",off);
  if( sval == "" ) break;
  else if( sval == "ws_BtPress:/cvt_light" ) alarmSt = 0x1000001;
  else if( sval == "ws_BtPress:/cvt_alarm" ) alarmSt = 0x1000002;
  else if( sval == "ws_BtPress:/cvt_sound" ) alarmSt = 0x1000004;
  else ev_rez+=sval+"\n";
}
event=ev_rez;


4.8. Rights management

For the separation of access to the interface of VC and its components every widget contains information about the owner, about its group and access rights. Access rights are recorded as is the convention in the OpenSCADA system, in the form of a triad: <user><group><rest> where each element consists of three attributes of access. For the elements of the VCA the following interpretation is taken:


In the development mode a simple scheme of access "root.UI:RWRWR_" is used, which means - all users can open and view the libraries, their components and projects, and all users of group "UI" user interfaces) can edit.


In the performance mode the right described in the components of interface work.


4.9. Linkage with the dynamics

To provide relevant data in the visualization interface the data of subsystems "Data acquisition (DAQ)" must be used. The nature of these data as follows:

  1. parameters that contain some number of attributes;
  2. attributes of the parameter can provide information of four types: Boolean, Integer, Real and String;
  3. attributes of the parameter can have their history (archive);
  4. attributes of the parameter can be set to read, write, and with full access.

Considering the first paragraph it is necessary to allow the possibility of the group of destination links. To do this we use the conception of of the logic level (RU).


In accordance with paragraph 2, links provide transparent conversion of connection types and do not require special configuration.


To satisfy the opportunities for access to archives, in accordance with paragraph 3, links make check of the type of the attribute, and in the case of connection to the "Address", the address of linkage is put into the value.


In terms of the VCA, the dynamic links and configuration of the dynamics are the one process, to describe a configuration of which the tab "Processing" of the widgets is provided (Fig.4.9.a). The tab contains a table of configuration of the properties of the attributes of the widget and the text of calculation procedure of the widget.


 (113 Êá)
Fig. 4.9.a The tab "Processing" of the configuration page of the widget.

In addition to configuration fields of the attributes the column "Processing" in the table is provided, for selective using of the attributes of the widgets in the computational procedure of the widget, and the columns "Configuration" and "Configuration template", to describe the configuration of links.


Column "Configuration" allows you to specify the linkage type for the attribute of the widget:


Column "Configuration template" makes it possible to describe the groups of dynamic attributes. For example it may be different types of parameters of subsystem "DAQ". Furthermore, in the case of correct formation of this field, the mechanism of automatically assign of the attributes with the only indication of the parameter of subsystem "DAQ" is working, which simplifies and accelerates the configuration process. The value of this column has the following format: <Parameter>|<identifier>, where:


Installation of the links may be of several types, which are determined by the prefix:


Processing of the links occurs at a frequency of calculating the widget in the following order:


In the Fig. 4.9.b the tab of links with the group assignment of the attributes by the only specifying the parameter is presented, and in Fig. 4.9.c - with the individual appointment of the attributes.


 (60 Êá)
Fig. 4.9.b Tab "Links" of the page of configuration of the widget with the group assignment of the attributes by the only specifying of the parameter.

 (62 Êá)
Fig. 4.9.c Tab "Links" of the page of configuration of the widget with the individual appointment of the attributes.

When the widget that contains the configuration of links is placed to the container of widgets, all links of the source widget is added to the list of resulting links of the widgets' container (Fig. 4.9.d)


 (115 Êá)
Fig. 4.9.d Tab "Links" of the page of configuration of the container of widgets, including widgets with links.

The aforesaid shows that the links are set by the user in the configuration interface. However, for the possibility of creation of the frames for general use, with the function of providing detailed data of various sources of the same type, a dynamic linkage mechanism is necessary. Such an mechanism is provided through a reserved key identifier "<page>" of the group of attributes of links in the frames of general purpose and dynamic linkage with the identifier "<page>" in the process of opening of the frame of general purpose by means of the signal from another widget.


Lets examine the example when we have the frame of general-purpose "Control panel of graph" and a lot of "Graphs" in different tabs. "Control panel of graph" has links with the templates:


At the same time, each widget "Graph" has the attributes tSek, tSize, trcPer and valArch. In the case of a calling of the opening signal of "Control panel of graph" from any widget "Graph" it is happening the linkage of the attributes of the "Control panel of graph" in accordance with the attribute specified in the template with the attribute of the widget "Graph". As a result, all changes in the "Control panel of graph" will be displayed on the graph by means of the link.


In the case of presence of external links to the parameters of subsystem "Data acquisition" in the widget "Graph", the links of "Control panel of graph" will be installed on an external source. In addition, if in the "Control panel of graph" will be declared the links to the missing attributes directly in the widget "Graph", it will be made the search for the availability of such attributes from an external source, the first to which the link is directed, performing, thus, the addition of missing links.


To visualize this mechanism the table 4.9 is cited.


Table 4.9. The mechanism of the dynamic linkage.

Attributes of the "Control panel of graph" (the template of dynamic linkage) "Graph" attributes Attributes of an external "Parameter" The resulting link or an value of the linking attribute
tSek (<page>|tSek) tSek - "Graph".tSek
tSize (<page>|tSize) tSize - "Graph".tSize
trcPer (<page>|trcPer) trcPer - "Graph".trcPer
valArch (<page>|valArch) valArch - "Graph".valArch
var (<page>|var) var var "Parameter".var
ed (<page>|ed) - ed "Parameter".ed
max (<page>|max) - - EVAL
min (<page>|min) - - EVAL

4.10 Architecture

Based on the foregoing, architectural considerations let's form the static class diagram of the VCA, given the separation of the conceptual part (engine) and the part of self-realization of the VCA (Figure 4.10.1). Table 4.10 describes the classes of the class diagram.


 (77 Êá)
Fig.4.10.1 Static class diagram.

Table 4.10. VCA classes

ClassResponsibilityLinks
TSecurityProvides the information about the users, and also implements their authentication in the OpenSCADA system.It is used by the widgets and frames of the VCA to verify the access rights.
TFunctionIs used to access the mechanism of user programming when describing the logic of derived widgets, as well as to include the API functions of the object model into the derived widgets.Keeps the structure if parameters with the logic in the derived widgets. Passed to the module, which provides the user programming language implementation in order to connect the mechanism of processing the program's logic.
TUIThe root object of the module of subsystem "User interfaces" which is used for integration into the kernel of the OpenSCADA system.Is inherited by the root objects of the module of the VCA concept and by modules of implementation of the VCA interface.
VCA::EngineThe root object of the module of the VCA concept/engine. It contains the containers of objects of the engine, as well as general methods and data.It is used by the visualization interfaces to access the data of the projects' sessions and concepts in general. Integrates the concepts' f code of the VCA in the OpenSCADA system.
VCA::WidgetLibObject of the library of widgets/frames, contains the objects of library widgets (VCA::LWidget). The library of widgets structure can be freely formed by the user.Contains the objects of library widgets (VCA::LWidget).
VCA::WidgetAbstract object of the widget.Is inherited by the objects of library widget(VCA::LWidget), of the container widget(VCA::CWidget), of the frame's of the project(VCA::Win) and by the objects of the execution session of the project(VCA::SessWin,VCA::SessWdg). The widget-container contains the function associated with the implementation of the user programming language. Uses the object OpenSCADA API TSecurity for managing the access rights. Uses events from an event's manager. Contact the theme's managers in order to obtain the immediate values of the fonts, colors in accordance with the current theme.
VCA::LWidgetObject of the library widget/frame.It is stored in the library (VCA::WidgetLib). It can contain the embedded widgets, represented by the objects of the container widgets (VCA::CWidget).
VCA::CWidgetThe object of the container widget of the library widget/frame (VCA::LWidget). In fact, it serves as link to the library widget.It is stored in the library frame/widget (VCA::LWidget).
VCA::ProjectThe object of the project of the user interface. It contains windows (VCA::Win) with the hierarchical name.It is stored in the container of the object of concept (VCA::Engine). Contains the objects of windows (VCA::Win) of the project.
VCA::PageThe Object of the VC interface page. It is closely related to the frame from the library of widgets, the frame itself has the elements of the interface. The object of the window itself, in addition to the frame, allows the links to the dynamics and provides the mechanism for the dynamics interleaving of the frame on the pages, with the possibility of forming the template of the dynamics.It is stored in the container of the project. Is inherited from the abstract widget (VCA::Widget). Is connected with frame of the interface (VCA::LWidget) in the library of widgets.
VCA::ThemeObject of the theme of the visualization interface. It contains the elements of the theme (VCA::ThemeEl)It is stored in the container of the object of concept (VCA::ConcVCA). It stores elements of the theme (VCA::ThemeEl).
VCA::ThemeElObject of the theme's element. Contains an association of the element with the code of the color and font.It is contained in the container of the theme (VCA::Theme). It is used by the widget's object (VCA::Widget) for obtaining the color and font values by the name of the theme's element.
VCA::EventMapObject of the events' card. It contains the events' objects (VCA::Event).It is contained in the container of the conception object (VCA::ConcVCA). It stores the descriptions of events (VCA::Event).
VCA::EventEvent's object contains the association of the object(event)'s name with the real event.It is contained in the container of the events' map (VCA::EventMap).
VCA::SessionObject of the execution session of the visualization project. It is opened by the module of the visualization interface and uses in the future the session data for the visualization by its own method. All calculations of the visualization interfaces are made in the session.It is contained in the visualization interface project. It contains the objects of the session windows with the execution data. It is used be the modules of the visualization interfaces to display the data of the session.
VCA::SessPageObject of the session's page. It contains the dynamic data of the window of the project on which it makes the required calculations.It is contained in the object of the session of the project (VCA::SessProj). It is inherited from the abstract widget (VCA::Widget). It uses the object of the project's page (VCA::Page) as the source of the parameters' values.
VCA::SessWdgObject of the session's widget. It contains the dynamic data of the separate element of the frame over which it makes the required calculations. It may be enclosed in one another in accordance with the hierarchy of widgets of the frame.It is contained in the object of the session's window (VCA::SessPage) or in the higher on the hierarchy object of this type. It is inherited from the abstract widget (VCA::Widget). It uses the object of library (VCA::LWidget) and/or container (VCA::CWidget) widget as the source of initial parameters. It is used by the visualization interface module as the source of dynamic data for visualization.
Vision, WebGUIRoot objects of the visualization interface module, built on the basis of QT library and Web-based technologies. They provide access to the means of execution and development of visualization interfaces used in the environment of used technology.Provide an access to runtime and development modes. Integrate the visualization interface code into the OpenSCADA system.
VRunTime, WebRunTimeObjects of runtime of the visualization interface based on QT library and Web-based technologies. It directly provides the user visualization and control interface.It is contained in the root objects of the visualization modules. They are connected and use the data of the project's session object (VCA::SesProj) of the VCA concept. In accordance with the structure of the session they contain the great number of specialized objects of the direct visualization.
VDevelop, WebDevelopObjects of the development framework of the visualization interface based on QT library and Web-based technologies. Provide an interface of the tool over the conception data for the development of VC interfaces.They are contained in the root object of the visualization modules. They are connected to the object of the root of the VCA conception (VCA::Engine) and provide the graphical interface for managing it. In accordance with the structure of the conception they include the great number of specialized control objects.

The static class diagram (Fig.4.10.1) does not reveal the entire hierarchy of interaction of objects, based on an abstract object VCA::Widget. This is due to the implicit inheritance of these properties of the widgeta across all segments of the engine, as well as with the intricacies of inheritance, built by using the data of some widgets in the other ones. To explain these features lets represent the comprehensive map of "using" inheritance in Figure 4.10.2.


 (203 Êá)
Fig.4.10.2 Map of the "using" inheritance of the the components of conception/engine

4.11. The primitives of the widget

Any newly created widget is based on one of several primitives (finite element of the visualization) by installing of the related link as directly to the primitive, as well as through the several intermediate user widgets. Each of the primitives contains a mechanism (logic) of data model. A copy of the widget keeps the values of the properties of configuration of the the primitive specially for itself.


The purposes of the visualization interface includes support and work with the data model of the primitives of widgets. Primitives of the widget must be carefully developed and unitized in order to cover as many opportunities in the as possible to a smaller number of weakly connected with each other by their purpose primitives.


Table 4.11.a shows the list of primitives of widgets (basic elements of visualization).


Table 4.11.a. The library of the primitives of widgets (basic elements of visualization)

IdNameFunction
ElFigureElementary graphic figures

Primitive is the basis for drawing basic graphic shapes with their possible combinations in a single object. The support of the following basic figures is provided:

  • Line.
  • Arc.
  • Bézier curve.
  • Fill of the enclosed space.

For all the figures contained in the widget it is set the common properties of thickness, color, etc., but this does not exclude the possibility of indicating the above attributes for each figure separately.

FormElElements of the form.

Includes support for standard form components:

  • Line edit.
  • Text edit.
  • Check box.
  • Button.
  • Combo box.
  • List.
  • Slider.
  • Scroll bar.
TextTextText element (labels). Characterized by the type of font, color, orientation and alignment.
MediaMediaElement of visualization of raster and vector images of various formats, playback of animated images, playback of audio segments and playback of video fragments. Perhaps it should be included the OpenGL support!
DiagramDiagramElement of the diagram with the support of the visualization of the flow of several trends, the spectrum ... .
ProtocolProtocolElement of the protocol, visualizer of the system messages, with support for multiple operating modes.
DocumentDocumentThe element of generating the reports, journals and other documentation on the basis of available in the system data.
BoxContainerContains the mechanism fro other widgets placement with the purpose of creation of new, more complex widgets and pages of final visualization.
FunctionFunction of API of the object model of OpenSCADANot visual, on the side of execution, widget which allows to include a computing function of the object model of OpenSCADA in the VCA.

Each primitive, and the widget at all, contains the common set of properties/attributes in the composition which is shown in Table 4.11.b:


Table 4.11.b. The common set of properties/attributes in the widget

IdNameNumberValue
id Id - Id of the element. The attribute is read-only, designed to provide information on the ID of the element.
path Path - The path to the widget. The attribute is read-only and disigned to provide information about the location of the element.
parent Parent - Ancestor or parent of the widget. The attribute is read-only and designed to provide information about the location of ancestor from which the widget is inherited from.
root Root 1 Id of the widget-primitive (basic element) which underlies the image of visualization of the widget.
name Name - Name of the element. Modifiable element name.
dscr Description - Description of the element. Text field, serves for attachment to the widget of the brief description.
en Enabled 5 The state of the element - "Enabled". Disabled element is not shown in the execution mode.
active Active 6 The state of the element - "Active". Active element may receive focus in the execution mode, and thus receive keyboard and other events with their subsequent processing.
geomX Geometry:x 7 Geometry, coordinate 'x' of the element position.
geomY Geometry:y 8 Geometry, coordinate 'y' of the element position.
geomW Geometry:width 9 Geometry, the width of the element.
geomH Geometry:height 10 Geometry, the height of the element.
geomXsc Geometry:x scale 13 The horizontally scale of the element.
geomYsc Geometry:y scale 14 The vertical scale of the element.
geomZ Geometry:z 11 Geometry, coordinate 'z' (level) of element on the page. It also defines how to transfer the focus through active elements.
geomMargin Geometry:margin 12 Geometry, the fields of the element.
tipTool Tip:tool 15 The text of a brief help or tip on this element. Usually is realized as a tool tip, while keeping your mouse cursor over the element.
tipStatus Tip:status 16 Text information on the status of the element or guide to action over the element. Usually is realized in the form of a message in the status bar while keeping your mouse cursor over the element.
contextMenu Context menu 17

Configuration of the own context menu of the element. The configuration is stored as the lines of entries of context menu in the format:<Name of the entry>:<EventId>. Where:

  • <Name of the entry> - Name of the entry of menu.
  • <EventId> - Event Id which is generated to the widget (usr_<EventId>) while the selection the menu entry.
evProc Events process - Attribute for storing of the script of the processing of event of direct control of user interface. Script is the list of commands to the visualization interface generated at the event receipt (attribute event).
Additional attributes for items placed into the project in the role of a page.
pgOpen Page:open state - Sign "The page is open".
pgNoOpenProc Page:no open process - Sign "Execute the page, even if it is closed".
pgOpenSrc Page:group ==¯¯ 4 The group of the page.
Additional attributes of the execution mode.
event Event - Special attributes for the collection of events of the widget in the list, which is divided by the new line. This attribute is only available in the session. Access to the attribute is protected by the resource in order to avoid loss of events. An attribute is always available in the script of widget.
load Load -1 A virtual command of the group data download.
focus Focus -2 Special attribute of the indicating the fact of receiving the focus by an active widget. This attribute is only available in the session. Attribute of the widget and of the the embedded widgets is available in the script of widget.
perm Permition -3 Virtual attribute of the rights verification of active user on the viewing and control over the widget.

4.11.1. Elementary graphic figures (ElFigure)

Primitive is the basis for drawing basic graphic shapes with their possible combinations in a single object. Taking into account the wide range of various shapes, which must be maintained by the primitive, and at the same time the primitive must be simple enough for using and, if possible, for implementation, it was decided to limit the list of the basic figures used for the construction of the resulting graphics to these figures: line, arc, Bézier curve and fill of the enclosed spaces. Based at these basic figures, it is possible to construct derived figures by combining the basic. in the context of the primitive, there is possibility to set the transparency of the color in the range [0 .. 255], where '0'- complete transparency.


A list of additional properties/attributes of the primitive is given in Table 4.11.1.


Table 4.11.1. A list of additional properties/attributes of the primitive ElFigure

IdNameNumberValue
lineWdth Line:width 20 Line width.
lineClr Line:color 21 Line color.(Transparency of the color is defined as follows: red-127 | #ff0000-127, where "127" is the value of transparency.)
lineStyle Line:style 22 Line style (solid, dashed, dotted).
bordWdth Border:width 23 Line border width. The zero width indicates the lack of border.
bordClr Border:color 24 Border color.
fillColor Fill:color 25 Fill color.
fillImg Fill:image 26 Fill image.
orient Orientation angle 28 The rotation angle of the content of widget.
elLst Element's list 27

List of graphic primitives in the following format:

  • Line. Record form in the list: <line:p1 | (x | y):p2 | (x | y):[width | w{n}]:[color | c{n}]:[border_width | w{n}]:[border_color | c{n}]:[line_style | s{n}]>
  • Arc. Record form in the list: <arc:p1 | (x | y):p2 | (x | y):p3 | (x | y):p4 | (x | y):p5 | (x | y):[width | w{n}]:[color | c{n}]:[border_width | w{n}]:[border_color | c{n}]:[line_style | s{n}]>
 (4 Kb)
  • Bézier curve. Record form in the list: <bezier:p1 | (x | y):p2 | (x | y):p3 | (x | y):p4 | (x | y):[width | w{n}]:[color | c{n}]:[border_width | w{n}]:[border_color | c{n}]:[line_style | s{n}]>
  • Fill. Record form in the list: <fill:p1 | (x | y),p2 | (x | y),...,pn | (x | y):[fillClr | c{n}]:[fillImg | i{n}]>
The attributes for each point from the list of graphic figures elLst
p{n}x Point {n}:x 30+n*6 Coordinates 'x' of the point {n}.
p{n}y Point {n}:y 30+n*6+1 Coordinates 'y' of the point {n}.
w{n} Width {n} 30+n*6+2 Width {n}.
ñ{n} Color {n} 30+n*6+3 Color {n}.
i{n} Image {n} 30+n*6+4 Image {n}.
s{n} Style {n} 30+n*6+5 Style {n}.

4.11.2. Element of the form (FormEl)

Primitive is intended to provide the standard form elements to the user. The general list of attributes depends on the type of element. A list of additional properties/attributes of the primitive is given in Table 4.11.2.


Table 4.11.2. A set of additional properties/attributes of primitive FormEl

IdNameNumberValue
elType Element type 20 Type of element (Line edit, Text edit, Check box, Button, Combo box, List, Slider, Scroll bar). On its value it is depended a list of additional attributes.
Line edit:
value Value 21 The contents of the line.
view View 22 Type of the editing line (Text; Combobox; Integer; Real Time, Date, Date and Time).
cfg Config 23

Configuration of the line. The format of the value of the field for different types of lines:

Text - the input template is indicated in the format of library QT.
Combobox - contains a list of the values of the editable combobox.
Integer - contains the configuration of input field of integer in the format: <Minimum>:<Maximum>:<Step of change>:<Prefix>:<Suffix>.
Real - contains the configuration of input field of real in the format: <Minimum>:<Maximum>:<Step of change>:<Prefix>:<Suffix>:<The number of digits after the decimal point>.
Time, Date, Date and time - to form the date following the the template with parameters:
d - number of the day (1-31);
dd - number of the day (01-31);
ddd - acronym of the day ("Mon" ... "Sun");
dddd - the full name of the day ("Monday" ... "Sunday");
M - number of the month (1-12);
MM - number of the month (01-12);
MMM - acronym of the month ("Jan" ... "Dec");
MMMM - the full name of the month ("January" ... "December");
yy - last two digits of the year;
yyyy - full year;
h - hour (0-23);
hh - hour (00-23);
m - minutes (0-59);
mm - minutes (00-59);
s - seconds (0-59);
ss - seconds (00-59);
AP,ap - to display AM/PM or am/pm.
font Font 25 Text font in the full record {<Family> <Size> <Bold> <Italic> <Underline> <Strikeout>}.
Text edit:
value Value 21 The contents of the editor.
wordWrap Word wrap 22 Automatic division of text by the words.
font Font 25 Text font in the full record {<Family> <Size> <Bold> <Italic> <Underline> <Strikeout>}.
Check box:
name Name 26 Bame/label of the checkbox.
value Value 21 Value of the checkbox.
font Font 25 Text font in the full record {<Family> <Size> <Bold> <Italic> <Underline> <Strikeout>}.
Button:
name Name 26 Name, the inscription on the button.
value Value 21 The value for the settled button.
img Image 22 The image on the button.
color Color 23 Color of the button.
colorText Color:text 27 The color of the text.
checkable Checkable 24 Sign of functioning as a settled button.
font Font 25 Text font in the full record {<Family> <Size> <Bold> <Italic> <Underline> <Strikeout>}.
Combo box:
value Value 21 Current value of the list.
items Items 22 The entries of the list.
font Font 25 Text font in the full record {<Family> <Size> <Bold> <Italic> <Underline> <Strikeout>}.
List:
value Value 21 The selected list value.
items Items 22 The entries of the list.
font Font 25 Text font in the full record {<Family> <Size> <Bold> <Italic> <Underline> <Strikeout>}.
Slider and the scroll bar:
value Value 21 Slider position.
cfg Config 22

Configuratio of the slider in the format: <VertOrient>:<Min>:<Max>:<SinglStep>:<PageStep>. Where:

  • VertOrient - sign of a vertical orientation, the default is the horizontal orientation;
  • Min - minimum value
  • Max - maximum value;
  • SinglStep - the size of a single step;
  • PageStep -the size of the page step.

4.11.3. Text element (Text)

This primitive is designed to display the plain text used as labels, and different signatures. With the aim of creating a simple frequent decorations the primitive must support the surrounding of the text by frame. A list of additional properties/attributes of the primitive is given in Table 4.11.3.


Table 4.11.3. The list of additional properties/attributes of the primitive Text

IdNameNumberValue
backColor Background:color 20 Background color.
backImg Background:image 21 Background image.
bordWidth Border:width 22 Border width.
bordColor Border:color 23 Border color.
bordStyle Border:style 24 Border style (None;Dotted;Dashed;Solid;Double;Groove;Ridge;Inset;Outset).
font Font 25 Text font in the full record {<Family> <Size> <Bold> <Italic> <Underline> <Strikeout>}.
color Color 26 Text color.
orient Orientation angle 27 Orientation of text, rotation on angle.
wordWrap Word wrap 28 Automatic division of text by words.
alignment Alignment 29 Alignment of the text (Top left, top right, top center, top justify, the bottom left, bottom right, bottom justify; V center left, V center right, center ; V center justify).
text Text 30 The value of the text field.
numbArg Arguments number 40 Arguments number.
Attributes of the arguments
arg{x}val Argument {x}:value 50+10*x Argument value.
arg{x}tp Argument {x}:type 50+10*x+1 Argument type: "Integer", "Real", "String"
arg{x}cfg Argument {x}:config 50+10*x+2

Argument configuration:

  • string : [len] - string width;
  • real: [wdth];[form];[prec] - value width, the form of çíà÷åíèÿ ('g','f');
  • integer: [len] - value width.

4.11.4. Element of visualization of media materials (Media)

This primitive is designed to play different media materials, ranging from simple images to the full audio and video streams. Taking into the account the variety of ways and libraries for playing a full audio and video streams as well as a serious laboriousness of implementing of all of these mechanisms in this widget, it was decided at the initial stage, only to realize the work with images and with simple animated images and video formats. A list of additional features/attributes of the primitive is given in Table 4.11.4.


Table 4.11.4. A set of additional properties/attributes of primitive Media

IdNameNumberValue
backColor Background:color 20 Background color.
backImg Background:image 21 Background image.
bordWidth Border:width 22 Border width.
bordColor Border:color 23 Border color.
bordStyle Border:style 24 Border style (None;Dotted;Dashed;Solid;Double;Groove;Ridge;Inset;Outset).
src Source 25 Source of media data.
fit Fit to widget size 26 Sign "Ño-ordinate the contents with the size of the widget".
type Type 27 Type of media (Image;Movie).
areas Map areas 28 Number of active areas.
The attributes of the video (Movie)
speed Play speed 29 The speed of playback, as a percentage from the original speed. If the value is less than 1%, the playback stops.
Active areas
area{x}shp Area {x}:shape 40+3*x Type of the area (Rect;Poly;Circle).
area{x}coord Area {x}:coordinates 40+3*x+1 The coordinates of areas. Coordinates are separated by commas: "x1,y1,x2,y2,xN,yN"
area{x}title Area {x}:title 40+3*x+2 Title of the area.

4.11.5. Element of constructing diagrams/trends (Diagram)

This primitive is designed to construct various diagrams, including graphs/trends showing ongoing process and archive data. At this time, the following types of diagrams are realized:


The process of access to archive data is optimized, by means of an intermediate buffer for the display, as well as the package of traffic data in the query. A list of additional properties/attributes of the primitive is given in Table 4.11.5.


Table 4.11.5. A list of additional properties/attributes of the primitive Diagram

IdNameNumberValue
backColor Background:color 20 Background color.
backImg Background:image 21 Background image.
bordWidth Border:width 22 Border width.
bordColor Border:color 23 Border color.
bordStyle Border:style 24 Border style (None;Dotted;Dashed;Solid;Double;Groove;Ridge;Inset;Outset).
trcPer Tracing period (s) 25 Mode and frequency of tracing.
type Type 26 Diagram type: "Trend".
Attributes of the trend/graph (Trend)
tSek Time:sek 27 Current time, seconds.
tUSek Time:usek 28 Current time, microseconds.
tSize Size, sek 29 Size of the trend, seconds.
curSek Cursor:sek 30 Cursor position, seconds.
curUSek Cursor:usek 31 Cursor position, microseconds.
curColor Cursor:color 32 Cursor color.
sclColor Scale:color 33 Color of the scale/grid.
sclHor Scale:horizontal 34 Horizontal mode of the scale/grid: "No draw", "Grid;Markers" è "Grid and markers".
sclVer Scale:vertical 35 Vertical mode of the scale/grid: "No draw", "Grid", "Markers", "Grid and markers", "Grid (log)", "Marker (log)", "Grid and markers (log)".
sclVerScl Scale:vertical scale (%) 40 Graphic's vertical scale in percents.
sclVerSclOff Scale:vertical scale offset (%) 41 Offset of graphic's vertical scale in percents.
sclMarkColor Scale:Markers:color 36 Color of markers of the scale/grid.
sclMarkFont Scale:Markers:font 37 Font of markers of scale/grid in the form of {<Family> <Size> <Bold> <Italic> <Underline> <Strikeout>}.
valArch Value archivator 38 Archives of parameters archiver.
parNum Parameters number 39 The number of parameters that can be displayed on the one trend.
Individual attributes of the parameters of trend/graph
prm{X}addr Parametr {X} :address 50+10*{X} Full address to the parameter {X} or to the archive of values.
prm{X}bordL Parametr {X} :view border:lower 50+10*{X} +1 The lower limit of the parameter {X}.
prm{X}bordU Parametr {X} :view border:upper 50+10*{X} +2 The upper limit of the parameter {X}.
prm{X}color Parametr {X} :color 50+10*{X} +3 Color fro display of trend of the parameter {X}.
prm{X}val Parametr {X} :value 50+10*{X} +4 Value of the parameter {X} under the cursor.

4.11.6. The element of building the protocols based on the archives of messages (Protocol)

This primitive is designed to visualize the data of the archive of messages through the formation of protocols with different ways of visualization, starting from a static scanning view and finishing with dynamic tracing of protocol of message. A list of additional properties/attributes of the primitive is given in Table 4.11.6.


Table 4.11.6. A list of additional properties/attributes of the primitive Protocol

IdÈìÿÍîìåðÇíà÷åíèå
backColor Background:color 20 Background color.
backImg Background:image 21 Background image.
font Font 22 Text font in the full record {<Family> <Size> <Bold> <Italic> <Underline> <Strikeout>}.
headVis Header visible 23 Show header for table or not.
time Time, sek 24 Current time, seconds.
tSize Size, sek 25 Query size, seconds.
trcPer Tracing period (s) 26 Mode and frequency of tracing.
arch Archival 27 Archiver of the message archive.
tmpl Template 28 Template of the query in the archive.
lev Level 29 The level of messages.
viewOrd View order 30 View order ("By time", "By level", "By category", "By messages", "By time (reverse)", "By level (reverse)", "By category (reverse)", "By messages (reverse)").
col View columns 31 The displayed columns.
itProp Item's properties 32 Item's properties number.
Individual attributes of item's properties
it{X}lev Item {X}:level 40+5*{X} Criterion: element's level {X}. More or equal for pointed.
it{X}tmpl Item {X}:template 41+5*{X} Criterion: element's category template {X}. Include special symbols '*' and '?'.
it{X}fnt Item {X}:font 42+5*{X} Element {X} font.
it{X}ñolor Item {X}:color 43+5*{X} Element {X} color.

Features of the primitive "Document":

  • Flexible formation of the structure of the document based on Hypertext Markup Language. This will provide support of wide formatting opportunities of documents with the subsequent implementation of the GUI form of the document formation.
  • Formation of documents on command or on a plan into the with the archive with the subsequent viewing of the archive.
  • Document formation in real-time mode, fully dynamic and based on the archives for the specified time.
  • Using the attributes of the widget to pass values and addresses to the archives in the document. Allows you to use the widget of document as the template for generating reports with other input data.
  • Provision of an opportunity to place the data input elements on the document. It'll allow you to create self-tuning and self-configurable documents.

The basis of any document is XHTML-template. XHTML-template is the tag "body" of the WEB-page which contains the document's static in the standard XHTML 1.0 and elements of the executable instructions in one of the languages of the user programming of OpenSCADA in the form of <?dp <procedure> ?>. The resulting document is formed by the execution of procedures and insert of their result into the document.


The source for values of the executable instructions are the attributes of the widget of the primitive, as well as all the mechanisms of the user programming language. Attributes may be added by the user and they can be linked to the actual attributes or parameters or they can be autonomous, values of which will be formed in the script of the widget. In the case of linked attributes the values can be extracted from the history, archive.


Fig. 4.11.7.1.a shows a block diagram of the widget of the primitive "Document". According to this structure "Document" includes: XHTML-template, the resulting documents and the processing script. The data source for the script and for the resulting documents are the attributes of the widget.


 (41 Êá)
Fig. 4.11.7.1.a The block diagram of the primitive "Document".

It i provided the work of widget in two modes: Dynamic and Archive. The difference between archive mode is the availability of the archive of the specified depth and attributes which allow you to control the process of archiving and viewing of the document in the archive.


Generation of the document is always made at the time of installation of the time attribute <time> relatively to the set start time of the document in the attribute <bTime>. With the archive turned off the resulting document is placed directly in the attribute <doc>. When the archive is turned on the resulting document is placed in the cell under the cursor, the attribute <aCur>, as well as in <doc> if the value of the archive cursor <aCur> and the cursor of visualized document <vCur> match. Attributes of the archival cursors provide several command of values:

  • aCur<0 - Moves the archiver cursor for the following position, thereby leaving the previous document in the archive and clearing the document under the cursor.
  • vCur==-1 - Select of the next document to be displayed. The selected document is copied to the attribute <doc>.
  • vCur==-2 - Select of the previous document to be displayed. The selected document is copied to the attribute <doc>.

As it was stated above dynamics of the document's template is defined by the inserts of executable instructions of the form <?dp <procedure> ?>. The procedures may use the same attributes of the widget and functions of the user programming interface of OpenSCADA. In addition to the attributes of the widget special attributes (Table 4.11.7.1.a) are reserved.


In addition to special attributes in XHTML template tags and tags' attributes of special assignment are reserved (Table 4.11.7.1.a).


Table 4.11.7.1.a. Special and reserved elements of the template.

Name Assignment
Attributes
rez Attribute of the results of the procedure execution, the contents of which is placed to the document tree.
lTime Last formation time. If the document is formed for the first time, <lTime> is equal to the <bTime>.
rTime Contains the time for the selected values in seconds. It is defined inside the tags with the attribute "docRept".
rTimeU Contains the time for the selected values in microseconds. It is defined inside the tags with the attribute "docRept".
rPer Contains the periodicity of the selection of values (the attribute "docRept").
mTime, mTimeU, mLev, mCat, mVal It is defined inside the tags with an attribute "docAMess" when parsing messages of the messages' archive:
mTime - message time;
mTimeU - message time, microseconds;
mLev - message level;
mCat - message category;
mVal - message value.
Special tags
Special attributes of the standard tags
body.docProcLang Language of executable procedures of the document. By defaults it is JavaLikeCalc.JavaScript.
*.docRept="1s" Tag with the specified attribute, while the formation it multiplies through the time offset in the attribute "rTime" to the value, specified in this attribute.
*.docAMess="1:PLC*" Indicates the necessity of the tag multiplication with an attribute of message from the archive of messages for the specified interval of time and in accordance with the level of (1) and template of request (PLC*). For this tag in the process of multiplication the following attributes: mTime, mTimeU, mLev, mCat and mVal are defined.
*.docRevers="1" Points to invert of the order of multiplication, the last from the top.
*.docAppend="1" The sign of the necessity of addition of the procedure execution result in the tag of the procedure. Otherwise, the result of execution replaces the contents of the tag.
body.docTime Time of formation of the document. It is used to set the attribute <lTime> in the time of the next formation of the document. It is not set by the user!

4.11.8. Container (Box)

Primitive container is used to build composite widgets and/or the pages the user interface. A list of additional properties/attributes of the primitive is given in Table 4.11.8.


Table 4.11.8. A list of additional properties/attributes of the primitive Box

IdNameNumberValue
pgOpenSrc Page:open source 3 Full address of the page, which is included inside of the container.
pgGrp Page:group 4 The group of container of pages.
backColor Background:color 20 Background color.
backImg Background:image 21 Background image.
bordWidth Border:width 22 Border width.
bordColor Border:color 23 Border color.
bordStyle Border:style 24 Border style (None;Dotted;Dashed;Solid;Double;Groove;Ridge;Inset;Outset).

4.12. Using the database to store the library of widgets and projects

All the data of the VCA conception should be stored in the DB. This would allow flexibly to distribute and use the VCA data, choosing the most suitable database from the list of supported by the OpenSCADA. The projections of the main tables we'll write as follows:


4.13 API of the user programming and service interfaces of the OpenSCADA

4.13.1. API of the user programming

API of the user programming of the visualization engine are represented by the group of functions directly in the engine module of the VCA. Calling of these functions from the scripts of widgets can be performed directly by the ID of the function, since their area of names is indicated for the context of the scripts of widgets.


Widget list (WdgList)
Description: Returns a list of widgets in the container of widgets or a list of child widgets. If <pg> is set it returns a list of pages for projects and sessions.
Parameters:

ID Name Type Mode By default
list List String Return
addr Address String Input
pg Pages Bool Input 0

Presence of the node (NodePresent)
Description: Check for the presence of the node, including widgets, attributes and others.
Parameters:

ID Name Type Mode By default
rez Result Bool Return
addr Address String Input

Attributes list (AttrList)
Description: Returns list of attributes of the widget. If <noUser> is set then only not user attributes are returned.
Parameters:

ID Name Type Mode By default
list List String Return
addr Address String Input
noUser Without user Bool Input 1

Request of the attribute (AttrGet)
Description: Request of the value of the attribute of the widget. The request can be done as by indicating the full address of the attribute in <addr>, and by indicating separately the address of the widget in <addr>, and the ID of the attribute in the <attr>.
Parameters:

ID Name Type Mode By default
val Value String Return
addr Address String Input
attr Attribute Bool Input

Setting of the attribute (AttrSet)
Description: Setting of the value of the attribute of the widget. Setting can be done as by the indicating the full address of the attribute in <addr>, and by indicating separately the address of the widget in <addr>, and the ID of the attribute in <attr>.
Parameters:

ID Name Type Mode By default
addr Address String Input
val Value String Input
attr Attribute Bool Input

Session user (SesUser)
Description: Return session user by session's widget path.
Parameters:

ID Name Type Mode By default
user User String Return
addr Address String Input

4.13.2. Service interfaces of the OpenSCADA

Service interfaces are interfaces of access to the OpenSCADA system by means of OpenSCADA control interface from external systems. This mechanism - is the basis of all the mechanisms for sharing within OpenSCADA, implemented through weak ties, and standard exchange protocol of OpenSCADA.

Access to the values of attributes of the visualization elements (widgets)

In order to provide uniform, group, and relatively fast access to the values of attributes of the visual elements the service function of the visual element "/serv/attr" and get/set command of the attributes' values are provided: <get path="/UI/VCAEngine/{wdg_addr}/%2fserv%2fattr"/> and <set path="/UI/VCAEngine/{wdg_addr}/%2fserv%2fattr"/>. Attributes of these commands, which provide the various mechanisms of the request, are presented in the Table 4.13.2.a.


Table 4.13.2.a. Attributes of commands of get/set of the the attributes of visual elements

IdNameValue
Request command of the visual attributes of the widget: <get path="/UI/VCAEngine/{wdg_addr}/%2fserv%2fattr"/>
tm Time/counter of changes Time/counter of changes set up for the query of the only changed attributes.
<el id="{attr}" p="{a_id}">{val}</el> The formation of the child elements with the results of the attributes In the child element are specified: string ID {attr} of the attribute, index {a_id} of the attribute and its value {val}.
The set command of the visual attributes of the widget: <set path="/UI/VCAEngine/{wdg_addr}/%2fserv%2fattr"/>
<el id="{attr}">{val}</el> Set of the ettributes In the child elements the ID of the attribute {attr} and its value {val} are specified.
Group access to the values of attributes of the visualization elements (widgets)

In order to optimize network traffic by eliminating small queries, but use one, but a large the group query of the attributes' values of visual elements is made. Grouping of this query involves a request of attributes of the entire branch of the widget, including embedded elements. For this request the service command "/serv/attrBr". Request of this service command is equivalent to the service command "/serv/attr" and looks as follows:
<get path="/UI/VCAEngine/{wdg_addr}/%2fserv%2fattrBr"/>

tm - Time/counter of changes. Time/counter of changes set up for the query of the only changed attributes.

Result:

<el id="{attr}" p="{a_id}">{val}</el> - Elements with the results of the attributes. In the element are specified: string ID {attr} of the attribute, index {a_id} f the attribute and its value {val}.
<w id="{wid}" lnkPath="{lnk_path}">{childs+attrs}</w> - Elements with child widgets and their attributes. The identifier of the child widget {wid} and the path to the widget on which the current widget links to, if its is the link {lnk_path}, are specified in the element.
Access to the pages of the session

In order to unify and optimize the access to the pages the service function of the session "/serv/pg" and commands of the query of the list of open pages (<openlist path="/UI/VCAEngine/ses_{Session}/%2fserv%2fpg"/>); of opening the pages (<open path="/UI/VCAEngine/ses_{Session}/%2fserv%2fpg"/>); and closing of the pages <close path="/UI/VCAEngine/ses_{Session}/%2fserv%2fpg"/>) are provided.


The result of the query of the list of open pages are child elements <el>{OpPage}</el> which contain the full path of the open page. In addition to the list of open pages, the query returns the value of the current counter for calculating the session in the attribute <tm>. If this attribute is set during the query, then for each open page it is returned the list of changed, since the moment of the specified value of the counter, widgets of the open page.

Signaling (alarm) management

To provide a mechanism for global control of the signaling of the session the service function of the session "/serv/alarm" and commands of the query of the signals status (<get path="/UI/VCAEngine/ses_{Session}/%2fserv%2falarm"/>); and of the quittance (<quittance path="/UI/VCAEngine/ses_{Session}/%2fserv%2falarm"/>) are provided.


Request for the status of signals returns generalized condition of the signals, as well as additional information for the sound signaling. Additional information by sound signal is provided by the current resource, a sound file, for playback and it provides monitoring of the sequence of signaling and quittance of individual files of sound messages.


Request for the quittance performs quittance of the specified widget, attribute <wdg>, in accordance with the template, attribute <tmpl>.

Manipulation with the sessions of the projects

To provide a uniform mechanism for manipulation of the sessions by the visualizers of VCA in the module of the VCA engine (VCAEngin) are provided: the service function "/serv/sess" and query commands of the list of open sessions, connection/creation of the new session and disconnection/deleting of the session:<list path="/UI/VCAEngine/%2fserv%2fsess"/>, <connect path="/UI/VCAEngine/%2fserv%2fsess"/> and <disconnect path="/UI/VCAEngine/%2fserv%2fsess"/> accordingly. Attributes of these commands, which provide the various mechanisms of the request, are presented in Table 4.13.2.b.


Table 4.13.2.b. Attributes of commands of the mechanism of manipulation with sessions

IdNameValue
Command of request of the list of open sessions for the project: <list path="/UI/VCAEngine/%2fserv%2fsess"/>
prj Indication of the project Specifies the project for which to return the list of open sessions.
<el>{Session}</el> Control of the sessions' list In the child element the open for the requested project sessions are specified.
The command of the connection/opening of the session: <connect path="/UI/VCAEngine/%2fserv%2fsess"/>
sess Installation and control of the session name If the attribute is defined, then connecting to an existing session is to be made, else - creation of the new session is to be made. In the case of opening of the new session in this attribute its name is is placed.
prj Setting the name of the project It is used to open a new session for indicated project and when the attribute {sess} is not specified.
The command of disconnection/closing of the session: <disconnect path="/UI/VCAEngine/%2fserv%2fsess"/>
sess Setting the name of the session Specify the name of the session from that it is made the disconnection or closing. Sessions, not the background, and to which none of the visualizers is not connected, are automatically closed.
The group request of the tree of widget libraries

In order to optimize the performance of local and especially network interaction the service function "/serv/wlbBr" and command of the query of the tree of widget libraries: <get path="/UI/VCAEngine/%2fserv%2fwlbBr"/> are provided. The result of the query is the tree with the elements of the libraries of widgets, tags <wlb>. Inside the tags of libraries of widgets are included: icon tag <ico> and widgets library tags <w>. Widgets tags, in their turn, contain the icon tag and tags of the child widgets <cw>.


4.14 Copying elements

To speed up the process of developing of the user visualization and control interfaces it is necessary to provide the copy function of the elements. To provide the support of the various options for copy lets list them:


4.15 Projecting functional features

Here are the features that can provide VCA constructed on the basis of this project:


 
There are no files on this page.[Display files/form]
There is no comment on this page. [Display comments/form]