<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html class="client-nojs" dir="ltr" lang="en">
<head>
<meta charset="UTF-8" />
<title>Modules/FLibSYS - OpenSCADAWiki</title>
<meta content="MediaWiki 1.26.4" name="generator" />
<link href="https://www.gnu.org/copyleft/fdl.html" rel="copyright" />
<link href="../files/doc.css" rel="stylesheet" /></head>
<body><div class="floatright"><a href="../index.html"><img alt="OpenSCADA" src="../../en/files/index.png" /></a></div><div id="mw_header">
			<div class="mw-indicators">
</div>
			<h1 id="firstHeading" lang="en">Modules/FLibSYS</h1>
		</div><div class="mw-content-ltr" dir="ltr" id="mw-content-text" lang="en"><div class="mw-pt-languages" dir="ltr" lang="en"><div class="mw-pt-languages-list autonym"><span class="mw-pt-languages-ui mw-pt-languages-selected mw-pt-progress mw-pt-progress--complete">English</span>&nbsp;• ‎<a class="mw-pt-progress mw-pt-progress--complete" href="../../ru/Modules/FLibSYS.html" title="Модули/FLibSYS (100% translated)">mRussian</a>&nbsp;• ‎<a class="mw-pt-progress mw-pt-progress--complete" href="../../uk/Modules/FLibSYS.html" title="Модулі/FLibSYS (100% translated)">Українська</a></div></div>
<table class="wikitable">

<tr>
<th> Module </th>
<th> Name </th>
<th> Version </th>
<th> License </th>
<th> Source </th>
<th> Languages </th>
<th> Platforms </th>
<th> Type </th>
<th> Author </th>
<th> Description
</th></tr>

<tr>
<td> <a href="../Modules/FLibSYS.html" title="Special:MyLanguage/Modules/FLibSYS">FLibSYS</a> </td>
<td> System functions
</td>
<td> 1.8 </td>
<td> GPL2 </td>
<td> spec_FLibSYS.so </td>
<td> en,uk,ru,de </td>
<td> x86,x86_64,ARM
</td>
<td> Special </td>
<td> Roman Savochenko<br />&nbsp;&nbsp;<font size="-2"><i>Maxim Lysenko (2009) — the page initial translation</i></font> </td>
<td> Provides a library of the system functions of the user programming area of OpenSCADA.
</td></tr></table>
<div class="toc" id="toc"><div id="toctitle"><h2>Contents</h2></div>
<ul>
<li class="toclevel-1 tocsection-1"><a href="#System-wide_functions"><span class="tocnumber">1</span> <span class="toctext">System-wide functions</span></a>
<ul>
<li class="toclevel-2 tocsection-2"><a href="#SYS:_Call_.28sysCall.29"><span class="tocnumber">1.1</span> <span class="toctext"><span>SYS: Call (sysCall)</span></span></a></li>
<li class="toclevel-2 tocsection-3"><a href="#SYS:_Input.2FOutput_.28IO.29"><span class="tocnumber">1.2</span> <span class="toctext"><span>SYS: Input/Output (IO)</span></span></a>
<ul>
<li class="toclevel-3 tocsection-4"><a href="#IO_object"><span class="tocnumber">1.2.1</span> <span class="toctext">IO object</span></a></li>
</ul>
</li>
<li class="toclevel-2 tocsection-5"><a href="#DB:_SQL_request_.28dbReqSQL.29"><span class="tocnumber">1.3</span> <span class="toctext"><span>DB: SQL request (dbReqSQL)</span></span></a></li>
<li class="toclevel-2 tocsection-6"><a href="#XML:_Node_.28xmlNode.29"><span class="tocnumber">1.4</span> <span class="toctext"><span>XML: Node (xmlNode)</span></span></a></li>
<li class="toclevel-2 tocsection-7"><a href="#XML:_Control_request_.28xmlCntrReq.29"><span class="tocnumber">1.5</span> <span class="toctext"><span>XML: Control request (xmlCntrReq)</span></span></a></li>
</ul>
</li>
<li class="toclevel-1 tocsection-8"><a href="#Functions_of_working_with_time"><span class="tocnumber">2</span> <span class="toctext">Functions of working with time</span></a>
<ul>
<li class="toclevel-2 tocsection-9"><a href="#Time:_Time_.28tmTime.29"><span class="tocnumber">2.1</span> <span class="toctext"><span>Time: Time (tmTime)</span></span></a></li>
<li class="toclevel-2 tocsection-10"><a href="#Time:_Date_and_time_.28tmDate.29"><span class="tocnumber">2.2</span> <span class="toctext"><span>Time: Date and time (tmDate)</span></span></a></li>
<li class="toclevel-2 tocsection-11"><a href="#Time:_String_time_.28tmFStr.29"><span class="tocnumber">2.3</span> <span class="toctext"><span>Time: String time (tmFStr)</span></span></a></li>
<li class="toclevel-2 tocsection-12"><a href="#Time:_String_to_time_.28tmStrPTime.29"><span class="tocnumber">2.4</span> <span class="toctext"><span>Time: String to time (tmStrPTime)</span></span></a></li>
<li class="toclevel-2 tocsection-13"><a href="#Time:_Schedule_time_at_CRON_.28tmCron.29"><span class="tocnumber">2.5</span> <span class="toctext"><span>Time: Schedule time at CRON (tmCron)</span></span></a></li>
<li class="toclevel-2 tocsection-14"><a href="#Time:_sleep_.28tmSleep.29"><span class="tocnumber">2.6</span> <span class="toctext"><span>Time: sleep (tmSleep)</span></span></a></li>
</ul>
</li>
<li class="toclevel-1 tocsection-15"><a href="#Functions_of_the_strings_processing"><span class="tocnumber">3</span> <span class="toctext">Functions of the strings processing</span></a>
<ul>
<li class="toclevel-2 tocsection-16"><a href="#String:_Get_size_.28strSize.29"><span class="tocnumber">3.1</span> <span class="toctext"><span>String: Get size (strSize)</span></span></a></li>
<li class="toclevel-2 tocsection-17"><a href="#String:_Get_substring_.28strSubstr.29"><span class="tocnumber">3.2</span> <span class="toctext"><span>String: Get substring (strSubstr)</span></span></a></li>
<li class="toclevel-2 tocsection-18"><a href="#String:_Insert_a_string_to_other_string_.28strInsert.29"><span class="tocnumber">3.3</span> <span class="toctext"><span>String: Insert a string to other string (strInsert)</span></span></a></li>
<li class="toclevel-2 tocsection-19"><a href="#String:_Replace_a_part_of_the_string_by_another_string_.28strReplace.29"><span class="tocnumber">3.4</span> <span class="toctext"><span>String: Replace a part of the string by another string (strReplace)</span></span></a></li>
<li class="toclevel-2 tocsection-20"><a href="#String:_Parse_with_a_separator_.28strParse.29"><span class="tocnumber">3.5</span> <span class="toctext"><span>String: Parse with a separator (strParse)</span></span></a></li>
<li class="toclevel-2 tocsection-21"><a href="#String:_Parse_of_the_path_.28strParsePath.29"><span class="tocnumber">3.6</span> <span class="toctext"><span>String: Parse of the path (strParsePath)</span></span></a></li>
<li class="toclevel-2 tocsection-22"><a href="#String:_Path_to_separated_string_.28strPath2Sep.29"><span class="tocnumber">3.7</span> <span class="toctext"><span>String: Path to separated string (strPath2Sep)</span></span></a></li>
<li class="toclevel-2 tocsection-23"><a href="#String:_Encode_string_to_HTML_.28strEnc2HTML.29"><span class="tocnumber">3.8</span> <span class="toctext"><span>String: Encode string to HTML (strEnc2HTML)</span></span></a></li>
<li class="toclevel-2 tocsection-24"><a href="#String:_Encode_text_to_binary_.28strEnc2Bin.29"><span class="tocnumber">3.9</span> <span class="toctext"><span>String: Encode text to binary (strEnc2Bin)</span></span></a></li>
<li class="toclevel-2 tocsection-25"><a href="#String:_Decode_text_from_binary_.28strDec4Bin.29"><span class="tocnumber">3.10</span> <span class="toctext"><span>String: Decode text from binary (strDec4Bin)</span></span></a></li>
<li class="toclevel-2 tocsection-26"><a href="#String:_Real_to_string_.28real2str.29"><span class="tocnumber">3.11</span> <span class="toctext"><span>String: Real to string (real2str)</span></span></a></li>
<li class="toclevel-2 tocsection-27"><a href="#String:_Integer_to_string_.28int2str.29"><span class="tocnumber">3.12</span> <span class="toctext"><span>String: Integer to string (int2str)</span></span></a></li>
<li class="toclevel-2 tocsection-28"><a href="#String:_String_to_real_.28str2real.29"><span class="tocnumber">3.13</span> <span class="toctext"><span>String: String to real (str2real)</span></span></a></li>
<li class="toclevel-2 tocsection-29"><a href="#String:_String_to_integer_.28str2int.29"><span class="tocnumber">3.14</span> <span class="toctext"><span>String: String to integer (str2int)</span></span></a></li>
<li class="toclevel-2 tocsection-30"><a href="#Cyclic_Redundancy_Code_.28CRC.29"><span class="tocnumber">3.15</span> <span class="toctext"><span>Cyclic Redundancy Code (CRC)</span></span></a></li>
<li class="toclevel-2 tocsection-31"><a href="#Message_Digest_5_.28MD5.29"><span class="tocnumber">3.16</span> <span class="toctext"><span>Message Digest 5 (MD5)</span></span></a></li>
</ul>
</li>
<li class="toclevel-1 tocsection-32"><a href="#Functions_for_the_real_processing"><span class="tocnumber">4</span> <span class="toctext">Functions for the real processing</span></a>
<ul>
<li class="toclevel-2 tocsection-33"><a href="#Float:_Split_to_the_words_.28floatSplitWord.29"><span class="tocnumber">4.1</span> <span class="toctext"><span>Float: Split to the words (floatSplitWord)</span></span></a></li>
<li class="toclevel-2 tocsection-34"><a href="#Float:_Merge_from_the_words_.28floatMergeWord.29"><span class="tocnumber">4.2</span> <span class="toctext"><span>Float: Merge from the words (floatMergeWord)</span></span></a></li>
<li class="toclevel-2 tocsection-35"><a href="#Float:_Extract_.28floatExtract.29"><span class="tocnumber">4.3</span> <span class="toctext"><span>Float: Extract (floatExtract)</span></span></a></li>
</ul>
</li>
<li class="toclevel-1 tocsection-36"><a href="#Functions_of_archives"><span class="tocnumber">5</span> <span class="toctext">Functions of archives</span></a>
<ul>
<li class="toclevel-2 tocsection-37"><a href="#Mess:_Get_.28messGet.29"><span class="tocnumber">5.1</span> <span class="toctext"><span>Mess: Get (messGet)</span></span></a></li>
<li class="toclevel-2 tocsection-38"><a href="#Mess:_Put_.28messPut.29"><span class="tocnumber">5.2</span> <span class="toctext"><span>Mess: Put (messPut)</span></span></a></li>
<li class="toclevel-2 tocsection-39"><a href="#Val:_Archive_.28vArh.29"><span class="tocnumber">5.3</span> <span class="toctext"><span>Val: Archive (vArh)</span></span></a>
<ul>
<li class="toclevel-3 tocsection-40"><a href="#VArchObj_object"><span class="tocnumber">5.3.1</span> <span class="toctext">VArchObj object</span></a></li>
</ul>
</li>
<li class="toclevel-2 tocsection-41"><a href="#Val:_Archive_buffer_.28vArhBuf.29"><span class="tocnumber">5.4</span> <span class="toctext"><span>Val: Archive buffer (vArhBuf)</span></span></a></li>
</ul>
</li>
<li class="toclevel-1 tocsection-42"><a href="#User_programming_API"><span class="tocnumber">6</span> <span class="toctext">User programming API</span></a></li>
</ul>
</div>

