5. Îáùåñèñòåìíîå API ïîëüçîâàòåëüñêîãî ïðîãðàììèðîâàíèÿ.
API ïîëüçîâàòåëüñêîãî ïðîãðàììèðîâàíèÿ ïðåäñòàâëÿåò ñîáîé äåðåâî îáúåêòîâ ñèñòåìû OpenSCADA, êàæäûé îáúåêò êîòîðîãî ìîæåò ïðåäñòàâëÿòü ñîáñòâåííûé ïåðå÷åíü ñâîéñòâ è ôóíêöèé. Ñâîéñòâà è ôóíêöèè îáúåêòîâ ìîãóò èñïîëüçîâàòüñÿ ïîëüçîâàòåëåì â ïðîöåäóðàõ íà ÿçûêàõ ïîëüçîâàòåëüñêîãî ïðîãðàììèðîâàíèÿ OpenSCADA. Òî÷êîé âõîäà äëÿ äîñòóïà ê îáúåêòàì ñèñòåìû OpenSCADA èç ÿçûêà ïîëüçîâàòåëüñêîãî ïðîãðàììèðîâàíèÿ JavaLikeCalc ÿâëÿåòñÿ çàðåçåðâèðîâàííîå ñëîâî "SYS" êîðíåâîãî îáúåêòà OpenSCADA. Íàïðèìåð, äëÿ äîñòóïà ê ôóíêöèè èñõîäÿùåãî òðàíñïîðòà íóæíî çàïèñàòü: SYS.Transport.Serial.out_ModBus.messIO(mess);.
API îáúåêòîâ, ïðåäîñòàâëÿåìûõ ìîäóëÿìè, îïèñûâàåòñÿ â ñîáñòâåííîé äîêóìåíòàöèè ìîäóëÿ.
5.1. Îáùåñèñòåìíûå ïîëüçîâàòåëüñêèå îáúåêòû.
Àáñòðàêòíûé îáúåêò ïðåäñòàâëÿåò ñîáîé àññîöèàòèâíûé êîíòåéíåð ñâîéñòâ è ôóíêöèé. Ñâîéñòâà ìîãóò ñîäåðæàòü êàê äàííûå ÷åòûð¸õ áàçîâûõ òèïîâ, òàê è äðóãèå îáúåêòû. Äîñòóï ê ñâîéñòâàì îáúåêòà îáû÷íî îñóùåñòâëÿåòñÿ ïîñðåäñòâîì çàïèñè èì¸í ñâîéñòâ ÷åðåç òî÷êó ê îáúåêòó "obj.prop", à òàêæå ïîñðåäñòâîì çàêëþ÷åíèÿ èìåíè ñâîéñòâà â êâàäðàòíûå ñêîáêè "obj["prop"]". Î÷åâèäíî, ÷òî ïåðâûé ìåõàíèçì ñòàòè÷åí, à âòîðîé ïîçâîëÿåò óêàçûâàòü èìÿ ñâîéñòâà ÷åðåç ïåðåìåííóþ. Áàçîâîå îïðåäåëåíèå îáúåêòà íå ñîäåðæèò ôóíêöèé. Îïåðàöèè êîïèðîâàíèÿ îáúåêòà íà ñàìîì äåëå äåëàþò ññûëêó íà èñõîäíûé îáúåêò. Ïðè óäàëåíèè îáúåêòà îñóùåñòâëÿåòñÿ óìåíüøåíèÿ ñ÷¸ò÷èêà ññûëîê, à ïðè äîñòèæåíèè ñ÷¸ò÷èêà ññûëîê íóëÿ îáúåêò óäàëÿåòñÿ ôèçè÷åñêè.
Ðàçíûå êîìïîíåíòû ìîãóò äîîïðåäåëÿòü áàçîâûé îáúåêò îñîáûìè ñâîéñòâàìè è ôóíêöèÿìè. Ñòàíäàðòíûì ðàñøèðåíèåì îáúåêòà ÿâëÿåòñÿ ìàññèâ "Array".
Îáúåêò Array
Îñîáåííîñòüþ ìàññèâà ÿâëÿåòñÿ òî, ÷òî îí ðàáîòàåò ñî ñâîéñòâàìè, êàê ñ èíäåêñàìè, è ïîëíîå èõ èìåíîâàíèå áåññìûñëåííî, à çíà÷èò äîñòóïåí ìåõàíèçì îáðàùåíèÿ òîëüêî çàêëþ÷åíèåì èíäåêñà â êâàäðàòíûå ñêîáêè "arr[1]". Ìàññèâ õðàíèò ñâîéñòâà â ñîáñòâåííîì êîíòåéíåðå îäíîìåðíîãî ìàññèâà. Öèôðîâûå ñâîéñòâà ìàññèâà èñïîëüçóþòñÿ äëÿ äîñòóïà íåïîñðåäñòâåííî ê ìàññèâó, à ñèìâîëüíûå ðàáîòàþò êàê ñâîéñòâà îáúåêòà.
Ìàññèâ ïðåäîñòàâëÿåò ñïåöèàëüíîå ñâîéñòâî "length" äëÿ ïîëó÷åíèÿ ðàçìåðà ìàññèâà "var = arr.length;". Òàêæå ìàññèâ ïðåäîñòàâëÿåò ñëåäóþùèå ôóíêöèè:
- string join( string sep = "," ), string toString( string sep = "," ), string valueOf( string sep = "," ) — Âîçâðàùàåò ñòðîêó ñ ýëåìåíòàìè ìàññèâà ðàçäåë¸ííûìè sep èëè ñèìâîëîì ','.
- Array concat( Array arr ); — Äîáàâëÿåò ê èñõîäíîìó ìàññèâó ýëåìåíòû ìàññèâà arr. Âîçâðàùàåò èñõîäíûé ìàññèâ ñ èçìåíåíèÿìè.
- int push( ElTp var, ... ); — Ïîìåùàåò ýëåìåíò(û) var â êîíåö ìàññèâà, êàê â ñòåê. Âîçâðàùàåò íîâûé ðàçìåð ìàññèâà.
- ElTp pop( ); — Óäàëåíèå ïîñëåäíåãî ýëåìåíòà ìàññèâà è âîçâðàò åãî çíà÷åíèÿ, êàê èç ñòåêà.
- Array reverse( ); — Èçìåíåíèå ïîðÿäêà ðàñïîëîæåíèÿ ýëåìåíòîâ ìàññèâà. Âîçâðàùàåòñÿ èñõîäíûé ìàññèâ ñ èçìåíåíèÿìè.
- ElTp shift( ); — Ñäâèã ìàññèâà â âåðõ. Ïðè ýòîì ïåðâûé ýëåìåíò ìàññèâà óäàëÿåòñÿ, à åãî çíà÷åíèå âîçâðàùàåòñÿ.
- int unshift( ElTp var, ... ); — Çàäâèãàåò ýëåìåíò(û) var â ìàññèâ. Ïåðâûé ýëåìåíò â 0, âòîðîé â 1 è ò.ä.
- Array slice( int beg, int end ); — Âîçâðàùàåò ôðàãìåíò ìàññèâà îò beg ê end (èñêëþ÷àÿ). Åñëè çíà÷åíèå íà÷àëà èëè êîíöà îòðèöàòåëüíî, òî îòñ÷¸ò âåä¸òñÿ ñ êîíöà ìàññèâà. Åñëè êîíåö íå óêàçàí, òî êîíöîì ÿâëÿåòñÿ êîíåö ìàññèâà.
- Array splice( int beg, int remN, ElTp val1, ElTp val2, ... ); — Âñòàâëÿåò, óäàëÿåò èëè çàìåíÿåò ýëåìåíòû ìàññèâà. Âîçâðàùàåò ìàññèâ óäàë¸ííûõ ýëåìåíòîâ.  ïåðâóþ î÷åðåäü îñóùåñòâëÿåòñÿ óäàëåíèå ýëåìåíòîâ ñ ïîçèöèè beg è êîëè÷åñòâîì remN, à çàòåì âñòàâëÿþòñÿ çíà÷åíèÿ val1 è ò.ä., íà÷èíàÿ ñ ïîçèöèè beg.
- Array sort( ); — Ñîðòèðîâêà ýëåìåíòîâ ìàññèâà â ëåêñèêîãðàôè÷åñêîì ïîðÿäêå.
Îáúåêò RegExp
Îáúåêò ðàáîòû ñ ðåãóëÿðíûìè âûðàæåíèÿìè, îñíîâàí íà áèáëèîòåêå PCRE. Ïðè ãëîáàëüíîì ïîèñêå óñòàíàâëèâàåòñÿ àòðèáóò îáúåêòà "lastIndex", ÷òî ïîçâîëÿåò ïðîäîëæèòü ïîèñê ïðè ñëåäóþùåì âûçîâå ôóíêöèè.  ñëó÷àå íåóäà÷íîãî ïîèñêà àòðèáóò "lastIndex" ñáðàñûâàåòñÿ â íîëü.
 êà÷åñòâå àðãóìåíòîâ ñîçäàíèÿ îáúåêòà ïåðåäà¸òñÿ ñòðîêà ñ òåêñòîì ðåãóëÿðíîãî âûðàæåíèÿ è ôëàãè â âèäå ñòðîêè ñèìâîëîâ:
