Module: | FLibSYS |
Name: | Library of system API functions. |
Type: | Specials |
Source: | spec_FLibSYS.so |
Version: | 1.0.0 |
Author: | Roman Savochenko |
Translated: | Maxim Lysenko |
Description: | Provides the library of system API functions of user programming area. |
License: | GPL |
Special module FLibSYS provides static library of functions for working with the OpenSCADA system at the level of its system API. These functions can be used in an user programming area of OpenSCADA system for the organization of not ordinary interaction algorithms.
To address the functions of the library you can use static call address "Special.FLibSYS.{Func}()" or dynamic "SYS.Special.FLibSYS["{Func}"].call()", "SYS.Special.FLibSYS.{Func}()". Where {Func} — function identifier in the library.
Below is the description of each function of the library. For each function it was evaluated the execution time. Measurements were made on the system with the following parameters: Athlon 64 3000 + (ALTLinux 4.0 (32bit)) by measuring the total execution time of the function when you call it 1000 times. Sampling was carried out of the five calculations, rounded to integer. Time is in angle brackets and is measured in microseconds.
Description:Call the console commands of the OS. The function offers great opportunities to the OpenSCADA user by calling any system software, utilities and scripts, as well as getting the access to the huge volume of system data by means of them. For example the command "ls-l" returns the detailed contents of the working directory.
Parameters:
ID | Name | Type | Mode | By defaults |
rez | Result | String | Return | |
com | Command | String | In |
Example:
using Special.FLibSYS; test=sysCall("ls -l"); messPut("Example",0,"Example: "+test);
Description: Formation of the SQL-query to DB.
Parameters:
ID | Name | Type | Mode | By defaults |
rez | Result | Object(Array) | Return | |
addr | DB address | String | In | |
req | SQL-query | String | In |
Description: Creation of the XML node object.
Parameters:
ID | Name | Type | Mode | By defaults |
rez | Result | Object(XMLNodeObj) | Return | |
name | Name | String | In |
Example:
using Special.FLibSYS; //Creating the "get" object of the XML node. req = xmlNode("get"); //Creating the "get" object of the XML node with creating attributes. //sub_DAQ/mod_ModBus/cntr_1/prm_1 — The path in accord of project structure. req = xmlNode("get").setAttr("path",);
Description: Request of the management interface to the system via XML. The usual request is written in the form "<get path="/OPat/%2felem"/>". When we indicate the station the request to the external station is made.
Parameters:
ID | Name | Type | Mode | By defaults |
rez | Result | String | Return | |
req | Request | Object(XMLNodeObj) | Out | |
stat | Station | String | In |
Example:
using Special.FLibSYS; //Geting status "Off/On" of the parameter "1" of the controller "1" of the module "ModBus". //sub_DAQ/mod_ModBus/cntr_1/prm_1 — The path in accord of project structure. req = xmlNode("get").setAttr("path",); rez = xmlCntrReq(req); messPut("test",0,"Example: "+req.text()); //Setting status "On" of the parameter "1" of the controller "1" of the module "ModBus". req = xmlNode("set").setAttr("path",).setText(1); rez = xmlCntrReq(req); //Setting status "Off of the parameter "1" of the controller "1" of the module "ModBus". req = xmlNode("set").setAttr("path",).setText(0); rez = xmlCntrReq(req);
Description: Getting the object of the values archive (VArchObj) by connecting to the archive using its address.
Parameters:
ID | Name | Type | Mode | By defaults |
rez | Result | Object(VArchObj) | Return | |
name | Name and address to the attribute of the parameter (DAQ.{Module}.{Cntr}.{Prm}.{Attr}) with the archive or directly to the archive of values (Archive.va_{ValArchive}). | String | In |
Functions:
Example:
using Special.FLibSYS; val = vArh(strPath2Sep(addr)).get(time,uTime,0,archtor); return val.isEval() ? "Empty" : real2str(val,prec);
Description: Getting the object of the buffer of the values archive (VArchObj) to perform the intermediate operations on frames of data.
Parameters:
ID | Parameter | Type | Mode | By defaults |
rez | Result | Object(VArchObj) | Return | |
tp | Type of the values of the archive (0-Boolean, 1-Integer, 4-Real, 5-String) | Integer | In | 1 |
sz | Maximum buffer size | Integer | In | 100 |
per | periodicity of buffer (in microseconds) | Integer | In | 1000000 |
hgrd | Mode "Hard time grid" | Boolean | In | 0 |
hres | Mode "High time resolution (microseconds)" | Boolean | In | 0 |
Description: Input/Output to: file, string stream.
Parameters:
ID | Parameter | Type | Mode | By defaults |
rez | Result | Object(IO) | Return | |
name | File name or data (for string stream) | String | In | |
accs | File access (''-string stream;'r[+]'-read;'w[+]'-write from zero;'a[+]'-append;...) | String | In | |
mFormat | Machine data format ('n'-sys order;'b'-BigEndian;'l'-LittleEndian) | Integer | In | "n" |
enc | String encoding in file | Boolean | In |
Values:
Properties:
Functions:
Description: Converts an absolute time in the string of the required format. Recording of the format corresponds to the POSIX-function strftime.
Parameters:
ID | Parameter | Type | Mode | By defaults |
val | Full date string | String | Return | |
sec | Seconds | Integer | In | 0 |
form | Format | String | In | %Y-%m-%d %H:%M:%S |
Example:
using Special.FLibSYS; test=tmFStr(SYS.time(),); messPut("Example",0,"tmFStr(): "+test);
Description: Returns the full date in seconds, minutes, hours, etc., based on the absolute time in seconds from the epoch of 1/1/1970.
Parameters:
ID | Parameter | Type | Mode | By defaults |
fullsec | Full seconds | Integer | In | 0 |
sec | Seconds [0...59] | Integer | Out | 0 |
min | Minutes [0...59] | Integer | Out | 0 |
hour | Hours [0...23] | Integer | Out | 0 |
mday | Day of the month [1...31] | Integer | Out | 0 |
month | Month [0...11] | Integer | Out | 0 |
year | Year, from 1900 | Integer | Out | 0 |
wday | Day of the week [0...6] | Integer | Out | 0 |
yday | Day of the year [0...365] | Integer | Out | 0 |
isdst | Daylight saving time | Integer | Out | 0 |
Example:
using Special.FLibSYS; curMin=curHour=curDay=curMonth=curYear=0; tmDate(tmTime(),0,curMin,curHour,curDay,curMonth,curYear); messPut("test",0,"Current minute: "+curMin); messPut("test",0,"Current hour: "+curHour); messPut("test",0,"Current day: "+curDay); messPut("test",0,"Current month: "+curMonth); messPut("test",0,"Current Year: "+curYear);
Description: Returns the absolute time in seconds from the epoch and in microseconds, if usec is installed in a non-negative value.
Parameters:
ID | Parameter | Type | Mode | By defaults |
sec | Seconds | Integer | Return | 0 |
usec | Microseconds | Integer | Out | -1 |
Description: Returns the time in seconds from the epoch of 1/1/1970, based on the string record of time, in accordance with the specified template. For example, template "%Y-%m-%d %H:%M:%S" corresponds the time "2006-08-08 11:21:55". Description of the format of the template can be obtained from the documentation on POSIX-function "strptime".
Parameters:
ID | Parameter | Type | Mode | By defaults |
sec | Seconds | Integer | Return | 0 |
str | Date string | String | In | |
form | Date record format | String | In | %Y-%m-%d %H:%M:%S |
Example:
using Special.FLibSYS; curMin=curHour=curDay=curMonth=curYear=0; tmDate(tmTime(),0,curMin,curHour,curDay,curMonth,curYear); test = tmStrPTime(""+curYear+"-"+(curMonth+1)+"-"+curDay+" 9:0:0",); messPut("Example",0,"tmStrPTime(): "+test);
Description: Returns the time planned in the format of the Cron standard beginning from the base time of from the current time, if the base is not specified.
Parameters:
ID | Parameter | Type | Mode | By defaults |
res | Result | Integer | Return | 0 |
str | Record in the Cron standard | String | In | * * * * * |
base | Base time | Integer | In | 0 |
Description: Request of the system messages.
Parameters:
ID | Parameter | Type | Mode | By defaults |
rez | Result | Object(Array) | Return | |
btm | Start time | Integer | In | |
etm | End time | Integer | In | |
cat | Category of the message | String | In | |
lev | Level of the message | Integer | In | |
arch | Archivator | String | In |
Description: Formation of the system message.
Parameters:
ID | Parameter | Type | Mode | By defaults |
cat | Category of the message | String | In | |
lev | Level of the message | Integer | In | |
mess | Text of the message | String | In |
Example:
rnd_sq_gr11_lineClr="red"; Special.FLibSYS.messPut("Example",1,"Event: "+rnd_sq_gr12_leniClr);
Descroption: It is used to get the size.
Parameters:
ID | Parameter | Type | Mode | By defaults |
rez | Result | Integer | Return | |
str | String | String | In |
Example:
Special.FLibSYS.messPut("Example",1,"ReturnString: "+strSize("Example"));
Description: It is used to det the part of the string.
Parameters:
ID | Parameter | Type | Mode | By defaults |
rez | Result | String | Return | |
str | String | String | In | |
pos | Position | Integer | In | 0 |
n | Quantity | Integer | In | -1 |
Example:
using Special.FLibSYS; test=strSubstr("Example", 0, strSize("Example")-1); messPut("Example",1,"ReturnString: "+test);
Description: It is used to insert of the on string to the another.
Parameters:
ID | Parameter | Type | Mode | By defaults |
str | String | String | Out | |
pos | Position | Integer | In | 0 |
ins | Inserting string | String | In |
Description: It is used to change the part of the string with the another one.
Parameters:
ID | Parameter | Type | Mode | By defaults |
str | String | String | Out | |
pos | Ïîçèöèÿ | Integer | In | 0 |
n | Quantity | Integer | In | -1 |
repl | Changing string | String | In |
Description: It is used to parse the string on separator.
Parameters:
ID | Parameter | Type | Mode | By defaults |
rez | Result | String | Return | |
str | String | String | In | |
lev | Level | Integer | In | |
sep | Separator | String | In | "." |
off | Offset | Integer | Out |
Example:
using Special.FLibSYS; ExapleString="Example:123"; test=strParse(ExapleString,1,":"); messPut("Example",0,"strParse(): "+test);
Description: It is used for the parsing the path on the elements.
Parameters:
ID | Parameter | Type | Mode | By defaults |
rez | Result | String | Return | |
path | Path | String | In | |
lev | Level | Integer | In | |
off | Offset | Integer | Out |
Example:
using Special.FLibSYS; test=strParsePath(path,0,"/"); messPut("Example",1,"strParsePath(): "+test);
Description: It is used to convert the path to the string with the separator.
Parameters:
ID | Parameter | Type | Mode | By defaults |
rez | Result | String | Return | |
src | Source | String | In | |
sep | Separator | String | In | "." |
Example:
//Converting value "/ses_AGLKS/pg_so" of the attribute "path" into value "ses_AGLKS.pg_so" using Special.FLibSYS; test = strPath2Sep(path); messPut("Example",0,"path: "+path); messPut("Example",0,"strPath2Sep(): "+test);
Description: It is used to code the string for using in the HTML source.
Parameters:
ID | Parameter | Type | Mode | By defaults |
rez | Result | String | Return | |
src | Source | String | In |
Description: Use for encode text to bin, from format <00 A0 FA DE>.
Parameters:
ID | Parameter | Type | Mode | By defaults |
rez | Result | String | Return | |
src | Source | String | In |
Description: Use for decode text from bin to format <00 A0 FA DE>.
Parameters:
ID | Parameter | Type | Mode | By defaults |
rez | Result | String | Return | |
src | Source | String | In |
Description: It is used to convert real to string.
Parameters:
ID | Parameter | Type | Mode | By defaults |
rez | Result | String | Return | |
val | Value | Real | In | |
prc | Precision | Integer | In | 4 |
tp | Type | String | In | "f" |
Description: It is used to convert integer to string.
Parameters:
ID | Parameter | Type | Mode | By defaults |
rez | Result | String | Return | |
val | Value | Integer | In | |
base | Base, supported: 8, 10, 16 | Integer | In | 10 |
Description: It is used to convert string to real.
Parameters:
ID | Parameter | Type | Mode | By defaults |
rez | Result | Real | Return | |
val | Value | String | In |
Description: It is used to convert string to integer.
Parameters:
ID | Parameter | Type | Mode | By defaults |
rez | Result | Integer | Return | |
val | Value | String | In | |
base | Base | Integer | In | 0 |
Description: Unified Cyclic Redundancy Code implement for 8-64 bits width.
Parameters:
ID | Parameter | Type | Mode | By defaults |
rez | Result | Integer | Return | |
data | Data | String | Input | |
poly | Polynomial (reversion) | Integer | Input | 40961 (0xA001) |
width | Width | Integer | Input | 16 |
init | Initial | Integer | Input | -1 (0xFFFFFFFFFFFFFFFF) |
Description: Splitting the float (4 bites) to the words (2 bites).
Parameters:
ID | Parameter | Type | Mode | By defaults |
val | Value | Real | In | |
w1 | Word 1 | Integer | Out | |
w2 | Word 2 | Integer | Out |
Description: Merging the float (4 bites) from words (2 bites).
Parameters:
ID | Parameter | Type | Mode | By defaults |
rez | Result | Real | Return | |
w1 | Word 1 | Integer | In | |
w2 | Word 2 | Integer | In |
Some objects of the module provides functions for user's programming.
The object "Functions library" (SYS.Special.FLibMath)
The object "User function" (SYS.Special.FLibMath["funcID"])