Module: | BlockCalc |
Name: | Block calculator. |
Type: | DAQ |
Source: | daq_BlockCalc.so |
Version: | 1.7.0 |
Author: | Roman Savochenko, Maxim Lysenko (2009,2012) |
Description: | Provides a block calculator. |
License: | GPL |
The module of subsystems «DAQ» BlockCalc provides the system OpenSCADA with the mechanism for creating custom calculations. The mechanism of calculations based on the formal language of block circuits(functional blocks).
Also, the module implements the functions of the horizontal reservation, namely, working in conjunction with the remote station of the same level. In addition to the synchronization of the archives of values and archives of attributes of parameters the module implements synchronization of computational templates, in order to shockless catch of the algorithms.
Languages of block programming based on the notion of circuits(functional blocks). Moreover, depending on the substance of the block, block circuits may include: logic, relay logic circuits, a model of technological process, and more. The essence of the block circuit is that it contains a list of blocks and relations between them.
From a formal point of view a block is an element(function), which has inputs, outputs, and an algorithm for computing. Basing on the concept of programming area, block is a frame of values associated with the object of function.
Of course, the inputs and outputs of blocks may be needed to be connected for a solid block scheme. The following types of links are provided:
Conditionally, connections of blocks can be represented as links between the blocks as a whole(Fig. 1) or detailing of the links(Fig. 2). In the process of binding parameters of blocks the connection of parameters of any type is acceptable. Thus, in the process of computation automatically casting of types will be done.
Each controller of this module contains the block circuit, which he computes with the specified period. In order to provide calculated data in the system OpenSCADA the parameters can be created in the controller. Example of the configuration tab of the controller of the given type depicted in Fig. 3.
From this tab you can set:
The block scheme is formed by means of the tab controller's blocks, configuration of the block (Figure 4) and its connections (Fig. 5).
Blocks of block scheme can connect both among themselves and to the attributes of the parameters. Blocks themselves do not contain the structure of input/output(IO), but contain values, based on the IO-structure of related function. Function for linking with a block is used from the object model of the system OpenSCADA.
Any block may at any time be removed from the process and be reconfigured and then may be again included in the process. Communications between the blocks can be configured without exception blocks from the processing and stopping of the controller. All IO values without connections can be changed during processing.
Using tab of the blocks you can:
Using the form of block configuration it can be set:
Using the configuration tab of links of the block of the block scheme the links can be set for the parameter of each block separately.
The following types of links are supported:
To set values for the parameter of the block there is the corresponding tab (Fig.6).
In accordance with the custom functions in the system OpenSCADA the four main types of IO are supported: integer, float, boolean and string.
The module provides a special treatment of a number of IO of the block:
The module provides only one type of parameters — the "Standard". The parameter used to reflect the data, calculated in the blocks, on the attributes of the controller's parameters. Example of the configuration tab of the parameter is shown in Fig.7.
From this tab you can set:
To simplify and expedite the development of complex and repetitive block schemes the mechanism of copying of the elements of block scheme both individually and block schemes entirely is provided. The mechanism of copying is integrated into the kernel of OpenSCADA and operates transparently.
Some objects of the module provides functions for user's programming.
Object "Block" (SYS.DAQ.BlockCalc["cntr"]["blk_block"])