- 'g' — ðåæèì ãëîáàëüíîãî ïîèñêà;
- 'i' — ðåæèì ðåãèñòðîíåçàâèñèìîãî ïîèñêà;
- 'm' — ðåæèì ìíîãîñòðî÷íîãî ïîèñêà;
- 'u' — ïðèíóäèòåëüíîå ðàçðåøåíèå ñèìâîëîâ UTF-8 äëÿ äðóãèõ ëîêàëåé;
- 'p' — òåñòèðîâàíèå âûðàæåíèÿ ïî îáû÷íîìó øàáëîíó ñ êëþ÷åâûìè ñèìâîëàìè: '?', '*' è '\'.
Ñâîéñòâà îáúåêòà:
- source — Èñõîäíûé øàáëîí ðåãóëÿðíîãî âûðàæåíèÿ, òîëüêî ÷òåíèå.
- global — Ïðèçíàê ãëîáàëüíîãî ïîèñêà, òîëüêî ÷òåíèå.
- ignoreCase — Ïðèçíàê èãíîðèðîâàòü ðåãèñòð ñèìâîëîâ ïðè ïîèñêå, òîëüêî ÷òåíèå.
- multiline — Ïðèçíàê ìíîãîñòðî÷íîãî ïîèñêà, òîëüêî ÷òåíèå.
- UTF8 — UTF-8 ñèìâîëû ðàçðåøåíû.
- lastIndex — Èíäåêñ ñèìâîëà çà ïîäñòðîêîé ïîñëåäíåãî ïîèñêà. Èñïîëüçóåòñÿ â ãëîáàëüíîì ðåæèìå äëÿ ïðîäîëæåíèÿ ñêàíèðîâàíèÿ, ïðè ñëåäóþùåì âûçîâå.
Ôóíêöèè îáúåêòà:
- Array exec(string val); — Âûçîâ ïîèñêà ïî ñòðîêå val. Âîçâðàùàåò íàéäåííóþ ïîäñòðîêó (0) è ïîäâûðàæåíèÿ (>0) â ìàññèâå. Óñòàíàâëèâàåò àòðèáóò ìàññèâà "index" â ïîçèöèþ íàéäåííîé ïîäñòðîêè. Óñòàíàâëèâàåò àòðèáóò ìàññèâà "input" â çíà÷åíèå èñõîäíîé ñòðîêè.
- bool test(string val); — Âîçâðàùàåò "true" åñëè ïîäñòðîêà íàéäåíà â val.
Îáúåêò XMLNodeObj
Ôóíêöèè:
- string name( ) — Èìÿ óçëà, XML-òåãà.
- string text( ) — Òåêñò óçëà, ñîäåðæèìîå XML-òåãà.
- string attr( string id ) — Çíà÷åíèå àòðèáóòà óçëà id.
- XMLNodeObj setName( string vl ) — Óñòàíîâêà èìåíè óçëà â vl. Âîçâðàùàåò òåêóùèé óçåë.
- XMLNodeObj setText( string vl ) — Óñòàíîâêà òåêñòà óçëà â vl. Âîçâðàùàåò òåêóùèé óçåë.
- XMLNodeObj setAttr( string id, string vl ) — Óñòàíîâêà àòðèáóòà id â çíà÷åíèå vl. Âîçâðàùàåò òåêóùèé óçåë.
- XMLNodeObj clear( bool full = false ) — Î÷èñòêà óçëà óäàëåíèåì äî÷åðíèõ óçëîâ, î÷èñòêè òåêñòà è àòðèáóòîâ, äëÿ full.
- int childSize( ) — Êîëè÷åñòâî âëîæåííûõ óçëîâ.
- XMLNodeObj childAdd( ElTp no = XMLNodeObj ); XMLNodeObj childAdd(string no) — Äîáàâëåíèå îáúåêòà no êàê âëîæåííîãî. no ìîæåò áûòü êàê íåïîñðåäñòâåííî îáúåêòîì-ðåçóëüòàòîì ôóíêöèè "SYS.XMLNode()", òàê è ñòðîêîé ñ èìåíåì íîâîãî òåãà. Âîçâðàùàåòñÿ âëîæåííûé óçåë.
- XMLNodeObj childIns( int id, ElTp no = XMLNodeObj ); XMLNodeObj childIns(int id, string no) — Âñòàâêà îáúåêòà no êàê âëîæåííîãî â ïîçèöèþ id. no ìîæåò áûòü êàê íåïîñðåäñòâåííî îáúåêòîì-ðåçóëüòàòîì ôóíêöèè "SYS.XMLNode()", òàê è ñòðîêîé ñ èìåíåì íîâîãî òåãà. Âîçâðàùàåòñÿ âëîæåííûé óçåë.
- XMLNodeObj childDel( int id ) — Óäàëåíèå âëîæåííîãî óçëà â ïîçèöèè id. Âîçâðàùàåò òåêóùèé óçåë.
- XMLNodeObj childGet( int id ) — Ïîëó÷åíèå âëîæåííîãî óçëà â ïîçèöèè id.
- XMLNodeObj childGet( string name, int num = 0 ) — Ïîëó÷åíèå âëîæåííîãî óçëà ñ èìåíåì òåãà name è ïîðÿäêîâûì íîìåðîì num.
- XMLNodeObj parent() — Ïîëó÷åíèå ðîäèòåëüñêîãî óçëà.
- string load( string str, bool file = false, int flg = 0, string cp = "UTF-8" ) — Çàãðóçêà XML èç ñòðîêè str èëè èç ôàéëà ñ ïóò¸ì â str åñëè file "true", ñ êîäèðîâêîé cp. flg — ôëàãè çàãðóçêè:
0x01 — ïîëíàÿ çàãðóçêà, ñ áëîêàìè òåêñòà è êîììåíòàðèÿìè â ñïåöèàëüíûõ óçëàõ;
0x02 — íå óäàëÿòü ïðîáåëû â íà÷àëå è êîíöå òåêñòà òåãà.
- string save( int flg = 0, string path = "", string cp = "UTF-8" ) — Ñîõðàíåíèå äåðåâà XML â ñòðîêó èëè â ôàéë path ñ ïàðàìåòðàìè ôîðìàòèðîâàíèÿ flg è êîäèðîâêîé cp. Âîçâðàùàåò òåêñò XML èëè êîä îøèáêè. Ïðåäóñìîòðåíû ñëåäóþùèå ôëàãè ôîðìàòèðîâàíèÿ flg:
0x01 — ïðåðûâàòü ñòðîêó ïåðåä îòêðûâàþùèì òåãîì;
0x02 — ïðåðûâàòü ñòðîêó ïîñëå îòêðûâàþùåãî òåãà;
0x04 — ïðåðûâàòü ñòðîêó ïîñëå çàêðûâàþùåãî òåãà;
0x08 — ïðåðûâàòü ñòðîêó ïîñëå òåêñòà;
0x10 — ïðåðûâàòü ñòðîêó ïîñëå èíñòðóêöèè;
0x1E — ïðåðûâàòü ñòðîêó ïîñëå âñåõ;
0x20 — âñòàâëÿòü ñòàíäàðòíûé XML-çàãîëîâîê;
0x40 — âñòàâëÿòü ñòàíäàðòíûé XHTML-çàãîëîâîê.
- XMLNodeObj getElementBy( string val, string attr = "id" ) — ïîëó÷èòü ýëåìåíò èç äåðåâà ïî àòðèáóòó attr ñî çíà÷åíèåì val.
5.2. Ñèñòåìà (SYS)
Ôóíêöèè îáúåêòà:
- {string|int} system( string cmd, bool noPipe = false); — îñóùåñòâëÿåò âûçîâ êîíñîëüíûõ êîìàíä cmd ÎÑ ñ âîçâðàòîì ðåçóëüòàòà ïî êàíàëó. Åñëè noPipe óñòàíîâëåí òî âîçâðàùàåòñÿ êîä âîçâðàòà âûçîâà è âîçìîæåí çàïóñê ïðîãðàìì â ôîíå ("sleep 5 &"). Ôóíêöèÿ îòêðûâàåò øèðîêèå âîçìîæíîñòè ïîëüçîâàòåëþ OpenSCADA ïóò¸ì âûçîâà ëþáûõ ñèñòåìíûõ ïðîãðàìì, óòèëèò è ñêðèïòîâ, à òàêæå ïîëó÷åíèÿ ïîñðåäñòâîì íèõ äîñòóïà ê îãðîìíîìó îáú¸ìó ñèñòåìíûõ äàííûõ. Íàïðèìåð êîìàíäà "ls -l" âåðí¸ò äåòàëèçèðîâàííîå ñîäåðæèìîå ðàáî÷åé äèðåêòîðèè.
- string fileRead( string file ); — Âîçâðàùàåò ñîäåðæèìîå ôàéëà file â ñòðîêå.
- int fileWrite( string file, string str, bool append = false ); — Çàïèñûâàåò ñòðîêó str â ôàéë file, óäàëÿÿ ïðèñóòñòâóþùèé ôàéë èëè äîáàâëÿÿ â íåãî append. Âîçâðàùàåò êîëè÷åñòâî çàïèñàííûõ áàéò.
- int fileRemove( string file ); — Óäàëèòü ôàéë file. Âîçâðàùàåò ðåçóëüòàò óäàëåíèÿ.
- int message( string cat, int level, string mess ); — ôîðìèðîâàíèå ñèñòåìíîãî ñîîáùåíèÿ mess ñ êàòåãîðèåé cat, óðîâíåì level (-7...7). Îòðèöàòåëüíîå çíà÷åíèå óðîâíÿ ôîðìèðóåò íàðóøåíèÿ (Alarm).
- int messDebug( string cat, string mess ); int messInfo( string cat, string mess ); int messNote( string cat, string mess ); int messWarning( string cat, string mess ); int messErr( string cat, string mess ); int messCrit( string cat, string mess ); int messAlert( string cat, string mess ); int messEmerg( string cat, string mess ); — ôîðìèðîâàíèå ñèñòåìíîãî ñîîáùåíèÿ mess ñ êàòåãîðèåé cat è ñîîòâåòñòâóþùèì óðîâíåì.
- XMLNodeObj XMLNode( string name = "" ); — ñîçäàíèå îáúåêòà óçëà XML c èìåíåì name.
- string cntrReq( XMLNodeObj req, string stat = "" ); — çàïðîñ èíòåðôåéñà óïðàâëåíèÿ ê ñèñòåìå ïîñðåäñòâîì XML. Îáû÷íûé çàïðîñ çàïèñûâàåòñÿ â âèäå "<get path="/OPath/%2felem"/>". Ïðè óêàçàíèè ñòàíöèè stat îñóùåñòâëÿåòñÿ çàïðîñ ê óêàçàííîé âíåøíåé ñòàíöèè. Àäðåñà, àòðèáóò "path", ìîæíî óçíàòü â êîíôèãóðàòîðå OpenSCADA, à èìåííî â ñòðîêå ñòàòóñà ãäå ýòîò àäðåñ âûñâå÷èâàåòñÿ ïðè íàâåäåíèè êóðñîðà ìûøè íà êîíôèãóðàöèîííîå èëè èíôîðìàöèîííîå ïîëå. Ïðèìåðû ðàñïðîñòðàí¸ííûõ çàïðîñîâ:
- ×òåíèå çíà÷åíèÿ ýëåìåíòà (èìÿ ïîëüçîâàòåëÿ "test"):
- Çàïèñü çíà÷åíèÿ ýëåìåíòà (èìÿ ïîëüçîâàòåëÿ "test"):
- Äîáàâëåíèå íîâîãî óçëà (ïîëüçîâàòåëÿ "test"):
- Óäàëåíèå óçëà (ïîëüçîâàòåëÿ "test"):
- Ñîõðàíåíèå èçìåíåíèé óçëà â ÁÄ (ïîëüçîâàòåëÿ "test"):
- Çàãðóçêà óçëà èç ÁÄ (ïîëüçîâàòåëÿ "test"):
- int sleep(real tm, int ntm = 0); — óñûïèòü ïîòîê èñïîëíåíèÿ íà tm ñåêóíä (c òî÷íîñòüþ äî íàíîñåêóíä) è ntm íàíîñåêóíä. Âðåìÿ ñíà ìîæíî óñòàíîâèòü íå áîëåå STD_INTERF_TM (5 ñåêóíä).
- int time( int usec ); — âîçâðàùàåò àáñîëþòíîå âðåìÿ â ñåêóíäàõ îò ýïîõè 1.1.1970 è ìèêðîñåêóíäàõ, åñëè usec óêàçàí.
- int utime( ); int mtime( ); — âîçâðàùàåò àáñîëþòíîå âðåìÿ â ìèêðîñåêóíäàõ è ìèëëèñåêóíäàõ îò ýïîõè 1.1.1970.
- int {localtime|gmtime}( int fullsec, int sec, int min, int hour, int mday, int month, int year, int wday, int yday, int isdst ); — âîçâðàùàåò ïîëíóþ äàòó â ñåêóíäàõ (sec), ìèíóòàõ (min), ÷àñàõ (hour), äíÿõ ìåñÿöà (mday), ìåñÿöå (month), ãîäå (year), äíÿõ íåäåëè (wday), äíÿõ â ãîäó (yday) è ïðèçíàê ëåòíåãî âðåìåíè (isdst), èñõîäÿ èç àáñîëþòíîãî âðåìåíè â ñåêóíäàõ fullsec îò ýïîõè 1.1.1970. gmtime âîçâðàùàåò âðåìÿ â GMT(UTC).
- int {mktime|timegm}(int sec, int min, int hour, int mday, int month, int year, int wday, int yday, int isdst); — ôîðìèðóåò âðåìÿ ñ ýïîõè 1.1.1970 èç îòäåëüíî óêàçàííûõ ñåêóíä, ìèíóò, ÷àñîâ, äíåé, ìåñÿöåâ è ò.ä. Çíà÷åíèÿ îòäåëüíûõ åäèíèö âðåìåíè ìîãóò óêàçûâàòüñÿ çà èõ îáû÷íîì äèàïàçîíîì, ÷òî ïîçâîëÿåò èñïîëüçîâàòü ýòó ôóíêöèþ ïðè ïåðåáîðå, â ïîñëåäñòâèè ÷åãî åäèíèöû âðåìåíè áóäóò îòêîððåêòèðîâàíû è âîçâðàùåíû â îáû÷íîì äèàïàçîíå. timegm ðàáîòàåò ñ âðåìåíåì â GMT(UTC).
- string {strftime|strftimegm}( int sec, string form = "%Y-%m-%d %H:%M:%S" ); — Ïðåîáðàçóåò àáñîëþòíîå âðåìÿ sec â ñòðîêó íóæíîãî ôîðìàòà form. Çàïèñü ôîðìàòà ñîîòâåòñòâóåò POSIX-ôóíêöèè strftime. strftimegm âîçâðàùàåò âðåìÿ â GMT(UTC).
- int {strptime|strptimegm}( string str, string form = "%Y-%m-%d %H:%M:%S" ); — Âîçâðàùàåò âðåìÿ â ñåêóíäàõ îò ýïîõè 1.1.1970, èñõîäÿ èç ñòðîêîâîé çàïèñè âðåìåíè str, â ñîîòâåòñòâèè ñ óêàçàííûì øàáëîíîì form. Íàïðèìåð, øàáëîíó "%Y-%m-%d %H:%M:%S" ñîîòâåòñòâóåò âðåìÿ "2006-08-08 11:21:55". Îïèñàíèå ôîðìàòà øàáëîíà ìîæíî ïîëó÷èòü èç äîêóìåíòàöèè íà POSIX-ôóíêöèþ "strptime". strptimegm ðàáîòàåò ñ âðåìåíåì â GMT(UTC).
- int cron( string cronreq, int base = 0 ); — Âîçâðàùàåò âðåìÿ, ñïëàíèðîâàííîå â ôîðìàòå ñòàíäàðòà Cron cronreq, íà÷èíàÿ îò áàçîâîãî âðåìåíè base èëè îò òåêóùåãî, åñëè áàçîâîå íå óêàçàíî.
- string strFromCharCode( int char1, int char2, int char3, ... ); — Ñîçäàíèå ñòðîêè èç êîäîâ ñèìâîëîâ char1, char2 ... charN.
- string strCodeConv( string src, string fromCP, string toCP ); — Êîäèðîâàíèå òåêñòà src èç êîäèðîâêè fromCP â toCP. Åñëè êîäèðîâêà îïóùåíà (ïóñòàÿ ñòðîêà), òî èñïîëüçóåòñÿ âíóòðåííÿÿ.
- string strEncode( string src, string tp = "Bin", string opt1 = "" ); — Êîäèðîâàíèå ñòðîêè src ïî ïðàâèëàì tp è îïöèåé opt1 (ñèìâîëû äëÿ "Custom"). Äîñòóïíûå ïðàâèëà:
"PathEl" — ñèìâîëû '/' è '%' â "%2f" è "%25", ñîîòâåòñòâåííî;
"HttpURL" — ñèìâîëû ' ', '\t', '%' è "> 0x80" â "%20", "%09", "%25" è ò.ä.;
"HTML" — ñèìâîëû HTML-ñóùíîñòåé '>', '<', '"', '&', '\'' â ">", "<", """ è ò.ä.;
"JavaScript" — ñèìâîë '\n' ýêðàíèðîâàíèåì "\\n";
"SQL" — ýêðàíèðîâàíèå ñèìâîëîâ '\'', '\"', '`', '\\' èëè äóáëèðîâàíèå ïåðå÷èñëåííûõ ñèìâîëîâ â opt1;
"Custom" — óêàçàííûõ ñèìâîëîâ â opt1 â "%NN";
"Base64" — áèíàðíîå êîäèðîâàíèå â Base 64, â opt1 óñòàíàâëèâàåòñÿ ñèìâîë(û) ïðåðûâàíèÿ ñòðîêè ïîñëå 57 ñèìâîëîâ;
"FormatPrint" — ñèìâîë '%' â "%%";
"OscdID" — ïî÷òè âñå ñèìâîëû âðîäå ' ', '/', '\\', '&', '(' â '_';
"Bin" — ñïèñîê ASCII áàéò ("XX XX XX XX ...") â áèíàðíîå ïðåäñòàâëåíèå;
"Reverse" — èíâåðñèÿ ïîñëåäîâàòåëüíîñòè;
"ShieldSimb" — çàùèù¸ííûå ñèìâîëû âèäà '\a', '\b', ..., '\0NNN', '\xNN' â áèíàðíîå ïðåäñòàâëåíèå.
- string strDecode( string src, string tp = "Bin", string opt1 = "" ); — Äåêîäèðîâàíèå ñòðîêè src ïî ïðàâèëàì tp è îïöèåé opt1 (ðàçäåëèòåëü äëÿ "Bin"). Äîñòóïíûå ïðàâèëà:
"PathEl", "HttpURL", "Custom" — äåêîäèðîâàíèå ñèìâîëîâ âèäà "%NN" â áèíàðíîå ïðåäñòàâëåíèå;
"Base64" — ñîîòâåòñòâåííî èç Base 64;
"Bin" — áèíàðíîé ñòðîêè â ASCII áàéòû ("XX XX XX XX ...").
5.3. Ëþáîé îáúåêò (TCntrNode) äåðåâà OpenSCADA (SYS.*)
Ôóíêöèè îáúåêòà:
- TArrayObj nodeList(string grp = "", string path = ""); — Ïîëó÷åíèå ñïèñêà èäåíòèôèêàòîðîâ äî÷åðíèõ óçëîâ äëÿ ãðóïïû grp è óçëà ïî ïóòè path. Åñëè grp ïóñòà òî âîçâðàùàþòñÿ óçëû âñåõ ãðóïï.
- TCntrNodeObj nodeAt(string path, string sep=""); — Ïîäêëþ÷åíèå ê óçëó path â äåðåâå îáúåêòîâ OpenSCADA. Åñëè óêàçûâàåòñÿ ðàçäåëèòåëü â sep òî ïóòü îáðàáàòûâàåòñÿ êàê ñòðîêà ñ ðàçäåëèòåëåì.
- TCntrNodeObj nodePrev(); — Ïîëó÷èòü ïðåäûäóùèé, ðîäèòåëüñêèé, óçåë.
- string nodePath(string sep = "", bool from_root = true); — Ïîëó÷åíèå ïóòè ê òåêóùåìó óçëó, â äåðåâå îáúåêòîâ OpenSCADA. Îäèí ñèìâîë ðàçäåëèòåëÿ óêàçûâàåòñÿ â sep äëÿ ïîëó÷åíèÿ ïóòè ÷åðåç ðàçäåëèòåëü, íàïðèìåð, "DAQ.ModBus.PLC1.P1.var", èíà÷å "/DAQ/ModBus/PLC1/P1/var". from_root óêàçûâàåò íà íåîáõîäèìîñòü ôîðìèðîâàòü ïóòü îò êîðíÿ è áåç óêàçàíèÿ èäåíòèôèêàòîðà ñòàíöèè.
5.4. Ïîäñèñòåìà "Áåçîïàñíîñòü" (SYS.Security)
Ôóíêöèè îáúåêòà ïîäñèñòåìû (SYS.Security):
Ôóíêöèè îáúåêòà ïîëüçîâàòåëÿ (SYS.Security["usr_User"]):
- ElTp cfg(string nm) — ïîëó÷åíèå çíà÷åíèÿ êîíôèãóðàöèîííîãî ïîëÿ nm îáúåêòà.
- bool cfgSet(string nm, ElTp val) — óñòàíîâêà êîíôèãóðàöèîííîãî ïîëÿ nm îáúåêòà â çíà÷åíèå val.
- Array groups( ) — ñïèñîê ãðóïï ïîëüçîâàòåëÿ.
Ôóíêöèè îáúåêòà ãðóïïû (SYS.Security["grp_Group"]):
- ElTp cfg(string nm) — ïîëó÷åíèå çíà÷åíèÿ êîíôèãóðàöèîííîãî ïîëÿ nm îáúåêòà.
- bool cfgSet(string nm, ElTp val) — óñòàíîâêà êîíôèãóðàöèîííîãî ïîëÿ nm îáúåêòà â çíà÷åíèå val.
- bool user( string nm ) — ïðîâåðêà íà ïðèñóòñòâèå ïîëüçîâàòåëÿ nm â äàííîé ãðóïïå.
5.5. Ïîäñèñòåìà "ÁÄ" (SYS.BD)
Ôóíêöèè îáúåêòà ÁÄ (SYS.BD["TypeDB"]["DB"]):
- ElTp cfg(string nm) — ïîëó÷åíèå çíà÷åíèÿ êîíôèãóðàöèîííîãî ïîëÿ nm îáúåêòà.
- bool cfgSet(string nm, ElTp val) — óñòàíîâêà êîíôèãóðàöèîííîãî ïîëÿ nm îáúåêòà â çíà÷åíèå val.
- Array SQLReq( string req, bool tr = EVAL_BOOL ); — Ôîðìèðîâàíèå SQL-çàïðîñà ê ÁÄ, âíóòðè (tr=true), âíå (tr=false) èëè áåçðàçëè÷íî (tr=EVAL_BOOL) ê òðàíçàêöèè.  ñëó÷àå îøèáêè å¸ çíà÷åíèå ïîìåùàåòñÿ â ñâîéñòâî "err" ðåçóëüòàòà.
Ôóíêöèè îáúåêòà Òàáëèöû (SYS.BD["TypeDB"]["DB"]["Table"]):
- XMLNodeObj fieldStruct(); — Ïîëó÷åíèå ñòðóêòóðû òàáëèöû â âèäå XML óçëà "field" ñ äî÷åðíèìè óçëàìè-êîëîíêàìè <RowId type="real" len="10.2" key="1" def="Default value">{Value}</RowId>, ãäå:
- {RowId} — èäåíòèôèêàòîð êîëîíêè;
- {Value} — çíà÷åíèå êîëîíêè;
- type — òèï çíà÷åíèÿ êîëîíêè: str — ñòðîêà, int — öåëîå, real — âåùåñòâåííîå è bool — ëîãè÷åñêîå;
- len — ðàçìåð çíà÷åíèÿ êîëîíêè, â çíàêàõ;
- key — ïðèçíàê òîãî, ÷òî êîëîíêà ÿâëÿåòñÿ êëþ÷îì, è ïîèñê îñóùåñòâëÿåòñÿ ïî åãî çíà÷åíèþ;
- def — çíà÷åíèå êîëîíêè ïî óìîë÷àíèþ.
- string fieldSeek(int row, XMLNodeObj fld); — Çàïðîñ ïîëÿ row òàáëèöû. Åñëè ïîëå ïîëó÷åíî òî âîçâðàùàåòñÿ "1" èíà÷å "0".  ñëó÷àå îøèáêè âîçâðàùàåòñÿ "0:Error".
- string fieldGet(XMLNodeObj fld); — Çàïðîñ çíà÷åíèé ïîëÿ.  ñëó÷àå îøèáêè âîçâðàùàåòñÿ "0:Error".
- string fieldSet(XMLNodeObj fld); — Óñòàíîâêà ïîëÿ.  ñëó÷àå îøèáêè âîçâðàùàåòñÿ "0:Error".
- string fieldDel(XMLNodeObj fld); — Óäàëåíèå ïîëÿ.  ñëó÷àå îøèáêè âîçâðàùàåòñÿ "0:Error".
5.6. Ïîäñèñòåìà "Ñáîð äàííûõ" (SYS.DAQ)
Ôóíêöèè îáúåêòà ïîäñèñòåìû (SYS.DAQ):
- bool funcCall(string progLang, TVarObj args, string prog, string fixId = ""); — âûçîâ òåêñòà ôóíêöèè prog ñ àðãóìåíòàìè â îáúåêòå args äëÿ ÿçûêà ïðîãðàììèðîâàíèÿ progLang è ñ èäåíòèôèêàòîðîì ôèêñàöèè fixId (àâòîìàòè÷åñêè åñëè ïóñòîé). Âîçâðàùàåò "true" ïðè êîððåêòíîì âûçîâå. Ôèêñèðîâàííàÿ ôóíêöèÿ îòëè÷àåòñÿ îò àâòîìàòè÷åñêîé òåì, ÷òî îíà íå óäàëÿåòñÿ ïîñëå èñïîëíåíèÿ, à èñïîëüçóåòñÿ ïîâòîðíî ïî àäðåñó â fixId, çàìåíÿþùèé îðèãèíàëüíûé èäåíòèôèêàòîð ïðè ïåðâîì âûçîâå. Äëÿ ïåðåôîðìèðîâàíèÿ ôóíêöèè íóæíî èçìåíèòü ïðîãðàììó èëè î÷èñòèòü fixId â å¸ îðèãèíàëüíûé èäåíòèôèêàòîð.
Ôóíêöèè îáúåêòà êîíòðîëëåðà (SYS.DAQ["Modul"]["Controller"]):
- ElTp cfg(string nm) — ïîëó÷åíèå çíà÷åíèÿ êîíôèãóðàöèîííîãî ïîëÿ nm îáúåêòà.
- bool cfgSet(string nm, ElTp val) — óñòàíîâêà êîíôèãóðàöèîííîãî ïîëÿ nm îáúåêòà â çíà÷åíèå val.
- string name() — èìÿ êîíòðîëëåðà.
- string descr() — îïèñàíèå êîíòðîëëåðà.
- string status() — ñòàòóñ êîíòðîëëåðà.
- bool alarmSet(string mess, int lev = -5, string prm = "") — óñòàíîâêà/ñíÿòèå íàðóøåíèÿ mess ñ óðîâíåì lev (îòðèöàòåëüíûé äëÿ óñòàíîâêè èíà÷å ñíÿòèå), äëÿ ïàðàìåòðà prm. Ôóíêöèÿ ôîðìèðóåò íàðóøåíèå ñ êàòåãîðèåé: al{ModId}:{CntrId}[.{PrmId}], ãäå:
- ModId — èäåíòèôèêàòîð ìîäóëÿ;
- CntrId — èäåíòèôèêàòîð êîíòðîëëåðà;
- PrmId — èäåíòèôèêàòîð ïàðàìåòðà, èç àðãóìåíòà prm.
- bool enable(bool newSt = EVAL) — ïîëó÷åíèå ñîñòîÿíèÿ "Âêëþ÷åí" èëè èçìåíåíèå åãî íàçíà÷åíèåì àòðèáóòà newSt.
- bool start(bool newSt = EVAL) — ïîëó÷åíèå ñîñòîÿíèÿ "Çàïóùåí" èëè èçìåíåíèå åãî íàçíà÷åíèåì àòðèáóòà newSt.
Ôóíêöèè îáúåêòà ïàðàìåòðà êîíòðîëëåðà (SYS.DAQ["Modul"]["Controller"]["Parameter"]):
- ElTp cfg(string nm) — ïîëó÷åíèå çíà÷åíèÿ êîíôèãóðàöèîííîãî ïîëÿ nm îáúåêòà.
- bool cfgSet(string nm, ElTp val) — óñòàíîâêà êîíôèãóðàöèîííîãî ïîëÿ nm îáúåêòà â çíà÷åíèå val.
- TCntrNodeObj cntr() — âîçâðàùàåò îáúåêò êîíòðîëëåðà ýòîãî ïàðàìåòðà, íåçàâèñèìî îò âëîæåííîñòè.
Ôóíêöèè îáúåêòà àòðèáóòà ïàðàìåòðà êîíòðîëëåðà (SYS.DAQ["Modul"]["Controller"]["Parameter"]["Attribute"]):
- ElTp get( int tm = 0, int utm = 0, bool sys = false ) — çàïðîñ çíà÷åíèÿ àòðèáóòà íà âðåìÿ tm.utm è ïðèçíàêîì ñèñòåìíîãî äîñòóïà sys.
- bool set( ElTp val, int tm = 0, int utm = 0, bool sys = false ) — çàïèñü çíà÷åíèÿ val â àòðèáóò ñ ìåòêîé âðåìåíè tm:utm è ïðèçíàêîì ñèñòåìíîãî äîñòóïà sys.
- TCntrNodeObj arch() — ïîëó÷åíèå îáúåêòà àðõèâà, ñâÿçàííîãî ñ ýòèì àòðèáóòîì.  ñëó÷àå îòñóòñòâèÿ ñâÿçàííîãî àðõèâà âîçâðàùàåòñÿ "false".
- string descr() — îïèñàíèå àòðèáóòà.
- int time(int utm) — âðåìÿ ïîñëåäíåãî çíà÷åíèÿ â ñåêóíäàõ è ìèêðîñåêóíäàõ â utm.
- int len() — äëèíà ïîëÿ.
- int dec() — ðàçðåøåíèå äëÿ âåùåñòâåííîãî.
- int flg() — ôëàãè ïîëÿ.
- string def() — çíà÷åíèå ïî óìîë÷àíèþ.
- string values() — ñïèñîê äîïóñòèìûõ çíà÷åíèé èëè äèàïàçîí.
- string selNames() — ñïèñîê èì¸í äîïóñòèìûõ çíà÷åíèé.
- string reserve() — ðåçåðâíîå ñâîéñòâî çíà÷åíèÿ.
Ôóíêöèè îáúåêòà áèáëèîòåêè øàáëîíà (SYS.DAQ[tmplb_Lib"]) è øàáëîíà (SYS.DAQ[tmplb_Lib"]["Tmpl"]) ïàðàìåòðà êîíòðîëëåðà:
- ElTp cfg(string nm) — ïîëó÷åíèå çíà÷åíèÿ êîíôèãóðàöèîííîãî ïîëÿ nm îáúåêòà.
- bool cfgSet(string nm, ElTp val) — óñòàíîâêà êîíôèãóðàöèîííîãî ïîëÿ nm îáúåêòà â çíà÷åíèå val.
Action source page doesn't exist yet(/Doc / Java Like Calc?)
Action source page doesn't exist yet(/Doc / Logic Lev?)
Action source page doesn't exist yet(/Doc / Block Calc?)
Action source page doesn't exist yet(/Doc / Mod Bus?)
5.7. Ïîäñèñòåìà "Àðõèâû" (SYS.Archive)
Ôóíêöèè îáúåêòà ïîäñèñòåìû:
- Array messGet( int btm, int etm, string cat = "", int lev = 0, string arch = "", int upTm = 0 ); — çàïðîñ ñèñòåìíûõ ñîîáùåíèé èëè íàðóøåíèé (lev < 0) çà âðåìÿ îò btm äî etm äëÿ êàòåãîðèè cat, óðîâíÿ lev (-7...7) è àðõèâàòîðû arch (ðàçäåëåíû ñèìâîëîì ';'; "" — áóôåð è àðõèâàòîðû; "<buffer>" — áóôåð; "{ArhMod}.{Arh}" — êîíêðåòíûé àðõèâàòîð ìîäóëÿ). upTm óñòàíàâëèâàåò îãðàíè÷åíèå ïðîäîëæèòåëüíîñòè îïåðàöèè â óêàçàííîå âðåìÿ; îòðèöàòåëüíîå çíà÷åíèå èñïîëüçóåòñÿ êàê îòíîñèòåëüíîå âðåìÿ; ìåíåå ÷åì STD_INTERF_TM (5). Âîçâðàùàåòñÿ âðåìÿ îñòàíîâà ÷òåíèÿ (àòðèáóò "tm" ìàññèâà) è ìàññèâ îáúåêòîâ ñîîáùåíèé/íàðóøåíèé ñî ñâîéñòâàìè:
- tm — âðåìÿ ñîîáùåíèÿ, ñåêóíäû;
- utm — âðåìÿ ñîîáùåíèÿ, ìèêðîñåêóíäû;
- categ — êàòåãîðèÿ ñîîáùåíèÿ;
- level — óðîâåíü ñîîáùåíèÿ;
- mess — òåêñò ñîîáùåíèÿ.
- bool messPut(int tm, int utm, string cat, int lev, string mess, string arch = ""); — çàïèñü ñîîáùåíèÿ mess ñ êàòåãîðèåé cat, óðîâíåì lev (-7...7) è âðåìåíåì tm.utm â àðõèâàòîðû arch (ðàçäåëåíû ñèìâîëîì ';') è/èëè ñïèñîê íàðóøåíèé.
Ôóíêöèè îáúåêòà àðõèâàòîðà ñîîáùåíèé (SYS.Archive["mod_Modul"]["mess_Archivator"]):
- ElTp cfg(string nm) — ïîëó÷åíèå çíà÷åíèÿ êîíôèãóðàöèîííîãî ïîëÿ nm îáúåêòà.
- bool cfgSet(string nm, ElTp val) — óñòàíîâêà êîíôèãóðàöèîííîãî ïîëÿ nm îáúåêòà â çíà÷åíèå val.
- bool status() — ïîëó÷åíèå ñòàòóñà èñïîëíåíèÿ àðõèâàòîðà.
- int end() — ïîó÷åíèå âðåìåíè îêîí÷àíèÿ äàííûõ àðõèâàòîðà.
- int begin() — ïîó÷åíèå âðåìåíè íà÷àëà äàííûõ àðõèâàòîðà.
Ôóíêöèè îáúåêòà àðõèâàòîðà çíà÷åíèé (SYS.Archive["val_Modul"]["val_Archivator"]):
- ElTp cfg(string nm) — ïîëó÷åíèå çíà÷åíèÿ êîíôèãóðàöèîííîãî ïîëÿ nm îáúåêòà.
- bool cfgSet(string nm, ElTp val) — óñòàíîâêà êîíôèãóðàöèîííîãî ïîëÿ nm îáúåêòà â çíà÷åíèå val.
- bool status() — ïîëó÷åíèå ñòàòóñà èñïîëíåíèÿ àðõèâàòîðà.
Ôóíêöèè îáúåêòà àðõèâà (SYS.Archive["va_Archive"]):
- ElTp cfg(string nm) — ïîëó÷åíèå çíà÷åíèÿ êîíôèãóðàöèîííîãî ïîëÿ nm îáúåêòà.
- bool cfgSet(string nm, ElTp val) — óñòàíîâêà êîíôèãóðàöèîííîãî ïîëÿ nm îáúåêòà â çíà÷åíèå val.
- bool status() — ïîëó÷åíèå ñòàòóñà èñïîëíåíèÿ àðõèâà.
- int end(string arch = "") — ïîëó÷åíèå âðåìåíè êîíöà äàííûõ àðõèâà äëÿ àðõèâàòîðà arch, â ìèêðîñåêóíäàõ.
- int begin(string arch = "") — ïîëó÷åíèå âðåìåíè íà÷àëà äàííûõ àðõèâà äëÿ àðõèâàòîðà arch, â ìèêðîñåêóíäàõ.
- int period(string arch = "") — ïîëó÷åíèå ïåðèîäè÷íîñòè äàííûõ àðõèâà äëÿ àðõèâàòîðà arch, â ìèêðîñåêóíäàõ.
- TArrayObj archivatorList() — ïîëó÷åíèå ñïèñêà àðõèâàòîðîâ èñïîëüçóþùèõ äàííûé àðõèâ êàê èñòî÷íèê.
- VarType getVal(int tm, bool up_ord = false, string arch = "") — ïîëó÷åíèå çíà÷åíèÿ èç àðõèâà íà âðåìÿ tm, ïîäòÿæêîé ê âåðõó up_ord è àðõèâàòîðà arch:
- tm — âðåìÿ çàïðàøèâàåìîãî çíà÷åíèÿ, â ìèêðîñåêóíäàõ. Óñòàíîâèòü â 0 äëÿ "end()".
- up_ord — ïîäòÿãèâàòü âðåìÿ çàïðàøèâàåìîãî çíà÷åíèÿ ê âåðõó ñåòêè.
- arch — àðõèâàòîð çàïðîñà. Óñòàíîâèòü â ïóñòóþ ñòðîêó äëÿ ïðîâåðêè âñåõ àðõèâàòîðîâ. Óñòàíîâèòü â "<buffer>" äëÿ îáðàáîòêè òîëüêî áóôåðà.
- bool setVal(int tm, VarType vl, string arch = "") — óñòàíîâèòü îäíî çíà÷åíèå vl â àðõèâ íà âðåìÿ tm è àðõèâàòîð arch:
- tm — âðåìÿ óñòàíàâëèâàåìîãî çíà÷åíèÿ, â ìèêðîñåêóíäàõ.
- vl — çíà÷åíèå.
- arch — àðõèâàòîð óñòàíîâêè. Óñòàíîâèòü â ïóñòóþ ñòðîêó äëÿ âñåõ àðõèâàòîðîâ. Óñòàíîâèòü â "<buffer>" äëÿ îáðàáîòêè òîëüêî áóôåðà.
5.8. Ïîäñèñòåìà "Òðàíñïîðòû" (SYS.Transport)
Ôóíêöèè îáúåêòà âõîäÿùåãî òðàíñïîðòà (SYS.Transport["Modul"]["in_Transp"]):
- ElTp cfg(string nm) — ïîëó÷åíèå çíà÷åíèÿ êîíôèãóðàöèîííîãî ïîëÿ nm îáúåêòà.
- bool cfgSet(string nm, ElTp val) — óñòàíîâêà êîíôèãóðàöèîííîãî ïîëÿ nm îáúåêòà â çíà÷åíèå val.
- string status() — ñòàòóñ òðàíñïîðòà.
- string addr( string vl = "" ) — âîçâðàùàåò àäðåñ òðàíñïîðòà, óñòàíàâëèâàåò â íåïóñòîå çíà÷åíèå vl.
- string writeTo(string sender, string mess) — Îòïðàâêà ñîîáùåíèÿ mess îòïðàâèòåëþ sender.
- TArrayObj assTrsList() — ñïèñîê ñâÿçàííûõ âûõîäíûõ òðàíñïîðòîâ ñ äàííûì âõîäÿùèì.
Ôóíêöèè îáúåêòà èñõîäÿùåãî òðàíñïîðòà (SYS.Transport["Modul"]["out_Transp"]):
- ElTp cfg(string nm) — ïîëó÷åíèå çíà÷åíèÿ êîíôèãóðàöèîííîãî ïîëÿ nm îáúåêòà.
- bool cfgSet(string nm, ElTp val) — óñòàíîâêà êîíôèãóðàöèîííîãî ïîëÿ nm îáúåêòà â çíà÷åíèå val.
- string status() — ñòàòóñ òðàíñïîðòà.
- bool start( bool vl = <EVAL>, int tm = 0 ) — âîçâðàùàåò ñòàòóñ èñïîëíåíèÿ, çàïóñêàåò/îñòàíàâëèâàåò ïî vl (åñëè íå <EVAL>). Äëÿ çàïóñêà ìîæíî óêàçûâàòü îñîáûé òàéìàóò tm.
- string addr( string vl = "" ) — âîçâðàùàåò àäðåñ òðàíñïîðòà, óñòàíàâëèâàåò â íåïóñòîå çíà÷åíèå vl.
- string timings( string vl = "" ) — âîçâðàùàåò òàéìèíãè òðàíñïîðòà, óñòàíàâëèâàåò â íåïóñòîå çíà÷åíèå vl.
- string messIO( string mess, real timeOut = 0, int inBufLen = -1 ); — îòïðàâêà ñîîáùåíèÿ mess ÷åðåç òðàíñïîðò ñ òàéìàóòîì îæèäàíèÿ îòâåòà timeOut (â ñåêóíäàõ) è ÷òåíèå îòâåòà (áóôåðà) ðàçìåðîì inBufLen áàéò.  ñëó÷àå íóëåâîãî òàéìàóòà ýòî âðåìÿ áåð¸òñÿ èç íàñòðîåê èñõîäÿùåãî òðàíñïîðòà. Îòðèöàòåëüíîå âðåìÿ timeOut (< -1e-3) îòêëþ÷àåò ðàáîòó òðàíñïîðòà â ðåæèìå çàïðîñ/îòâåò è ïîçâîëÿåò íåçàâèñèìî ÷èòàòü/ïèñàòü â áóôåð ÂÂ, ñ òàéìàóòîì ÷òåíèÿ timeOut, â àáñîëþòíîì çíà÷åíèè. Äëÿ îòðèöàòåëüíîãî inBufLen ðàçìåð áóôåðà óñòàíàâëèâàåòñÿ â STR_BUF_LEN(10000), à "0" âûêëþ÷àåò ÷òåíèå âîîáùå.
- int messIO( XMLNodeObj req, string prt ); — îòïðàâêà çàïðîñà req ê ïðîòîêîëó prt äëÿ îñóùåñòâëåíèÿ ñåàíñà ñâÿçè ÷åðåç òðàíñïîðò ïîñðåäñòâîì ïðîòîêîëà.
5.9. Ïîäñèñòåìà "Ïîëüçîâàòåëüñêèå èíòåðôåéñû" (SYS.UI)
Action source page doesn't exist yet(/Doc / Koncepcija Sredy Vizualizacii / part 4 / part 14?)
5.10. Ïîäñèñòåìà "Ñïåöèàëüíûå" (SYS.Special)
Action source page doesn't exist yet(/Doc / F Lib SYS?)
Action source page doesn't exist yet(/Doc / F Lib Math?)
Action source page doesn't exist yet(/Doc / F Lib Complex 1?)