<p>The module provides OpenSCADA for static library of functions for use in the user programming environment and the organization of extraordinary interaction algorithms.
</p><p>To address the functions of the library you can use the static call address <b>Special.FLibSYS.{Func}()</b> or dynamic <b>SYS.Special.FLibSYS["{Func}"].call()</b>, <b>SYS.Special.FLibSYS.{Func}()</b>. Where <i>{Func}</i> — function identifier in the library.
</p>
<h2><span class="mw-headline" id="System-wide_functions"><span class="mw-headline-number">1</span> System-wide functions</span></h2>
<h3><span class="mw-headline" id="SYS:_Call_.28sysCall.29"><span class="mw-headline-number">1.1</span> <span id="sysCall" title="#sysCall">SYS: Call (sysCall)</span></span></h3>
<p><i>Description:</i> Calling 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.<br />
<i>Parameters:</i>
</p>
<table class="wikitable">

<tr>
<th> Identifier </th>
<th> Name </th>
<th> Type </th>
<th> Mode </th>
<th> By defaults
</th></tr>
<tr>
<td> rez </td>
<td> Result </td>
<td> String </td>
<td> Return </td>
<td>
</td></tr>
<tr>
<td> com </td>
<td> Command </td>
<td> String </td>
<td> Input </td>
<td>
</td></tr></table>
<p><i>Example:</i>
</p>
<div class="mw-highlight mw-content-ltr" dir="ltr"><pre><span class="nx">using</span> <span class="nx">Special</span><span class="p">.</span><span class="nx">FLibSYS</span><span class="p">;</span>
<span class="nx">test</span><span class="o">=</span><span class="nx">sysCall</span><span class="p">(</span><span class="s2">"ls -l"</span><span class="p">);</span>
<span class="nx">messPut</span><span class="p">(</span><span class="s2">"Example"</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="s2">"Example: "</span><span class="o">+</span><span class="nx">test</span><span class="p">);</span>
</pre></div>
<h3><span class="mw-headline" id="SYS:_Input.2FOutput_.28IO.29"><span class="mw-headline-number">1.2</span> <span id="IO" title="#IO">SYS: Input/Output (IO)</span></span></h3>
<p><i>Description:</i> Input/Output to: file, string stream.<br />
<i>Parameters:</i>
</p>
<table class="wikitable">

<tr>
<th> Identifier </th>
<th> Parameter </th>
<th> Type </th>
<th> Mode </th>
<th> By defaults
</th></tr>
<tr>
<td> rez </td>
<td> Result </td>
<td> Object(IO) </td>
<td> Return </td>
<td>
</td></tr>
<tr>
<td> name </td>
<td> File name or data (for string stream) </td>
<td> String </td>
<td> In</td>
<td>
</td></tr>
<tr>
<td> accs </td>
<td> File access (""-string stream;"r[+]"-read;"w[+]"-write from zero;"a[+]"-append;...) </td>
<td> String </td>
<td> In </td>
<td>
</td></tr>
<tr>
<td> mFormat </td>
<td> Machine data format ('n'-sys order;'b'-BigEndian;'l'-LittleEndian) </td>
<td> Integer </td>
<td> In </td>
<td> "n"
</td></tr>
<tr>
<td> enc </td>
<td> String encoding in the file/stream </td>
<td> Boolean </td>
<td> In </td>
<td>
</td></tr></table>
<h4><span class="mw-headline" id="IO_object"><span class="mw-headline-number">1.2.1</span> IO object</span></h4>
<p>Values:
</p>
<ul><li> <i>valType</i> — value types:
<ul><li> "uchar", "unsigned char", "char", "schar", "signed char";</li>
<li> "uint8";</li>
<li> "uint16", "ushort";</li>
<li> "uint32", "uint", "ulong";</li>
<li> "uint64";</li>
<li> "int8", "integer*1";</li>
<li> "int16", "short", "integer*2";</li>
<li> "int32", "int", "long", "integer*4", "integer";</li>
<li> "int64", "integer*8";</li>
<li> "float", "float32", "single", "real*4";</li>
<li> "double", "float64", "real*8", "real";</li></ul></li>
<li> <i>accs</i> — access mode and type:
<ul><li> <i> — string stream;</i></li>
<li> 'r[+]' — read;</li>
<li> 'w[+]' — write from zero;</li>
<li> 'a[+]' — append.</li></ul></li>
<li> <i>mFmt</i> — machine format:
<ul><li> 'n' — native;</li>
<li> 'l' — LittleEndian;</li>
<li> 'b' — BigEndian.</li></ul></li></ul>
<p>Properties:
</p>
<ul><li> <i>length</i> — stream length;</li>
<li> <i>pos</i> (w) — stream read/write position;</li>
<li> <i>string</i> (w) — string stream full value;</li>
<li> <i>mFormat</i> (w) — machine data format;</li>
<li> <i>stringEncode</i> (w) — file/stream substring encoding.</li></ul>
<p>Functions:
</p>
<ul><li> <i>bool open(string name = "", string accs = "", string mFormat = "n", string enc = "");</i> — opens a new stream for string or the file <i>name</i>.</li>
<li> <i>bool close();</i> — closes the stream.</li>
<li> <i>{string|int|real|Array[int|real]} read(string valType = "char", int cnt = -1, string mFormatEnc = "n|NoEnc");</i> — reads a value of the <i>valType</i> in the <i>cnt</i> for the machine format or the input string encoding <i>mFormatEnc</i>.</li>
<li> <i>{int|IO} {write|wr}({string|int|real|Array} vals, string valType = "char", string mFormatEnc = "n|NoEnc", int cnt = 1);</i> — writes the value(s) <i>vals</i> for the type <i>valType</i> for the machine format or the input string encoding <i>mFormatEnc</i>, and a repeat of scalar values in the amount <i>cnt</i>.</li></ul>
<h3><span class="mw-headline" id="DB:_SQL_request_.28dbReqSQL.29"><span class="mw-headline-number">1.3</span> <span id="dbReqSQL" title="#dbReqSQL">DB: SQL request (dbReqSQL)</span></span></h3>
<p><i>Description:</i> Formation of the SQL-request <i>req</i> to the DB <i>addr</i>, inside (<i>trans</i>=true), outside (<i>trans</i>=false) or no matter (<i>trans</i>=EVAL) to a transaction. At an error the result's property "err" sets to the error value.<br />
<i>Parameters:</i>
</p>
<table class="wikitable">

