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( bool full = false ) — Текст узла, содержимое XML-тега. Установить full для получения комбинированного текста со всех включенных узлов.
- 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 указывает на необходимость формировать путь от корня и без указания идентификатора станции.
- int messSys( int level, string mess ) — Формирование системного сообщения mess с уровнем level, с путём узла в качестве категории и с читабельным путём перед сообщением.
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 ); — Формирование SQL-запроса к БД, внутри (tr=true), вне (tr=false) или безразлично (tr=EVAL) к транзакции. В случае ошибки её значение помещается в свойство "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.
Объект "Библиотека функций" (SYS.DAQ.JavaLikeCalc["lib_Lfunc"])
- ElTp {funcID}(ElTp prm1, ...) — вызов функции "funcID" библиотеки "Lfunc". Возвращает результат вызываемой функции. Префикс "lib_" перед идентификатором библиотеки обязателен!
Объект "Пользовательская функция" (SYS.DAQ.JavaLikeCalc["lib_Lfunc"]["func"])
- ElTp call(ElTp prm1, ...) — вызов функции "func" библиотеки "Lfunc" с параметрами "prm{N}". Возвращает результат вызываемой функции. Префикс "lib_" перед идентификатором библиотеки обязателен!
Объект "Параметр" [this]- bool attrAdd( string id, string name, string tp = "real", string selValsNms = "" ) [для включенного параметра стандартного типа] — добавить атрибут id с именем name и для типа tp. Если атрибут уже присутствует, то будут применены свойства, которые возможно изменить "на ходу": имя, режим выбора и параметры выбора.
- id, name — идентификатор и имя нового атрибута;
- tp — тип атрибута [boolean | integer | real | string | text | object] + режим выбора [sel | seled] + только для чтения [ro];
- selValsNms — две строки со значениями в первой и их именами во второй (разделённые ";").
- bool attrDel( string id ) [для включенного параметра стандартного типа] — удалить атрибут id.
Объект "Блок" (SYS.DAQ.BlockCalc["cntr"]["blk_block"])
- ElTp cfg(string nm) — получение значения конфигурационного поля nm объекта.
- bool cfgSet(string nm, ElTp val) — установка конфигурационного поля nm объекта в значение val.
- TCntrNodeObj cntr() — возвращает объект контроллера этого параметра, независимо от вложенности.
Объект "Контроллер" [this.cntr()]- string messIO(string pdu) — отправка PDU pdu через транспорт объекта контроллера посредством ModBus протокола. PDU результата запроса помещается вместо запроса в pdu, а ошибка возвращается в результате функции.
Объект "Параметр" [this]
- bool attrAdd( string id, string name, string tp = "real", string selValsNms = "" ) [для включенного параметра логического типа] — добавить атрибут id с именем name и для типа tp. Если атрибут уже присутствует, то будут применены свойства, которые возможно изменить "на ходу": имя, режим выбора и параметры выбора.
- id, name — идентификатор и имя нового атрибута;
- tp — тип атрибута [boolean | integer | real | string | text | object] + режим выбора [sel | seled] + только для чтения [ro];
- selValsNms — две строки со значениями в первой и их именами во второй (разделённые ";").
- bool attrDel( string id ) [для включенного параметра логического типа] — удалить атрибут id.
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" выключает чтение вообще.
- string 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)
Объект "Библиотека функций" (SYS.Special.FLibSYS)
- ElTp {funcID}(ElTp prm1, ...) — вызов функции библиотеки {funcID}. Возвращает результат вызываемой функции.
Объект "Пользовательская функция" (SYS.Special.FLibSYS["funcID"])
- ElTp call(ElTp prm1, ...) — вызов данной функции с параметрами <prm{N}>. Возвращает результат вызываемой функции.
Объект "Библиотека функций" (SYS.Special.FLibMath)
- ElTp {funcID}(ElTp prm1, ...) — вызов функции библиотеки {funcID}. Возвращает результат вызываемой функции.
Объект "Пользовательская функция" (SYS.Special.FLibMath["funcID"])
- ElTp call(ElTp prm1, ...) — вызов данной функции с параметрами <prm{N}>. Возвращает результат вызываемой функции.
Объект "Библиотека функций" (SYS.Special.FLibComplex1)
- ElTp {funcID}(ElTp prm1, ...) — вызов функции библиотеки {funcID}. Возвращает результат вызываемой функции.
Объект "Пользовательская функция" (SYS.Special.FLibComplex1["funcID"])
- ElTp call(ElTp prm1, ...) — вызов данной функции с параметрами <prm{N}>. Возвращает результат вызываемой функции.