<tr>
<th> Identifier </th>
<th> Name </th>
<th> Type </th>
<th> Mode </th>
<th> By defaults
</th></tr>
<tr>
<td> rez </td>
<td> Result </td>
<td> Object(Array) </td>
<td> Return </td>
<td>
</td></tr>
<tr>
<td> addr </td>
<td> DB address, "{TypeDB}.{DB}" </td>
<td> String </td>
<td> Input </td>
<td>
</td></tr>
<tr>
<td> req </td>
<td> SQL request </td>
<td> String </td>
<td> Input </td>
<td>
</td></tr>
<tr>
<td> trans </td>
<td> Transaction </td>
<td> Boolean </td>
<td> Input </td>
<td> EVAL
</td></tr></table>
<h3><span class="mw-headline" id="XML:_Node_.28xmlNode.29"><span class="mw-headline-number">1.4</span> <span id="xmlNode" title="#xmlNode">XML: Node (xmlNode)</span></span></h3>
<p><i>Description:</i> Creating a XML node object.<br />
<i>Parameters:</i>
</p>
<table class="wikitable">

<tr>
<th> Identifier </th>
<th> Name </th>
<th> Type </th>
<th> Mode </th>
<th> By defaults
</th></tr>
<tr>
<td> rez </td>
<td> Result </td>
<td> Object(XMLNodeObj) </td>
<td> Return </td>
<td>
</td></tr>
<tr>
<td> name </td>
<td> Name </td>
<td> String </td>
<td> Input </td>
<td>
</td></tr></table>
<p><i>Example:</i>
</p>
<div class="mw-highlight mw-content-ltr" dir="ltr"><pre><span class="nx">using</span> <span class="nx">Special</span><span class="p">.</span><span class="nx">FLibSYS</span><span class="p">;</span>
<span class="c1">//Creating the "get" object of the XML node.</span>
<span class="nx">req</span> <span class="o">=</span> <span class="nx">xmlNode</span><span class="p">(</span><span class="s2">"get"</span><span class="p">);</span>
<span class="c1">//Creating the "get" object of the XML node with attributes creating.</span>
<span class="c1">//sub_DAQ/mod_ModBus/cntr_1/prm_1 — path according to the project structure.</span>
<span class="nx">req</span> <span class="o">=</span> <span class="nx">xmlNode</span><span class="p">(</span><span class="s2">"get"</span><span class="p">).</span><span class="nx">setAttr</span><span class="p">(</span><span class="s2">"path"</span><span class="p">,</span><span class="s2">"/sub_DAQ/mod_ModBus/cntr_1/prm_1/%2fprm%2fst%2fen"</span><span class="p">);</span>
</pre></div>
<h3><span class="mw-headline" id="XML:_Control_request_.28xmlCntrReq.29"><span class="mw-headline-number">1.5</span> <span id="xmlCntrReq" title="#xmlCntrReq">XML: Control request (xmlCntrReq)</span></span></h3>
<p><i>Description:</i> Requesting for control the program, by XML. The usual request is written in the form "<b>&lt;get path="/OPat/%2felem"/&gt;</b>". When we indicate the station the request to the specified external station is made.<br />
<i>Parameters:</i>
</p>
<table class="wikitable">

<tr>
<th> Identifier </th>
<th> Name </th>
<th> Type </th>
<th> Mode </th>
<th> By defaults
</th></tr>
<tr>
<td> rez </td>
<td> Result </td>
<td> String </td>
<td> Return </td>
<td>
</td></tr>
<tr>
<td> req </td>
<td> Request </td>
<td> Object(XMLNodeObj) </td>
<td> Output </td>
<td>
</td></tr>
<tr>
<td> stat </td>
<td> Station </td>
<td> String </td>
<td> Input </td>
<td>
</td></tr></table>
<p><i>Example (more examples see for <a href="../User_API.html#SYS" title="Special:MyLanguage/Documents/User API">the equal internal function SYS.cntrReq()</a>):</i>
</p>
<div class="mw-highlight mw-content-ltr" dir="ltr"><pre><span class="nx">using</span> <span class="nx">Special</span><span class="p">.</span><span class="nx">FLibSYS</span><span class="p">;</span>
<span class="c1">//Getting status "Off/On" of the parameter "1" of the controller "1" of the module "ModBus".</span>
<span class="c1">//sub_DAQ/mod_ModBus/cntr_1/prm_1 —  the path according to the project structure.</span>
<span class="nx">req</span> <span class="o">=</span> <span class="nx">xmlNode</span><span class="p">(</span><span class="s2">"get"</span><span class="p">).</span><span class="nx">setAttr</span><span class="p">(</span><span class="s2">"path"</span><span class="p">,</span><span class="s2">"/sub_DAQ/mod_ModBus/cntr_1/prm_1/%2fprm%2fst%2fen"</span><span class="p">);</span>
<span class="nx">rez</span> <span class="o">=</span> <span class="nx">xmlCntrReq</span><span class="p">(</span><span class="nx">req</span><span class="p">);</span>
<span class="nx">messPut</span><span class="p">(</span><span class="s2">"test"</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="s2">"Example: "</span><span class="o">+</span><span class="nx">req</span><span class="p">.</span><span class="nx">text</span><span class="p">());</span>

<span class="c1">//Setting the status "On" of the parameter "1" of the controller "1" of the module "ModBus".</span>
<span class="nx">req</span> <span class="o">=</span> <span class="nx">xmlNode</span><span class="p">(</span><span class="s2">"set"</span><span class="p">).</span><span class="nx">setAttr</span><span class="p">(</span><span class="s2">"path"</span><span class="p">,</span><span class="s2">"/sub_DAQ/mod_ModBus/cntr_1/prm_1/%2fprm%2fst%2fen"</span><span class="p">).</span><span class="nx">setText</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
<span class="nx">rez</span> <span class="o">=</span> <span class="nx">xmlCntrReq</span><span class="p">(</span><span class="nx">req</span><span class="p">);</span>

<span class="c1">//Setting the status "Off of the parameter "1" of the controller "1" of the module "ModBus".</span>
<span class="nx">req</span> <span class="o">=</span> <span class="nx">xmlNode</span><span class="p">(</span><span class="s2">"set"</span><span class="p">).</span><span class="nx">setAttr</span><span class="p">(</span><span class="s2">"path"</span><span class="p">,</span><span class="s2">"/sub_DAQ/mod_ModBus/cntr_1/prm_1/%2fprm%2fst%2fen"</span><span class="p">).</span><span class="nx">setText</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
<span class="nx">rez</span> <span class="o">=</span> <span class="nx">xmlCntrReq</span><span class="p">(</span><span class="nx">req</span><span class="p">);</span>
</pre></div>
<h2><span class="mw-headline" id="Functions_of_working_with_time"><span class="mw-headline-number">2</span> Functions of working with time</span></h2>
<h3><span class="mw-headline" id="Time:_Time_.28tmTime.29"><span class="mw-headline-number">2.1</span> <span id="tmTime" title="#tmTime">Time: Time (tmTime)</span></span></h3>
<p><i>Description:</i> Returns the absolute time in seconds from the epoch of 1/1/1970 and the microseconds part into <i>usec</i>, if such a variable is indicated and its value is negative.<br />
<i>Parameters:</i>
</p>
<table class="wikitable">

<tr>
<th> Identifiers </th>
<th> Parameter </th>
<th> Type </th>
<th> Mode </th>
<th> By defaults
</th></tr>
<tr>
<td> sec </td>
<td> Seconds </td>
<td> Integer </td>
<td> Return </td>
<td> 0
</td></tr>
<tr>
<td> usec </td>
<td> Microseconds </td>
<td> Integer </td>
<td> Output </td>
<td> -1
</td></tr></table>
<h3><span class="mw-headline" id="Time:_Date_and_time_.28tmDate.29"><span class="mw-headline-number">2.2</span> <span id="tmDate" title="#tmDate">Time: Date and time (tmDate)</span></span></h3>
<p><i>Description:</i> Full date and time in seconds, minutes, hours, etc., based on the absolute time in seconds from the epoch of 1.1.1970.<br />
<i>Parameters:</i>
</p>
<table class="wikitable">

<tr>
<th> Identifier </th>
<th> Parameter </th>
<th> Type </th>
<th> Mode </th>
<th> By defaults
</th></tr>
<tr>
<td> fullsec </td>
<td> Full seconds </td>
<td> Integer </td>
<td> Input </td>
<td> 0
</td></tr>
<tr>
<td> sec </td>
<td> Seconds [0...59] </td>
<td> Integer </td>
<td> Output </td>
<td> 0
</td></tr>
<tr>
<td> min </td>
<td> Minutes [0...59] </td>
<td> Integer </td>
<td> Output </td>
<td> 0
</td></tr>
<tr>
<td> hour </td>
<td> Hours [0...23] </td>
<td> Integer </td>
<td> Output </td>
<td> 0
</td></tr>
<tr>
<td> mday </td>
<td> Day of the month [1...31] </td>
<td> Integer </td>
<td> Output </td>
<td> 0
</td></tr>
<tr>
<td> month </td>
<td> Month [0...11] </td>
<td> Integer </td>
<td> Output </td>
<td> 0
</td></tr>
<tr>
<td> year </td>
<td> Year, from 1900 </td>
<td> Integer </td>
<td> Output </td>
<td> 0
</td></tr>
<tr>
<td> wday </td>
<td> Day of the week [0...6] </td>
<td> Integer </td>
<td> Output </td>
<td> 0
</td></tr>
<tr>
<td> yday </td>
<td> Day of the year [0...365] </td>
<td> Integer </td>
<td> Output </td>
<td> 0
</td></tr>
<tr>
<td> isdst </td>
<td> Daylight saving time </td>
<td> Integer </td>
<td> Output </td>
<td> 0
</td></tr></table>
<p><i>Example:</i>
</p>
<div class="mw-highlight mw-content-ltr" dir="ltr"><pre><span class="nx">using</span> <span class="nx">Special</span><span class="p">.</span><span class="nx">FLibSYS</span><span class="p">;</span>
<span class="nx">curMin</span><span class="o">=</span><span class="nx">curHour</span><span class="o">=</span><span class="nx">curDay</span><span class="o">=</span><span class="nx">curMonth</span><span class="o">=</span><span class="nx">curYear</span><span class="o">=</span><span class="mi">0</span><span class="p">;</span>
<span class="nx">tmDate</span><span class="p">(</span><span class="nx">tmTime</span><span class="p">(),</span><span class="mi">0</span><span class="p">,</span><span class="nx">curMin</span><span class="p">,</span><span class="nx">curHour</span><span class="p">,</span><span class="nx">curDay</span><span class="p">,</span><span class="nx">curMonth</span><span class="p">,</span><span class="nx">curYear</span><span class="p">);</span>
<span class="nx">messPut</span><span class="p">(</span><span class="s2">"test"</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="s2">"Current minute: "</span><span class="o">+</span><span class="nx">curMin</span><span class="p">);</span>
<span class="nx">messPut</span><span class="p">(</span><span class="s2">"test"</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="s2">"Current hour: "</span><span class="o">+</span><span class="nx">curHour</span><span class="p">);</span>
<span class="nx">messPut</span><span class="p">(</span><span class="s2">"test"</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="s2">"Current day: "</span><span class="o">+</span><span class="nx">curDay</span><span class="p">);</span>
<span class="nx">messPut</span><span class="p">(</span><span class="s2">"test"</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="s2">"Current month: "</span><span class="o">+</span><span class="nx">curMonth</span><span class="p">);</span>
<span class="nx">messPut</span><span class="p">(</span><span class="s2">"test"</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="s2">"Current Year: "</span><span class="o">+</span><span class="nx">curYear</span><span class="p">);</span>
</pre></div>
<h3><span class="mw-headline" id="Time:_String_time_.28tmFStr.29"><span class="mw-headline-number">2.3</span> <span id="tmFStr" title="#tmFStr">Time: String time (tmFStr)</span></span></h3>
<p><i>Description:</i> Getting the time in the formatted string. Recording of the format corresponds to the POSIX-function "strftime()".<br />
<i>Parameters:</i>
</p>
<table class="wikitable">

<tr>
<th> Identifier </th>
<th> Parameter </th>
<th> Type </th>
<th> Mode </th>
<th> By defaults
</th></tr>
<tr>
<td> val </td>
<td> Date and time string </td>
<td> String </td>
<td> Return </td>
<td>
</td></tr>
<tr>
<td> sec </td>
<td> Seconds </td>
<td> Integer </td>
<td> Input </td>
<td> 0
</td></tr>
<tr>
<td> form </td>
<td> Date and time format </td>
<td> String </td>
<td> Input </td>
<td>&nbsp;%Y-%m-%d&nbsp;%H:%M:%S
</td></tr></table>
<p><i>Example:</i>
</p>
<div class="mw-highlight mw-content-ltr" dir="ltr"><pre><span class="nx">using</span> <span class="nx">Special</span><span class="p">.</span><span class="nx">FLibSYS</span><span class="p">;</span>
<span class="nx">test</span> <span class="o">=</span> <span class="nx">tmFStr</span><span class="p">(</span><span class="nx">SYS</span><span class="p">.</span><span class="nx">time</span><span class="p">(),</span><span class="s2">"%d %m %Y"</span><span class="p">);</span>
<span class="nx">messPut</span><span class="p">(</span><span class="s2">"Example"</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="s2">"tmFStr(): "</span><span class="o">+</span><span class="nx">test</span><span class="p">);</span>
</pre></div>
<h3><span class="mw-headline" id="Time:_String_to_time_.28tmStrPTime.29"><span class="mw-headline-number">2.4</span> <span id="tmStrPTime" title="#tmStrPTime">Time: String to time (tmStrPTime)</span></span></h3>
<p><i>Description:</i> Converting the string data and time, for the <i>form</i>, to the time in seconds since 01.01.1970. For example, template "%Y-%m-%d&nbsp;%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 the POSIX-function "strptime()".<br />
<i>Parameters:</i>
</p>
<table class="wikitable">

<tr>
<th> Identifier </th>
<th> Parameter </th>
<th> Type </th>
<th> Mode </th>
<th> By defaults
</th></tr>
<tr>
<td> sec </td>
<td> Seconds </td>
<td> Integer </td>
<td> Return </td>
<td> 0
</td></tr>
<tr>
<td> str </td>
<td> Date and time string </td>
<td> String </td>
<td> Input </td>
<td>
</td></tr>
<tr>
<td> form </td>
<td> Date and time format </td>
<td> String </td>
<td> Input </td>
<td>&nbsp;%Y-%m-%d&nbsp;%H:%M:%S
</td></tr></table>
<p><i>Example:</i>
</p>
<div class="mw-highlight mw-content-ltr" dir="ltr"><pre><span class="nx">using</span> <span class="nx">Special</span><span class="p">.</span><span class="nx">FLibSYS</span><span class="p">;</span>
<span class="nx">curMin</span><span class="o">=</span><span class="nx">curHour</span><span class="o">=</span><span class="nx">curDay</span><span class="o">=</span><span class="nx">curMonth</span><span class="o">=</span><span class="nx">curYear</span><span class="o">=</span><span class="mi">0</span><span class="p">;</span>
<span class="nx">tmDate</span><span class="p">(</span><span class="nx">tmTime</span><span class="p">(),</span><span class="mi">0</span><span class="p">,</span><span class="nx">curMin</span><span class="p">,</span><span class="nx">curHour</span><span class="p">,</span><span class="nx">curDay</span><span class="p">,</span><span class="nx">curMonth</span><span class="p">,</span><span class="nx">curYear</span><span class="p">);</span>
<span class="nx">test</span> <span class="o">=</span> <span class="nx">tmStrPTime</span><span class="p">(</span><span class="s2">""</span><span class="o">+</span><span class="nx">curYear</span><span class="o">+</span><span class="s2">"-"</span><span class="o">+</span><span class="p">(</span><span class="nx">curMonth</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">+</span><span class="s2">"-"</span><span class="o">+</span><span class="nx">curDay</span><span class="o">+</span><span class="s2">" 9:0:0"</span><span class="p">,</span><span class="s2">"%Y-%m-%d %H:%M:%S"</span><span class="p">);</span>
<span class="nx">messPut</span><span class="p">(</span><span class="s2">"Example"</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="s2">"tmStrPTime(): "</span><span class="o">+</span><span class="nx">test</span><span class="p">);</span>
</pre></div>
<h3><span class="mw-headline" id="Time:_Schedule_time_at_CRON_.28tmCron.29"><span class="mw-headline-number">2.5</span> <span id="tmCron" title="#tmCron">Time: Schedule time at CRON (tmCron)</span></span></h3>
<p><i>Description:</i> Scheduling the time at the CRON standard, returning the planned time from the <i>base</i> time or from the current time, if the base is not specified.<br />
<i>Parameters:</i>
</p>
<table class="wikitable">

<tr>
<th> Identifier </th>
<th> Parameter </th>
<th> Type </th>
<th> Mode </th>
<th> By defaults
</th></tr>
<tr>
<td> res </td>
<td> Result, seconds </td>
<td> Integer </td>
<td> Return </td>
<td> 0
</td></tr>
<tr>
<td> str </td>
<td> CRON </td>
<td> String </td>
<td> Input </td>
<td> * * * * *
</td></tr>
<tr>
<td> base </td>
<td> Base time, seconds </td>
<td> Integer </td>
<td> Input </td>
<td> 0
</td></tr></table>
<h3><span class="mw-headline" id="Time:_sleep_.28tmSleep.29"><span class="mw-headline-number">2.6</span> <span id="tmSleep" title="#tmSleep">Time: sleep (tmSleep)</span></span></h3>
<p><i>Description:</i> Short sleeping from nanoseconds and up to STD_INTERF_TM (5 seconds).<br />
<i>Parameters:</i>
</p>
<table class="wikitable">

<tr>
<th> Identifier </th>
<th> Parameter </th>
<th> Type </th>
<th> Mode </th>
<th> By defaults
</th></tr>
<tr>
<td> res </td>
<td> Result </td>
<td> Integer </td>
<td> Return </td>
<td> 0
</td></tr>
<tr>
<td> tm </td>
<td> Time, seconds </td>
<td> Real </td>
<td> Input </td>
<td>
</td></tr></table>
<h2><span class="mw-headline" id="Functions_of_the_strings_processing"><span class="mw-headline-number">3</span> Functions of the strings processing</span></h2>
<h3><span class="mw-headline" id="String:_Get_size_.28strSize.29"><span class="mw-headline-number">3.1</span> <span id="strSize" title="#strSize">String: Get size (strSize)</span></span></h3>
<p><i>Description:</i> Getting size of the string.<br />
<i>Parameters:</i>
</p>
<table class="wikitable">

<tr>
<th> Identifier </th>
<th> Parameter </th>
<th> Type </th>
<th> Mode </th>
<th> By defaults
</th></tr>
<tr>
<td> rez </td>
<td> Result </td>
<td> Integer </td>
<td> Return </td>
<td>
</td></tr>
<tr>
<td> str </td>
<td> String </td>
<td> String </td>
<td> Input </td>
<td>
</td></tr></table>
<p><i>Example:</i>
</p>
<div class="mw-highlight mw-content-ltr" dir="ltr"><pre><span class="nx">using</span> <span class="nx">Special</span><span class="p">.</span><span class="nx">FLibSYS</span><span class="p">;</span>
<span class="nx">messPut</span><span class="p">(</span><span class="s2">"Example"</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="s2">"ReturnString: "</span><span class="o">+</span><span class="nx">strSize</span><span class="p">(</span><span class="s2">"Example"</span><span class="p">));</span>
</pre></div>
<h3><span class="mw-headline" id="String:_Get_substring_.28strSubstr.29"><span class="mw-headline-number">3.2</span> <span id="strSubstr" title="#strSubstr">String: Get substring (strSubstr)</span></span></h3>
<p><i>Description:</i> Getting of the substring.<br />
<i>Parameters:</i>
</p>
<table class="wikitable">

<tr>
<th> Identifier </th>
<th> Parameter </th>
<th> Type </th>
<th> Mode </th>
<th> By defaults
</th></tr>
<tr>
<td> rez </td>
<td> Result </td>
<td> String </td>
<td> Return </td>
<td>
</td></tr>
<tr>
<td> str </td>
<td> String </td>
<td> String </td>
<td> Input </td>
<td>
</td></tr>
<tr>
<td> pos </td>
<td> Position </td>
<td> Integer </td>
<td> Input </td>
<td> 0
</td></tr>
<tr>
<td> n </td>
<td> Number </td>
<td> Integer </td>
<td> Input </td>
<td> -1
</td></tr></table>
<p><i>Example:</i>
</p>
<div class="mw-highlight mw-content-ltr" dir="ltr"><pre><span class="nx">using</span> <span class="nx">Special</span><span class="p">.</span><span class="nx">FLibSYS</span><span class="p">;</span>
<span class="nx">test</span> <span class="o">=</span> <span class="nx">strSubstr</span><span class="p">(</span><span class="s2">"Example"</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">strSize</span><span class="p">(</span><span class="s2">"Example"</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">);</span>
<span class="nx">messPut</span><span class="p">(</span><span class="s2">"Example"</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="s2">"ReturnString: "</span><span class="o">+</span><span class="nx">test</span><span class="p">);</span>
</pre></div>
<h3><span class="mw-headline" id="String:_Insert_a_string_to_other_string_.28strInsert.29"><span class="mw-headline-number">3.3</span> <span id="strInsert" title="#strInsert">String: Insert a string to other string (strInsert)</span></span></h3>
<p><i>Description:</i> Inserting a string to another string.<br />
<i>Parameters:</i>
</p>
<table class="wikitable">

<tr>
<th> Identifier </th>
<th> Parameter </th>
<th> Type </th>
<th> Mode </th>
<th> By defaults
</th></tr>
<tr>
<td> str </td>
<td> String </td>
<td> String </td>
<td> Output </td>
<td>
</td></tr>
<tr>
<td> pos </td>
<td> Position </td>
<td> Integer </td>
<td> Input </td>
<td> 0
</td></tr>
<tr>
<td> ins </td>
<td> String to insert </td>
<td> String </td>
<td> Input </td>
<td>
</td></tr></table>
<h3><span class="mw-headline" id="String:_Replace_a_part_of_the_string_by_another_string_.28strReplace.29"><span class="mw-headline-number">3.4</span> <span id="strReplace" title="#strReplace">String: Replace a part of the string by another string (strReplace)</span></span></h3>
<p><i>Description:</i> Replacing a part of the string by another string.<br />
<i>Parameters:</i>
</p>
<table class="wikitable">

<tr>
<th> Identifier </th>
<th> Parameter </th>
<th> Type </th>
<th> Mode </th>
<th> By defaults
</th></tr>
<tr>
<td> str </td>
<td> String </td>
<td> String </td>
<td> Output </td>
<td>
</td></tr>
<tr>
<td> pos </td>
<td> Position </td>
<td> Integer </td>
<td> Input </td>
<td> 0
</td></tr>
<tr>
<td> n </td>
<td> Number </td>
<td> Integer </td>
<td> Input </td>
<td> -1
</td></tr>
<tr>
<td> repl </td>
<td> String to replace </td>
<td> String </td>
<td> Input </td>
<td>
</td></tr></table>
<h3><span class="mw-headline" id="String:_Parse_with_a_separator_.28strParse.29"><span class="mw-headline-number">3.5</span> <span id="strParse" title="#strParse">String: Parse with a separator (strParse)</span></span></h3>
<p><i>Description:</i> Parsing the string with a separator.<br />
<i>Parameters:</i>
</p>
<table class="wikitable">

<tr>
<th> Identifier </th>
<th> Parameter </th>
<th> Type </th>
<th> Mode </th>
<th> By defaults
</th></tr>
<tr>
<td> rez </td>
<td> Result </td>
<td> String </td>
<td> Return </td>
<td>
</td></tr>
<tr>
<td> str </td>
<td> String </td>
<td> String </td>
<td> Input </td>
<td>
</td></tr>
<tr>
<td> lev </td>
<td> Level </td>
<td> Integer </td>
<td> Input </td>
<td>
</td></tr>
<tr>
<td> sep </td>
<td> Separator </td>
<td> String </td>
<td> Input </td>
<td> "."
</td></tr>
<tr>
<td> off </td>
<td> Offset </td>
<td> Integer </td>
<td> Output </td>
<td>
</td></tr></table>
<p><i>Example:</i>
</p>
<div class="mw-highlight mw-content-ltr" dir="ltr"><pre><span class="nx">using</span> <span class="nx">Special</span><span class="p">.</span><span class="nx">FLibSYS</span><span class="p">;</span>
<span class="nx">ExapleString</span> <span class="o">=</span> <span class="s2">"Example:123"</span><span class="p">;</span>
<span class="nx">test</span> <span class="o">=</span> <span class="nx">strParse</span><span class="p">(</span><span class="nx">ExapleString</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="s2">":"</span><span class="p">);</span>
<span class="nx">messPut</span><span class="p">(</span><span class="s2">"Example"</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="s2">"strParse(): "</span><span class="o">+</span><span class="nx">test</span><span class="p">);</span>
</pre></div>
<h3><span class="mw-headline" id="String:_Parse_of_the_path_.28strParsePath.29"><span class="mw-headline-number">3.6</span> <span id="strParsePath" title="#strParsePath">String: Parse of the path (strParsePath)</span></span></h3>
<p><i>Description:</i> Parsing of the path for items.<br />
<i>Parameters:</i>
</p>
<table class="wikitable">

<tr>
<th> Identifier </th>
<th> Parameter </th>
<th> Type </th>
<th> Mode </th>
<th> By defaults
</th></tr>
<tr>
<td> rez </td>
<td> Result </td>
<td> String </td>
<td> Return </td>
<td>
</td></tr>
<tr>
<td> path </td>
<td> Path </td>
<td> String </td>
<td> Input </td>
<td>
</td></tr>
<tr>
<td> lev </td>
<td> Level </td>
<td> Integer </td>
<td> Input </td>
<td>
</td></tr>
<tr>
<td> off </td>
<td> Offset </td>
<td> Integer </td>
<td> Output </td>
<td>
</td></tr></table>
<p><i>Example:</i>
</p>
<div class="mw-highlight mw-content-ltr" dir="ltr"><pre><span class="nx">using</span> <span class="nx">Special</span><span class="p">.</span><span class="nx">FLibSYS</span><span class="p">;</span>
<span class="nx">test</span> <span class="o">=</span> <span class="nx">strParsePath</span><span class="p">(</span><span class="nx">path</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="s2">"/"</span><span class="p">);</span>
<span class="nx">messPut</span><span class="p">(</span><span class="s2">"Example"</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="s2">"strParsePath(): "</span><span class="o">+</span><span class="nx">test</span><span class="p">);</span>
</pre></div>
<h3><span class="mw-headline" id="String:_Path_to_separated_string_.28strPath2Sep.29"><span class="mw-headline-number">3.7</span> <span id="strPath2Sep" title="#strPath2Sep">String: Path to separated string (strPath2Sep)</span></span></h3>
<p><i>Description:</i> Converting the path to the separated string.<br />
<i>Parameters:</i>
</p>
<table class="wikitable">

<tr>
<th> Identifier </th>
<th> Parameter </th>
<th> Type </th>
<th> Mode </th>
<th> By defaults
</th></tr>
<tr>
<td> rez </td>
<td> Result </td>
<td> String </td>
<td> Return </td>
<td>
</td></tr>
<tr>
<td> src </td>
<td> Source </td>
<td> String </td>
<td> Input </td>
<td>
</td></tr>
<tr>
<td> sep </td>
<td> Separator </td>
<td> String </td>
<td> Input </td>
<td> "."
</td></tr></table>
<p><i>Example:</i>
</p>
<div class="mw-highlight mw-content-ltr" dir="ltr"><pre><span class="c1">//Converting the value "/ses_AGLKS/pg_so" of the attribute "path" to the value "ses_AGLKS.pg_so"</span>
<span class="nx">using</span> <span class="nx">Special</span><span class="p">.</span><span class="nx">FLibSYS</span><span class="p">;</span>
<span class="nx">test</span> <span class="o">=</span> <span class="nx">strPath2Sep</span><span class="p">(</span><span class="nx">path</span><span class="p">);</span>
<span class="nx">messPut</span><span class="p">(</span><span class="s2">"Example"</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="s2">"path: "</span><span class="o">+</span><span class="nx">path</span><span class="p">);</span>
<span class="nx">messPut</span><span class="p">(</span><span class="s2">"Example"</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="s2">"strPath2Sep(): "</span><span class="o">+</span><span class="nx">test</span><span class="p">);</span>
</pre></div>
<h3><span class="mw-headline" id="String:_Encode_string_to_HTML_.28strEnc2HTML.29"><span class="mw-headline-number">3.8</span> <span id="strEnc2HTML" title="#strEnc2HTML">String: Encode string to HTML (strEnc2HTML)</span></span></h3>
<p><i>Description:</i> Encoding the string to use into the HTML source.<br />
<i>Parameters:</i>
</p>
<table class="wikitable">

<tr>
<th> Identifier </th>
<th> Parameter </th>
<th> Type </th>
<th> Mode </th>
<th> By defaults
</th></tr>
<tr>
<td> rez </td>
<td> Result </td>
<td> String </td>
<td> Return </td>
<td>
</td></tr>
<tr>
<td> src </td>
<td> Source </td>
<td> String </td>
<td> Input </td>
<td>
</td></tr></table>
<h3><span class="mw-headline" id="String:_Encode_text_to_binary_.28strEnc2Bin.29"><span class="mw-headline-number">3.9</span> <span id="strEnc2Bin" title="#strEnc2Bin">String: Encode text to binary (strEnc2Bin)</span></span></h3>
<p><i>Description:</i> Encoding the text to the binary, for the text format &lt;00 A0 FA DE&gt;.<br />
<i>Parameters:</i>
</p>
<table class="wikitable">

<tr>
<th> Identifier </th>
<th> Parameter </th>
<th> Type </th>
<th> Mode </th>
<th> By defaults
</th></tr>
<tr>
<td> rez </td>
<td> Result </td>
<td> String </td>
<td> Return </td>
<td>
</td></tr>
<tr>
<td> src </td>
<td> Source </td>
<td> String </td>
<td> Input </td>
<td>
</td></tr></table>
<h3><span class="mw-headline" id="String:_Decode_text_from_binary_.28strDec4Bin.29"><span class="mw-headline-number">3.10</span> <span id="strDec4Bin" title="#strDec4Bin">String: Decode text from binary (strDec4Bin)</span></span></h3>
<p><i>Description:</i> Decoding the text from the binary, for the text format &lt;00 A0 FA DE&gt;.<br />
<i>Parameters:</i>
</p>
<table class="wikitable">

<tr>
<th> Identifier </th>
<th> Parameter </th>
<th> Type </th>
<th> Mode </th>
<th> By defaults
</th></tr>
<tr>
<td> rez </td>
<td> Result </td>
<td> String </td>
<td> Return </td>
<td>
</td></tr>
<tr>
<td> src </td>
<td> Source </td>
<td> String </td>
<td> Input </td>
<td>
</td></tr></table>
<h3><span class="mw-headline" id="String:_Real_to_string_.28real2str.29"><span class="mw-headline-number">3.11</span> <span id="real2str" title="#real2str">String: Real to string (real2str)</span></span></h3>
<p><i>Description:</i> Converting the real value to the string format.<br />
<i>Parameters:</i>
</p>
<table class="wikitable">

<tr>
<th> Identifier </th>
<th> Parameter </th>
<th> Type </th>
<th> Mode </th>
<th> By defaults
</th></tr>
<tr>
<td> rez </td>
<td> Result </td>
<td> String </td>
<td> Return </td>
<td>
</td></tr>
<tr>
<td> val </td>
<td> Value </td>
<td> Real </td>
<td> Input </td>
<td>
</td></tr>
<tr>
<td> prc </td>
<td> Precision </td>
<td> Integer </td>
<td> Input </td>
<td> 4
</td></tr>
<tr>
<td> tp </td>
<td> Type </td>
<td> String </td>
<td> Input </td>
<td> "f"
</td></tr></table>
<h3><span class="mw-headline" id="String:_Integer_to_string_.28int2str.29"><span class="mw-headline-number">3.12</span> <span id="int2str" title="#int2str">String: Integer to string (int2str)</span></span></h3>
<p><i>Description:</i> Converting the integer value to the string format.<br />
<i>Parameters:</i>
</p>
<table class="wikitable">

<tr>
<th> Identifier </th>
<th> Parameter </th>
<th> Type </th>
<th> Mode </th>
<th> By defaults
</th></tr>
<tr>
<td> rez </td>
<td> Result </td>
<td> String </td>
<td> Return </td>
<td>
</td></tr>
<tr>
<td> val </td>
<td> Value </td>
<td> Integer </td>
<td> Input </td>
<td>
</td></tr>
<tr>
<td> base </td>
<td> Base (8, 10, 16) </td>
<td> Integer </td>
<td> Input </td>
<td> 10
</td></tr></table>
<h3><span class="mw-headline" id="String:_String_to_real_.28str2real.29"><span class="mw-headline-number">3.13</span> <span id="str2real" title="#str2real">String: String to real (str2real)</span></span></h3>
<p><i>Description:</i> Converting the string value to the real format.<br />
<i>Parameters:</i>
</p>
<table class="wikitable">

<tr>
<th> Identifier </th>
<th> Parameter </th>
<th> Type </th>
<th> Mode </th>
<th> By defaults
</th></tr>
<tr>
<td> rez </td>
<td> Result </td>
<td> Real </td>
<td> Return </td>
<td>
</td></tr>
<tr>
<td> val </td>
<td> Value </td>
<td> String </td>
<td> Input </td>
<td>
</td></tr></table>
<h3><span class="mw-headline" id="String:_String_to_integer_.28str2int.29"><span class="mw-headline-number">3.14</span> <span id="str2int" title="#str2int">String: String to integer (str2int)</span></span></h3>
<p><i>Description:</i> Converting the string value to the integer format.<br />
<i>Parameters:</i>
</p>
<table class="wikitable">

<tr>
<th> ID </th>
<th> Parameter </th>
<th> Type </th>
<th> Mode </th>
<th> By defaults
</th></tr>
<tr>
<td> rez </td>
<td> Result </td>
<td> Integer </td>
<td> Return </td>
<td>
</td></tr>
<tr>
<td> val </td>
<td> Value </td>
<td> String </td>
<td> Input </td>
<td>
</td></tr>
<tr>
<td> base </td>
<td> Base (2...36) </td>
<td> Integer </td>
<td> Input </td>
<td> 0
</td></tr></table>
<h3><span class="mw-headline" id="Cyclic_Redundancy_Code_.28CRC.29"><span class="mw-headline-number">3.15</span> <span id="CRC" title="#CRC">Cyclic Redundancy Code (CRC)</span></span></h3>
<p><i>Description:</i> Unified and completed implementing of the Cyclic Redundancy Code for the width in 1-64 bits with normal polynomial, the initial CRC, the input and output reference, and the XOR for output.<br />
The previous notation of the function is supported also, where the reversed polynomial is placed in the <i>width</i> place!<br />
<i>Parameters:</i>
</p>
<table class="wikitable">

<tr>
<th> Identifier </th>
<th> Parameter </th>
<th> Type </th>
<th> Mode </th>
<th> By defaults
</th></tr>
<tr>
<td> rez </td>
<td> Result </td>
<td> Integer </td>
<td> Return </td>
<td>
</td></tr>
<tr>
<td> data </td>
<td> Data </td>
<td> String </td>
<td> Input </td>
<td>
</td></tr>
<tr>
<td> width </td>
<td> Width </td>
<td> Integer </td>
<td> Input </td>
<td> 16
</td></tr>
<tr>
<td> poly </td>
<td> Polynomial </td>
<td> Integer </td>
<td> Input </td>
<td> 32773 (0x8005)
</td></tr>
<tr>
<td> init </td>
<td> Initial </td>
<td> Integer </td>
<td> Input </td>
<td> -1 (0xFFFFFFFFFFFFFFFF)
</td></tr>
<tr>
<td> RefIn </td>
<td> Reference input </td>
<td> Bool </td>
<td> Input </td>
<td> 1
</td></tr>
<tr>
<td> RefOut </td>
<td> Reference output </td>
<td> Bool </td>
<td> Input </td>
<td> 1
</td></tr>
<tr>
<td> XorOut </td>
<td> XOR for output </td>
<td> Integer </td>
<td> Input </td>
<td> 0
</td></tr></table>
<h3><span class="mw-headline" id="Message_Digest_5_.28MD5.29"><span class="mw-headline-number">3.16</span> <span id="MD5" title="#MD5">Message Digest 5 (MD5)</span></span></h3>
<p><i>Description:</i> Calculating for the message Digest 5 of the <i>data</i>.<br />
<i>Parameters:</i>
</p>
<table class="wikitable">

<tr>
<th> Identifier </th>
<th> Parameter </th>
<th> Type </th>
<th> Mode </th>
<th> By defaults
</th></tr>
<tr>
<td> rez </td>
<td> Result </td>
<td> String </td>
<td> Return </td>
<td>
</td></tr>
<tr>
<td> data </td>
<td> Data </td>
<td> String </td>
<td> Input </td>
<td>
</td></tr></table>
<h2><span class="mw-headline" id="Functions_for_the_real_processing"><span class="mw-headline-number">4</span> Functions for the real processing</span></h2>
<h3><span class="mw-headline" id="Float:_Split_to_the_words_.28floatSplitWord.29"><span class="mw-headline-number">4.1</span> <span id="floatSplitWord" title="#floatSplitWord">Float: Split to the words (floatSplitWord)</span></span></h3>
<p><i>Description:</i> Splitting the float value (4 bytes) to the two words (2 bytes).<br />
<i>Parameters:</i>
</p>
<table class="wikitable">

<tr>
<th> Identifier </th>
<th> Parameter </th>
<th> Type </th>
<th> Mode </th>
<th> By defaults
</th></tr>
<tr>
<td> val </td>
<td> Value </td>
<td> Real </td>
<td> Input </td>
<td>
</td></tr>
<tr>
<td> w1 </td>
<td> Word 1 </td>
<td> Integer </td>
<td> Output </td>
<td>
</td></tr>
<tr>
<td> w2 </td>
<td> Word 2 </td>
<td> Integer </td>
<td> Output </td>
<td>
</td></tr></table>
<h3><span class="mw-headline" id="Float:_Merge_from_the_words_.28floatMergeWord.29"><span class="mw-headline-number">4.2</span> <span id="floatMergeWord" title="#floatMergeWord">Float: Merge from the words (floatMergeWord)</span></span></h3>
<p><i>Description:</i> Forming the float value (4 bytes) from the two words (2 bytes).<br />
<i>Parameters:</i>
</p>
<table class="wikitable">

<tr>
<th> Identifier </th>
<th> Parameter </th>
<th> Type </th>
<th> Mode </th>
<th> By defaults
</th></tr>
<tr>
<td> rez </td>
<td> Result </td>
<td> Real </td>
<td> Return </td>
<td>
</td></tr>
<tr>
<td> w1 </td>
<td> Word 1 </td>
<td> Integer </td>
<td> Input </td>
<td>
</td></tr>
<tr>
<td> w2 </td>
<td> Word 2 </td>
<td> Integer </td>
<td> Input </td>
<td>
</td></tr></table>
<h3><span class="mw-headline" id="Float:_Extract_.28floatExtract.29"><span class="mw-headline-number">4.3</span> <span id="floatExtract" title="#floatExtract">Float: Extract (floatExtract)</span></span></h3>
<p><i>Description:</i> Extracting for mantissa and exponent from the float value.<br />
<i>Parameters:</i>
</p>
<table class="wikitable">

<tr>
<th> Identifier </th>
<th> Parameter </th>
<th> Type </th>
<th> Mode </th>
<th> By defaults
</th></tr>
<tr>
<td> magn </td>
<td> Magnitude </td>
<td> Real </td>
<td> Return </td>
<td>
</td></tr>
<tr>
<td> val </td>
<td> Value </td>
<td> Real </td>
<td> Input </td>
<td>
</td></tr>
<tr>
<td> exp </td>
<td> Exponent </td>
<td> Integer </td>
<td> Output </td>
<td>
</td></tr></table>
<h2><span class="mw-headline" id="Functions_of_archives"><span class="mw-headline-number">5</span> Functions of archives</span></h2>
<h3><span class="mw-headline" id="Mess:_Get_.28messGet.29"><span class="mw-headline-number">5.1</span> <span id="messGet" title="#messGet">Mess: Get (messGet)</span></span></h3>
<p><i>Description:</i> Get messages of the program.<br />
<i>Parameters:</i>
</p>
<table class="wikitable">

<tr>
<th> Identifier </th>
<th> Parameter </th>
<th> Type </th>
<th> Mode </th>
<th> By defaults
</th></tr>
<tr>
<td> rez </td>
<td> Result </td>
<td> Object(Array) </td>
<td> Return </td>
<td>
</td></tr>
<tr>
<td> btm </td>
<td> Begin time, seconds </td>
<td> Integer </td>
<td> Input </td>
<td>
</td></tr>
<tr>
<td> etm </td>
<td> End time, seconds </td>
<td> Integer </td>
<td> Input </td>
<td>
</td></tr>
<tr>
<td> cat </td>
<td> Category </td>
<td> String </td>
<td> Input </td>
<td>
</td></tr>
<tr>
<td> lev </td>
<td> Level </td>
<td> Integer </td>
<td> Input </td>
<td>
</td></tr>
<tr>
<td> arch </td>
<td> Archiver </td>
<td> String </td>
<td> Input </td>
<td>
</td></tr></table>
<h3><span class="mw-headline" id="Mess:_Put_.28messPut.29"><span class="mw-headline-number">5.2</span> <span id="messPut" title="#messPut">Mess: Put (messPut)</span></span></h3>
<p><i>Description:</i> Put a message to the program.<br />
<i>Parameters:</i>
</p>
<table class="wikitable">

<tr>
<th> Identifier </th>
<th> Parameter </th>
<th> Type </th>
<th> Mode </th>
<th> By defaults
</th></tr>
<tr>
<td> cat </td>
<td> Category </td>
<td> String </td>
<td> Input </td>
<td>
</td></tr>
<tr>
<td> lev </td>
<td> Level </td>
<td> Integer </td>
<td> Input </td>
<td>
</td></tr>
<tr>
<td> mess </td>
<td> Message </td>
<td> String </td>
<td> Input </td>
<td>
</td></tr></table>
<p><i>Example:</i>
</p>
<div class="mw-highlight mw-content-ltr" dir="ltr"><pre><span class="nx">rnd_sq_gr11_lineClr</span><span class="o">=</span><span class="s2">"red"</span><span class="p">;</span>
<span class="nx">Special</span><span class="p">.</span><span class="nx">FLibSYS</span><span class="p">.</span><span class="nx">messPut</span><span class="p">(</span><span class="s2">"Example"</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="s2">"Event: "</span><span class="o">+</span><span class="nx">rnd_sq_gr12_leniClr</span><span class="p">);</span>
</pre></div>
<h3><span class="mw-headline" id="Val:_Archive_.28vArh.29"><span class="mw-headline-number">5.3</span> <span id="vArh" title="#vArh">Val: Archive (vArh)</span></span></h3>
<p><i>Description:</i> Getting the value archive object (VArchObj) through connecting to the archive at its address.<br />
<i>Parameters:</i>
</p>
<table class="wikitable">

<tr>
<th> Identifier </th>
<th> Name </th>
<th> Type </th>
<th> Mode </th>
<th> By defaults
</th></tr>
<tr>
<td> rez </td>
<td> Result </td>
<td> Object(VArchObj) </td>
<td> Return </td>
<td>
</td></tr>
<tr>
<td> name </td>
<td> Name — address to the attribute of the parameter (<b>DAQ.{Module}.{Cntr}.{Prm}.{Attr}</b>) with the archive or directly to the value archive (<b>Archive.va_{ValArchive}</b>). </td>
<td> String </td>
<td> Input </td>
<td>
</td></tr></table>
<h4><span class="mw-headline" id="VArchObj_object"><span class="mw-headline-number">5.3.1</span> VArchObj object</span></h4>
<p>Functions:
</p>
<ul><li> <i>bool isNull()</i> — object is not initiated.</li>
<li> <i>int begin( int usec = 0, string archiver = "" )</i> — start time of the archive, through the return of seconds and microseconds <i>usec</i> for the <i>archiver</i>.</li>
<li> <i>int end( int usec = 0, string archiver = "" )</i> — end time of the archive, through the return of seconds and microseconds <i>usec</i> for the <i>archiver</i>.</li>
<li> <i>int period( int usec = 0, string archiver = "" )</i> — period of the archive, through the return of seconds and microseconds <i>usec</i> for the <i>archiver</i>.</li>
<li> <i>ValObj get( int sec, int usec, bool upOrd = false, string archiver = "" )</i> — value from the archive at the time <i>sec</i>:<i>usec</i> linked to the top <i>upOrd</i> for the <i>archiver</i>. Real time of the obtained value is set in <i>sec</i>:<i>usec</i>.</li>
<li> <i>bool set( ValObj val, int sec, int usec, string archiver = "" )</i> [<span style="color:red">access to the Archive-History subsystem for archive operations</span>] — writes of the value <i>val</i> to the archive for the time <i>sec</i>:<i>usec</i> for the <i>archiver</i>.</li>
<li> <i>bool copy( VArchObj src, int begSec, int begUSec, int endSec, int endUSec, string archiver = "" )</i> [<span style="color:red">access to the Archive-History subsystem for archive operations</span>] — copies of the part of the source archive <i>src</i>, or its buffer, in the current one beginning from <i>begSec</i>:<i>begUSec</i> and ending with <i>endSec</i>:<i>endUSec</i> for the <i>archiver</i>.</li>
<li> <i>ArrayObj FFT( int tm, real size, string archiver = "", int tm_usec = 0 )</i> — performs the Fast Fourier Transformation using the FFT algorithm. Returns an array of amplitudes of the frequencies for archive's values window for begin time <i>tm:tm_usec</i> (seconds:microseconds), depth to history <i>size</i> (seconds) and for <i>archiver</i>.<br /></li></ul>
<p><i>Example:</i>
</p>
<div class="mw-highlight mw-content-ltr" dir="ltr"><pre><span class="nx">using</span> <span class="nx">Special</span><span class="p">.</span><span class="nx">FLibSYS</span><span class="p">;</span>
<span class="nx">val</span> <span class="o">=</span> <span class="nx">vArh</span><span class="p">(</span><span class="nx">strPath2Sep</span><span class="p">(</span><span class="nx">addr</span><span class="p">)).</span><span class="nx">get</span><span class="p">(</span><span class="nx">time</span><span class="p">,</span><span class="nx">uTime</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="nx">archtor</span><span class="p">);</span>
<span class="k">return</span> <span class="nx">val</span><span class="p">.</span><span class="nx">isEval</span><span class="p">()</span> <span class="o">?</span> <span class="s2">"Empty"</span> <span class="o">:</span> <span class="nx">real2str</span><span class="p">(</span><span class="nx">val</span><span class="p">,</span><span class="nx">prec</span><span class="p">);</span>
</pre></div>
<h3><span class="mw-headline" id="Val:_Archive_buffer_.28vArhBuf.29"><span class="mw-headline-number">5.4</span> <span id="vArhBuf" title="#vArhBuf">Val: Archive buffer (vArhBuf)</span></span></h3>
<p><i>Description:</i> Getting a value buffer object (VArchObj) for temporary values storing and performing the intermediate operations on frames of data.<br />
<i>Parameters:</i>
</p>
<table class="wikitable">

<tr>
<th> Identifier </th>
<th> Parameter </th>
<th> Type </th>
<th> Mode </th>
<th> By defaults
</th></tr>
<tr>
<td> rez </td>
<td> Result </td>
<td> Object(VArchObj) </td>
<td> Return </td>
<td>
</td></tr>
<tr>
<td> tp </td>
<td> Type of the archive values (0-Boolean, 1-Integer, 4-Real, 5-String) </td>
<td> Integer </td>
<td> Input </td>
<td> 1
</td></tr>
<tr>
<td> sz </td>
<td> Maximum buffer size </td>
<td> Integer </td>
<td> Input </td>
<td> 100
</td></tr>
<tr>
<td> per </td>
<td> Period of the buffer values, microseconds </td>
<td> Integer </td>
<td> Input </td>
<td> 1000000
</td></tr>
<tr>
<td> hgrd </td>
<td> Hard time grid </td>
<td> Boolean </td>
<td> Input </td>
<td> 0
</td></tr>
<tr>
<td> hres </td>
<td> High time resolution (microseconds) </td>
<td> Boolean </td>
<td> Input </td>
<td> 0
</td></tr></table>
<h2><span class="mw-headline" id="User_programming_API"><span class="mw-headline-number">6</span> User programming API</span></h2>
<p>The module, as an object, provides user programming functions.
</p><p><b>The object "Functions library" (SYS.Special.FLibSYS)</b>
</p>
<ul><li> <i>ElTp {funcID}(ElTp prm1, ...)</i> — call the library function <i>{funcID}</i>. Return result of the called function.</li></ul>
<p><b>The object "User function" (SYS.Special.FLibSYS["funcID"])</b>
</p>
<ul><li> <i>ElTp call(ElTp prm1, ...)</i> — call the function with parameters <i>prm{N}</i>. Return result of the called function.</li></ul>






</div><table style="border-top: dotted 2px #999999; margin-top: 20pt; color: gray;" width="100%"><tr><td style="text-align: left;" width="40%"><a href="http://oscada.org/wiki/Modules/FLibSYS/en">Modules/FLibSYS/en</a> - <a href="http://oscada.org/en/main/about-the-project/licenses/">GFDL</a></td><td style="text-align: center;">April 2025</td><td style="text-align: right;" width="40%">OpenSCADA 1+r3018</td></tr></table></body>
</html>