<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://docs.kb-agava.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Administrator</id>
	<title>docs.kb-agava.ru - Вклад участника [ru]</title>
	<link rel="self" type="application/atom+xml" href="https://docs.kb-agava.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Administrator"/>
	<link rel="alternate" type="text/html" href="https://docs.kb-agava.ru/view/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/Administrator"/>
	<updated>2026-10-16T03:05:56Z</updated>
	<subtitle>Вклад участника</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>https://docs.kb-agava.ru/index.php?title=%D0%91%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B0_Standard_AgavaSCADA/AgavaPLC_1.2...1.6&amp;diff=3744</id>
		<title>Библиотека Standard AgavaSCADA/AgavaPLC 1.2...1.6</title>
		<link rel="alternate" type="text/html" href="https://docs.kb-agava.ru/index.php?title=%D0%91%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B0_Standard_AgavaSCADA/AgavaPLC_1.2...1.6&amp;diff=3744"/>
		<updated>2026-10-15T04:46:46Z</updated>

		<summary type="html">&lt;p&gt;Administrator: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Общие положения ==&lt;br /&gt;
Данное описание предназначено для версий &amp;lt;code&amp;gt;AgavaSCADA/AgavaPLC 1.2&amp;lt;/code&amp;gt;... &amp;lt;code&amp;gt;AgavaSCADA/AgavaPLC 1.6&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Standard - стандартная библиотека==&lt;br /&gt;
===Математические и тригонометрические функции===&lt;br /&gt;
====Преобразование IEEE битов====&lt;br /&gt;
 '''&amp;lt;big&amp;gt;float fpFromIEEE(uint bits)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Преобразует 32-битное IEEE-754 представление в число float&lt;br /&gt;
*'''Возвращаемое значение''': число float&lt;br /&gt;
*'''Аргументы''': uint bits - битовое представление&lt;br /&gt;
 '''&amp;lt;big&amp;gt;uint fpToIEEE(float value)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Преобразует число float в 32-битное IEEE-754 представление&lt;br /&gt;
*'''Возвращаемое значение''': битовое представление (uint)&lt;br /&gt;
*'''Аргументы''': float value - исходное число&lt;br /&gt;
 '''&amp;lt;big&amp;gt;double fpFromIEEE(uint64 bits)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Преобразует 64-битное IEEE-754 представление в число double&lt;br /&gt;
*'''Возвращаемое значение''': число double&lt;br /&gt;
*'''Аргументы''': uint64 bits - битовое представление&lt;br /&gt;
 '''&amp;lt;big&amp;gt;uint64 fpToIEEE(double value)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Преобразует число double в 64-битное IEEE-754 представление&lt;br /&gt;
*'''Возвращаемое значение''': битовое представление (uint64)&lt;br /&gt;
*'''Аргументы''': double value - исходное число&lt;br /&gt;
====Сравнение с допуском====&lt;br /&gt;
 '''&amp;lt;big&amp;gt;bool closeTo(float a, float b, float epsilon = 0.00001f)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Сравнивает два числа float с заданной погрешностью&lt;br /&gt;
*'''Возвращаемое значение''': true, если числа близки в пределах погрешности; иначе false&lt;br /&gt;
*'''Аргументы''':&lt;br /&gt;
**float a - первое число;&lt;br /&gt;
**float b - второе число;&lt;br /&gt;
**float epsilon (опционально) - погрешность (по умолчанию 0.00001)&lt;br /&gt;
 '''&amp;lt;big&amp;gt;bool closeTo(double a, double b, double epsilon = 0.0000000001)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Сравнивает два числа double с заданной погрешностью&lt;br /&gt;
*'''Возвращаемое значение''': true, если числа близки в пределах погрешности; иначе false&lt;br /&gt;
*'''Аргументы''':&lt;br /&gt;
**double a - первое число;&lt;br /&gt;
**double b - второе число;&lt;br /&gt;
**double epsilon (опционально) - погрешность (по умолчанию 1e-10)&lt;br /&gt;
====Тригонометрические функции====&lt;br /&gt;
 '''&amp;lt;big&amp;gt;float cos(float angle)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Вычисляет косинус угла&lt;br /&gt;
*'''Возвращаемое значение''': косинус угла&lt;br /&gt;
*'''Аргументы''': float angle - угол в радианах&lt;br /&gt;
 '''&amp;lt;big&amp;gt;float sin(float angle)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Вычисляет синус угла&lt;br /&gt;
*'''Возвращаемое значение''': синус угла&lt;br /&gt;
*'''Аргументы''': float angle - угол в радианах&lt;br /&gt;
 '''&amp;lt;big&amp;gt;float tan(float angle)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Вычисляет тангенс угла&lt;br /&gt;
*'''Возвращаемое значение''': тангенс угла&lt;br /&gt;
*'''Аргументы''': float angle - угол в радианах&lt;br /&gt;
 '''&amp;lt;big&amp;gt;float acos(float value)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Вычисляет арккосинус (обратный косинус)&lt;br /&gt;
*'''Возвращаемое значение''': угол в радианах&lt;br /&gt;
*'''Аргументы''': float value - значение в диапазоне [-1, 1]&lt;br /&gt;
 '''&amp;lt;big&amp;gt;float asin(float value)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Вычисляет арксинус (обратный синус)&lt;br /&gt;
*'''Возвращаемое значение''': угол в радианах&lt;br /&gt;
*'''Аргументы''': float value - значение в диапазоне [-1, 1]&lt;br /&gt;
 '''&amp;lt;big&amp;gt;float atan(float value)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Вычисляет арктангенс (обратный тангенс)&lt;br /&gt;
*'''Возвращаемое значение''': угол в радианах&lt;br /&gt;
*'''Аргументы''': float value - значение&lt;br /&gt;
 '''&amp;lt;big&amp;gt;float atan2(float y, float x)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Вычисляет арктангенс двух переменных&lt;br /&gt;
*'''Возвращаемое значение''': угол в радианах&lt;br /&gt;
*'''Аргументы''':&lt;br /&gt;
**float y - координата Y;&lt;br /&gt;
**float x - координата X&lt;br /&gt;
====Гиперболические функции====&lt;br /&gt;
 '''&amp;lt;big&amp;gt;float cosh(float x)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Вычисляет гиперболический косинус&lt;br /&gt;
*'''Возвращаемое значение''': гиперболический косинус&lt;br /&gt;
*'''Аргументы''': float x - значение&lt;br /&gt;
 '''&amp;lt;big&amp;gt;float sinh(float x)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Вычисляет гиперболический синус&lt;br /&gt;
*'''Возвращаемое значение''': гиперболический синус&lt;br /&gt;
*'''Аргументы''': float x - значение&lt;br /&gt;
 '''&amp;lt;big&amp;gt;float tanh(float x)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Вычисляет гиперболический тангенс&lt;br /&gt;
*'''Возвращаемое значение''': гиперболический тангенс&lt;br /&gt;
*'''Аргументы''': float x - значение&lt;br /&gt;
====Экспоненциальные и логарифмические функции====&lt;br /&gt;
 '''&amp;lt;big&amp;gt;float log(float x)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Вычисляет натуральный логарифм (по основанию e)&lt;br /&gt;
*'''Возвращаемое значение''': натуральный логарифм&lt;br /&gt;
*'''Аргументы''': float x - значение &amp;gt; 0&lt;br /&gt;
 '''&amp;lt;big&amp;gt;float log10(float x)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Вычисляет десятичный логарифм (по основанию 10)&lt;br /&gt;
*'''Возвращаемое значение''': десятичный логарифм&lt;br /&gt;
*'''Аргументы''': float x - значение &amp;gt; 0&lt;br /&gt;
====Степенные функции====&lt;br /&gt;
 '''&amp;lt;big&amp;gt;float pow(float base, float exponent)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Возводит число в степень&lt;br /&gt;
*'''Возвращаемое значение''': результат возведения в степень&lt;br /&gt;
*'''Аргументы''':&lt;br /&gt;
**float base - основание;&lt;br /&gt;
**float exponent - показатель степени&lt;br /&gt;
 '''&amp;lt;big&amp;gt;float sqrt(float x)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Вычисляет квадратный корень&lt;br /&gt;
*'''Возвращаемое значение''': квадратный корень&lt;br /&gt;
*'''Аргументы''': float x - неотрицательное значение&lt;br /&gt;
====Функции округления и остатка====&lt;br /&gt;
 '''&amp;lt;big&amp;gt;float ceil(float x)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Округляет вверх до ближайшего целого&lt;br /&gt;
*'''Возвращаемое значение''': округлённое вверх значение&lt;br /&gt;
*'''Аргументы''': float x - значение&lt;br /&gt;
 '''&amp;lt;big&amp;gt;float abs(float x)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Вычисляет абсолютное значение (модуль)&lt;br /&gt;
*'''Возвращаемое значение''': абсолютное значение&lt;br /&gt;
*'''Аргументы''': float x - значение&lt;br /&gt;
 '''&amp;lt;big&amp;gt;float floor(float x)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Округляет вниз до ближайшего целого&lt;br /&gt;
*'''Возвращаемое значение''': округлённое вниз значение&lt;br /&gt;
*'''Аргументы''': float x - значение&lt;br /&gt;
 '''&amp;lt;big&amp;gt;float fraction(float x)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Выделяет дробную часть числа&lt;br /&gt;
*'''Возвращаемое значение''': дробная часть числа&lt;br /&gt;
*'''Аргументы''': float x - значение&lt;br /&gt;
===Специализированные функции===&lt;br /&gt;
Специализированные функции среды разработки, доступные для использования в скриптах, приведены ниже.&lt;br /&gt;
====Функции для работы с узлами====&lt;br /&gt;
 '''&amp;lt;big&amp;gt;float GetNodeValueAsFloat(string strNodePath)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Получить значение узла в виде float по заданному пути&lt;br /&gt;
*'''Возвращаемое значение''': значение узла (float)&lt;br /&gt;
*'''Аргументы''': string strNodePath - путь к узлу&lt;br /&gt;
 '''&amp;lt;big&amp;gt;void SetNodeValueAsFloat(string strNodePath, float fValue)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Установить значение узла в float по заданному пути&lt;br /&gt;
*'''Возвращаемое значение''': нет&lt;br /&gt;
*'''Аргументы''':&lt;br /&gt;
**string strNodePath - путь к узлу;&lt;br /&gt;
**float fValue - устанавливаемое значение&lt;br /&gt;
 '''&amp;lt;big&amp;gt;int GetNodeValueAsInt(string strNodePath)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Получить значение узла в виде int по заданному пути&lt;br /&gt;
*'''Возвращаемое значение''': значение узла (int)&lt;br /&gt;
*'''Аргументы''': string strNodePath - путь к узлу&lt;br /&gt;
 '''&amp;lt;big&amp;gt;void SetNodeValueAsInt(string strNodePath, int iValue)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Установить значение узла в int по заданному пути&lt;br /&gt;
*'''Возвращаемое значение''': нет&lt;br /&gt;
*'''Аргументы''':&lt;br /&gt;
**string strNodePath - путь к узлу;&lt;br /&gt;
**int iValue - устанавливаемое значение&lt;br /&gt;
 '''&amp;lt;big&amp;gt;string GetNodeValueAsString(string strNodePath)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Получить значение узла в виде string по заданному пути&lt;br /&gt;
*'''Возвращаемое значение''': значение узла (string)&lt;br /&gt;
*'''Аргументы''': string strNodePath - путь к узлу&lt;br /&gt;
 '''&amp;lt;big&amp;gt;void SetNodeValueAsString(string strNodePath, string strValue)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Установить значение узла в виде string по заданному пути&lt;br /&gt;
*'''Возвращаемое значение''': нет&lt;br /&gt;
*'''Аргументы''':&lt;br /&gt;
**string strNodePath - путь к узлу;&lt;br /&gt;
**string strValue - устанавливаемое значение&lt;br /&gt;
 '''&amp;lt;big&amp;gt;bool GetNodeValueAsBool(string strNodePath)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Получить значение узла в виде bool по заданному пути&lt;br /&gt;
*'''Возвращаемое значение''': значение узла (bool)&lt;br /&gt;
*'''Аргументы''': string strNodePath - путь к узлу&lt;br /&gt;
 '''&amp;lt;big&amp;gt;void SetNodeValueAsBool(string strNodePath, bool bValue)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Установить значение узла в виде bool по заданному пути&lt;br /&gt;
*'''Возвращаемое значение''': нет&lt;br /&gt;
*'''Аргументы''':&lt;br /&gt;
**string strNodePath - путь к узлу;&lt;br /&gt;
**bool bValue - устанавливаемое значение&lt;br /&gt;
 '''&amp;lt;big&amp;gt;bool NodeValueIsError(string strNodePath)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Проверка значения узла на ошибку&lt;br /&gt;
*'''Возвращаемое значение''': true, если значение узла содержит ошибку; иначе false&lt;br /&gt;
*'''Аргументы''': string strNodePath - путь к узлу&lt;br /&gt;
 '''&amp;lt;big&amp;gt;void StartNode(string strNodePath)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Запуск узла по заданному пути&lt;br /&gt;
*'''Возвращаемое значение''': нет&lt;br /&gt;
*'''Аргументы''': string strNodePath - путь к узлу&lt;br /&gt;
 '''&amp;lt;big&amp;gt;void StopNode(string strNodePath)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Остановка узла по заданному пути&lt;br /&gt;
*'''Возвращаемое значение''': нет&lt;br /&gt;
*'''Аргументы''': string strNodePath - путь к узлу&lt;br /&gt;
====Функции для работы с окнами====&lt;br /&gt;
 '''&amp;lt;big&amp;gt;void CloseWindow(string strNodePath, int iDisplay)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Закрыть окно по заданному пути на дисплее с номером iDisplay&lt;br /&gt;
*'''Возвращаемое значение''': нет&lt;br /&gt;
*'''Аргументы''':&lt;br /&gt;
**string strNodePath - путь к окну;&lt;br /&gt;
**int iDisplay - номер дисплея&lt;br /&gt;
 '''&amp;lt;big&amp;gt;void ShowWindow(string strNodePath, int iDisplay)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Отобразить окно по заданному пути на дисплее с номером iDisplay. Координаты — абсолютные, установленные в свойствах окна.&lt;br /&gt;
*'''Возвращаемое значение''': нет&lt;br /&gt;
*'''Аргументы''':&lt;br /&gt;
**string strNodePath - путь к окну;&lt;br /&gt;
**int iDisplay - номер дисплея&lt;br /&gt;
 '''&amp;lt;big&amp;gt;int LoadComposition(string strWindowPath, string strCompositionPath, int iDisplay)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Загрузить композицию strCompositionPath в окно strWindowPath на дисплее с номером iDisplay&lt;br /&gt;
*'''Возвращаемое значение''': код результата загрузки&lt;br /&gt;
*'''Аргументы''':&lt;br /&gt;
**string strWindowPath - путь к окну;&lt;br /&gt;
**string strCompositionPath - путь к композиции;&lt;br /&gt;
**int iDisplay - номер дисплея&lt;br /&gt;
&lt;br /&gt;
*'''Примечания''': функция доступна с версии &amp;lt;code&amp;gt;AS 1.6.25+&amp;lt;/code&amp;gt;&lt;br /&gt;
====Функции для работы с временем====&lt;br /&gt;
 '''&amp;lt;big&amp;gt;int GetCurrentTime()&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Получение текущего времени в UNIX формате (количество секунд с 01 января 1970 года)&lt;br /&gt;
*'''Возвращаемое значение''': время в секундах (int)&lt;br /&gt;
*'''Аргументы''': нет&lt;br /&gt;
 '''&amp;lt;big&amp;gt;uint64 GetCurrentTimeMs()&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Получение текущего времени в UNIX формате (количество миллисекунд с 01 января 1970 года)&lt;br /&gt;
*'''Возвращаемое значение''': время в миллисекундах (uint64)&lt;br /&gt;
*'''Аргументы''': нет&lt;br /&gt;
*'''Примечания''': функция доступна с версии &amp;lt;code&amp;gt;AS 1.2.55+&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;AS 1.6.1+&amp;lt;/code&amp;gt;&lt;br /&gt;
 '''&amp;lt;big&amp;gt;int GetLocalTime()&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Получение текущего времени в UNIX формате (количество секунд с 01 января 1970 года) с учётом часового пояса&lt;br /&gt;
*'''Возвращаемое значение''': локальное время в секундах (int)&lt;br /&gt;
*'''Аргументы''': нет&lt;br /&gt;
 '''&amp;lt;big&amp;gt;int GetHours(int iTime)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Получение текущего часа из времени в формате UNIX&lt;br /&gt;
*'''Возвращаемое значение''': час (int)&lt;br /&gt;
*'''Аргументы''': int iTime - время в формате UNIX&lt;br /&gt;
 '''&amp;lt;big&amp;gt;int GetMinutes(int iTime)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Получение текущих минут из времени в формате UNIX&lt;br /&gt;
*'''Возвращаемое значение''': минуты (int)&lt;br /&gt;
*'''Аргументы''': int iTime - время в формате UNIX&lt;br /&gt;
 '''&amp;lt;big&amp;gt;int GetSeconds(int iTime)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Получение текущих секунд из времени в формате UNIX&lt;br /&gt;
*'''Возвращаемое значение''': секунды (int)&lt;br /&gt;
*'''Аргументы''': int iTime - время в формате UNIX&lt;br /&gt;
====Функции для работы с событиями====&lt;br /&gt;
 '''&amp;lt;big&amp;gt;int StoreMessage(int iMessageLevel, string strMessage)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Генерация информационного события (типа «сообщение»). Событие помещается в группу «Системные».&lt;br /&gt;
*'''Возвращаемое значение''': 0 — успешно, иначе код ошибки&lt;br /&gt;
*'''Аргументы''':&lt;br /&gt;
**int iMessageLevel - уровень сообщения (1 — наивысший): 1=FATAL, 2=ERROR, 3=WARNING, 4=NOTICE, 5=INFO, 6=TRACE, 7=DEBUG;&lt;br /&gt;
**string strMessage - текст сообщения&lt;br /&gt;
&lt;br /&gt;
*'''Примечания''': функция доступна с версии &amp;lt;code&amp;gt;AS 1.2.34+&amp;lt;/code&amp;gt;&lt;br /&gt;
 '''&amp;lt;big&amp;gt;int StoreMessage(int iMessageLevel, string strMessage, string strGroup)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Генерация информационного события (типа «сообщение»). Событие помещается в указанную при вызове группу.&lt;br /&gt;
*'''Возвращаемое значение''': 0 — успешно, иначе код ошибки&lt;br /&gt;
*'''Аргументы''':&lt;br /&gt;
**int iMessageLevel - уровень сообщения (1 — наивысший): 1=FATAL, 2=ERROR, 3=WARNING, 4=NOTICE, 5=INFO, 6=TRACE, 7=DEBUG;&lt;br /&gt;
**string strMessage - текст сообщения;&lt;br /&gt;
**string strGroup - имя группы, в которую должно помещаться событие&lt;br /&gt;
&lt;br /&gt;
*'''Примечания''': функция доступна с версии &amp;lt;code&amp;gt;AS 1.6.20+&amp;lt;/code&amp;gt;&lt;br /&gt;
====Функции для работы со строками====&lt;br /&gt;
 '''&amp;lt;big&amp;gt;string EncodeMD5(string strText)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Кодирование строки в MD5 хэш&lt;br /&gt;
*'''Возвращаемое значение''': MD5 хэш параметра&lt;br /&gt;
*'''Аргументы''': string strText - исходная строка&lt;br /&gt;
*'''Примечания''': функция доступна с версии &amp;lt;code&amp;gt;AS 1.2.34+&amp;lt;/code&amp;gt;&lt;br /&gt;
====Другие функции====&lt;br /&gt;
 '''&amp;lt;big&amp;gt;bool isnan(double)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Проверка на nan&lt;br /&gt;
*'''Возвращаемое значение''': true, если значение является nan; иначе false&lt;br /&gt;
*'''Аргументы''': double - проверяемое значение&lt;br /&gt;
 '''&amp;lt;big&amp;gt;int LaunchProcess(string process)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Запуск процесса в операционной системе. Запуск производится в блокирующем режиме, то есть возврат из функции осуществляется по завершению процесса.&lt;br /&gt;
*'''Возвращаемое значение''': код завершения процесса&lt;br /&gt;
*'''Аргументы''': string process - команда/путь запускаемого процесса&lt;br /&gt;
&lt;br /&gt;
[[Категория:AgavaSCADA/AgavaPLC]]&lt;/div&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
	<entry>
		<id>https://docs.kb-agava.ru/index.php?title=%D0%91%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B0_Standard_AgavaSCADA/AgavaPLC_1.2%2B&amp;diff=3743</id>
		<title>Библиотека Standard AgavaSCADA/AgavaPLC 1.2+</title>
		<link rel="alternate" type="text/html" href="https://docs.kb-agava.ru/index.php?title=%D0%91%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B0_Standard_AgavaSCADA/AgavaPLC_1.2%2B&amp;diff=3743"/>
		<updated>2026-10-15T04:46:00Z</updated>

		<summary type="html">&lt;p&gt;Administrator: Administrator переименовал страницу Библиотека Standard AgavaSCADA/AgavaPLC 1.2+ в Библиотека Standard AgavaSCADA/AgavaPLC 1.2...1.6&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#перенаправление [[Библиотека Standard AgavaSCADA/AgavaPLC 1.2...1.6]]&lt;/div&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
	<entry>
		<id>https://docs.kb-agava.ru/index.php?title=%D0%91%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B0_Standard_AgavaSCADA/AgavaPLC_1.2...1.6&amp;diff=3742</id>
		<title>Библиотека Standard AgavaSCADA/AgavaPLC 1.2...1.6</title>
		<link rel="alternate" type="text/html" href="https://docs.kb-agava.ru/index.php?title=%D0%91%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B0_Standard_AgavaSCADA/AgavaPLC_1.2...1.6&amp;diff=3742"/>
		<updated>2026-10-15T04:46:00Z</updated>

		<summary type="html">&lt;p&gt;Administrator: Administrator переименовал страницу Библиотека Standard AgavaSCADA/AgavaPLC 1.2+ в Библиотека Standard AgavaSCADA/AgavaPLC 1.2...1.6&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Общие положения ==&lt;br /&gt;
Данное описание предназначено для &amp;lt;code&amp;gt;AgavaSCADA/AgavaPLC 1.2+&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Standard - стандартная библиотека==&lt;br /&gt;
===Математические и тригонометрические функции===&lt;br /&gt;
====Преобразование IEEE битов====&lt;br /&gt;
 '''&amp;lt;big&amp;gt;float fpFromIEEE(uint bits)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Преобразует 32-битное IEEE-754 представление в число float&lt;br /&gt;
*'''Возвращаемое значение''': число float&lt;br /&gt;
*'''Аргументы''': uint bits - битовое представление&lt;br /&gt;
 '''&amp;lt;big&amp;gt;uint fpToIEEE(float value)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Преобразует число float в 32-битное IEEE-754 представление&lt;br /&gt;
*'''Возвращаемое значение''': битовое представление (uint)&lt;br /&gt;
*'''Аргументы''': float value - исходное число&lt;br /&gt;
 '''&amp;lt;big&amp;gt;double fpFromIEEE(uint64 bits)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Преобразует 64-битное IEEE-754 представление в число double&lt;br /&gt;
*'''Возвращаемое значение''': число double&lt;br /&gt;
*'''Аргументы''': uint64 bits - битовое представление&lt;br /&gt;
 '''&amp;lt;big&amp;gt;uint64 fpToIEEE(double value)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Преобразует число double в 64-битное IEEE-754 представление&lt;br /&gt;
*'''Возвращаемое значение''': битовое представление (uint64)&lt;br /&gt;
*'''Аргументы''': double value - исходное число&lt;br /&gt;
====Сравнение с допуском====&lt;br /&gt;
 '''&amp;lt;big&amp;gt;bool closeTo(float a, float b, float epsilon = 0.00001f)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Сравнивает два числа float с заданной погрешностью&lt;br /&gt;
*'''Возвращаемое значение''': true, если числа близки в пределах погрешности; иначе false&lt;br /&gt;
*'''Аргументы''':&lt;br /&gt;
**float a - первое число;&lt;br /&gt;
**float b - второе число;&lt;br /&gt;
**float epsilon (опционально) - погрешность (по умолчанию 0.00001)&lt;br /&gt;
 '''&amp;lt;big&amp;gt;bool closeTo(double a, double b, double epsilon = 0.0000000001)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Сравнивает два числа double с заданной погрешностью&lt;br /&gt;
*'''Возвращаемое значение''': true, если числа близки в пределах погрешности; иначе false&lt;br /&gt;
*'''Аргументы''':&lt;br /&gt;
**double a - первое число;&lt;br /&gt;
**double b - второе число;&lt;br /&gt;
**double epsilon (опционально) - погрешность (по умолчанию 1e-10)&lt;br /&gt;
====Тригонометрические функции====&lt;br /&gt;
 '''&amp;lt;big&amp;gt;float cos(float angle)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Вычисляет косинус угла&lt;br /&gt;
*'''Возвращаемое значение''': косинус угла&lt;br /&gt;
*'''Аргументы''': float angle - угол в радианах&lt;br /&gt;
 '''&amp;lt;big&amp;gt;float sin(float angle)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Вычисляет синус угла&lt;br /&gt;
*'''Возвращаемое значение''': синус угла&lt;br /&gt;
*'''Аргументы''': float angle - угол в радианах&lt;br /&gt;
 '''&amp;lt;big&amp;gt;float tan(float angle)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Вычисляет тангенс угла&lt;br /&gt;
*'''Возвращаемое значение''': тангенс угла&lt;br /&gt;
*'''Аргументы''': float angle - угол в радианах&lt;br /&gt;
 '''&amp;lt;big&amp;gt;float acos(float value)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Вычисляет арккосинус (обратный косинус)&lt;br /&gt;
*'''Возвращаемое значение''': угол в радианах&lt;br /&gt;
*'''Аргументы''': float value - значение в диапазоне [-1, 1]&lt;br /&gt;
 '''&amp;lt;big&amp;gt;float asin(float value)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Вычисляет арксинус (обратный синус)&lt;br /&gt;
*'''Возвращаемое значение''': угол в радианах&lt;br /&gt;
*'''Аргументы''': float value - значение в диапазоне [-1, 1]&lt;br /&gt;
 '''&amp;lt;big&amp;gt;float atan(float value)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Вычисляет арктангенс (обратный тангенс)&lt;br /&gt;
*'''Возвращаемое значение''': угол в радианах&lt;br /&gt;
*'''Аргументы''': float value - значение&lt;br /&gt;
 '''&amp;lt;big&amp;gt;float atan2(float y, float x)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Вычисляет арктангенс двух переменных&lt;br /&gt;
*'''Возвращаемое значение''': угол в радианах&lt;br /&gt;
*'''Аргументы''':&lt;br /&gt;
**float y - координата Y;&lt;br /&gt;
**float x - координата X&lt;br /&gt;
====Гиперболические функции====&lt;br /&gt;
 '''&amp;lt;big&amp;gt;float cosh(float x)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Вычисляет гиперболический косинус&lt;br /&gt;
*'''Возвращаемое значение''': гиперболический косинус&lt;br /&gt;
*'''Аргументы''': float x - значение&lt;br /&gt;
 '''&amp;lt;big&amp;gt;float sinh(float x)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Вычисляет гиперболический синус&lt;br /&gt;
*'''Возвращаемое значение''': гиперболический синус&lt;br /&gt;
*'''Аргументы''': float x - значение&lt;br /&gt;
 '''&amp;lt;big&amp;gt;float tanh(float x)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Вычисляет гиперболический тангенс&lt;br /&gt;
*'''Возвращаемое значение''': гиперболический тангенс&lt;br /&gt;
*'''Аргументы''': float x - значение&lt;br /&gt;
====Экспоненциальные и логарифмические функции====&lt;br /&gt;
 '''&amp;lt;big&amp;gt;float log(float x)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Вычисляет натуральный логарифм (по основанию e)&lt;br /&gt;
*'''Возвращаемое значение''': натуральный логарифм&lt;br /&gt;
*'''Аргументы''': float x - значение &amp;gt; 0&lt;br /&gt;
 '''&amp;lt;big&amp;gt;float log10(float x)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Вычисляет десятичный логарифм (по основанию 10)&lt;br /&gt;
*'''Возвращаемое значение''': десятичный логарифм&lt;br /&gt;
*'''Аргументы''': float x - значение &amp;gt; 0&lt;br /&gt;
====Степенные функции====&lt;br /&gt;
 '''&amp;lt;big&amp;gt;float pow(float base, float exponent)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Возводит число в степень&lt;br /&gt;
*'''Возвращаемое значение''': результат возведения в степень&lt;br /&gt;
*'''Аргументы''':&lt;br /&gt;
**float base - основание;&lt;br /&gt;
**float exponent - показатель степени&lt;br /&gt;
 '''&amp;lt;big&amp;gt;float sqrt(float x)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Вычисляет квадратный корень&lt;br /&gt;
*'''Возвращаемое значение''': квадратный корень&lt;br /&gt;
*'''Аргументы''': float x - неотрицательное значение&lt;br /&gt;
====Функции округления и остатка====&lt;br /&gt;
 '''&amp;lt;big&amp;gt;float ceil(float x)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Округляет вверх до ближайшего целого&lt;br /&gt;
*'''Возвращаемое значение''': округлённое вверх значение&lt;br /&gt;
*'''Аргументы''': float x - значение&lt;br /&gt;
 '''&amp;lt;big&amp;gt;float abs(float x)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Вычисляет абсолютное значение (модуль)&lt;br /&gt;
*'''Возвращаемое значение''': абсолютное значение&lt;br /&gt;
*'''Аргументы''': float x - значение&lt;br /&gt;
 '''&amp;lt;big&amp;gt;float floor(float x)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Округляет вниз до ближайшего целого&lt;br /&gt;
*'''Возвращаемое значение''': округлённое вниз значение&lt;br /&gt;
*'''Аргументы''': float x - значение&lt;br /&gt;
 '''&amp;lt;big&amp;gt;float fraction(float x)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Выделяет дробную часть числа&lt;br /&gt;
*'''Возвращаемое значение''': дробная часть числа&lt;br /&gt;
*'''Аргументы''': float x - значение&lt;br /&gt;
===Специализированные функции===&lt;br /&gt;
Специализированные функции среды разработки, доступные для использования в скриптах, приведены ниже.&lt;br /&gt;
====Функции для работы с узлами====&lt;br /&gt;
 '''&amp;lt;big&amp;gt;float GetNodeValueAsFloat(string strNodePath)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Получить значение узла в виде float по заданному пути&lt;br /&gt;
*'''Возвращаемое значение''': значение узла (float)&lt;br /&gt;
*'''Аргументы''': string strNodePath - путь к узлу&lt;br /&gt;
 '''&amp;lt;big&amp;gt;void SetNodeValueAsFloat(string strNodePath, float fValue)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Установить значение узла в float по заданному пути&lt;br /&gt;
*'''Возвращаемое значение''': нет&lt;br /&gt;
*'''Аргументы''':&lt;br /&gt;
**string strNodePath - путь к узлу;&lt;br /&gt;
**float fValue - устанавливаемое значение&lt;br /&gt;
 '''&amp;lt;big&amp;gt;int GetNodeValueAsInt(string strNodePath)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Получить значение узла в виде int по заданному пути&lt;br /&gt;
*'''Возвращаемое значение''': значение узла (int)&lt;br /&gt;
*'''Аргументы''': string strNodePath - путь к узлу&lt;br /&gt;
 '''&amp;lt;big&amp;gt;void SetNodeValueAsInt(string strNodePath, int iValue)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Установить значение узла в int по заданному пути&lt;br /&gt;
*'''Возвращаемое значение''': нет&lt;br /&gt;
*'''Аргументы''':&lt;br /&gt;
**string strNodePath - путь к узлу;&lt;br /&gt;
**int iValue - устанавливаемое значение&lt;br /&gt;
 '''&amp;lt;big&amp;gt;string GetNodeValueAsString(string strNodePath)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Получить значение узла в виде string по заданному пути&lt;br /&gt;
*'''Возвращаемое значение''': значение узла (string)&lt;br /&gt;
*'''Аргументы''': string strNodePath - путь к узлу&lt;br /&gt;
 '''&amp;lt;big&amp;gt;void SetNodeValueAsString(string strNodePath, string strValue)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Установить значение узла в виде string по заданному пути&lt;br /&gt;
*'''Возвращаемое значение''': нет&lt;br /&gt;
*'''Аргументы''':&lt;br /&gt;
**string strNodePath - путь к узлу;&lt;br /&gt;
**string strValue - устанавливаемое значение&lt;br /&gt;
 '''&amp;lt;big&amp;gt;bool GetNodeValueAsBool(string strNodePath)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Получить значение узла в виде bool по заданному пути&lt;br /&gt;
*'''Возвращаемое значение''': значение узла (bool)&lt;br /&gt;
*'''Аргументы''': string strNodePath - путь к узлу&lt;br /&gt;
 '''&amp;lt;big&amp;gt;void SetNodeValueAsBool(string strNodePath, bool bValue)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Установить значение узла в виде bool по заданному пути&lt;br /&gt;
*'''Возвращаемое значение''': нет&lt;br /&gt;
*'''Аргументы''':&lt;br /&gt;
**string strNodePath - путь к узлу;&lt;br /&gt;
**bool bValue - устанавливаемое значение&lt;br /&gt;
 '''&amp;lt;big&amp;gt;bool NodeValueIsError(string strNodePath)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Проверка значения узла на ошибку&lt;br /&gt;
*'''Возвращаемое значение''': true, если значение узла содержит ошибку; иначе false&lt;br /&gt;
*'''Аргументы''': string strNodePath - путь к узлу&lt;br /&gt;
 '''&amp;lt;big&amp;gt;void StartNode(string strNodePath)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Запуск узла по заданному пути&lt;br /&gt;
*'''Возвращаемое значение''': нет&lt;br /&gt;
*'''Аргументы''': string strNodePath - путь к узлу&lt;br /&gt;
 '''&amp;lt;big&amp;gt;void StopNode(string strNodePath)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Остановка узла по заданному пути&lt;br /&gt;
*'''Возвращаемое значение''': нет&lt;br /&gt;
*'''Аргументы''': string strNodePath - путь к узлу&lt;br /&gt;
====Функции для работы с окнами====&lt;br /&gt;
 '''&amp;lt;big&amp;gt;void CloseWindow(string strNodePath, int iDisplay)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Закрыть окно по заданному пути на дисплее с номером iDisplay&lt;br /&gt;
*'''Возвращаемое значение''': нет&lt;br /&gt;
*'''Аргументы''':&lt;br /&gt;
**string strNodePath - путь к окну;&lt;br /&gt;
**int iDisplay - номер дисплея&lt;br /&gt;
 '''&amp;lt;big&amp;gt;void ShowWindow(string strNodePath, int iDisplay)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Отобразить окно по заданному пути на дисплее с номером iDisplay. Координаты — абсолютные, установленные в свойствах окна.&lt;br /&gt;
*'''Возвращаемое значение''': нет&lt;br /&gt;
*'''Аргументы''':&lt;br /&gt;
**string strNodePath - путь к окну;&lt;br /&gt;
**int iDisplay - номер дисплея&lt;br /&gt;
 '''&amp;lt;big&amp;gt;int LoadComposition(string strWindowPath, string strCompositionPath, int iDisplay)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Загрузить композицию strCompositionPath в окно strWindowPath на дисплее с номером iDisplay&lt;br /&gt;
*'''Возвращаемое значение''': код результата загрузки&lt;br /&gt;
*'''Аргументы''':&lt;br /&gt;
**string strWindowPath - путь к окну;&lt;br /&gt;
**string strCompositionPath - путь к композиции;&lt;br /&gt;
**int iDisplay - номер дисплея&lt;br /&gt;
&lt;br /&gt;
*'''Примечания''': функция доступна с версии &amp;lt;code&amp;gt;AS 1.6.25+&amp;lt;/code&amp;gt;&lt;br /&gt;
====Функции для работы с временем====&lt;br /&gt;
 '''&amp;lt;big&amp;gt;int GetCurrentTime()&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Получение текущего времени в UNIX формате (количество секунд с 01 января 1970 года)&lt;br /&gt;
*'''Возвращаемое значение''': время в секундах (int)&lt;br /&gt;
*'''Аргументы''': нет&lt;br /&gt;
 '''&amp;lt;big&amp;gt;uint64 GetCurrentTimeMs()&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Получение текущего времени в UNIX формате (количество миллисекунд с 01 января 1970 года)&lt;br /&gt;
*'''Возвращаемое значение''': время в миллисекундах (uint64)&lt;br /&gt;
*'''Аргументы''': нет&lt;br /&gt;
*'''Примечания''': функция доступна с версии &amp;lt;code&amp;gt;AS 1.2.55+&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;AS 1.6.1+&amp;lt;/code&amp;gt;&lt;br /&gt;
 '''&amp;lt;big&amp;gt;int GetLocalTime()&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Получение текущего времени в UNIX формате (количество секунд с 01 января 1970 года) с учётом часового пояса&lt;br /&gt;
*'''Возвращаемое значение''': локальное время в секундах (int)&lt;br /&gt;
*'''Аргументы''': нет&lt;br /&gt;
 '''&amp;lt;big&amp;gt;int GetHours(int iTime)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Получение текущего часа из времени в формате UNIX&lt;br /&gt;
*'''Возвращаемое значение''': час (int)&lt;br /&gt;
*'''Аргументы''': int iTime - время в формате UNIX&lt;br /&gt;
 '''&amp;lt;big&amp;gt;int GetMinutes(int iTime)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Получение текущих минут из времени в формате UNIX&lt;br /&gt;
*'''Возвращаемое значение''': минуты (int)&lt;br /&gt;
*'''Аргументы''': int iTime - время в формате UNIX&lt;br /&gt;
 '''&amp;lt;big&amp;gt;int GetSeconds(int iTime)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Получение текущих секунд из времени в формате UNIX&lt;br /&gt;
*'''Возвращаемое значение''': секунды (int)&lt;br /&gt;
*'''Аргументы''': int iTime - время в формате UNIX&lt;br /&gt;
====Функции для работы с событиями====&lt;br /&gt;
 '''&amp;lt;big&amp;gt;int StoreMessage(int iMessageLevel, string strMessage)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Генерация информационного события (типа «сообщение»). Событие помещается в группу «Системные».&lt;br /&gt;
*'''Возвращаемое значение''': 0 — успешно, иначе код ошибки&lt;br /&gt;
*'''Аргументы''':&lt;br /&gt;
**int iMessageLevel - уровень сообщения (1 — наивысший): 1=FATAL, 2=ERROR, 3=WARNING, 4=NOTICE, 5=INFO, 6=TRACE, 7=DEBUG;&lt;br /&gt;
**string strMessage - текст сообщения&lt;br /&gt;
&lt;br /&gt;
*'''Примечания''': функция доступна с версии &amp;lt;code&amp;gt;AS 1.2.34+&amp;lt;/code&amp;gt;&lt;br /&gt;
 '''&amp;lt;big&amp;gt;int StoreMessage(int iMessageLevel, string strMessage, string strGroup)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Генерация информационного события (типа «сообщение»). Событие помещается в указанную при вызове группу.&lt;br /&gt;
*'''Возвращаемое значение''': 0 — успешно, иначе код ошибки&lt;br /&gt;
*'''Аргументы''':&lt;br /&gt;
**int iMessageLevel - уровень сообщения (1 — наивысший): 1=FATAL, 2=ERROR, 3=WARNING, 4=NOTICE, 5=INFO, 6=TRACE, 7=DEBUG;&lt;br /&gt;
**string strMessage - текст сообщения;&lt;br /&gt;
**string strGroup - имя группы, в которую должно помещаться событие&lt;br /&gt;
&lt;br /&gt;
*'''Примечания''': функция доступна с версии &amp;lt;code&amp;gt;AS 1.6.20+&amp;lt;/code&amp;gt;&lt;br /&gt;
====Функции для работы со строками====&lt;br /&gt;
 '''&amp;lt;big&amp;gt;string EncodeMD5(string strText)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Кодирование строки в MD5 хэш&lt;br /&gt;
*'''Возвращаемое значение''': MD5 хэш параметра&lt;br /&gt;
*'''Аргументы''': string strText - исходная строка&lt;br /&gt;
*'''Примечания''': функция доступна с версии &amp;lt;code&amp;gt;AS 1.2.34+&amp;lt;/code&amp;gt;&lt;br /&gt;
====Другие функции====&lt;br /&gt;
 '''&amp;lt;big&amp;gt;bool isnan(double)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Проверка на nan&lt;br /&gt;
*'''Возвращаемое значение''': true, если значение является nan; иначе false&lt;br /&gt;
*'''Аргументы''': double - проверяемое значение&lt;br /&gt;
 '''&amp;lt;big&amp;gt;int LaunchProcess(string process)&amp;lt;/big&amp;gt;'''&lt;br /&gt;
*'''Назначение''': Запуск процесса в операционной системе. Запуск производится в блокирующем режиме, то есть возврат из функции осуществляется по завершению процесса.&lt;br /&gt;
*'''Возвращаемое значение''': код завершения процесса&lt;br /&gt;
*'''Аргументы''': string process - команда/путь запускаемого процесса&lt;br /&gt;
&lt;br /&gt;
[[Категория:AgavaSCADA/AgavaPLC]]&lt;/div&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
	<entry>
		<id>https://docs.kb-agava.ru/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81_SystemAuthentication&amp;diff=3730</id>
		<title>Класс SystemAuthentication</title>
		<link rel="alternate" type="text/html" href="https://docs.kb-agava.ru/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81_SystemAuthentication&amp;diff=3730"/>
		<updated>2026-10-13T09:52:16Z</updated>

		<summary type="html">&lt;p&gt;Administrator: Administrator переименовал страницу Класс SystemAuth в Класс SystemAuthentication без оставления перенаправления&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Категория:AgavaSCADA/AgavaPLC]]&lt;br /&gt;
Класс &amp;lt;code&amp;gt;SystemAuth&amp;lt;/code&amp;gt; представляет узел &amp;lt;code&amp;gt;Система аутентификации&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Описание соответствует скриптовому API текущей версии &amp;lt;code&amp;gt;AS 1.7.8+&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Общие методы узла соответствуют [[Описание базовых классов AgavaSCADA/AgavaPLC#BasicNode|BasicNode]].&lt;br /&gt;
&lt;br /&gt;
=== Получение системы аутентификации ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SystemAuthentication_t@ GetSystemAuthentication()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Глобальная функция возвращает систему аутентификации локальной станции. Если такой системы нет, результат — &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt;. Функция не создаёт новый узел.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
string GetAuthenticationSystemName()&lt;br /&gt;
{&lt;br /&gt;
    SystemAuthentication_t@ auth = GetSystemAuthentication();&lt;br /&gt;
&lt;br /&gt;
    if (auth is null)&lt;br /&gt;
    {&lt;br /&gt;
        return &amp;quot;&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return auth.GetName();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Необходимо проверять результат на &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt; перед обращением к методам.&lt;br /&gt;
&lt;br /&gt;
=== Перечисление Privilege ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Значение !! Число !! Назначение&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Privilege::ReadValue&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; || Чтение значения узла.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Privilege::WriteValue&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; || Запись значения узла.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Privilege::OpenWindow&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; || Открытие окна.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Privilege::CloseWindow&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; || Закрытие окна.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
В скрипте следует использовать именованные значения перечисления. Произвольные числовые приведения, например &amp;lt;code&amp;gt;Privilege(42)&amp;lt;/code&amp;gt;, не являются поддерживаемыми привилегиями.&lt;br /&gt;
&lt;br /&gt;
=== Методы ===&lt;br /&gt;
&lt;br /&gt;
==== GetCurrentUser() ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
AuthUser_t@ GetCurrentUser()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возвращает ссылку на узел текущего авторизованного пользователя. Если текущий пользователь отсутствует или ссылка на него не разрешается в узел пользователя, результат — &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Это '''живой узел проекта''', а не снимок пользовательских данных. После переключения пользователя ранее полученная ссылка по-прежнему указывает на прежний узел; для получения нового текущего пользователя нужно вызвать метод повторно.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
string GetCurrentUserNodeName()&lt;br /&gt;
{&lt;br /&gt;
    SystemAuthentication_t@ auth = GetSystemAuthentication();&lt;br /&gt;
&lt;br /&gt;
    if (auth is null)&lt;br /&gt;
    {&lt;br /&gt;
        return &amp;quot;&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    AuthUser_t@ user = auth.GetCurrentUser();&lt;br /&gt;
&lt;br /&gt;
    if (user is null)&lt;br /&gt;
    {&lt;br /&gt;
        return &amp;quot;&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return user.GetName();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== GetRole() и GetUser() ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
AuthRole_t@ GetRole(const string &amp;amp;in name)&lt;br /&gt;
AuthUser_t@ GetUser(const string &amp;amp;in name)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ищут существующую роль или пользователя в основной коллекции узлов проекта. Параметр &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; сравнивается с именем узла &amp;lt;code&amp;gt;GetName()&amp;lt;/code&amp;gt; точно, с учётом регистра. Это '''не путь''', не шифр &amp;lt;code&amp;gt;GetShortName()&amp;lt;/code&amp;gt; и не описание &amp;lt;code&amp;gt;GetDescription()&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
При отсутствии совпадения возвращается &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt;. При нескольких совпадениях возвращается первый найденный узел соответствующего типа; для однозначного поиска рекомендуется давать ролям и пользователям уникальные имена.&lt;br /&gt;
&lt;br /&gt;
==== HasAccess() ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bool HasAccess(BasicNode_t@+ node, Privilege privilege)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверяет указанную привилегию '''текущего пользователя''' для заданного узла. Возвращает &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; для разрешения, заданного непосредственно на узле или унаследованного от его предка. Отсутствие разрешения, запрет и отсутствие текущего пользователя дают &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Для прокси, созданного по пути к узлу проекта, проверяется исходный узел проекта; для узла, созданного скриптом, — сам этот узел. Прокси &amp;lt;code&amp;gt;BasicNode&amp;lt;/code&amp;gt; и его потомки можно передавать благодаря неявному приведению к &amp;lt;code&amp;gt;BasicNode_t@&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Передача &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt; или недопустимого значения &amp;lt;code&amp;gt;Privilege&amp;lt;/code&amp;gt; вызывает исключение скрипта. Проверка не выполняет вход пользователя и не показывает диалог аутентификации.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bool CanReadNode(BasicNode@ node)&lt;br /&gt;
{&lt;br /&gt;
    if (node is null)&lt;br /&gt;
    {&lt;br /&gt;
        return false;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    SystemAuthentication_t@ auth = GetSystemAuthentication();&lt;br /&gt;
&lt;br /&gt;
    if (auth is null)&lt;br /&gt;
    {&lt;br /&gt;
        return false; // Политика данного примера: отсутствие системы — отказ.&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return auth.HasAccess(node, Privilege::ReadValue);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возврат &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; при отсутствии системы в этом примере — решение самого скрипта. Поведение глобальной функции &amp;lt;code&amp;gt;HasAccess()&amp;lt;/code&amp;gt; отличается и описано ниже.&lt;br /&gt;
&lt;br /&gt;
==== AddPrivilege() ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bool AddPrivilege(AuthRole_t@+ role, BasicNode_t@+ node, Privilege privilege, bool allow = true)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Устанавливает правило указанной привилегии для роли и узла:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;allow = true&amp;lt;/code&amp;gt; — разрешение;&lt;br /&gt;
* &amp;lt;code&amp;gt;allow = false&amp;lt;/code&amp;gt; — явный запрет.&lt;br /&gt;
&lt;br /&gt;
Прежние непосредственные записи той же привилегии для этой роли и узла заменяются новым правилом. Повторный вызов не накапливает дубликаты. При корректных аргументах результат — &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, в том числе при повторной установке уже заданного правила.&lt;br /&gt;
&lt;br /&gt;
Правило относится к роли, а не исключительно к текущему пользователю, поэтому оно может влиять на всех пользователей этой роли. Метод сам по себе не назначает роль пользователю и не выполняет вход.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bool SetOperatorReadAccess(BasicNode@ node, bool allow)&lt;br /&gt;
{&lt;br /&gt;
    if (node is null)&lt;br /&gt;
    {&lt;br /&gt;
        return false;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    SystemAuthentication_t@ auth = GetSystemAuthentication();&lt;br /&gt;
&lt;br /&gt;
    if (auth is null)&lt;br /&gt;
    {&lt;br /&gt;
        return false;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    AuthRole_t@ role = auth.GetRole(&amp;quot;Operator&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    if (role is null)&lt;br /&gt;
    {&lt;br /&gt;
        return false;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return auth.AddPrivilege(role, node, Privilege::ReadValue, allow);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Имя &amp;lt;code&amp;gt;Operator&amp;lt;/code&amp;gt; — пример; следует использовать имя роли своего проекта. Для узлов, созданных по пути, правило устанавливается на исходный узел проекта. Права, выданные через этот API на узел, удаляются из ролей при уничтожении этого узла.&lt;br /&gt;
&lt;br /&gt;
==== RemovePrivilege() ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bool RemovePrivilege(AuthRole_t@+ role, BasicNode_t@+ node, Privilege privilege)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Удаляет непосредственные записи указанной привилегии для роли и узла — как разрешения, так и запреты. Возвращает &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, если была удалена хотя бы одна запись, иначе &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Удаление правила не равно запрету.''' Оно не удаляет правила на предках узла и не меняет другие роли пользователя. После удаления может снова действовать унаследованное разрешение или другое применимое правило. Для явного запрета используется &amp;lt;code&amp;gt;AddPrivilege(role, node, privilege, false)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bool RemoveOperatorReadRule(BasicNode@ node)&lt;br /&gt;
{&lt;br /&gt;
    if (node is null)&lt;br /&gt;
    {&lt;br /&gt;
        return false;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    SystemAuthentication_t@ auth = GetSystemAuthentication();&lt;br /&gt;
&lt;br /&gt;
    if (auth is null)&lt;br /&gt;
    {&lt;br /&gt;
        return false;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    AuthRole_t@ role = auth.GetRole(&amp;quot;Operator&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    if (role is null)&lt;br /&gt;
    {&lt;br /&gt;
        return false;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return auth.RemovePrivilege(role, node, Privilege::ReadValue);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== AddUserRole() и RemoveUserRole() ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bool AddUserRole(AuthUser_t@+ user, AuthRole_t@+ role)&lt;br /&gt;
bool RemoveUserRole(AuthUser_t@+ user, AuthRole_t@+ role)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;AddUserRole()&amp;lt;/code&amp;gt; назначает пользователю существующую роль. Возвращает &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, если роль добавлена, и &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;, если она уже была назначена.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;RemoveUserRole()&amp;lt;/code&amp;gt; удаляет назначение роли. Возвращает &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, если назначение удалено, и &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;, если такой роли у пользователя не было. Сам узел роли не удаляется, назначения этой роли другим пользователям не изменяются.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bool ChangeUserRole(const string &amp;amp;in userName, const string &amp;amp;in roleName, bool assign)&lt;br /&gt;
{&lt;br /&gt;
    SystemAuthentication_t@ auth = GetSystemAuthentication();&lt;br /&gt;
&lt;br /&gt;
    if (auth is null)&lt;br /&gt;
    {&lt;br /&gt;
        return false;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    AuthUser_t@ user = auth.GetUser(userName);&lt;br /&gt;
    AuthRole_t@ role = auth.GetRole(roleName);&lt;br /&gt;
&lt;br /&gt;
    if (user is null || role is null)&lt;br /&gt;
    {&lt;br /&gt;
        return false;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if (assign)&lt;br /&gt;
    {&lt;br /&gt;
        return auth.AddUserRole(user, role);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return auth.RemoveUserRole(user, role);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В примере &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; может означать отсутствие изменения, а не ошибку: роль уже назначена либо уже отсутствует. Назначение роли не делает пользователя текущим и не выполняет проверку его пароля.&lt;br /&gt;
&lt;br /&gt;
==== Ошибки аргументов и результат изменения прав ====&lt;br /&gt;
&lt;br /&gt;
В объектных методах &amp;lt;code&amp;gt;HasAccess()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;AddPrivilege()&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;RemovePrivilege()&amp;lt;/code&amp;gt; недопустимая привилегия либо &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt; вместо обязательного узла вызывает исключение скрипта. В методах изменения прав и ролей &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt; вместо обязательного пользователя или роли также вызывает исключение. Эти случаи нельзя трактовать как обычный результат &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;: выполнение контекста прерывается исключением.&lt;br /&gt;
&lt;br /&gt;
Модификатор &amp;lt;code&amp;gt;@+&amp;lt;/code&amp;gt; в сигнатурах относится к управлению временем жизни аргументов; при вызове дополнительных действий по освобождению ссылок не требуется.&lt;br /&gt;
&lt;br /&gt;
Изменения применяются к состоянию работающего рантайма. Обновление доступности виджетов выполняется для изменений прав на узлы проекта и для фактических изменений назначений ролей. Сам вызов метода не сохраняет проект на диск; сохранение настроек или повторное применение правил при запуске нужно организовать отдельно.&lt;br /&gt;
&lt;br /&gt;
Методы изменения прав '''не содержат отдельной проверки «текущий пользователь — администратор»'''. Ограничения на запуск таких скриптов и изменение настроек следует обеспечивать в приложении. Результат &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; подтверждает выполнение операции, а не гарантирует итоговое разрешение доступа конкретному пользователю.&lt;br /&gt;
&lt;br /&gt;
=== Правила проверки доступа ===&lt;br /&gt;
&lt;br /&gt;
Правила роли могут распространяться на дочерние узлы. Внутри роли более близкое к проверяемому узлу правило проверяется раньше правила его предка.&lt;br /&gt;
&lt;br /&gt;
При нескольких ролях текущая реализация перебирает роли в порядке их назначения и использует результат '''первой роли, для которой найдено применимое правило''' — разрешение или запрет. Это не объединение всех разрешений и не правило «любой запрет всегда важнее любого разрешения» для всех ролей сразу.&lt;br /&gt;
&lt;br /&gt;
Не следует полагаться на противоречащие правила нескольких ролей без проверки результата &amp;lt;code&amp;gt;HasAccess()&amp;lt;/code&amp;gt;. После удаления непосредственного правила может измениться то, какое унаследованное правило или какая роль определяет результат.&lt;br /&gt;
&lt;br /&gt;
=== Глобальные функции аутентификации ===&lt;br /&gt;
&lt;br /&gt;
==== GetCurrentUser() и UserInfo ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
const UserInfo@ GetCurrentUser()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Глобальная функция возвращает '''снимок''' данных текущего пользователя, либо &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt;, если система аутентификации или текущий пользователь отсутствуют. Она отличается от метода &amp;lt;code&amp;gt;SystemAuthentication_t.GetCurrentUser()&amp;lt;/code&amp;gt;, возвращающего живой узел &amp;lt;code&amp;gt;AuthUser_t@&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;UserInfo&amp;lt;/code&amp;gt; предоставляет методы:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
string GetNodePath() const&lt;br /&gt;
string GetName() const&lt;br /&gt;
string GetFullName() const&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;GetFullName()&amp;lt;/code&amp;gt; возвращает описание узла пользователя. Снимок не изменяется при последующем переключении пользователя; нужно получить новый объект через глобальную функцию. Конструктор &amp;lt;code&amp;gt;UserInfo&amp;lt;/code&amp;gt; из скрипта недоступен.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
string GetCurrentUserCaption()&lt;br /&gt;
{&lt;br /&gt;
    const UserInfo@ user = GetCurrentUser();&lt;br /&gt;
&lt;br /&gt;
    if (user is null)&lt;br /&gt;
    {&lt;br /&gt;
        return &amp;quot;&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return user.GetFullName();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== HasAccess() по пути ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bool HasAccess(string nodePath, Privilege privilege)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверяет права текущего пользователя на узел, найденный по пути. Если путь не разрешается ровно в один узел, результат — &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;. Если узел найден, но система аутентификации отсутствует, результат — &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;. При наличии системы проверяются права текущего пользователя; отсутствие пользователя даёт &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
В отличие от объектного метода аргументом является строка пути, а не &amp;lt;code&amp;gt;BasicNode_t@&amp;lt;/code&amp;gt;. Проверка не показывает диалог входа и не выдаёт привилегию автоматически.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bool CanReadSetpoint()&lt;br /&gt;
{&lt;br /&gt;
    return HasAccess(&amp;quot;/Project/Station/Signals/Setpoint&amp;quot;, Privilege::ReadValue);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ShowLoginDialog() ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void ShowLoginDialog(string predefinedUserPath = &amp;quot;&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запрашивает отображение диалога аутентификации. Необязательный аргумент — '''путь к узлу пользователя''', который должен быть предварительно выбран в диалоге; это не имя роли, не пароль и не автоматический вход.&lt;br /&gt;
&lt;br /&gt;
Если системы аутентификации нет либо не подключён обработчик пользовательского интерфейса, функция ничего не делает. При наличии системы и обработчика UI неверный или неоднозначный путь, а также путь к узлу другого типа вызывают исключение скрипта.&lt;br /&gt;
&lt;br /&gt;
Функция возвращает &amp;lt;code&amp;gt;void&amp;lt;/code&amp;gt;. Результат входа проверяют повторным чтением текущего пользователя. Вызов обработчика диалога синхронный на вызывающем потоке; доставку в UI-поток при необходимости выполняет интерфейс.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void RequestOperatorLogin()&lt;br /&gt;
{&lt;br /&gt;
    ShowLoginDialog(&amp;quot;/Project/Station/SystemAuth/Users/operator&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для диалога без заранее выбранного пользователя вызывается &amp;lt;code&amp;gt;ShowLoginDialog()&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Logout() ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void Logout()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Глобальная функция выполняет выход. Если в проекте задан корректный пользователь по умолчанию, рантайм переключается на него '''без запроса пароля'''. В противном случае сбрасываются текущий пользователь и свойства его имени/описания. При отсутствии системы функция ничего не делает.&lt;br /&gt;
&lt;br /&gt;
После &amp;lt;code&amp;gt;Logout()&amp;lt;/code&amp;gt; результат &amp;lt;code&amp;gt;GetCurrentUser()&amp;lt;/code&amp;gt; поэтому не обязательно равен &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt;: текущим может стать пользователь по умолчанию.&lt;br /&gt;
&lt;br /&gt;
=== AuthUser_t и AuthRole_t ===&lt;br /&gt;
&lt;br /&gt;
Это ссылки на узлы &amp;lt;code&amp;gt;Пользователь&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;Роль&amp;lt;/code&amp;gt; проекта. Получают их через &amp;lt;code&amp;gt;SystemAuthentication_t.GetUser()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;GetRole()&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;GetCurrentUser()&amp;lt;/code&amp;gt;. Типы допускают неявное приведение к &amp;lt;code&amp;gt;BasicNode_t@&amp;lt;/code&amp;gt; и явное приведение из &amp;lt;code&amp;gt;BasicNode_t@&amp;lt;/code&amp;gt; через &amp;lt;code&amp;gt;cast&amp;amp;lt;AuthUser_t&amp;amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;cast&amp;amp;lt;AuthRole_t&amp;amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
В текущем скриптовом API у этих типов зарегистрированы общие методы узла. Специализированные операции назначения ролей и изменения прав вызывают у &amp;lt;code&amp;gt;SystemAuthentication_t&amp;lt;/code&amp;gt;, а не как &amp;lt;code&amp;gt;user.AddRole()&amp;lt;/code&amp;gt; или &amp;lt;code&amp;gt;role.AddPrivilege()&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
C++-методы &amp;lt;code&amp;gt;AuthUser.GetRoles()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;PrivExists()&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;AuthRole.GetPrivs()&amp;lt;/code&amp;gt; напрямую в скрипте не зарегистрированы.&lt;br /&gt;
&lt;br /&gt;
=== Общий интерфейс узлов ===&lt;br /&gt;
&lt;br /&gt;
Следующий интерфейс доступен у &amp;lt;code&amp;gt;SystemAuthentication_t&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;AuthUser_t&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;AuthRole_t&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
string GetName()&lt;br /&gt;
string GetShortName()&lt;br /&gt;
string GetDescription()&lt;br /&gt;
string GetPath()&lt;br /&gt;
void SetName(string name)&lt;br /&gt;
void SetShortName(string shortname)&lt;br /&gt;
void SetDescription(string description)&lt;br /&gt;
NodeProperty@ GetProperty(string &amp;amp;in name)&lt;br /&gt;
bool PropertyValueUpdated(string &amp;amp;in name)&lt;br /&gt;
Result Start()&lt;br /&gt;
Result Stop()&lt;br /&gt;
EventProperty@ OnPropertyUpdated&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;OnPropertyUpdated&amp;lt;/code&amp;gt; — свойство события изменения свойства узла. Обработчик имеет сигнатуру &amp;lt;code&amp;gt;void EventPropertyCB(NodeProperty@ prop)&amp;lt;/code&amp;gt;. Подписка выполняется через &amp;lt;code&amp;gt;AddListener()&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;RemoveListener()&amp;lt;/code&amp;gt; или &amp;lt;code&amp;gt;+=&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;-=&amp;lt;/code&amp;gt;, как для других объектов &amp;lt;code&amp;gt;EventProperty&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Отдельных событий входа/выхода пользователя в текущей регистрации &amp;lt;code&amp;gt;SystemAuthentication_t&amp;lt;/code&amp;gt; нет. Не следует считать &amp;lt;code&amp;gt;OnPropertyUpdated&amp;lt;/code&amp;gt; специализированным событием завершения аутентификации.&lt;br /&gt;
&lt;br /&gt;
Жизненным циклом системы обычно управляет рантайм. Вызов &amp;lt;code&amp;gt;Start()&amp;lt;/code&amp;gt; системы также выполняет аутентификацию пользователя по умолчанию; ручной запуск не требуется для обычного использования &amp;lt;code&amp;gt;GetSystemAuthentication()&amp;lt;/code&amp;gt;.&lt;/div&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
	<entry>
		<id>https://docs.kb-agava.ru/index.php?title=%D0%A3%D0%BD%D0%B8%D0%B2%D0%B5%D1%80%D1%81%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D1%81%D1%80%D0%B5%D0%B4%D0%B0_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8_Agava&amp;diff=2497</id>
		<title>Универсальная среда разработки Agava</title>
		<link rel="alternate" type="text/html" href="https://docs.kb-agava.ru/index.php?title=%D0%A3%D0%BD%D0%B8%D0%B2%D0%B5%D1%80%D1%81%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D1%81%D1%80%D0%B5%D0%B4%D0%B0_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8_Agava&amp;diff=2497"/>
		<updated>2024-03-27T05:04:47Z</updated>

		<summary type="html">&lt;p&gt;Administrator: /* Дополнительные статьи и документы */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Универсальная среда разработки предназначена для создания и редактирования программного обеспечения для панелей оператора АГАВА ПО, многоканальных программируемых реле АГАВА МПР-60 и систем диспетчеризации на базе SCADA-системы AgavaSCADA.&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
Универсальная среда разработки Agava имеет удобный и эргономичный пользовательский интерфейс со всеми инструментами, необходимыми для создания эффективных проектов-приложений, предназначенных для исполнения на ПК, панелях оператора или персональных компьютерах.&lt;br /&gt;
&lt;br /&gt;
Среда разработки совмещает редакторы текста, редакторы визуальных представлений объектов, компоновщики структуры, средства связывания объектов и других частей проекта, анализаторы проекта в одном приложении и дает пользователю возможность ведения эффективной разработки проектов-приложений от начала и до завершения в одной программе, без использования разнородных приложений-утилит и необходимости переключения между ними.&lt;br /&gt;
&lt;br /&gt;
=== Версии программного обеспечения ===&lt;br /&gt;
{{Внимание|Текст=При использовании среды разработки совместно с панелями оператора АГАВА ПО или многоканальными программируемыми реле АГАВА МПР-60 необходимо использовать соответствующую версию среды разработки|Тип=Восклицание синий.png}}&lt;br /&gt;
Для определения подходящей версии среды разработки необходимо определить версию среды исполнения, установленной в панели оператора или реле. Тип и версия среды исполнения указаны в системной утилите прибора. Например, &amp;quot;AgavaPLC 1.1&amp;quot;, &amp;quot;AgavaPLC 1.2&amp;quot;  и т.д. Для использования со средой исполнения AgavaPLC 1.1 необходимо использовать среду разработки версии 1.1, для среды исполнения AgavaPLC 1.2 необходима среда разработки версии 1.2 и так далее.&lt;br /&gt;
&lt;br /&gt;
=== Дополнительные статьи и документы ===&lt;br /&gt;
*[[Узлы проекта AgavaSCADA/AgavaPLC|Описание узлов AgavaSCADA/AgavaPLC]].&lt;br /&gt;
*[[Свойства узлов в AgavaSCADA/AgavaPLC]].&lt;br /&gt;
*[[Коды ошибок и предупреждений AgavaPLC/AgavaSCADA]].&lt;br /&gt;
*[[Описание языка С++ в AgavaPLC|Описание языка С++ в AgavaSCADA/AgavaPLC]].&amp;lt;!-- Комментарий --&amp;gt;.&lt;br /&gt;
== Разработка проекта ==&lt;br /&gt;
&lt;br /&gt;
=== Создание нового проекта ===&lt;br /&gt;
Создание нового проекта в среде разработки осуществляется с помощью команды «Создать проект…» в меню «Файл». После вызова данной команды откроется диалоговое окно создания нового проекта (см. Рисунок 1).&lt;br /&gt;
[[Файл:AgavaPLC-Создание проекта.png|мини|Рисунок 1 - Окно &amp;quot;Создание нового проекта&amp;quot;]]&lt;br /&gt;
Для создания проекта необходимо в списке типов проектов выбрать необходимый, ввести имя проекта и путь для его сохранения, после чего нажать кнопку «Создать проект».&lt;br /&gt;
&lt;br /&gt;
Доступны несколько типов проектов:&lt;br /&gt;
&lt;br /&gt;
* «Пустой проект» – пустой проект, не содержащий никаких узлов. Можно использвоать для создания произвольного проекта &amp;quot;с нуля&amp;quot;.&lt;br /&gt;
* «Локальный проект» – предварительно настроенный проект, содержащий необходимые подсистемы и предназначенный для реализации простой системы для одного устройства, при выборе данного типа пользователь имеет возможность выбрать нужные ему подсистемы и получить полностью рабочий проект в минимальной конфигурации.&lt;br /&gt;
* «Проект АГАВА МПР-60» - проект, предназначенный для исполнения на контроллере АГАВА МПР-60.&lt;br /&gt;
&lt;br /&gt;
=== Редактирование существующего проекта ===&lt;br /&gt;
Редактирование существующего проекта начинается с открытия файла проекта путем вызова команды «Открыть…» в меню «Файл». После загрузки файла в основном окне среды разработки будут отображены свойства и параметры проекта (см. Рисунок 2).&lt;br /&gt;
[[Файл:AgavaPLC-Основное окно среды разработки.png|мини|Рисунок 2 – Основное окно среды разработки AgavaPLC с загруженным проектом]]&lt;br /&gt;
По умолчанию основное окно среды разработки содержит перечисленные ниже части:&lt;br /&gt;
&lt;br /&gt;
# Строка заголовка приложения, панель меню и панель инструментов.&lt;br /&gt;
# Окно дерева проекта. Предоставляет доступ ко всей структуре проекта (см. раздел [[#Описание узлов]]).&lt;br /&gt;
# Окно свойств (см. раздел [[#Редактирование свойств узлов]] ).&lt;br /&gt;
# Область для отображения содержимого, например графического представления окна или задачи ПЛК.&lt;br /&gt;
# Область вспомогательных окон (окна наблюдения, ошибок и сообщений)&lt;br /&gt;
&lt;br /&gt;
После открытия проекта можно приступить к его редактированию.&lt;br /&gt;
&lt;br /&gt;
По завершению всех операций по редактированию необходимо выполнить проверку проекта на корректность с помощью команды «Проверить проект», расположенной в меню «Проект» (см. 6.1). &lt;br /&gt;
&lt;br /&gt;
=== Структура и состав проекта ===&lt;br /&gt;
Типичный проект содержит следующие части:&lt;br /&gt;
&lt;br /&gt;
* станция – важнейший объект, управляющий работой собственных подсистем и осуществляющий обмен данными с другими станциями;&lt;br /&gt;
* транспортная подсистема, выполняющая сбор данных с УСО;&lt;br /&gt;
* подсистема визуализации, обеспечивающая отображение информации в различных видах.&lt;br /&gt;
&lt;br /&gt;
Проект также может содержать следующие части:&lt;br /&gt;
&lt;br /&gt;
* подсистема архивирования, сохраняющая данные в БД для последующего извлечения и анализа;&lt;br /&gt;
* подсистема проверки прав пользователей, предназначенная для контроля доступа пользователя к объектам в режиме исполнения;&lt;br /&gt;
* подсистема тревог, предназначенная для оповещения пользователя об обнаруженных нарушениях;&lt;br /&gt;
* подсистема журналирования, выполняющая архивирование зарегистрированных событий в БД для последующего извлечения и анализа.&lt;br /&gt;
&lt;br /&gt;
Проект имеет древовидную структуру, вследствие чего все узлы связаны друг с другом. Узлы нижних уровней подчиняются узлам верхних уровней. К примеру, станции подчинены все подсистемы, а каждой подсистеме подчинены все узлы, которыми она управляет.&lt;br /&gt;
&lt;br /&gt;
Описание всех частей проекта и их узлов приведено в разделе 4.&lt;br /&gt;
&lt;br /&gt;
=== Разработка программы ===&lt;br /&gt;
[[Файл:AgavaPLC-Добавление узла в проект.png|мини|Рисунок 3 – Добавление узла в проект AgavaPLC]]&lt;br /&gt;
Перед началом разработки рекомендуется проанализировать поставленную задачи и определить подсистемы, необходимые для её реализации. Взаимодействие с подсистемами осуществляется через дерево проекта (см. Рисунок 2), в которое добавляются нужные узлы. Для добавления нового узла, необходимо нажать правой кнопкой мыши на узел верхнего уровня, которому он подчинён, и выбрать в контекстном меню команду «Добавить узел».&lt;br /&gt;
&lt;br /&gt;
Основные части типовой программы и способы их реализации приведены ниже.&lt;br /&gt;
&lt;br /&gt;
==== Взаимодействие с внешними устройствами ====&lt;br /&gt;
Реализуется через подсистему «Транспорты» в окне дерева проекта. Необходимо добавить в нее нужные протоколы, в зависимости от имеющейся конфигурации контроллера.&lt;br /&gt;
[[Файл:AgavaPLC-Транспорты.png|мини|Рисунок 4 - Транспорты в дереве проекта AgavaPLC]]&lt;br /&gt;
# Транспорт для обмена с субмодулями контроллера (для контроллеров с корзиной субмодулей). В качестве порта транспорта необходимо указать “/dev/ttyS0”. В проекте для МПР-60 присутствует по-умолчанию.&lt;br /&gt;
# Транспорт последовательный (для управления по RS-232, RS-485 и т.д.).&lt;br /&gt;
# Транспорт TCP/IP (для управления по Ethernet).&lt;br /&gt;
&lt;br /&gt;
К транспортам присоединяются либо регистры Modbus, либо субмодули. Для регистра задается адрес устройства, номер регистра, функция чтения/записи и другие параметры, при необходимости. Для субмодуля указывается слот, в котором он установлен, и тип аналоговых входов/выходов. &lt;br /&gt;
&lt;br /&gt;
==== Визуализация данных ====&lt;br /&gt;
Визуализация данных технологических процессов реализуется с помощью элементов подсистемы «Визуализация».&lt;br /&gt;
&lt;br /&gt;
Система визуализации недоступна в проектах для  контроллеров МПР.&lt;br /&gt;
[[Файл:AgavaPLC-Пример визуализации.png|мини|Рисунок 5 - Пример визуализации]]&lt;br /&gt;
Визуализация содержит одно или несколько окон, описанных ниже.&lt;br /&gt;
&lt;br /&gt;
# Форма, которая может использоваться как меню или панель инструментов. Также применяется в небольших проектах, в которых нет необходимости изменения выводимого набора виджетов.&lt;br /&gt;
# Окно с композицией, которое позволяет переключаться между различными экранами (например мнемосхемой, настройками, архивированием и т.д). Каждый из этих экранов реализуется на отдельной композиции.&lt;br /&gt;
&lt;br /&gt;
Процесс создания визуализации начинается с добавления нужных окон в группу «Окна» в дереве проекта. В том случае, если используется окно с композицией, необходимо задать ему отображаемую композицию по умолчанию, перед этим добавив ее в группу «Композиции». Созданные окна нужно добавить к одному фрейму, указав их в соответствующем свойстве фрейма.&lt;br /&gt;
&lt;br /&gt;
Редактирование содержимого окна или композиции осуществляется в его графическом представлении (см. раздел [[#Редактирование графического представления узла]]).&lt;br /&gt;
&lt;br /&gt;
Более подробное описание подсистемы визуализации приведено в разделе [[#Подсистема визуализации]].&lt;br /&gt;
&lt;br /&gt;
==== Пользовательские алгоритмы ====&lt;br /&gt;
Реализовать нужные алгоритмы работы программы можно с помощью различных инструментов, которые выбираются в зависимости от сложности проектов и навыков программиста:&lt;br /&gt;
&lt;br /&gt;
# Операции в группе «Сигналы» – отдельные логические операции. В основном используются для небольших проектов, не требующих сложных методов управления;&lt;br /&gt;
# Задачи ПЛК – графическое программирование с помощью связывания между собой различных функциональных блоков. Подходит для больших проектов. Реализуется в узле «Задача ПЛК» группы «Задачи». Подробное описание приведено в разделе [[#Задача ПЛК]]'''.'''&lt;br /&gt;
# Скрипты С++ – текстовое программирование на языке высокого уровня. Подходит для больших проектов. Реализуется с помощью операций «Скрипт С++», расположенных в группе «Сигналы» или в задаче ПЛК. Описание реализации языка С++ приведено на странице [[Описание языка С++ в AgavaPLC]].&lt;br /&gt;
=== Редактирование свойств узлов ===&lt;br /&gt;
Среда разработки обладает развитыми возможностями по редактированию свойств узлов. Описание доступных типов свойств приведно в статье [[Свойства узлов в AgavaPLC/AgavaSCADA]].&lt;br /&gt;
&lt;br /&gt;
==== Редактирование свойств узлов с помощью окна «Свойства» ====&lt;br /&gt;
[[Файл:AgavaPLC-Окно &amp;quot;Свойства&amp;quot;.png|мини|Рисунок 6 – Окно «Свойства» виджета «Кнопка»]]&lt;br /&gt;
Редактирование свойств всех узлов осуществляется с помощью окна «Свойства».&lt;br /&gt;
&lt;br /&gt;
В окне «Свойства» в виде таблицы отображаются все доступные свойства узла, объединенные в группы. В левой колонке отображены наименования свойств, в правой отображены их значения. Свойства, недоступные для изменения, имеют наименование серого цвета. В нижней части окна расположена область подсказки, содержащая пояснение к выделенному свойству.&lt;br /&gt;
&lt;br /&gt;
===== Редактирование свойств группы узлов =====&lt;br /&gt;
В случае, когда необходимо изменить свойства у нескольких узлов, можно воспользоваться возможностью группового редактирования свойств. Для этого нужно выделить несколько узлов в дереве конфигурации либо на графическом представлении с помощью левой кнопки мыши и нажатой кнопки «Ctrl». При этом в окне свойств будут отображены только те свойства, что имеются у всех выделенных узлов. Далее можно изменить нужное свойство, при этом после завершения редактирования измененное значение будет установлено во всех выбранных узлах.&lt;br /&gt;
&lt;br /&gt;
==== Массовое редактирование свойств узлов ====&lt;br /&gt;
При необходимости редактирования разных свойств у большого количества узлов можно воспользоваться специальным окном «Список узлов».&lt;br /&gt;
[[Файл:AgavaPLC-Окно &amp;quot;Список узлов&amp;quot;.png|мини|Рисунок 7 - Окно &amp;quot;Список узлов&amp;quot;]]&lt;br /&gt;
Открытие окна выполняется с помощью вызова команды «Открыть список узлов» в контекстном меню дерева конфигурации. Открытое окно содержит все узлы, вложенные в выбранные при вызове команды.&lt;br /&gt;
&lt;br /&gt;
Окно позволяет редактировать свойства непосредственно в ячейках таблицы, без переключения на окно «Свойства». Групповое редактирование свойств узлов через окно «Свойства» также доступно.&lt;br /&gt;
&lt;br /&gt;
Щелчок правой кнопкой мыши на списке вызывает контекстное меню, содержащее команды:&lt;br /&gt;
&lt;br /&gt;
* “Свойства”;&lt;br /&gt;
* “Экспорт в *.txt”;&lt;br /&gt;
* “Импорт из *.txt”;&lt;br /&gt;
* “Удалить узел”.&lt;br /&gt;
&lt;br /&gt;
Команда «Свойства» открывает диалоговое окно выбора отображаемых свойств.&lt;br /&gt;
&lt;br /&gt;
Команды «Экспорт», «Импорт» выполняют экспорт списка свойств узлов в текстовый файл и импорт соответственно.&lt;br /&gt;
&lt;br /&gt;
Команда «Удалить узел» производит удаление выделенного узла (узлов).&lt;br /&gt;
&lt;br /&gt;
==== Функция групповой замены источников в узлах ====&lt;br /&gt;
При разработке сложных проектов может возникнуть необходимость заменить источники сразу в большом количестве узлов. Для этой цели используется функция групповой замены источников.  Необходимо перейти в редактирование свойств типа «Список источников», которое производится в соответствующем окне (см. Рисунок 8).&lt;br /&gt;
[[Файл:AgavaPLC-Окно редактирования свойств типа «Список источников».png|мини|Рисунок 8 - Окно редактирования свойств типа «Список источников»]]&lt;br /&gt;
Затем необходимо использовать функцию групповой замены (см. Рисунок 9), выделив нужные узлы, нажав на них правой кнопкой мыши и выбрав «Групповая замена».&lt;br /&gt;
[[Файл:AgavaPLC-Окно функции «Групповая замена».png|мини|Рисунок 9 - Окно функции «Групповая замена»]]&lt;br /&gt;
&lt;br /&gt;
=== Редактирование графического представления узла ===&lt;br /&gt;
Редактирование содержимого окон, слоев, форм, композиций и других элементов, предназначенных для отображения на экране, осуществляется в окне графического представления. Открытие окна возможно с помощью команды «Открыть графическое представление» в контекстном меню дерева конфигурации или двойного нажатия левой кнопки мыши для узлов следующих типов:&lt;br /&gt;
&lt;br /&gt;
* фрейм;&lt;br /&gt;
* форма;&lt;br /&gt;
* окно с композицией;&lt;br /&gt;
* слой.&lt;br /&gt;
&lt;br /&gt;
Открытое графическое представление выбранного узла может содержать все уже размещенные на нем элементы визуализации и (или) другие узлы и позволяет добавить новые.&lt;br /&gt;
[[Файл:AgavaPLC–Открытое графическое представление окна «winMain».png|мини|Рисунок 10 – Открытое графическое представление окна «winMain»]]&lt;br /&gt;
На рисунке 10 представлено графическое представление окна «winMain», обведенное пунктирной рамкой серого цвета, обозначающей внешнюю границу открытого узла. Тип рамки пользователь может выбрать по своему усмотрению, выбор производится в окне настроек среды разработки, доступном через команду «Настройки» в меню «Параметры».&lt;br /&gt;
&lt;br /&gt;
Щелчок правой кнопкой мыши на пустом месте в открытом графическом представлении узла вызывает контекстное меню, содержащее команды удаления и вставки виджетов из буфера обмена, а также команды добавления новых виджетов доступных типов.&lt;br /&gt;
&lt;br /&gt;
Добавление новых виджетов также может осуществлять путем их перестаскивания в рабочую область из панели виджетов.&lt;br /&gt;
&lt;br /&gt;
Графическое представление позволяет перемещать выделенные виджеты кнопками перемещения курсора на клавиатуре, а также изменять их размеры кнопками перемещения курсора при нажатой кнопке Shift.&lt;br /&gt;
&lt;br /&gt;
==== Связывание источников и виджетов ====&lt;br /&gt;
Связывание виджетов и других узлов с источниками данных необходимо для того, чтобы виджеты или другие узлы могли отображать или обрабатывать значения, хранящиеся в источниках.&lt;br /&gt;
&lt;br /&gt;
Для связи виджетов с источниками данных можно воспользоваться обычным способом связывания через окно «Свойства». К примеру, связывание размещенного на форме виджета «Текстовая метка» с регистром Modbus осуществляется добавлением регистра Modbus в свойство виджета «Источник».&lt;br /&gt;
&lt;br /&gt;
Вместе с обычным способом связывания существует и другой, более быстрый способ. Для быстрого связывания регистра с виджетом достаточно нажать на регистр в дереве конфигурации левой кнопкой мыши и перенести его на виджет в открытом графическом представлении.&lt;br /&gt;
[[Файл:AgavaPLC–Связывание узла «sourceModbusRegister0» и виджета.png|мини|Рисунок 11 – Связывание узла «sourceModbusRegister0» и виджета]]&lt;br /&gt;
При помещении курсора над виджетом последний будет заштрихован сеткой зеленого или красного цвета, а курсор изменит свой вид на стрелку с квадратиком (см. рисунок 11).&lt;br /&gt;
&lt;br /&gt;
Зеленая штриховка виджета означает отсутствие связи выделенного виджета с источником данных, в этом случае связывание будет произведено. Красная штриховка говорит об ошибках связывания виджета и сигнала/источника.&lt;br /&gt;
&lt;br /&gt;
==== Редактирование многослойных композиций ====&lt;br /&gt;
Редактирование многослойных композиций принципиально не отличается от редактирования форм, кроме одного нюанса. Так как композиция может состоять из нескольких слоев, и виджеты на слоях могут располагаться один над другим, для использования наиболее удобного способа редактирования такой композиции можно воспользоваться возможностью открытия каждого слоя в отдельном окне.&lt;br /&gt;
[[Файл:AgavaPLC–Пример структуры композиции «Composition1», состоящей из трех слоев.png|мини|Рисунок 12 – Пример структуры композиции «Composition1», состоящей из трех слоев]]&lt;br /&gt;
Для открытия графического представления слоя нужно воспользоваться командой «Открыть графическое представление» аналогично открытию графического представления формы или композиции.&lt;br /&gt;
&lt;br /&gt;
Открыв одновременно композицию и слой, при редактировании слоя можно видеть, что содержимое композиции также изменяется и наоборот, при редактировании композиции изображение слоя будет изменяться.&lt;br /&gt;
&lt;br /&gt;
Слой обладает важным свойством «Прозрачность для действий». Данное свойство позволяет регулировать доступность виджетов, расположенных на нижележащих слоях, для действий пользователя. Например, если у верхнего слоя данное свойство выключено, то виджеты, расположенные на всех нижележащих слоях, будут недоступны для взаимодействия. Если же у верхнего слоя свойство включено, то виджеты нижележащего слоя будут доступны.&lt;br /&gt;
&lt;br /&gt;
=== Сохранение проекта ===&lt;br /&gt;
Для сохранения проекта на диск вызовите команду  «Файл-&amp;gt;Сохранить проект» или «Файл-&amp;gt;Сохранить проект как...», если необходимо сделать копию открытого проекта и продолжить работу в ней после сохранения.&lt;br /&gt;
&lt;br /&gt;
== Проверка и отладка проекта ==&lt;br /&gt;
&lt;br /&gt;
=== Эмуляция проекта ===&lt;br /&gt;
Проверить работоспособность проекта можно, не загружая его в контроллер. Для этого существует возможность запустить среду исполнения прямо на компьютере. &lt;br /&gt;
&lt;br /&gt;
Для этого необходимо:&lt;br /&gt;
&lt;br /&gt;
# Установить текущий проект как проект по умолчанию. Для этого необходимо вызвать команду &amp;quot;Проект-&amp;gt;Установить проект по умолчанию...&amp;quot;  и выбрать ранее сохраненный файл конфигурации.&lt;br /&gt;
# Запустить среду исполнения. Для этого нужно вызвать команду меню &amp;quot;Проект-&amp;gt;Запуск среды исполнения&amp;quot;. После этого будет выполнен запуск в новом окне среды исполнения.&lt;br /&gt;
&lt;br /&gt;
=== Мониторинг сигналов ===&lt;br /&gt;
Для старта мониторинга сигналов необходимо запустить среду исполнения, затем вызвать команду меню «Устройство-&amp;gt;Подключение/отключение», в появившемся окне выбрать IP-адрес и порт устройства, значения узлов которого необходимо мониторить, и нажать кнопку «Подключение».&lt;br /&gt;
&lt;br /&gt;
При необходимости просмотра значений узлов и сигналов в режиме эмуляции проекта на персональном компьютере укажите адрес 127.0.0.1. Если необходимо просматривать значения узлов проекта, выполняющегося на контроллере или панели оператора, укажите IP-адрес контроллера или панели.&lt;br /&gt;
[[Файл:AgavaPLC–Окно &amp;quot;Наблюдение&amp;quot;.png|мини|Рисунок 14 – Окно &amp;quot;Наблюдение&amp;quot;]]&lt;br /&gt;
В окно наблюдения можно добавлять узлы, имеющие возможность чтения или записи значений – регистры Modbus, сигналы. Для этого необходимо нажать на нужном узле в дереве проекта правой кнопкой мыши и выбрать команду «Добавить в окно наблюдения». Выбранные узлы будут отображаться в окне «Наблюдение».&lt;br /&gt;
&lt;br /&gt;
=== Мониторинг событий ===&lt;br /&gt;
Для старта мониторинга необходимо подключиться к нужному устройству способом, рассмотренным в разделе [[#Мониторинг сигналов]], а затем нажать на кнопку «Просмотр событий».&lt;br /&gt;
[[Файл:AgavaPLC–Окно просмотра событий.png|мини|Рисунок 15 – Окно просмотра событий]]&lt;br /&gt;
В открывшемся окне будут выводиться все события, регистрируемые устройством. С помощью выпадающего списка в левом верхнем углу окна можно выбрать минимальный уровень выводимого события.&lt;br /&gt;
&lt;br /&gt;
=== Отладка в задаче ПЛК ===&lt;br /&gt;
Задача ПЛК (см. раздел [[#Задача ПЛК]]) позволяет проводить тестирование проектов с помощью режима симулятора (на компьютере, без использования контроллера) или онлайн отладки (на контроллере).&lt;br /&gt;
&lt;br /&gt;
==== Управление отладкой ====&lt;br /&gt;
Управление режимом симуляции и онлайн отладкой осуществляется с помощью панели инструментов задачи ПЛК (см. рисунок 16).&lt;br /&gt;
&lt;br /&gt;
Панель инструментов содержит следующие элементы:&lt;br /&gt;
&lt;br /&gt;
* Кнопка «Запустить симуляцию».&lt;br /&gt;
* Кнопка «Сделать шаг на один цикл».&lt;br /&gt;
* Кнопка «Приостановить симуляцию» - ставит выполнение задачи на паузу.&lt;br /&gt;
* Кнопка «Остановить симуляцию» - сбрасывает состояние всех блоков к их состоянию по умолчанию.&lt;br /&gt;
* Список выбора периода выполнения задачи.&lt;br /&gt;
* Кнопка «Показать окно «Наблюдение».&lt;br /&gt;
&lt;br /&gt;
==== Режим симулятора ====&lt;br /&gt;
Режим симулятора позволяет провести тестирование работы алгоритмов проекта на компьютере. С помощью симуляции можно выявить ошибки в работе алгоритмов проекта до его загрузки в контроллер.&lt;br /&gt;
&lt;br /&gt;
Управление симуляцией осуществляется через команды на панели инструментов задачи ПЛК.&lt;br /&gt;
&lt;br /&gt;
Для перехода в режим симуляции нажмите кнопку «Режим симулятора» на панели управления задачи ПЛК.&lt;br /&gt;
[[Файл:AgavaPLC-Панель инструментов задачи ПЛК.png|мини|Рисунок 16 - Панель инструментов задачи ПЛК]]&lt;br /&gt;
После активации режима симуляции, для изменения значения входа дважды щелкните на нем левой кнопкой мыши и выберите нужный тип и значение. Текущие значения всех блоков, в соответствии с работой программы, будут отображаться в реальном времени.&lt;br /&gt;
[[Файл:AgavaPLC–Вид блоков задачи в режиме симулятора.png|мини|Рисунок 17 – Вид блоков задачи в режиме симулятора]]&lt;br /&gt;
Для выхода из режима симуляции повторно нажмите кнопку «Режим симуляции» на панели управления задачи ПЛК.&lt;br /&gt;
&lt;br /&gt;
==== Онлайн отладка ====&lt;br /&gt;
Режим онлайн отладки позволяет провести тестирование проекта, загруженного и исполняемого в контроллере. Для перехода в режим онлайн отладки загрузите конфигурацию в контроллер, подключитесь к нему, после чего нажмите кнопку «Онлайн отладка» на панели инструментов задачи ПЛК.&lt;br /&gt;
[[Файл:AgavaPLC–Вид блоков задачи в режиме онлайн отладки.png|мини|Рисунок 18 – Вид блоков задачи в режиме онлайн отладки]]&lt;br /&gt;
На рисунке 18 изображен вид задачи ПЛК в режиме онлайн отладки проекта, запущенного на МПР-60 с установленными субмодулями DI (входы) и R (выходы).&lt;br /&gt;
&lt;br /&gt;
Для онлайн отладки на панели инструментов недоступны кнопка «Приостановить симуляцию» и список выбора периода.&lt;br /&gt;
&lt;br /&gt;
== Компиляция проекта ==&lt;br /&gt;
Перед загрузкой проекта в контроллер или запуском эмуляции проекта необходимо откомпилировать проект и получить файл конфигурации, предназначенный для исполнения средой исполнения, установленной в контроллере или на персональном компьютере (в случае разработки системы диспетчеризации). Для этого необходимо вызвать команду меню &amp;quot;Проект-&amp;gt;Сохранить конфигурацию&amp;quot;, выбрать папку проекта и нажать кнопку &amp;quot;Сохранить&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Проверка проекта ===&lt;br /&gt;
[[Файл:AgavaPLC–Окно «Ошибки».png|мини|Рисунок 19 – Окно «Ошибки»]]&lt;br /&gt;
Перед сохранением проекта желательно выполнить его проверку на наличие ошибок с помощью команды «Проект-&amp;gt;Проверить проект». После проверки обнаруженные ошибки будут отображены в окне «Ошибки».&lt;br /&gt;
&lt;br /&gt;
Если отображение окна «Ошибки» выключено, его можно включить командой «Вид-&amp;gt;Показать окно ошибок».&lt;br /&gt;
&lt;br /&gt;
Для облегчения исправления обнаруженных ошибок окно поддерживает выполнение некоторых команд над обнаруженными ошибками, вызывать которые можно из контекстного меню, отображаемого щелчком правой кнопки мыши на строке c ошибкой в окне. Контекстное меню позволяет вызывать команду «Показать узел в дереве конфигурации», выполняющую соответствующее действие.&lt;br /&gt;
&lt;br /&gt;
Также щелчок левой кнопкой мыши на строке с ошибкой открывает окно «Свойства» и дает возможность изменить в нем все свойства узла, содержащего ошибку.&lt;br /&gt;
&lt;br /&gt;
==== Установка пароля на файл конфигурации ====&lt;br /&gt;
[[Файл:AgavaPLC–Установка пароля.png|мини|Рисунок 13 – Установка пароля]]&lt;br /&gt;
Файл конфигурации, загружаемый в контроллер или панель оператора, можно защитить паролем, чтобы предотвратить его несанкционированное изменение.&lt;br /&gt;
&lt;br /&gt;
Для установки пароля на файл конфигурации необходимо выбрать в дереве проекта узел «Конфигурация» и отредактировать его свойство «Пароль». Допускается использование любых цифр, букв и спецсимволов.&lt;br /&gt;
&lt;br /&gt;
В дальнейшем при открытии файла конфигурации в среде разработки будет появляться окно с запросом пароля.&lt;br /&gt;
&lt;br /&gt;
== Загрузка проекта в устройство ==&lt;br /&gt;
Загрузка проекта в целевое устройство может быть осуществлена несколькими способами:&lt;br /&gt;
&lt;br /&gt;
* загрузка из среды разработки;&lt;br /&gt;
* загрузка с помощью USB-Flash накопителя (для панелей оператора);&lt;br /&gt;
* загрузка через браузер (для МПР-60).&lt;br /&gt;
&lt;br /&gt;
=== Загрузка из среды разработки ===&lt;br /&gt;
[[Файл:AgavaPLC–Окно «Загрузка проекта в устройство» после подключения к контроллеру.png|мини|Рисунок 20 – Окно «Загрузка проекта в устройство» после подключения к контроллеру]]&lt;br /&gt;
Для загрузки проекта из среды разработки необходимо произвести следующие действия в указанном порядке:&lt;br /&gt;
&lt;br /&gt;
# Создайте файл конфигурации.&lt;br /&gt;
# Выполните подключение целевого устройства к ПК по сети Ethernet.&lt;br /&gt;
# После подключения вызовите в среде разработки команду «Проект-&amp;gt;Загрузка проекта в устройство».&lt;br /&gt;
# В открывшемся окне будет отображен список файлов проекта, доступных для загрузки в целевое устройство.&lt;br /&gt;
# Выберите необходимые файлы и нажмите кнопку «Загрузить». После нажатия кнопки начнется процесс загрузки файлов, при этом в нижней части окна будет меняться состояние полосы прогресса, а также для каждого файла в таблице будет отображен результат загрузки.&lt;br /&gt;
# После окончания загрузки среда исполнения в целевом устройстве будет перезапущена и загруженный проект будет запущен.&lt;br /&gt;
&lt;br /&gt;
=== Загрузка через USB-Flash (для ПО-40 и ПО-50) ===&lt;br /&gt;
Для загрузки проекта в устройство с помощью USB-Flash накопителя необходимо произвести следующие действия в указанном порядке:&lt;br /&gt;
&lt;br /&gt;
# Подготовьте USB-Flash накопитель, предварительно отформатировав его в файловую систему FAT32.&lt;br /&gt;
# Вызовите в среде разработки команду «Подготовка архива для обновления» в меню «Проект».&lt;br /&gt;
# Сохраните архив в корень USB-Flash накопителя.&lt;br /&gt;
# Перейдите в системную утилиту, перезагрузив панель оператора, при загрузке во время однократного звукового сигнала нажмите на экран и удерживайте до повторного звукового сигнала. Введите пароль: 111111.&lt;br /&gt;
# Перейдите на вкладку «Обновление», затем подключите USB-Flash накопитель через переходник USB-OTG, выберите из списка загрузочный архив, нажать кнопку «Обновить». Дождитесь сообщения «Обновление успешно» и нажмите кнопку «ОК».&lt;br /&gt;
# Перейдите на вкладку «Перезапуск» и нажмите кнопку «Перезапуск».&lt;br /&gt;
После перезагрузки панели загруженный проект будет запущен.&lt;br /&gt;
&lt;br /&gt;
=== Загрузка через браузер (для МПР-60) ===&lt;br /&gt;
Для загрузки проекта через браузер необходимо произвести следующие действия в указанном порядке.&lt;br /&gt;
&lt;br /&gt;
# Вызовите в среде разработки команду «Подготовка архива для обновления» в меню «Проект».&lt;br /&gt;
# Сохраните архив.&lt;br /&gt;
# Откройте системную утилиту, введя IP-адрес контроллера в адресную строку браузера.&lt;br /&gt;
# Перейдите на вкладку «Загрузка ПО».  Рисунок 71 - Вкладка системной утилиты «Загрузка ПО»&lt;br /&gt;
# Выберите на компьютере архив с проектом, который необходимо загрузить в контроллер.&lt;br /&gt;
# Нажмите кнопку «Загрузить».&lt;br /&gt;
# Дождитесь окончания загрузки файла и обновления проекта.&lt;br /&gt;
&lt;br /&gt;
[[Категория:AgavaSCADA/AgavaPLC]]&lt;/div&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
	<entry>
		<id>https://docs.kb-agava.ru/index.php?title=%D0%A3%D0%BD%D0%B8%D0%B2%D0%B5%D1%80%D1%81%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D1%81%D1%80%D0%B5%D0%B4%D0%B0_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8_Agava&amp;diff=2496</id>
		<title>Универсальная среда разработки Agava</title>
		<link rel="alternate" type="text/html" href="https://docs.kb-agava.ru/index.php?title=%D0%A3%D0%BD%D0%B8%D0%B2%D0%B5%D1%80%D1%81%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D1%81%D1%80%D0%B5%D0%B4%D0%B0_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8_Agava&amp;diff=2496"/>
		<updated>2024-03-27T05:03:49Z</updated>

		<summary type="html">&lt;p&gt;Administrator: /* Дополнительные статьи и документы */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Универсальная среда разработки предназначена для создания и редактирования программного обеспечения для панелей оператора АГАВА ПО, многоканальных программируемых реле АГАВА МПР-60 и систем диспетчеризации на базе SCADA-системы AgavaSCADA.&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
Универсальная среда разработки Agava имеет удобный и эргономичный пользовательский интерфейс со всеми инструментами, необходимыми для создания эффективных проектов-приложений, предназначенных для исполнения на ПК, панелях оператора или персональных компьютерах.&lt;br /&gt;
&lt;br /&gt;
Среда разработки совмещает редакторы текста, редакторы визуальных представлений объектов, компоновщики структуры, средства связывания объектов и других частей проекта, анализаторы проекта в одном приложении и дает пользователю возможность ведения эффективной разработки проектов-приложений от начала и до завершения в одной программе, без использования разнородных приложений-утилит и необходимости переключения между ними.&lt;br /&gt;
&lt;br /&gt;
=== Версии программного обеспечения ===&lt;br /&gt;
{{Внимание|Текст=При использовании среды разработки совместно с панелями оператора АГАВА ПО или многоканальными программируемыми реле АГАВА МПР-60 необходимо использовать соответствующую версию среды разработки|Тип=Восклицание синий.png}}&lt;br /&gt;
Для определения подходящей версии среды разработки необходимо определить версию среды исполнения, установленной в панели оператора или реле. Тип и версия среды исполнения указаны в системной утилите прибора. Например, &amp;quot;AgavaPLC 1.1&amp;quot;, &amp;quot;AgavaPLC 1.2&amp;quot;  и т.д. Для использования со средой исполнения AgavaPLC 1.1 необходимо использовать среду разработки версии 1.1, для среды исполнения AgavaPLC 1.2 необходима среда разработки версии 1.2 и так далее.&lt;br /&gt;
&lt;br /&gt;
=== Дополнительные статьи и документы ===&lt;br /&gt;
*[[Узлы проекта AgavaSCADA/AgavaPLC|Описание узлов AgavaSCADA/AgavaPLC]].&lt;br /&gt;
*[[Свойства узлов в AgavaSCADA/AgavaPLC]].&lt;br /&gt;
*[[Коды ошибок и предупреждений AgavaPLC/AgavaSCADA]].&lt;br /&gt;
*[[Описание языка С++ в AgavaPLC]]&amp;lt;!-- Комментарий --&amp;gt;.&lt;br /&gt;
== Разработка проекта ==&lt;br /&gt;
&lt;br /&gt;
=== Создание нового проекта ===&lt;br /&gt;
Создание нового проекта в среде разработки осуществляется с помощью команды «Создать проект…» в меню «Файл». После вызова данной команды откроется диалоговое окно создания нового проекта (см. Рисунок 1).&lt;br /&gt;
[[Файл:AgavaPLC-Создание проекта.png|мини|Рисунок 1 - Окно &amp;quot;Создание нового проекта&amp;quot;]]&lt;br /&gt;
Для создания проекта необходимо в списке типов проектов выбрать необходимый, ввести имя проекта и путь для его сохранения, после чего нажать кнопку «Создать проект».&lt;br /&gt;
&lt;br /&gt;
Доступны несколько типов проектов:&lt;br /&gt;
&lt;br /&gt;
* «Пустой проект» – пустой проект, не содержащий никаких узлов. Можно использвоать для создания произвольного проекта &amp;quot;с нуля&amp;quot;.&lt;br /&gt;
* «Локальный проект» – предварительно настроенный проект, содержащий необходимые подсистемы и предназначенный для реализации простой системы для одного устройства, при выборе данного типа пользователь имеет возможность выбрать нужные ему подсистемы и получить полностью рабочий проект в минимальной конфигурации.&lt;br /&gt;
* «Проект АГАВА МПР-60» - проект, предназначенный для исполнения на контроллере АГАВА МПР-60.&lt;br /&gt;
&lt;br /&gt;
=== Редактирование существующего проекта ===&lt;br /&gt;
Редактирование существующего проекта начинается с открытия файла проекта путем вызова команды «Открыть…» в меню «Файл». После загрузки файла в основном окне среды разработки будут отображены свойства и параметры проекта (см. Рисунок 2).&lt;br /&gt;
[[Файл:AgavaPLC-Основное окно среды разработки.png|мини|Рисунок 2 – Основное окно среды разработки AgavaPLC с загруженным проектом]]&lt;br /&gt;
По умолчанию основное окно среды разработки содержит перечисленные ниже части:&lt;br /&gt;
&lt;br /&gt;
# Строка заголовка приложения, панель меню и панель инструментов.&lt;br /&gt;
# Окно дерева проекта. Предоставляет доступ ко всей структуре проекта (см. раздел [[#Описание узлов]]).&lt;br /&gt;
# Окно свойств (см. раздел [[#Редактирование свойств узлов]] ).&lt;br /&gt;
# Область для отображения содержимого, например графического представления окна или задачи ПЛК.&lt;br /&gt;
# Область вспомогательных окон (окна наблюдения, ошибок и сообщений)&lt;br /&gt;
&lt;br /&gt;
После открытия проекта можно приступить к его редактированию.&lt;br /&gt;
&lt;br /&gt;
По завершению всех операций по редактированию необходимо выполнить проверку проекта на корректность с помощью команды «Проверить проект», расположенной в меню «Проект» (см. 6.1). &lt;br /&gt;
&lt;br /&gt;
=== Структура и состав проекта ===&lt;br /&gt;
Типичный проект содержит следующие части:&lt;br /&gt;
&lt;br /&gt;
* станция – важнейший объект, управляющий работой собственных подсистем и осуществляющий обмен данными с другими станциями;&lt;br /&gt;
* транспортная подсистема, выполняющая сбор данных с УСО;&lt;br /&gt;
* подсистема визуализации, обеспечивающая отображение информации в различных видах.&lt;br /&gt;
&lt;br /&gt;
Проект также может содержать следующие части:&lt;br /&gt;
&lt;br /&gt;
* подсистема архивирования, сохраняющая данные в БД для последующего извлечения и анализа;&lt;br /&gt;
* подсистема проверки прав пользователей, предназначенная для контроля доступа пользователя к объектам в режиме исполнения;&lt;br /&gt;
* подсистема тревог, предназначенная для оповещения пользователя об обнаруженных нарушениях;&lt;br /&gt;
* подсистема журналирования, выполняющая архивирование зарегистрированных событий в БД для последующего извлечения и анализа.&lt;br /&gt;
&lt;br /&gt;
Проект имеет древовидную структуру, вследствие чего все узлы связаны друг с другом. Узлы нижних уровней подчиняются узлам верхних уровней. К примеру, станции подчинены все подсистемы, а каждой подсистеме подчинены все узлы, которыми она управляет.&lt;br /&gt;
&lt;br /&gt;
Описание всех частей проекта и их узлов приведено в разделе 4.&lt;br /&gt;
&lt;br /&gt;
=== Разработка программы ===&lt;br /&gt;
[[Файл:AgavaPLC-Добавление узла в проект.png|мини|Рисунок 3 – Добавление узла в проект AgavaPLC]]&lt;br /&gt;
Перед началом разработки рекомендуется проанализировать поставленную задачи и определить подсистемы, необходимые для её реализации. Взаимодействие с подсистемами осуществляется через дерево проекта (см. Рисунок 2), в которое добавляются нужные узлы. Для добавления нового узла, необходимо нажать правой кнопкой мыши на узел верхнего уровня, которому он подчинён, и выбрать в контекстном меню команду «Добавить узел».&lt;br /&gt;
&lt;br /&gt;
Основные части типовой программы и способы их реализации приведены ниже.&lt;br /&gt;
&lt;br /&gt;
==== Взаимодействие с внешними устройствами ====&lt;br /&gt;
Реализуется через подсистему «Транспорты» в окне дерева проекта. Необходимо добавить в нее нужные протоколы, в зависимости от имеющейся конфигурации контроллера.&lt;br /&gt;
[[Файл:AgavaPLC-Транспорты.png|мини|Рисунок 4 - Транспорты в дереве проекта AgavaPLC]]&lt;br /&gt;
# Транспорт для обмена с субмодулями контроллера (для контроллеров с корзиной субмодулей). В качестве порта транспорта необходимо указать “/dev/ttyS0”. В проекте для МПР-60 присутствует по-умолчанию.&lt;br /&gt;
# Транспорт последовательный (для управления по RS-232, RS-485 и т.д.).&lt;br /&gt;
# Транспорт TCP/IP (для управления по Ethernet).&lt;br /&gt;
&lt;br /&gt;
К транспортам присоединяются либо регистры Modbus, либо субмодули. Для регистра задается адрес устройства, номер регистра, функция чтения/записи и другие параметры, при необходимости. Для субмодуля указывается слот, в котором он установлен, и тип аналоговых входов/выходов. &lt;br /&gt;
&lt;br /&gt;
==== Визуализация данных ====&lt;br /&gt;
Визуализация данных технологических процессов реализуется с помощью элементов подсистемы «Визуализация».&lt;br /&gt;
&lt;br /&gt;
Система визуализации недоступна в проектах для  контроллеров МПР.&lt;br /&gt;
[[Файл:AgavaPLC-Пример визуализации.png|мини|Рисунок 5 - Пример визуализации]]&lt;br /&gt;
Визуализация содержит одно или несколько окон, описанных ниже.&lt;br /&gt;
&lt;br /&gt;
# Форма, которая может использоваться как меню или панель инструментов. Также применяется в небольших проектах, в которых нет необходимости изменения выводимого набора виджетов.&lt;br /&gt;
# Окно с композицией, которое позволяет переключаться между различными экранами (например мнемосхемой, настройками, архивированием и т.д). Каждый из этих экранов реализуется на отдельной композиции.&lt;br /&gt;
&lt;br /&gt;
Процесс создания визуализации начинается с добавления нужных окон в группу «Окна» в дереве проекта. В том случае, если используется окно с композицией, необходимо задать ему отображаемую композицию по умолчанию, перед этим добавив ее в группу «Композиции». Созданные окна нужно добавить к одному фрейму, указав их в соответствующем свойстве фрейма.&lt;br /&gt;
&lt;br /&gt;
Редактирование содержимого окна или композиции осуществляется в его графическом представлении (см. раздел [[#Редактирование графического представления узла]]).&lt;br /&gt;
&lt;br /&gt;
Более подробное описание подсистемы визуализации приведено в разделе [[#Подсистема визуализации]].&lt;br /&gt;
&lt;br /&gt;
==== Пользовательские алгоритмы ====&lt;br /&gt;
Реализовать нужные алгоритмы работы программы можно с помощью различных инструментов, которые выбираются в зависимости от сложности проектов и навыков программиста:&lt;br /&gt;
&lt;br /&gt;
# Операции в группе «Сигналы» – отдельные логические операции. В основном используются для небольших проектов, не требующих сложных методов управления;&lt;br /&gt;
# Задачи ПЛК – графическое программирование с помощью связывания между собой различных функциональных блоков. Подходит для больших проектов. Реализуется в узле «Задача ПЛК» группы «Задачи». Подробное описание приведено в разделе [[#Задача ПЛК]]'''.'''&lt;br /&gt;
# Скрипты С++ – текстовое программирование на языке высокого уровня. Подходит для больших проектов. Реализуется с помощью операций «Скрипт С++», расположенных в группе «Сигналы» или в задаче ПЛК. Описание реализации языка С++ приведено на странице [[Описание языка С++ в AgavaPLC]].&lt;br /&gt;
=== Редактирование свойств узлов ===&lt;br /&gt;
Среда разработки обладает развитыми возможностями по редактированию свойств узлов. Описание доступных типов свойств приведно в статье [[Свойства узлов в AgavaPLC/AgavaSCADA]].&lt;br /&gt;
&lt;br /&gt;
==== Редактирование свойств узлов с помощью окна «Свойства» ====&lt;br /&gt;
[[Файл:AgavaPLC-Окно &amp;quot;Свойства&amp;quot;.png|мини|Рисунок 6 – Окно «Свойства» виджета «Кнопка»]]&lt;br /&gt;
Редактирование свойств всех узлов осуществляется с помощью окна «Свойства».&lt;br /&gt;
&lt;br /&gt;
В окне «Свойства» в виде таблицы отображаются все доступные свойства узла, объединенные в группы. В левой колонке отображены наименования свойств, в правой отображены их значения. Свойства, недоступные для изменения, имеют наименование серого цвета. В нижней части окна расположена область подсказки, содержащая пояснение к выделенному свойству.&lt;br /&gt;
&lt;br /&gt;
===== Редактирование свойств группы узлов =====&lt;br /&gt;
В случае, когда необходимо изменить свойства у нескольких узлов, можно воспользоваться возможностью группового редактирования свойств. Для этого нужно выделить несколько узлов в дереве конфигурации либо на графическом представлении с помощью левой кнопки мыши и нажатой кнопки «Ctrl». При этом в окне свойств будут отображены только те свойства, что имеются у всех выделенных узлов. Далее можно изменить нужное свойство, при этом после завершения редактирования измененное значение будет установлено во всех выбранных узлах.&lt;br /&gt;
&lt;br /&gt;
==== Массовое редактирование свойств узлов ====&lt;br /&gt;
При необходимости редактирования разных свойств у большого количества узлов можно воспользоваться специальным окном «Список узлов».&lt;br /&gt;
[[Файл:AgavaPLC-Окно &amp;quot;Список узлов&amp;quot;.png|мини|Рисунок 7 - Окно &amp;quot;Список узлов&amp;quot;]]&lt;br /&gt;
Открытие окна выполняется с помощью вызова команды «Открыть список узлов» в контекстном меню дерева конфигурации. Открытое окно содержит все узлы, вложенные в выбранные при вызове команды.&lt;br /&gt;
&lt;br /&gt;
Окно позволяет редактировать свойства непосредственно в ячейках таблицы, без переключения на окно «Свойства». Групповое редактирование свойств узлов через окно «Свойства» также доступно.&lt;br /&gt;
&lt;br /&gt;
Щелчок правой кнопкой мыши на списке вызывает контекстное меню, содержащее команды:&lt;br /&gt;
&lt;br /&gt;
* “Свойства”;&lt;br /&gt;
* “Экспорт в *.txt”;&lt;br /&gt;
* “Импорт из *.txt”;&lt;br /&gt;
* “Удалить узел”.&lt;br /&gt;
&lt;br /&gt;
Команда «Свойства» открывает диалоговое окно выбора отображаемых свойств.&lt;br /&gt;
&lt;br /&gt;
Команды «Экспорт», «Импорт» выполняют экспорт списка свойств узлов в текстовый файл и импорт соответственно.&lt;br /&gt;
&lt;br /&gt;
Команда «Удалить узел» производит удаление выделенного узла (узлов).&lt;br /&gt;
&lt;br /&gt;
==== Функция групповой замены источников в узлах ====&lt;br /&gt;
При разработке сложных проектов может возникнуть необходимость заменить источники сразу в большом количестве узлов. Для этой цели используется функция групповой замены источников.  Необходимо перейти в редактирование свойств типа «Список источников», которое производится в соответствующем окне (см. Рисунок 8).&lt;br /&gt;
[[Файл:AgavaPLC-Окно редактирования свойств типа «Список источников».png|мини|Рисунок 8 - Окно редактирования свойств типа «Список источников»]]&lt;br /&gt;
Затем необходимо использовать функцию групповой замены (см. Рисунок 9), выделив нужные узлы, нажав на них правой кнопкой мыши и выбрав «Групповая замена».&lt;br /&gt;
[[Файл:AgavaPLC-Окно функции «Групповая замена».png|мини|Рисунок 9 - Окно функции «Групповая замена»]]&lt;br /&gt;
&lt;br /&gt;
=== Редактирование графического представления узла ===&lt;br /&gt;
Редактирование содержимого окон, слоев, форм, композиций и других элементов, предназначенных для отображения на экране, осуществляется в окне графического представления. Открытие окна возможно с помощью команды «Открыть графическое представление» в контекстном меню дерева конфигурации или двойного нажатия левой кнопки мыши для узлов следующих типов:&lt;br /&gt;
&lt;br /&gt;
* фрейм;&lt;br /&gt;
* форма;&lt;br /&gt;
* окно с композицией;&lt;br /&gt;
* слой.&lt;br /&gt;
&lt;br /&gt;
Открытое графическое представление выбранного узла может содержать все уже размещенные на нем элементы визуализации и (или) другие узлы и позволяет добавить новые.&lt;br /&gt;
[[Файл:AgavaPLC–Открытое графическое представление окна «winMain».png|мини|Рисунок 10 – Открытое графическое представление окна «winMain»]]&lt;br /&gt;
На рисунке 10 представлено графическое представление окна «winMain», обведенное пунктирной рамкой серого цвета, обозначающей внешнюю границу открытого узла. Тип рамки пользователь может выбрать по своему усмотрению, выбор производится в окне настроек среды разработки, доступном через команду «Настройки» в меню «Параметры».&lt;br /&gt;
&lt;br /&gt;
Щелчок правой кнопкой мыши на пустом месте в открытом графическом представлении узла вызывает контекстное меню, содержащее команды удаления и вставки виджетов из буфера обмена, а также команды добавления новых виджетов доступных типов.&lt;br /&gt;
&lt;br /&gt;
Добавление новых виджетов также может осуществлять путем их перестаскивания в рабочую область из панели виджетов.&lt;br /&gt;
&lt;br /&gt;
Графическое представление позволяет перемещать выделенные виджеты кнопками перемещения курсора на клавиатуре, а также изменять их размеры кнопками перемещения курсора при нажатой кнопке Shift.&lt;br /&gt;
&lt;br /&gt;
==== Связывание источников и виджетов ====&lt;br /&gt;
Связывание виджетов и других узлов с источниками данных необходимо для того, чтобы виджеты или другие узлы могли отображать или обрабатывать значения, хранящиеся в источниках.&lt;br /&gt;
&lt;br /&gt;
Для связи виджетов с источниками данных можно воспользоваться обычным способом связывания через окно «Свойства». К примеру, связывание размещенного на форме виджета «Текстовая метка» с регистром Modbus осуществляется добавлением регистра Modbus в свойство виджета «Источник».&lt;br /&gt;
&lt;br /&gt;
Вместе с обычным способом связывания существует и другой, более быстрый способ. Для быстрого связывания регистра с виджетом достаточно нажать на регистр в дереве конфигурации левой кнопкой мыши и перенести его на виджет в открытом графическом представлении.&lt;br /&gt;
[[Файл:AgavaPLC–Связывание узла «sourceModbusRegister0» и виджета.png|мини|Рисунок 11 – Связывание узла «sourceModbusRegister0» и виджета]]&lt;br /&gt;
При помещении курсора над виджетом последний будет заштрихован сеткой зеленого или красного цвета, а курсор изменит свой вид на стрелку с квадратиком (см. рисунок 11).&lt;br /&gt;
&lt;br /&gt;
Зеленая штриховка виджета означает отсутствие связи выделенного виджета с источником данных, в этом случае связывание будет произведено. Красная штриховка говорит об ошибках связывания виджета и сигнала/источника.&lt;br /&gt;
&lt;br /&gt;
==== Редактирование многослойных композиций ====&lt;br /&gt;
Редактирование многослойных композиций принципиально не отличается от редактирования форм, кроме одного нюанса. Так как композиция может состоять из нескольких слоев, и виджеты на слоях могут располагаться один над другим, для использования наиболее удобного способа редактирования такой композиции можно воспользоваться возможностью открытия каждого слоя в отдельном окне.&lt;br /&gt;
[[Файл:AgavaPLC–Пример структуры композиции «Composition1», состоящей из трех слоев.png|мини|Рисунок 12 – Пример структуры композиции «Composition1», состоящей из трех слоев]]&lt;br /&gt;
Для открытия графического представления слоя нужно воспользоваться командой «Открыть графическое представление» аналогично открытию графического представления формы или композиции.&lt;br /&gt;
&lt;br /&gt;
Открыв одновременно композицию и слой, при редактировании слоя можно видеть, что содержимое композиции также изменяется и наоборот, при редактировании композиции изображение слоя будет изменяться.&lt;br /&gt;
&lt;br /&gt;
Слой обладает важным свойством «Прозрачность для действий». Данное свойство позволяет регулировать доступность виджетов, расположенных на нижележащих слоях, для действий пользователя. Например, если у верхнего слоя данное свойство выключено, то виджеты, расположенные на всех нижележащих слоях, будут недоступны для взаимодействия. Если же у верхнего слоя свойство включено, то виджеты нижележащего слоя будут доступны.&lt;br /&gt;
&lt;br /&gt;
=== Сохранение проекта ===&lt;br /&gt;
Для сохранения проекта на диск вызовите команду  «Файл-&amp;gt;Сохранить проект» или «Файл-&amp;gt;Сохранить проект как...», если необходимо сделать копию открытого проекта и продолжить работу в ней после сохранения.&lt;br /&gt;
&lt;br /&gt;
== Проверка и отладка проекта ==&lt;br /&gt;
&lt;br /&gt;
=== Эмуляция проекта ===&lt;br /&gt;
Проверить работоспособность проекта можно, не загружая его в контроллер. Для этого существует возможность запустить среду исполнения прямо на компьютере. &lt;br /&gt;
&lt;br /&gt;
Для этого необходимо:&lt;br /&gt;
&lt;br /&gt;
# Установить текущий проект как проект по умолчанию. Для этого необходимо вызвать команду &amp;quot;Проект-&amp;gt;Установить проект по умолчанию...&amp;quot;  и выбрать ранее сохраненный файл конфигурации.&lt;br /&gt;
# Запустить среду исполнения. Для этого нужно вызвать команду меню &amp;quot;Проект-&amp;gt;Запуск среды исполнения&amp;quot;. После этого будет выполнен запуск в новом окне среды исполнения.&lt;br /&gt;
&lt;br /&gt;
=== Мониторинг сигналов ===&lt;br /&gt;
Для старта мониторинга сигналов необходимо запустить среду исполнения, затем вызвать команду меню «Устройство-&amp;gt;Подключение/отключение», в появившемся окне выбрать IP-адрес и порт устройства, значения узлов которого необходимо мониторить, и нажать кнопку «Подключение».&lt;br /&gt;
&lt;br /&gt;
При необходимости просмотра значений узлов и сигналов в режиме эмуляции проекта на персональном компьютере укажите адрес 127.0.0.1. Если необходимо просматривать значения узлов проекта, выполняющегося на контроллере или панели оператора, укажите IP-адрес контроллера или панели.&lt;br /&gt;
[[Файл:AgavaPLC–Окно &amp;quot;Наблюдение&amp;quot;.png|мини|Рисунок 14 – Окно &amp;quot;Наблюдение&amp;quot;]]&lt;br /&gt;
В окно наблюдения можно добавлять узлы, имеющие возможность чтения или записи значений – регистры Modbus, сигналы. Для этого необходимо нажать на нужном узле в дереве проекта правой кнопкой мыши и выбрать команду «Добавить в окно наблюдения». Выбранные узлы будут отображаться в окне «Наблюдение».&lt;br /&gt;
&lt;br /&gt;
=== Мониторинг событий ===&lt;br /&gt;
Для старта мониторинга необходимо подключиться к нужному устройству способом, рассмотренным в разделе [[#Мониторинг сигналов]], а затем нажать на кнопку «Просмотр событий».&lt;br /&gt;
[[Файл:AgavaPLC–Окно просмотра событий.png|мини|Рисунок 15 – Окно просмотра событий]]&lt;br /&gt;
В открывшемся окне будут выводиться все события, регистрируемые устройством. С помощью выпадающего списка в левом верхнем углу окна можно выбрать минимальный уровень выводимого события.&lt;br /&gt;
&lt;br /&gt;
=== Отладка в задаче ПЛК ===&lt;br /&gt;
Задача ПЛК (см. раздел [[#Задача ПЛК]]) позволяет проводить тестирование проектов с помощью режима симулятора (на компьютере, без использования контроллера) или онлайн отладки (на контроллере).&lt;br /&gt;
&lt;br /&gt;
==== Управление отладкой ====&lt;br /&gt;
Управление режимом симуляции и онлайн отладкой осуществляется с помощью панели инструментов задачи ПЛК (см. рисунок 16).&lt;br /&gt;
&lt;br /&gt;
Панель инструментов содержит следующие элементы:&lt;br /&gt;
&lt;br /&gt;
* Кнопка «Запустить симуляцию».&lt;br /&gt;
* Кнопка «Сделать шаг на один цикл».&lt;br /&gt;
* Кнопка «Приостановить симуляцию» - ставит выполнение задачи на паузу.&lt;br /&gt;
* Кнопка «Остановить симуляцию» - сбрасывает состояние всех блоков к их состоянию по умолчанию.&lt;br /&gt;
* Список выбора периода выполнения задачи.&lt;br /&gt;
* Кнопка «Показать окно «Наблюдение».&lt;br /&gt;
&lt;br /&gt;
==== Режим симулятора ====&lt;br /&gt;
Режим симулятора позволяет провести тестирование работы алгоритмов проекта на компьютере. С помощью симуляции можно выявить ошибки в работе алгоритмов проекта до его загрузки в контроллер.&lt;br /&gt;
&lt;br /&gt;
Управление симуляцией осуществляется через команды на панели инструментов задачи ПЛК.&lt;br /&gt;
&lt;br /&gt;
Для перехода в режим симуляции нажмите кнопку «Режим симулятора» на панели управления задачи ПЛК.&lt;br /&gt;
[[Файл:AgavaPLC-Панель инструментов задачи ПЛК.png|мини|Рисунок 16 - Панель инструментов задачи ПЛК]]&lt;br /&gt;
После активации режима симуляции, для изменения значения входа дважды щелкните на нем левой кнопкой мыши и выберите нужный тип и значение. Текущие значения всех блоков, в соответствии с работой программы, будут отображаться в реальном времени.&lt;br /&gt;
[[Файл:AgavaPLC–Вид блоков задачи в режиме симулятора.png|мини|Рисунок 17 – Вид блоков задачи в режиме симулятора]]&lt;br /&gt;
Для выхода из режима симуляции повторно нажмите кнопку «Режим симуляции» на панели управления задачи ПЛК.&lt;br /&gt;
&lt;br /&gt;
==== Онлайн отладка ====&lt;br /&gt;
Режим онлайн отладки позволяет провести тестирование проекта, загруженного и исполняемого в контроллере. Для перехода в режим онлайн отладки загрузите конфигурацию в контроллер, подключитесь к нему, после чего нажмите кнопку «Онлайн отладка» на панели инструментов задачи ПЛК.&lt;br /&gt;
[[Файл:AgavaPLC–Вид блоков задачи в режиме онлайн отладки.png|мини|Рисунок 18 – Вид блоков задачи в режиме онлайн отладки]]&lt;br /&gt;
На рисунке 18 изображен вид задачи ПЛК в режиме онлайн отладки проекта, запущенного на МПР-60 с установленными субмодулями DI (входы) и R (выходы).&lt;br /&gt;
&lt;br /&gt;
Для онлайн отладки на панели инструментов недоступны кнопка «Приостановить симуляцию» и список выбора периода.&lt;br /&gt;
&lt;br /&gt;
== Компиляция проекта ==&lt;br /&gt;
Перед загрузкой проекта в контроллер или запуском эмуляции проекта необходимо откомпилировать проект и получить файл конфигурации, предназначенный для исполнения средой исполнения, установленной в контроллере или на персональном компьютере (в случае разработки системы диспетчеризации). Для этого необходимо вызвать команду меню &amp;quot;Проект-&amp;gt;Сохранить конфигурацию&amp;quot;, выбрать папку проекта и нажать кнопку &amp;quot;Сохранить&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Проверка проекта ===&lt;br /&gt;
[[Файл:AgavaPLC–Окно «Ошибки».png|мини|Рисунок 19 – Окно «Ошибки»]]&lt;br /&gt;
Перед сохранением проекта желательно выполнить его проверку на наличие ошибок с помощью команды «Проект-&amp;gt;Проверить проект». После проверки обнаруженные ошибки будут отображены в окне «Ошибки».&lt;br /&gt;
&lt;br /&gt;
Если отображение окна «Ошибки» выключено, его можно включить командой «Вид-&amp;gt;Показать окно ошибок».&lt;br /&gt;
&lt;br /&gt;
Для облегчения исправления обнаруженных ошибок окно поддерживает выполнение некоторых команд над обнаруженными ошибками, вызывать которые можно из контекстного меню, отображаемого щелчком правой кнопки мыши на строке c ошибкой в окне. Контекстное меню позволяет вызывать команду «Показать узел в дереве конфигурации», выполняющую соответствующее действие.&lt;br /&gt;
&lt;br /&gt;
Также щелчок левой кнопкой мыши на строке с ошибкой открывает окно «Свойства» и дает возможность изменить в нем все свойства узла, содержащего ошибку.&lt;br /&gt;
&lt;br /&gt;
==== Установка пароля на файл конфигурации ====&lt;br /&gt;
[[Файл:AgavaPLC–Установка пароля.png|мини|Рисунок 13 – Установка пароля]]&lt;br /&gt;
Файл конфигурации, загружаемый в контроллер или панель оператора, можно защитить паролем, чтобы предотвратить его несанкционированное изменение.&lt;br /&gt;
&lt;br /&gt;
Для установки пароля на файл конфигурации необходимо выбрать в дереве проекта узел «Конфигурация» и отредактировать его свойство «Пароль». Допускается использование любых цифр, букв и спецсимволов.&lt;br /&gt;
&lt;br /&gt;
В дальнейшем при открытии файла конфигурации в среде разработки будет появляться окно с запросом пароля.&lt;br /&gt;
&lt;br /&gt;
== Загрузка проекта в устройство ==&lt;br /&gt;
Загрузка проекта в целевое устройство может быть осуществлена несколькими способами:&lt;br /&gt;
&lt;br /&gt;
* загрузка из среды разработки;&lt;br /&gt;
* загрузка с помощью USB-Flash накопителя (для панелей оператора);&lt;br /&gt;
* загрузка через браузер (для МПР-60).&lt;br /&gt;
&lt;br /&gt;
=== Загрузка из среды разработки ===&lt;br /&gt;
[[Файл:AgavaPLC–Окно «Загрузка проекта в устройство» после подключения к контроллеру.png|мини|Рисунок 20 – Окно «Загрузка проекта в устройство» после подключения к контроллеру]]&lt;br /&gt;
Для загрузки проекта из среды разработки необходимо произвести следующие действия в указанном порядке:&lt;br /&gt;
&lt;br /&gt;
# Создайте файл конфигурации.&lt;br /&gt;
# Выполните подключение целевого устройства к ПК по сети Ethernet.&lt;br /&gt;
# После подключения вызовите в среде разработки команду «Проект-&amp;gt;Загрузка проекта в устройство».&lt;br /&gt;
# В открывшемся окне будет отображен список файлов проекта, доступных для загрузки в целевое устройство.&lt;br /&gt;
# Выберите необходимые файлы и нажмите кнопку «Загрузить». После нажатия кнопки начнется процесс загрузки файлов, при этом в нижней части окна будет меняться состояние полосы прогресса, а также для каждого файла в таблице будет отображен результат загрузки.&lt;br /&gt;
# После окончания загрузки среда исполнения в целевом устройстве будет перезапущена и загруженный проект будет запущен.&lt;br /&gt;
&lt;br /&gt;
=== Загрузка через USB-Flash (для ПО-40 и ПО-50) ===&lt;br /&gt;
Для загрузки проекта в устройство с помощью USB-Flash накопителя необходимо произвести следующие действия в указанном порядке:&lt;br /&gt;
&lt;br /&gt;
# Подготовьте USB-Flash накопитель, предварительно отформатировав его в файловую систему FAT32.&lt;br /&gt;
# Вызовите в среде разработки команду «Подготовка архива для обновления» в меню «Проект».&lt;br /&gt;
# Сохраните архив в корень USB-Flash накопителя.&lt;br /&gt;
# Перейдите в системную утилиту, перезагрузив панель оператора, при загрузке во время однократного звукового сигнала нажмите на экран и удерживайте до повторного звукового сигнала. Введите пароль: 111111.&lt;br /&gt;
# Перейдите на вкладку «Обновление», затем подключите USB-Flash накопитель через переходник USB-OTG, выберите из списка загрузочный архив, нажать кнопку «Обновить». Дождитесь сообщения «Обновление успешно» и нажмите кнопку «ОК».&lt;br /&gt;
# Перейдите на вкладку «Перезапуск» и нажмите кнопку «Перезапуск».&lt;br /&gt;
После перезагрузки панели загруженный проект будет запущен.&lt;br /&gt;
&lt;br /&gt;
=== Загрузка через браузер (для МПР-60) ===&lt;br /&gt;
Для загрузки проекта через браузер необходимо произвести следующие действия в указанном порядке.&lt;br /&gt;
&lt;br /&gt;
# Вызовите в среде разработки команду «Подготовка архива для обновления» в меню «Проект».&lt;br /&gt;
# Сохраните архив.&lt;br /&gt;
# Откройте системную утилиту, введя IP-адрес контроллера в адресную строку браузера.&lt;br /&gt;
# Перейдите на вкладку «Загрузка ПО».  Рисунок 71 - Вкладка системной утилиты «Загрузка ПО»&lt;br /&gt;
# Выберите на компьютере архив с проектом, который необходимо загрузить в контроллер.&lt;br /&gt;
# Нажмите кнопку «Загрузить».&lt;br /&gt;
# Дождитесь окончания загрузки файла и обновления проекта.&lt;br /&gt;
&lt;br /&gt;
[[Категория:AgavaSCADA/AgavaPLC]]&lt;/div&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
	<entry>
		<id>https://docs.kb-agava.ru/index.php?title=%D0%A3%D0%BD%D0%B8%D0%B2%D0%B5%D1%80%D1%81%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D1%81%D1%80%D0%B5%D0%B4%D0%B0_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8_Agava&amp;diff=2495</id>
		<title>Универсальная среда разработки Agava</title>
		<link rel="alternate" type="text/html" href="https://docs.kb-agava.ru/index.php?title=%D0%A3%D0%BD%D0%B8%D0%B2%D0%B5%D1%80%D1%81%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D1%81%D1%80%D0%B5%D0%B4%D0%B0_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8_Agava&amp;diff=2495"/>
		<updated>2024-03-27T05:03:25Z</updated>

		<summary type="html">&lt;p&gt;Administrator: /* Дополнительные статьи и документы */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Универсальная среда разработки предназначена для создания и редактирования программного обеспечения для панелей оператора АГАВА ПО, многоканальных программируемых реле АГАВА МПР-60 и систем диспетчеризации на базе SCADA-системы AgavaSCADA.&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
Универсальная среда разработки Agava имеет удобный и эргономичный пользовательский интерфейс со всеми инструментами, необходимыми для создания эффективных проектов-приложений, предназначенных для исполнения на ПК, панелях оператора или персональных компьютерах.&lt;br /&gt;
&lt;br /&gt;
Среда разработки совмещает редакторы текста, редакторы визуальных представлений объектов, компоновщики структуры, средства связывания объектов и других частей проекта, анализаторы проекта в одном приложении и дает пользователю возможность ведения эффективной разработки проектов-приложений от начала и до завершения в одной программе, без использования разнородных приложений-утилит и необходимости переключения между ними.&lt;br /&gt;
&lt;br /&gt;
=== Версии программного обеспечения ===&lt;br /&gt;
{{Внимание|Текст=При использовании среды разработки совместно с панелями оператора АГАВА ПО или многоканальными программируемыми реле АГАВА МПР-60 необходимо использовать соответствующую версию среды разработки|Тип=Восклицание синий.png}}&lt;br /&gt;
Для определения подходящей версии среды разработки необходимо определить версию среды исполнения, установленной в панели оператора или реле. Тип и версия среды исполнения указаны в системной утилите прибора. Например, &amp;quot;AgavaPLC 1.1&amp;quot;, &amp;quot;AgavaPLC 1.2&amp;quot;  и т.д. Для использования со средой исполнения AgavaPLC 1.1 необходимо использовать среду разработки версии 1.1, для среды исполнения AgavaPLC 1.2 необходима среда разработки версии 1.2 и так далее.&lt;br /&gt;
&lt;br /&gt;
=== Дополнительные статьи и документы ===&lt;br /&gt;
*[[Узлы проекта AgavaSCADA/AgavaPLC|Описание узлов AgavaSCADA/AgavaPLC]].&lt;br /&gt;
*[[Свойства узлов в AgavaSCADA/AgavaPLC|Свойства узлов в AgavaPLC/AgavaSCADA]].&lt;br /&gt;
*[[Коды ошибок и предупреждений AgavaPLC/AgavaSCADA]].&lt;br /&gt;
*[[Описание языка С++ в AgavaPLC]]&amp;lt;!-- Комментарий --&amp;gt;.&lt;br /&gt;
== Разработка проекта ==&lt;br /&gt;
&lt;br /&gt;
=== Создание нового проекта ===&lt;br /&gt;
Создание нового проекта в среде разработки осуществляется с помощью команды «Создать проект…» в меню «Файл». После вызова данной команды откроется диалоговое окно создания нового проекта (см. Рисунок 1).&lt;br /&gt;
[[Файл:AgavaPLC-Создание проекта.png|мини|Рисунок 1 - Окно &amp;quot;Создание нового проекта&amp;quot;]]&lt;br /&gt;
Для создания проекта необходимо в списке типов проектов выбрать необходимый, ввести имя проекта и путь для его сохранения, после чего нажать кнопку «Создать проект».&lt;br /&gt;
&lt;br /&gt;
Доступны несколько типов проектов:&lt;br /&gt;
&lt;br /&gt;
* «Пустой проект» – пустой проект, не содержащий никаких узлов. Можно использвоать для создания произвольного проекта &amp;quot;с нуля&amp;quot;.&lt;br /&gt;
* «Локальный проект» – предварительно настроенный проект, содержащий необходимые подсистемы и предназначенный для реализации простой системы для одного устройства, при выборе данного типа пользователь имеет возможность выбрать нужные ему подсистемы и получить полностью рабочий проект в минимальной конфигурации.&lt;br /&gt;
* «Проект АГАВА МПР-60» - проект, предназначенный для исполнения на контроллере АГАВА МПР-60.&lt;br /&gt;
&lt;br /&gt;
=== Редактирование существующего проекта ===&lt;br /&gt;
Редактирование существующего проекта начинается с открытия файла проекта путем вызова команды «Открыть…» в меню «Файл». После загрузки файла в основном окне среды разработки будут отображены свойства и параметры проекта (см. Рисунок 2).&lt;br /&gt;
[[Файл:AgavaPLC-Основное окно среды разработки.png|мини|Рисунок 2 – Основное окно среды разработки AgavaPLC с загруженным проектом]]&lt;br /&gt;
По умолчанию основное окно среды разработки содержит перечисленные ниже части:&lt;br /&gt;
&lt;br /&gt;
# Строка заголовка приложения, панель меню и панель инструментов.&lt;br /&gt;
# Окно дерева проекта. Предоставляет доступ ко всей структуре проекта (см. раздел [[#Описание узлов]]).&lt;br /&gt;
# Окно свойств (см. раздел [[#Редактирование свойств узлов]] ).&lt;br /&gt;
# Область для отображения содержимого, например графического представления окна или задачи ПЛК.&lt;br /&gt;
# Область вспомогательных окон (окна наблюдения, ошибок и сообщений)&lt;br /&gt;
&lt;br /&gt;
После открытия проекта можно приступить к его редактированию.&lt;br /&gt;
&lt;br /&gt;
По завершению всех операций по редактированию необходимо выполнить проверку проекта на корректность с помощью команды «Проверить проект», расположенной в меню «Проект» (см. 6.1). &lt;br /&gt;
&lt;br /&gt;
=== Структура и состав проекта ===&lt;br /&gt;
Типичный проект содержит следующие части:&lt;br /&gt;
&lt;br /&gt;
* станция – важнейший объект, управляющий работой собственных подсистем и осуществляющий обмен данными с другими станциями;&lt;br /&gt;
* транспортная подсистема, выполняющая сбор данных с УСО;&lt;br /&gt;
* подсистема визуализации, обеспечивающая отображение информации в различных видах.&lt;br /&gt;
&lt;br /&gt;
Проект также может содержать следующие части:&lt;br /&gt;
&lt;br /&gt;
* подсистема архивирования, сохраняющая данные в БД для последующего извлечения и анализа;&lt;br /&gt;
* подсистема проверки прав пользователей, предназначенная для контроля доступа пользователя к объектам в режиме исполнения;&lt;br /&gt;
* подсистема тревог, предназначенная для оповещения пользователя об обнаруженных нарушениях;&lt;br /&gt;
* подсистема журналирования, выполняющая архивирование зарегистрированных событий в БД для последующего извлечения и анализа.&lt;br /&gt;
&lt;br /&gt;
Проект имеет древовидную структуру, вследствие чего все узлы связаны друг с другом. Узлы нижних уровней подчиняются узлам верхних уровней. К примеру, станции подчинены все подсистемы, а каждой подсистеме подчинены все узлы, которыми она управляет.&lt;br /&gt;
&lt;br /&gt;
Описание всех частей проекта и их узлов приведено в разделе 4.&lt;br /&gt;
&lt;br /&gt;
=== Разработка программы ===&lt;br /&gt;
[[Файл:AgavaPLC-Добавление узла в проект.png|мини|Рисунок 3 – Добавление узла в проект AgavaPLC]]&lt;br /&gt;
Перед началом разработки рекомендуется проанализировать поставленную задачи и определить подсистемы, необходимые для её реализации. Взаимодействие с подсистемами осуществляется через дерево проекта (см. Рисунок 2), в которое добавляются нужные узлы. Для добавления нового узла, необходимо нажать правой кнопкой мыши на узел верхнего уровня, которому он подчинён, и выбрать в контекстном меню команду «Добавить узел».&lt;br /&gt;
&lt;br /&gt;
Основные части типовой программы и способы их реализации приведены ниже.&lt;br /&gt;
&lt;br /&gt;
==== Взаимодействие с внешними устройствами ====&lt;br /&gt;
Реализуется через подсистему «Транспорты» в окне дерева проекта. Необходимо добавить в нее нужные протоколы, в зависимости от имеющейся конфигурации контроллера.&lt;br /&gt;
[[Файл:AgavaPLC-Транспорты.png|мини|Рисунок 4 - Транспорты в дереве проекта AgavaPLC]]&lt;br /&gt;
# Транспорт для обмена с субмодулями контроллера (для контроллеров с корзиной субмодулей). В качестве порта транспорта необходимо указать “/dev/ttyS0”. В проекте для МПР-60 присутствует по-умолчанию.&lt;br /&gt;
# Транспорт последовательный (для управления по RS-232, RS-485 и т.д.).&lt;br /&gt;
# Транспорт TCP/IP (для управления по Ethernet).&lt;br /&gt;
&lt;br /&gt;
К транспортам присоединяются либо регистры Modbus, либо субмодули. Для регистра задается адрес устройства, номер регистра, функция чтения/записи и другие параметры, при необходимости. Для субмодуля указывается слот, в котором он установлен, и тип аналоговых входов/выходов. &lt;br /&gt;
&lt;br /&gt;
==== Визуализация данных ====&lt;br /&gt;
Визуализация данных технологических процессов реализуется с помощью элементов подсистемы «Визуализация».&lt;br /&gt;
&lt;br /&gt;
Система визуализации недоступна в проектах для  контроллеров МПР.&lt;br /&gt;
[[Файл:AgavaPLC-Пример визуализации.png|мини|Рисунок 5 - Пример визуализации]]&lt;br /&gt;
Визуализация содержит одно или несколько окон, описанных ниже.&lt;br /&gt;
&lt;br /&gt;
# Форма, которая может использоваться как меню или панель инструментов. Также применяется в небольших проектах, в которых нет необходимости изменения выводимого набора виджетов.&lt;br /&gt;
# Окно с композицией, которое позволяет переключаться между различными экранами (например мнемосхемой, настройками, архивированием и т.д). Каждый из этих экранов реализуется на отдельной композиции.&lt;br /&gt;
&lt;br /&gt;
Процесс создания визуализации начинается с добавления нужных окон в группу «Окна» в дереве проекта. В том случае, если используется окно с композицией, необходимо задать ему отображаемую композицию по умолчанию, перед этим добавив ее в группу «Композиции». Созданные окна нужно добавить к одному фрейму, указав их в соответствующем свойстве фрейма.&lt;br /&gt;
&lt;br /&gt;
Редактирование содержимого окна или композиции осуществляется в его графическом представлении (см. раздел [[#Редактирование графического представления узла]]).&lt;br /&gt;
&lt;br /&gt;
Более подробное описание подсистемы визуализации приведено в разделе [[#Подсистема визуализации]].&lt;br /&gt;
&lt;br /&gt;
==== Пользовательские алгоритмы ====&lt;br /&gt;
Реализовать нужные алгоритмы работы программы можно с помощью различных инструментов, которые выбираются в зависимости от сложности проектов и навыков программиста:&lt;br /&gt;
&lt;br /&gt;
# Операции в группе «Сигналы» – отдельные логические операции. В основном используются для небольших проектов, не требующих сложных методов управления;&lt;br /&gt;
# Задачи ПЛК – графическое программирование с помощью связывания между собой различных функциональных блоков. Подходит для больших проектов. Реализуется в узле «Задача ПЛК» группы «Задачи». Подробное описание приведено в разделе [[#Задача ПЛК]]'''.'''&lt;br /&gt;
# Скрипты С++ – текстовое программирование на языке высокого уровня. Подходит для больших проектов. Реализуется с помощью операций «Скрипт С++», расположенных в группе «Сигналы» или в задаче ПЛК. Описание реализации языка С++ приведено на странице [[Описание языка С++ в AgavaPLC]].&lt;br /&gt;
=== Редактирование свойств узлов ===&lt;br /&gt;
Среда разработки обладает развитыми возможностями по редактированию свойств узлов. Описание доступных типов свойств приведно в статье [[Свойства узлов в AgavaPLC/AgavaSCADA]].&lt;br /&gt;
&lt;br /&gt;
==== Редактирование свойств узлов с помощью окна «Свойства» ====&lt;br /&gt;
[[Файл:AgavaPLC-Окно &amp;quot;Свойства&amp;quot;.png|мини|Рисунок 6 – Окно «Свойства» виджета «Кнопка»]]&lt;br /&gt;
Редактирование свойств всех узлов осуществляется с помощью окна «Свойства».&lt;br /&gt;
&lt;br /&gt;
В окне «Свойства» в виде таблицы отображаются все доступные свойства узла, объединенные в группы. В левой колонке отображены наименования свойств, в правой отображены их значения. Свойства, недоступные для изменения, имеют наименование серого цвета. В нижней части окна расположена область подсказки, содержащая пояснение к выделенному свойству.&lt;br /&gt;
&lt;br /&gt;
===== Редактирование свойств группы узлов =====&lt;br /&gt;
В случае, когда необходимо изменить свойства у нескольких узлов, можно воспользоваться возможностью группового редактирования свойств. Для этого нужно выделить несколько узлов в дереве конфигурации либо на графическом представлении с помощью левой кнопки мыши и нажатой кнопки «Ctrl». При этом в окне свойств будут отображены только те свойства, что имеются у всех выделенных узлов. Далее можно изменить нужное свойство, при этом после завершения редактирования измененное значение будет установлено во всех выбранных узлах.&lt;br /&gt;
&lt;br /&gt;
==== Массовое редактирование свойств узлов ====&lt;br /&gt;
При необходимости редактирования разных свойств у большого количества узлов можно воспользоваться специальным окном «Список узлов».&lt;br /&gt;
[[Файл:AgavaPLC-Окно &amp;quot;Список узлов&amp;quot;.png|мини|Рисунок 7 - Окно &amp;quot;Список узлов&amp;quot;]]&lt;br /&gt;
Открытие окна выполняется с помощью вызова команды «Открыть список узлов» в контекстном меню дерева конфигурации. Открытое окно содержит все узлы, вложенные в выбранные при вызове команды.&lt;br /&gt;
&lt;br /&gt;
Окно позволяет редактировать свойства непосредственно в ячейках таблицы, без переключения на окно «Свойства». Групповое редактирование свойств узлов через окно «Свойства» также доступно.&lt;br /&gt;
&lt;br /&gt;
Щелчок правой кнопкой мыши на списке вызывает контекстное меню, содержащее команды:&lt;br /&gt;
&lt;br /&gt;
* “Свойства”;&lt;br /&gt;
* “Экспорт в *.txt”;&lt;br /&gt;
* “Импорт из *.txt”;&lt;br /&gt;
* “Удалить узел”.&lt;br /&gt;
&lt;br /&gt;
Команда «Свойства» открывает диалоговое окно выбора отображаемых свойств.&lt;br /&gt;
&lt;br /&gt;
Команды «Экспорт», «Импорт» выполняют экспорт списка свойств узлов в текстовый файл и импорт соответственно.&lt;br /&gt;
&lt;br /&gt;
Команда «Удалить узел» производит удаление выделенного узла (узлов).&lt;br /&gt;
&lt;br /&gt;
==== Функция групповой замены источников в узлах ====&lt;br /&gt;
При разработке сложных проектов может возникнуть необходимость заменить источники сразу в большом количестве узлов. Для этой цели используется функция групповой замены источников.  Необходимо перейти в редактирование свойств типа «Список источников», которое производится в соответствующем окне (см. Рисунок 8).&lt;br /&gt;
[[Файл:AgavaPLC-Окно редактирования свойств типа «Список источников».png|мини|Рисунок 8 - Окно редактирования свойств типа «Список источников»]]&lt;br /&gt;
Затем необходимо использовать функцию групповой замены (см. Рисунок 9), выделив нужные узлы, нажав на них правой кнопкой мыши и выбрав «Групповая замена».&lt;br /&gt;
[[Файл:AgavaPLC-Окно функции «Групповая замена».png|мини|Рисунок 9 - Окно функции «Групповая замена»]]&lt;br /&gt;
&lt;br /&gt;
=== Редактирование графического представления узла ===&lt;br /&gt;
Редактирование содержимого окон, слоев, форм, композиций и других элементов, предназначенных для отображения на экране, осуществляется в окне графического представления. Открытие окна возможно с помощью команды «Открыть графическое представление» в контекстном меню дерева конфигурации или двойного нажатия левой кнопки мыши для узлов следующих типов:&lt;br /&gt;
&lt;br /&gt;
* фрейм;&lt;br /&gt;
* форма;&lt;br /&gt;
* окно с композицией;&lt;br /&gt;
* слой.&lt;br /&gt;
&lt;br /&gt;
Открытое графическое представление выбранного узла может содержать все уже размещенные на нем элементы визуализации и (или) другие узлы и позволяет добавить новые.&lt;br /&gt;
[[Файл:AgavaPLC–Открытое графическое представление окна «winMain».png|мини|Рисунок 10 – Открытое графическое представление окна «winMain»]]&lt;br /&gt;
На рисунке 10 представлено графическое представление окна «winMain», обведенное пунктирной рамкой серого цвета, обозначающей внешнюю границу открытого узла. Тип рамки пользователь может выбрать по своему усмотрению, выбор производится в окне настроек среды разработки, доступном через команду «Настройки» в меню «Параметры».&lt;br /&gt;
&lt;br /&gt;
Щелчок правой кнопкой мыши на пустом месте в открытом графическом представлении узла вызывает контекстное меню, содержащее команды удаления и вставки виджетов из буфера обмена, а также команды добавления новых виджетов доступных типов.&lt;br /&gt;
&lt;br /&gt;
Добавление новых виджетов также может осуществлять путем их перестаскивания в рабочую область из панели виджетов.&lt;br /&gt;
&lt;br /&gt;
Графическое представление позволяет перемещать выделенные виджеты кнопками перемещения курсора на клавиатуре, а также изменять их размеры кнопками перемещения курсора при нажатой кнопке Shift.&lt;br /&gt;
&lt;br /&gt;
==== Связывание источников и виджетов ====&lt;br /&gt;
Связывание виджетов и других узлов с источниками данных необходимо для того, чтобы виджеты или другие узлы могли отображать или обрабатывать значения, хранящиеся в источниках.&lt;br /&gt;
&lt;br /&gt;
Для связи виджетов с источниками данных можно воспользоваться обычным способом связывания через окно «Свойства». К примеру, связывание размещенного на форме виджета «Текстовая метка» с регистром Modbus осуществляется добавлением регистра Modbus в свойство виджета «Источник».&lt;br /&gt;
&lt;br /&gt;
Вместе с обычным способом связывания существует и другой, более быстрый способ. Для быстрого связывания регистра с виджетом достаточно нажать на регистр в дереве конфигурации левой кнопкой мыши и перенести его на виджет в открытом графическом представлении.&lt;br /&gt;
[[Файл:AgavaPLC–Связывание узла «sourceModbusRegister0» и виджета.png|мини|Рисунок 11 – Связывание узла «sourceModbusRegister0» и виджета]]&lt;br /&gt;
При помещении курсора над виджетом последний будет заштрихован сеткой зеленого или красного цвета, а курсор изменит свой вид на стрелку с квадратиком (см. рисунок 11).&lt;br /&gt;
&lt;br /&gt;
Зеленая штриховка виджета означает отсутствие связи выделенного виджета с источником данных, в этом случае связывание будет произведено. Красная штриховка говорит об ошибках связывания виджета и сигнала/источника.&lt;br /&gt;
&lt;br /&gt;
==== Редактирование многослойных композиций ====&lt;br /&gt;
Редактирование многослойных композиций принципиально не отличается от редактирования форм, кроме одного нюанса. Так как композиция может состоять из нескольких слоев, и виджеты на слоях могут располагаться один над другим, для использования наиболее удобного способа редактирования такой композиции можно воспользоваться возможностью открытия каждого слоя в отдельном окне.&lt;br /&gt;
[[Файл:AgavaPLC–Пример структуры композиции «Composition1», состоящей из трех слоев.png|мини|Рисунок 12 – Пример структуры композиции «Composition1», состоящей из трех слоев]]&lt;br /&gt;
Для открытия графического представления слоя нужно воспользоваться командой «Открыть графическое представление» аналогично открытию графического представления формы или композиции.&lt;br /&gt;
&lt;br /&gt;
Открыв одновременно композицию и слой, при редактировании слоя можно видеть, что содержимое композиции также изменяется и наоборот, при редактировании композиции изображение слоя будет изменяться.&lt;br /&gt;
&lt;br /&gt;
Слой обладает важным свойством «Прозрачность для действий». Данное свойство позволяет регулировать доступность виджетов, расположенных на нижележащих слоях, для действий пользователя. Например, если у верхнего слоя данное свойство выключено, то виджеты, расположенные на всех нижележащих слоях, будут недоступны для взаимодействия. Если же у верхнего слоя свойство включено, то виджеты нижележащего слоя будут доступны.&lt;br /&gt;
&lt;br /&gt;
=== Сохранение проекта ===&lt;br /&gt;
Для сохранения проекта на диск вызовите команду  «Файл-&amp;gt;Сохранить проект» или «Файл-&amp;gt;Сохранить проект как...», если необходимо сделать копию открытого проекта и продолжить работу в ней после сохранения.&lt;br /&gt;
&lt;br /&gt;
== Проверка и отладка проекта ==&lt;br /&gt;
&lt;br /&gt;
=== Эмуляция проекта ===&lt;br /&gt;
Проверить работоспособность проекта можно, не загружая его в контроллер. Для этого существует возможность запустить среду исполнения прямо на компьютере. &lt;br /&gt;
&lt;br /&gt;
Для этого необходимо:&lt;br /&gt;
&lt;br /&gt;
# Установить текущий проект как проект по умолчанию. Для этого необходимо вызвать команду &amp;quot;Проект-&amp;gt;Установить проект по умолчанию...&amp;quot;  и выбрать ранее сохраненный файл конфигурации.&lt;br /&gt;
# Запустить среду исполнения. Для этого нужно вызвать команду меню &amp;quot;Проект-&amp;gt;Запуск среды исполнения&amp;quot;. После этого будет выполнен запуск в новом окне среды исполнения.&lt;br /&gt;
&lt;br /&gt;
=== Мониторинг сигналов ===&lt;br /&gt;
Для старта мониторинга сигналов необходимо запустить среду исполнения, затем вызвать команду меню «Устройство-&amp;gt;Подключение/отключение», в появившемся окне выбрать IP-адрес и порт устройства, значения узлов которого необходимо мониторить, и нажать кнопку «Подключение».&lt;br /&gt;
&lt;br /&gt;
При необходимости просмотра значений узлов и сигналов в режиме эмуляции проекта на персональном компьютере укажите адрес 127.0.0.1. Если необходимо просматривать значения узлов проекта, выполняющегося на контроллере или панели оператора, укажите IP-адрес контроллера или панели.&lt;br /&gt;
[[Файл:AgavaPLC–Окно &amp;quot;Наблюдение&amp;quot;.png|мини|Рисунок 14 – Окно &amp;quot;Наблюдение&amp;quot;]]&lt;br /&gt;
В окно наблюдения можно добавлять узлы, имеющие возможность чтения или записи значений – регистры Modbus, сигналы. Для этого необходимо нажать на нужном узле в дереве проекта правой кнопкой мыши и выбрать команду «Добавить в окно наблюдения». Выбранные узлы будут отображаться в окне «Наблюдение».&lt;br /&gt;
&lt;br /&gt;
=== Мониторинг событий ===&lt;br /&gt;
Для старта мониторинга необходимо подключиться к нужному устройству способом, рассмотренным в разделе [[#Мониторинг сигналов]], а затем нажать на кнопку «Просмотр событий».&lt;br /&gt;
[[Файл:AgavaPLC–Окно просмотра событий.png|мини|Рисунок 15 – Окно просмотра событий]]&lt;br /&gt;
В открывшемся окне будут выводиться все события, регистрируемые устройством. С помощью выпадающего списка в левом верхнем углу окна можно выбрать минимальный уровень выводимого события.&lt;br /&gt;
&lt;br /&gt;
=== Отладка в задаче ПЛК ===&lt;br /&gt;
Задача ПЛК (см. раздел [[#Задача ПЛК]]) позволяет проводить тестирование проектов с помощью режима симулятора (на компьютере, без использования контроллера) или онлайн отладки (на контроллере).&lt;br /&gt;
&lt;br /&gt;
==== Управление отладкой ====&lt;br /&gt;
Управление режимом симуляции и онлайн отладкой осуществляется с помощью панели инструментов задачи ПЛК (см. рисунок 16).&lt;br /&gt;
&lt;br /&gt;
Панель инструментов содержит следующие элементы:&lt;br /&gt;
&lt;br /&gt;
* Кнопка «Запустить симуляцию».&lt;br /&gt;
* Кнопка «Сделать шаг на один цикл».&lt;br /&gt;
* Кнопка «Приостановить симуляцию» - ставит выполнение задачи на паузу.&lt;br /&gt;
* Кнопка «Остановить симуляцию» - сбрасывает состояние всех блоков к их состоянию по умолчанию.&lt;br /&gt;
* Список выбора периода выполнения задачи.&lt;br /&gt;
* Кнопка «Показать окно «Наблюдение».&lt;br /&gt;
&lt;br /&gt;
==== Режим симулятора ====&lt;br /&gt;
Режим симулятора позволяет провести тестирование работы алгоритмов проекта на компьютере. С помощью симуляции можно выявить ошибки в работе алгоритмов проекта до его загрузки в контроллер.&lt;br /&gt;
&lt;br /&gt;
Управление симуляцией осуществляется через команды на панели инструментов задачи ПЛК.&lt;br /&gt;
&lt;br /&gt;
Для перехода в режим симуляции нажмите кнопку «Режим симулятора» на панели управления задачи ПЛК.&lt;br /&gt;
[[Файл:AgavaPLC-Панель инструментов задачи ПЛК.png|мини|Рисунок 16 - Панель инструментов задачи ПЛК]]&lt;br /&gt;
После активации режима симуляции, для изменения значения входа дважды щелкните на нем левой кнопкой мыши и выберите нужный тип и значение. Текущие значения всех блоков, в соответствии с работой программы, будут отображаться в реальном времени.&lt;br /&gt;
[[Файл:AgavaPLC–Вид блоков задачи в режиме симулятора.png|мини|Рисунок 17 – Вид блоков задачи в режиме симулятора]]&lt;br /&gt;
Для выхода из режима симуляции повторно нажмите кнопку «Режим симуляции» на панели управления задачи ПЛК.&lt;br /&gt;
&lt;br /&gt;
==== Онлайн отладка ====&lt;br /&gt;
Режим онлайн отладки позволяет провести тестирование проекта, загруженного и исполняемого в контроллере. Для перехода в режим онлайн отладки загрузите конфигурацию в контроллер, подключитесь к нему, после чего нажмите кнопку «Онлайн отладка» на панели инструментов задачи ПЛК.&lt;br /&gt;
[[Файл:AgavaPLC–Вид блоков задачи в режиме онлайн отладки.png|мини|Рисунок 18 – Вид блоков задачи в режиме онлайн отладки]]&lt;br /&gt;
На рисунке 18 изображен вид задачи ПЛК в режиме онлайн отладки проекта, запущенного на МПР-60 с установленными субмодулями DI (входы) и R (выходы).&lt;br /&gt;
&lt;br /&gt;
Для онлайн отладки на панели инструментов недоступны кнопка «Приостановить симуляцию» и список выбора периода.&lt;br /&gt;
&lt;br /&gt;
== Компиляция проекта ==&lt;br /&gt;
Перед загрузкой проекта в контроллер или запуском эмуляции проекта необходимо откомпилировать проект и получить файл конфигурации, предназначенный для исполнения средой исполнения, установленной в контроллере или на персональном компьютере (в случае разработки системы диспетчеризации). Для этого необходимо вызвать команду меню &amp;quot;Проект-&amp;gt;Сохранить конфигурацию&amp;quot;, выбрать папку проекта и нажать кнопку &amp;quot;Сохранить&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Проверка проекта ===&lt;br /&gt;
[[Файл:AgavaPLC–Окно «Ошибки».png|мини|Рисунок 19 – Окно «Ошибки»]]&lt;br /&gt;
Перед сохранением проекта желательно выполнить его проверку на наличие ошибок с помощью команды «Проект-&amp;gt;Проверить проект». После проверки обнаруженные ошибки будут отображены в окне «Ошибки».&lt;br /&gt;
&lt;br /&gt;
Если отображение окна «Ошибки» выключено, его можно включить командой «Вид-&amp;gt;Показать окно ошибок».&lt;br /&gt;
&lt;br /&gt;
Для облегчения исправления обнаруженных ошибок окно поддерживает выполнение некоторых команд над обнаруженными ошибками, вызывать которые можно из контекстного меню, отображаемого щелчком правой кнопки мыши на строке c ошибкой в окне. Контекстное меню позволяет вызывать команду «Показать узел в дереве конфигурации», выполняющую соответствующее действие.&lt;br /&gt;
&lt;br /&gt;
Также щелчок левой кнопкой мыши на строке с ошибкой открывает окно «Свойства» и дает возможность изменить в нем все свойства узла, содержащего ошибку.&lt;br /&gt;
&lt;br /&gt;
==== Установка пароля на файл конфигурации ====&lt;br /&gt;
[[Файл:AgavaPLC–Установка пароля.png|мини|Рисунок 13 – Установка пароля]]&lt;br /&gt;
Файл конфигурации, загружаемый в контроллер или панель оператора, можно защитить паролем, чтобы предотвратить его несанкционированное изменение.&lt;br /&gt;
&lt;br /&gt;
Для установки пароля на файл конфигурации необходимо выбрать в дереве проекта узел «Конфигурация» и отредактировать его свойство «Пароль». Допускается использование любых цифр, букв и спецсимволов.&lt;br /&gt;
&lt;br /&gt;
В дальнейшем при открытии файла конфигурации в среде разработки будет появляться окно с запросом пароля.&lt;br /&gt;
&lt;br /&gt;
== Загрузка проекта в устройство ==&lt;br /&gt;
Загрузка проекта в целевое устройство может быть осуществлена несколькими способами:&lt;br /&gt;
&lt;br /&gt;
* загрузка из среды разработки;&lt;br /&gt;
* загрузка с помощью USB-Flash накопителя (для панелей оператора);&lt;br /&gt;
* загрузка через браузер (для МПР-60).&lt;br /&gt;
&lt;br /&gt;
=== Загрузка из среды разработки ===&lt;br /&gt;
[[Файл:AgavaPLC–Окно «Загрузка проекта в устройство» после подключения к контроллеру.png|мини|Рисунок 20 – Окно «Загрузка проекта в устройство» после подключения к контроллеру]]&lt;br /&gt;
Для загрузки проекта из среды разработки необходимо произвести следующие действия в указанном порядке:&lt;br /&gt;
&lt;br /&gt;
# Создайте файл конфигурации.&lt;br /&gt;
# Выполните подключение целевого устройства к ПК по сети Ethernet.&lt;br /&gt;
# После подключения вызовите в среде разработки команду «Проект-&amp;gt;Загрузка проекта в устройство».&lt;br /&gt;
# В открывшемся окне будет отображен список файлов проекта, доступных для загрузки в целевое устройство.&lt;br /&gt;
# Выберите необходимые файлы и нажмите кнопку «Загрузить». После нажатия кнопки начнется процесс загрузки файлов, при этом в нижней части окна будет меняться состояние полосы прогресса, а также для каждого файла в таблице будет отображен результат загрузки.&lt;br /&gt;
# После окончания загрузки среда исполнения в целевом устройстве будет перезапущена и загруженный проект будет запущен.&lt;br /&gt;
&lt;br /&gt;
=== Загрузка через USB-Flash (для ПО-40 и ПО-50) ===&lt;br /&gt;
Для загрузки проекта в устройство с помощью USB-Flash накопителя необходимо произвести следующие действия в указанном порядке:&lt;br /&gt;
&lt;br /&gt;
# Подготовьте USB-Flash накопитель, предварительно отформатировав его в файловую систему FAT32.&lt;br /&gt;
# Вызовите в среде разработки команду «Подготовка архива для обновления» в меню «Проект».&lt;br /&gt;
# Сохраните архив в корень USB-Flash накопителя.&lt;br /&gt;
# Перейдите в системную утилиту, перезагрузив панель оператора, при загрузке во время однократного звукового сигнала нажмите на экран и удерживайте до повторного звукового сигнала. Введите пароль: 111111.&lt;br /&gt;
# Перейдите на вкладку «Обновление», затем подключите USB-Flash накопитель через переходник USB-OTG, выберите из списка загрузочный архив, нажать кнопку «Обновить». Дождитесь сообщения «Обновление успешно» и нажмите кнопку «ОК».&lt;br /&gt;
# Перейдите на вкладку «Перезапуск» и нажмите кнопку «Перезапуск».&lt;br /&gt;
После перезагрузки панели загруженный проект будет запущен.&lt;br /&gt;
&lt;br /&gt;
=== Загрузка через браузер (для МПР-60) ===&lt;br /&gt;
Для загрузки проекта через браузер необходимо произвести следующие действия в указанном порядке.&lt;br /&gt;
&lt;br /&gt;
# Вызовите в среде разработки команду «Подготовка архива для обновления» в меню «Проект».&lt;br /&gt;
# Сохраните архив.&lt;br /&gt;
# Откройте системную утилиту, введя IP-адрес контроллера в адресную строку браузера.&lt;br /&gt;
# Перейдите на вкладку «Загрузка ПО».  Рисунок 71 - Вкладка системной утилиты «Загрузка ПО»&lt;br /&gt;
# Выберите на компьютере архив с проектом, который необходимо загрузить в контроллер.&lt;br /&gt;
# Нажмите кнопку «Загрузить».&lt;br /&gt;
# Дождитесь окончания загрузки файла и обновления проекта.&lt;br /&gt;
&lt;br /&gt;
[[Категория:AgavaSCADA/AgavaPLC]]&lt;/div&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
	<entry>
		<id>https://docs.kb-agava.ru/index.php?title=%D0%A1%D0%B2%D0%BE%D0%B9%D1%81%D1%82%D0%B2%D0%B0_%D1%83%D0%B7%D0%BB%D0%BE%D0%B2_%D0%B2_AgavaSCADA/AgavaPLC&amp;diff=2494</id>
		<title>Свойства узлов в AgavaSCADA/AgavaPLC</title>
		<link rel="alternate" type="text/html" href="https://docs.kb-agava.ru/index.php?title=%D0%A1%D0%B2%D0%BE%D0%B9%D1%81%D1%82%D0%B2%D0%B0_%D1%83%D0%B7%D0%BB%D0%BE%D0%B2_%D0%B2_AgavaSCADA/AgavaPLC&amp;diff=2494"/>
		<updated>2024-03-27T05:02:07Z</updated>

		<summary type="html">&lt;p&gt;Administrator: Administrator переименовал страницу Свойства узлов в AgavaPLC/AgavaSCADA в Свойства узлов в AgavaSCADA/AgavaPLC без оставления перенаправления: Для соответствия названию продукта&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Типы свойств ==&lt;br /&gt;
&lt;br /&gt;
=== bool ===&lt;br /&gt;
Имя типа: ntProperty:nstPropertyBool&lt;br /&gt;
&lt;br /&gt;
Свойство, хранящее значения типа &amp;quot;булевское&amp;quot;, имеющее два возможных значения - &amp;quot;истина&amp;quot;, &amp;quot;ложь&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== SignalValue ===&lt;br /&gt;
Имя типа: ntProperty:nstPropertySignalValue&lt;br /&gt;
&lt;br /&gt;
=== double ===&lt;br /&gt;
Имя типа: ntProperty:nstPropertyDouble&lt;br /&gt;
&lt;br /&gt;
Свойство, хранящее значения вещественного типа.&lt;br /&gt;
&lt;br /&gt;
=== NPen ===&lt;br /&gt;
Имя типа: ntProperty:nstPropertyNPen&lt;br /&gt;
&lt;br /&gt;
=== wstring ===&lt;br /&gt;
Имя типа: ntProperty:nstPropertyWString&lt;br /&gt;
&lt;br /&gt;
=== NodeLink ===&lt;br /&gt;
Имя типа: ntProperty:nstPropertyNodeLink&lt;br /&gt;
&lt;br /&gt;
=== NodesArray ===&lt;br /&gt;
Имя типа: ntProperty:nstPropertyNodeArray&lt;br /&gt;
&lt;br /&gt;
=== ValueLink ===&lt;br /&gt;
Имя типа: ntProperty:nstPropertyValueLink&lt;br /&gt;
&lt;br /&gt;
=== ValuesArray ===&lt;br /&gt;
Имя типа: ntProperty:nstPropertyValueArray&lt;br /&gt;
&lt;br /&gt;
=== CondStringMap ===&lt;br /&gt;
Имя типа: ntProperty:nstPropertyCondStringMap&lt;br /&gt;
&lt;br /&gt;
=== CondResourceMap ===&lt;br /&gt;
Имя типа: ntProperty:nstPropertyCondResourceMap&lt;br /&gt;
&lt;br /&gt;
=== NSize ===&lt;br /&gt;
Имя типа: ntProperty:nstPropertyNSize&lt;br /&gt;
&lt;br /&gt;
=== NFont ===&lt;br /&gt;
Имя типа: ntProperty:nstPropertyNFont&lt;br /&gt;
&lt;br /&gt;
=== NColor ===&lt;br /&gt;
Имя типа: ntProperty:nstPropertyNColor&lt;br /&gt;
&lt;br /&gt;
Свойство, хранящее значения типа &amp;quot;цвет&amp;quot;, описываемый четырьмя компонентами - три компонента цвета (красный, синий, зеленый) и прозрачность.&lt;br /&gt;
&lt;br /&gt;
Запись в свойство числа 0...15 приводит к установке соответствующего цвета из 4-битной палитры Windows, прозрачность отключена:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;style=&amp;quot;border-style: none&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|- style=&amp;quot;color:white;&amp;quot; &lt;br /&gt;
| style=&amp;quot;background:#000;&amp;quot;| 0 — черный&lt;br /&gt;
| style=&amp;quot;background:gray;&amp;quot;| 8 — серый&lt;br /&gt;
|- style=&amp;quot;color:white;&amp;quot; &lt;br /&gt;
| style=&amp;quot;background:maroon;&amp;quot;| 1 — темно-красный&lt;br /&gt;
| style=&amp;quot;background:#f00;&amp;quot;| 9 — ярко-красный&lt;br /&gt;
|- style=&amp;quot;color:white;&amp;quot; &lt;br /&gt;
| style=&amp;quot;background:green;&amp;quot;| 2 — темно-зеленый&lt;br /&gt;
| style=&amp;quot;background:#0f0;&amp;quot;| 10 — ярко-зеленый&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:white; background:olive;&amp;quot;| 3 — оливковый&lt;br /&gt;
| style=&amp;quot;color:black; background:#ff0;&amp;quot;| 11 — ярко-желтый&lt;br /&gt;
|- style=&amp;quot;color:white;&amp;quot; &lt;br /&gt;
| style=&amp;quot;background:navy;&amp;quot;| 4 — темно-синий&lt;br /&gt;
| style=&amp;quot;background:#00f;&amp;quot;| 12 — ярко-синий&lt;br /&gt;
|- style=&amp;quot;color:white;&amp;quot; &lt;br /&gt;
| style=&amp;quot;background:purple;&amp;quot;| 5 — фиолетовый&lt;br /&gt;
| style=&amp;quot;background:#f0f;&amp;quot;| 13 — ярко-фиолетовый&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:white; background:teal;&amp;quot;| 6 — темный аквамарин&lt;br /&gt;
| style=&amp;quot;color:black; background:#0ff;&amp;quot;| 14 — аквамарин&lt;br /&gt;
|- style=&amp;quot;color:black;&amp;quot; &lt;br /&gt;
| style=&amp;quot;background:silver;&amp;quot;| 7 — светло-серый&lt;br /&gt;
| style=&amp;quot;background:#fff;&amp;quot;| 15 — белый&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== enum ===&lt;br /&gt;
Имя типа: ntProperty:nstPropertyEnum&lt;br /&gt;
&lt;br /&gt;
=== NPoint ===&lt;br /&gt;
Имя типа: ntProperty:nstPropertyNPoint&lt;br /&gt;
&lt;br /&gt;
=== ResourceLink ===&lt;br /&gt;
Имя типа: ntProperty:nstPropertyResourceLink&lt;br /&gt;
&lt;br /&gt;
=== NodeType ===&lt;br /&gt;
Имя типа: ntProperty:nstPropertyNodeType&lt;br /&gt;
&lt;br /&gt;
=== uchar ===&lt;br /&gt;
Имя типа: ntProperty:nstPropertyUChar&lt;br /&gt;
&lt;br /&gt;
=== ushort ===&lt;br /&gt;
Имя типа: ntProperty:nstPropertyUShort&lt;br /&gt;
&lt;br /&gt;
=== uint ===&lt;br /&gt;
Имя типа: ntProperty:nstPropertyUInt&lt;br /&gt;
&lt;br /&gt;
=== int ===&lt;br /&gt;
Имя типа: ntProperty:nstPropertyInt&lt;br /&gt;
&lt;br /&gt;
=== string ===&lt;br /&gt;
Имя типа: ntProperty:nstPropertyString&lt;br /&gt;
&lt;br /&gt;
Свойство, хранящее значения типа &amp;quot;строка&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Set ===&lt;br /&gt;
Имя типа: ntProperty:nstPropertySet&lt;br /&gt;
&lt;br /&gt;
=== NodeTime ===&lt;br /&gt;
Имя типа: ntProperty:nstPropertyNodeTime&lt;br /&gt;
&lt;br /&gt;
=== NodeValueMap ===&lt;br /&gt;
Имя типа: ntProperty:nstPropertyNodeValueMap&lt;br /&gt;
&lt;br /&gt;
=== AuthPrivArray ===&lt;br /&gt;
Имя типа: ntProperty:nstPropertyAuthPrivArray&lt;br /&gt;
&lt;br /&gt;
=== StringValueMap ===&lt;br /&gt;
Имя типа: ntProperty:nstPropertyStringValueMap&lt;br /&gt;
&lt;br /&gt;
=== NodesContainer ===&lt;br /&gt;
Имя типа: ntProperty:nstPropertyNodesContainer&lt;br /&gt;
&lt;br /&gt;
=== NodeLinkValueLinkMap ===&lt;br /&gt;
Имя типа: ntProperty:nstPropertyNodeLinkValueLinkMap&lt;br /&gt;
&lt;br /&gt;
=== NodePrivArray ===&lt;br /&gt;
Имя типа: ntProperty:nstPropertyNodePrivArray&lt;br /&gt;
&lt;br /&gt;
[[Категория:AgavaSCADA/AgavaPLC]]&lt;/div&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
	<entry>
		<id>https://docs.kb-agava.ru/index.php?title=%D0%9E%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BD%D0%B0%D1%8F_%D0%BC%D0%BE%D0%B4%D0%B5%D0%BB%D1%8C_AgavaSCADA/AgavaPLC&amp;diff=2447</id>
		<title>Объектная модель AgavaSCADA/AgavaPLC</title>
		<link rel="alternate" type="text/html" href="https://docs.kb-agava.ru/index.php?title=%D0%9E%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BD%D0%B0%D1%8F_%D0%BC%D0%BE%D0%B4%D0%B5%D0%BB%D1%8C_AgavaSCADA/AgavaPLC&amp;diff=2447"/>
		<updated>2024-03-05T06:43:14Z</updated>

		<summary type="html">&lt;p&gt;Administrator: Administrator переименовал страницу Объектная модель AgavaSCADA/AgavaPLC в Объектная модель AgavaPLC/AgavaSCADA без оставления перенаправления&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Введение ==&lt;br /&gt;
Данный документ описывает объектную модель AgavaSCADA/AgavaPLC версии 1.5 и старше (новее).&lt;br /&gt;
&lt;br /&gt;
== Узлы ==&lt;br /&gt;
&lt;br /&gt;
=== Приложение ===&lt;br /&gt;
Узел для организации алгоритмов.&lt;br /&gt;
&lt;br /&gt;
Позволяет хранить внутри себя алгоритмы и структуры, а также узлы (окна, формы, регистры и т. д.).&lt;br /&gt;
&lt;br /&gt;
==== Типы вложенных узлов ====&lt;br /&gt;
&lt;br /&gt;
* Класс (С++). &lt;br /&gt;
* Структура ''(С++).''&lt;br /&gt;
* Функция (С++).&lt;br /&gt;
* Программа (С++).&lt;br /&gt;
* Секция (С++).&lt;br /&gt;
&lt;br /&gt;
==== Класс ====&lt;br /&gt;
Класс – это основополагающая сущность объектно-ориентированного программирования.&lt;br /&gt;
&lt;br /&gt;
Узлы типа «Класс» позволяют реализовывать создание объектов определённого типа, описывая их структуру (набор полей и их начальное состояние) и определять алгоритмы (функции или методы) для работы с этими объектами.&lt;br /&gt;
&lt;br /&gt;
Класс можно использовать для объявления экземпляров в функции, программе или методе другого класса. Возможно объявление экземпляров класса в дереве проекта и доступ к его полям, методам и свойствам из программ и функций.&lt;br /&gt;
&lt;br /&gt;
Аналог класса в Codesys – функциональный блок.&lt;br /&gt;
&lt;br /&gt;
===== Вложенные узлы =====&lt;br /&gt;
&lt;br /&gt;
* Метод.&lt;br /&gt;
* Свойство. Специальный метод, предоставляющий доступ к полям через функции-сеттеры/геттеры.&lt;br /&gt;
* Действие. Специальный метод, доступный для использования в проекте как другие узлы типа &amp;quot;Действие&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Структура ====&lt;br /&gt;
Структура – композитный тип данных, инкапсулирующий без сокрытия набор значений различных типов.&lt;br /&gt;
&lt;br /&gt;
Структуру можно использовать для объявления в функции, процедуре и классе. Возможно объявление экземпляров структуры в дереве проекта и доступ к ее полям из программ и функций..&lt;br /&gt;
&lt;br /&gt;
==== Функция ====&lt;br /&gt;
Функция – фрагмент программного алгоритма, к которому можно обратиться из другого алгоритма - программы, метода или функции.&lt;br /&gt;
&lt;br /&gt;
Функцию можно использовать для вызова в другой функции, процедуре или методах класса.&lt;br /&gt;
&lt;br /&gt;
==== Программа ====&lt;br /&gt;
Программа – новый элемент объектной модели, отсутствующий в языке С++. Наиболее близок к функции, имеет возможность объявления внутренних объектов (аналог блока VAR), которые сохраняют свое значение при циклическом выполнении алгоритма. Позволяет задавать входные переменные (аналог блока VAR_IN). В программе возможно использование всех декларативных типов узлов (функций, структур и классов). Аналог в Codesys – программа. Возможно добавление дополнительных вложенных функций, не доступных вне процедуры.&lt;br /&gt;
&lt;br /&gt;
==== Секция ====&lt;br /&gt;
Секция позволяет разместить в приложении часть программного кода без создания классов и функций в приложении. Секция компилируется вместе с приложением и все определенные в ней элементы будут доступны в других узлах приложения.&lt;br /&gt;
&lt;br /&gt;
== Наследование ==&lt;br /&gt;
&lt;br /&gt;
=== Иерархия классов/объектов/узлов ===&lt;br /&gt;
&lt;br /&gt;
* BasicNode – базовый класс узла.&lt;br /&gt;
* BasicSource – базовый класс узла-источника.&lt;br /&gt;
* BasicSignal – базовый класс узла-сигнала.&lt;br /&gt;
* BasicWindow – базовый класс узла-окна.&lt;br /&gt;
* BasicWidget – базовый класс узла-виждета.&lt;br /&gt;
&lt;br /&gt;
и т.д.&lt;br /&gt;
&lt;br /&gt;
=== Взаимодействие с узлами проекта. ===&lt;br /&gt;
В функции, программы и методы можно передавать ссылки и указатели на узлы проекта и вызывать методы, определенные в узлах.&lt;br /&gt;
&lt;br /&gt;
=== Описание свойств, полей и методов базовых классов ===&lt;br /&gt;
Описание свойств, полей и методов базовых классов AgavaPLC/AgavaSCADA приведено в [[Описание свойств, полей и методов базовых классов AgavaPLC/AgavaSCADA|отдельном документе]].&lt;br /&gt;
&lt;br /&gt;
=== Использование в дереве проекта узлов, унаследованных от базовых классов ===&lt;br /&gt;
При создании в программе собственного класса основанного на переопределении имеющихся базовых появляется возможность использования экземпляров этого класса в дереве проекта. При этом логика работы экземпляра такого класса определяется реализацией его собственных методов, а не методов базового класса.&lt;br /&gt;
&lt;br /&gt;
[[Категория:AgavaSCADA/AgavaPLC]]&lt;/div&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
	<entry>
		<id>https://docs.kb-agava.ru/index.php?title=%D0%A1%D1%80%D0%B5%D0%B4%D0%B0_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F_AgavaSCADA/AgavaPLC&amp;diff=2176</id>
		<title>Среда исполнения AgavaSCADA/AgavaPLC</title>
		<link rel="alternate" type="text/html" href="https://docs.kb-agava.ru/index.php?title=%D0%A1%D1%80%D0%B5%D0%B4%D0%B0_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F_AgavaSCADA/AgavaPLC&amp;diff=2176"/>
		<updated>2023-11-09T07:08:42Z</updated>

		<summary type="html">&lt;p&gt;Administrator: Administrator переименовал страницу Среда исполнения в Среда исполнения AgavaSCADA/AgavaPLC без оставления перенаправления&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Среда исполнения RTS ==&lt;br /&gt;
&lt;br /&gt;
== Среда исполнения RTU ==&lt;br /&gt;
&lt;br /&gt;
== Параметры среды исполнения ==&lt;br /&gt;
[[Файл as.ini]]&lt;/div&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
	<entry>
		<id>https://docs.kb-agava.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%A1%D0%A3_%D0%9F%D0%9A30-%D0%A1%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D0%B0_%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%BE%D0%B2_%D0%B8_%D0%BC%D0%B5%D0%BD%D1%8E_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%BD%D0%BE%D0%B9_%D1%83%D1%82%D0%B8%D0%BB%D0%B8%D1%82%D1%8B_%D0%9F%D0%9A-30.png&amp;diff=1892</id>
		<title>Файл:СУ ПК30-Структура экранов и меню системной утилиты ПК-30.png</title>
		<link rel="alternate" type="text/html" href="https://docs.kb-agava.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%A1%D0%A3_%D0%9F%D0%9A30-%D0%A1%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D0%B0_%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%BE%D0%B2_%D0%B8_%D0%BC%D0%B5%D0%BD%D1%8E_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%BD%D0%BE%D0%B9_%D1%83%D1%82%D0%B8%D0%BB%D0%B8%D1%82%D1%8B_%D0%9F%D0%9A-30.png&amp;diff=1892"/>
		<updated>2023-02-15T08:34:03Z</updated>

		<summary type="html">&lt;p&gt;Administrator: Administrator переименовал страницу Файл:Структура экранов и меню системной утилиты ПК-30.png в Файл:СУ ПК30-Структура экранов и меню системной утилиты ПК-30.png без оставления перенаправления&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Версия 1.1.39&lt;/div&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
	<entry>
		<id>https://docs.kb-agava.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%9F%D0%9A30-%D0%9F%D1%80%D0%BE%D0%BC%D1%8B%D1%88%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D0%BB%D0%B5%D1%80_%D0%9F%D0%9A-30.jpg&amp;diff=1853</id>
		<title>Файл:ПК30-Промышленный контроллер ПК-30.jpg</title>
		<link rel="alternate" type="text/html" href="https://docs.kb-agava.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%9F%D0%9A30-%D0%9F%D1%80%D0%BE%D0%BC%D1%8B%D1%88%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D0%BB%D0%B5%D1%80_%D0%9F%D0%9A-30.jpg&amp;diff=1853"/>
		<updated>2022-11-27T13:48:40Z</updated>

		<summary type="html">&lt;p&gt;Administrator: Administrator переименовал страницу Файл:ПК30-Промышленный контроллер.jpg в Файл:ПК30-Промышленный контроллер ПК-30.jpg без оставления перенаправления&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Краткое описание ==&lt;br /&gt;
Промышленный контроллер ПК-30&lt;/div&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
	<entry>
		<id>https://docs.kb-agava.ru/index.php?title=AgavaPLC/%D0%A1%2B%2B&amp;diff=1593</id>
		<title>AgavaPLC/С++</title>
		<link rel="alternate" type="text/html" href="https://docs.kb-agava.ru/index.php?title=AgavaPLC/%D0%A1%2B%2B&amp;diff=1593"/>
		<updated>2022-01-28T10:28:55Z</updated>

		<summary type="html">&lt;p&gt;Administrator: Administrator переименовал страницу AgavaPLC/С++ в AgavaSCADA/AgavaPLC/С++&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#перенаправление [[AgavaSCADA/AgavaPLC/С++]]&lt;/div&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
	<entry>
		<id>https://docs.kb-agava.ru/index.php?title=AgavaSCADA/AgavaPLC/%D0%A1%2B%2B&amp;diff=1592</id>
		<title>AgavaSCADA/AgavaPLC/С++</title>
		<link rel="alternate" type="text/html" href="https://docs.kb-agava.ru/index.php?title=AgavaSCADA/AgavaPLC/%D0%A1%2B%2B&amp;diff=1592"/>
		<updated>2022-01-28T10:28:55Z</updated>

		<summary type="html">&lt;p&gt;Administrator: Administrator переименовал страницу AgavaPLC/С++ в AgavaSCADA/AgavaPLC/С++&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#exturl:http://docs.kb-agava.ru/view/%D0%9E%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5_%D1%8F%D0%B7%D1%8B%D0%BA%D0%B0_%D0%A1%2B%2B_%D0%B2_AgavaPLC}}&lt;/div&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
	<entry>
		<id>https://docs.kb-agava.ru/index.php?title=AgavaPLC&amp;diff=1591</id>
		<title>AgavaPLC</title>
		<link rel="alternate" type="text/html" href="https://docs.kb-agava.ru/index.php?title=AgavaPLC&amp;diff=1591"/>
		<updated>2022-01-28T10:28:55Z</updated>

		<summary type="html">&lt;p&gt;Administrator: Administrator переименовал страницу AgavaPLC в AgavaSCADA/AgavaPLC&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#перенаправление [[AgavaSCADA/AgavaPLC]]&lt;/div&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
	<entry>
		<id>https://docs.kb-agava.ru/index.php?title=AgavaSCADA/AgavaPLC&amp;diff=1590</id>
		<title>AgavaSCADA/AgavaPLC</title>
		<link rel="alternate" type="text/html" href="https://docs.kb-agava.ru/index.php?title=AgavaSCADA/AgavaPLC&amp;diff=1590"/>
		<updated>2022-01-28T10:28:55Z</updated>

		<summary type="html">&lt;p&gt;Administrator: Administrator переименовал страницу AgavaPLC в AgavaSCADA/AgavaPLC&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;AgavaPLC – инструментальный программный комплекс для промышленной автоматизации и построения человеко-машинного интерфейса. AgavaPLC позволяет разрабатывать, отлаживать и выполнять алгоритмы, реализующие различные задачи автоматизации технологических процессов.&lt;br /&gt;
&lt;br /&gt;
Комплекс является набором современных, модульных и кроссплатформенных приложений и имеет в своем распоряжении все необходимые инструменты, присущие современным пакетам данного класса, и свои уникальные особенности.&lt;br /&gt;
&lt;br /&gt;
== Состав комплекса ==&lt;br /&gt;
Комплекс состоит из нескольких частей, выполняющих различные функции:&lt;br /&gt;
&lt;br /&gt;
* Среда исполнения. Предназначена для исполнения разработанных в среде разработки проектов. Устанавливается на контроллеры АГАВА МПР-60 и панели оператора серии АГАВА ПО.&lt;br /&gt;
* [[Универсальная среда разработки]]. Предназначена для разработки проектов и используется на персональном компьютере.&lt;br /&gt;
* Вспомогательные инструменты и утилиты.&lt;br /&gt;
&lt;br /&gt;
== Возможности и особенности комплекса. ==&lt;br /&gt;
&lt;br /&gt;
=== Широкие возможности построения визуализации ===&lt;br /&gt;
&lt;br /&gt;
* Функциональные элементы визуализации – виджеты (текстовые метки, изображения, барографический индикатор, график, функциональная кнопка и др.). Широкие возможности настройки внешнего вида виджетов.&lt;br /&gt;
* Составные многослойные композиции (экраны). Возможность построения графических композиций из нескольких окон и слоев, содержащих различные виджеты.&lt;br /&gt;
* Поддержка GIF анимации, а также прозрачности для виджетов, слоев и окон.&lt;br /&gt;
* Возможность масштабирования композиций.&lt;br /&gt;
* Низкие задержки при обновлении данных на экране. Поскольку обновление данных ведется по событиям, то задержка от получения данных от внешнего устройства до их отображения на экране является весьма незначительной.&lt;br /&gt;
* Возможность изменения свойств виджетов и других объектов во время исполнения проекта.&lt;br /&gt;
* Поддержка работы с сенсорным экраном.&lt;br /&gt;
&lt;br /&gt;
=== Сбор, обработка данных и другие функции ===&lt;br /&gt;
&lt;br /&gt;
* Многозадачная обработка данных. Разделение различных функций по разным задачам – сбор данных, их обработка, визуализация выполняются параллельно и независимо друг от друга.&lt;br /&gt;
* Поддержка протоколов Modbus-TCP, Modbus-RTU в режимах «Ведущий», «Ведомый».&lt;br /&gt;
* Наличие подсистемы обработки событий и сигнализации. При работе проекта возникающие события (как системные, так и сгенерированные по пользовательскому алгоритму) фиксируются в базе данных для сохранения и последующего просмотра.&lt;br /&gt;
* Наличие средств разделения доступа. Доступ к данным и объектам во время исполнения проекта регламентируется с помощью системы разделения доступа.&lt;br /&gt;
* Разработка алгоритмов и отладка.&lt;br /&gt;
* Разработка проекта в одной программе – [[Универсальная среда разработки|Универсальной среде разработки Agava]]. Среда разработки дает пользователю возможность вести весь цикл разработки проекта в одной программе без переключений в другие для реализации каких-то отдельных функций.&lt;br /&gt;
* Современный подход к разработке проектов: иерархическая структура проекта, возможность создания собственных функциональных объектов. Наличие средств группового редактирования элементов.&lt;br /&gt;
* Наличие средств проверки проекта. Среда разработки предоставляет возможность в любое время выполнить проверку корректности настройки параметров отдельных элементов проекта и структуры проекта в целом.&lt;br /&gt;
* Возможность эмуляции работы проекта на ПК. Вместе со средой разработки предоставляется среда исполнения проектов для ОС Windows, позволяющая запускать на ПК проекты, разработанные для панели.&lt;br /&gt;
* Возможность загрузки проектов на панель оператора по сети и через USB накопитель. Среда разработки предоставляет возможность загрузить на панель проект через USB или Ethernet подключение. В случае, когда непосредственное подключение панели к ПК из среды разработки невозможно, загрузку проекта можно выполнить через USB накопитель с помощью встроенной в панель Системной Утилиты.&lt;br /&gt;
* Возможность выгрузки файлов с панели на ПК по сети. Например, накопленные архивные данные можно передать с панели на ПК и просмотреть или распечатать с помощью специализированного ПО. &lt;br /&gt;
&lt;br /&gt;
=== Другие функции ===&lt;br /&gt;
&lt;br /&gt;
* Расширяемость. В комплекс может быть добавлена поддержка новых компонентов с помощью разрабатываемых «плагинов» – дополнений, реализующих требуемый функционал.&lt;br /&gt;
* Возможность хранения ресурсов в отдельных файлах на диске и в библиотеках ресурсов в упакованном виде.&lt;br /&gt;
* Поддержка архивирования данных в БД SQLite. По запросу может быть реализована поддержка других БД.&lt;br /&gt;
&lt;br /&gt;
== Документация ==&lt;br /&gt;
&lt;br /&gt;
* [[Универсальная среда разработки|Руководство программиста]].&lt;br /&gt;
&lt;br /&gt;
== Файлы ==&lt;br /&gt;
*Дистрибутивы AgavaPLC: http://files.kb-agava.ru/s/cLzRSoGs7TXArJq&lt;br /&gt;
== История версий ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Версия&lt;br /&gt;
!Дата выпуска&lt;br /&gt;
!Статус&lt;br /&gt;
!Перечень изменений&lt;br /&gt;
|-&lt;br /&gt;
|AgavaPLC 1.0&lt;br /&gt;
|2018 г.&lt;br /&gt;
|Закрыта&lt;br /&gt;
|[[Перечень изменений AgavaPLC 1.0]]&lt;br /&gt;
|-&lt;br /&gt;
|AgavaPLC 1.1&lt;br /&gt;
|24.12.2019&lt;br /&gt;
|Закрыта&lt;br /&gt;
|[[Перечень изменений AgavaPLC 1.1]]&lt;br /&gt;
|-&lt;br /&gt;
|AgavaPLC 1.2&lt;br /&gt;
|14.10.2021&lt;br /&gt;
|Стабильная&lt;br /&gt;
|[[Перечень изменений AgavaPLC 1.2]]&lt;br /&gt;
|-&lt;br /&gt;
|AgavaPLC 1.3&lt;br /&gt;
|2022 г.&lt;br /&gt;
|В разработке&lt;br /&gt;
|[[Перечень изменений AgavaPLC 1.3]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
	<entry>
		<id>https://docs.kb-agava.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%90%D0%94%D0%A2-%D0%98%D0%B7%D0%BC%D0%B5%D1%80%D0%B8%D1%82%D0%B5%D0%BB%D1%8C_%D0%B4%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%90%D0%94%D0%A2-100.%D0%94.jpg&amp;diff=1510</id>
		<title>Файл:АДТ-Измеритель давления АДТ-100.Д.jpg</title>
		<link rel="alternate" type="text/html" href="https://docs.kb-agava.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%90%D0%94%D0%A2-%D0%98%D0%B7%D0%BC%D0%B5%D1%80%D0%B8%D1%82%D0%B5%D0%BB%D1%8C_%D0%B4%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%90%D0%94%D0%A2-100.%D0%94.jpg&amp;diff=1510"/>
		<updated>2021-12-24T07:59:31Z</updated>

		<summary type="html">&lt;p&gt;Administrator: Administrator переименовал страницу Файл:АДТ-Измеритель давления АДТ-100.Д.jpg.jpg в Файл:АДТ-Измеритель давления АДТ-100.Д.jpg без оставления перенаправления&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;АДТ-Измеритель давления АДТ-100.Д&lt;/div&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
	<entry>
		<id>https://docs.kb-agava.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%90%D0%94%D0%A2-%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F_%D0%B8%D0%B7%D0%BC%D0%B5%D1%80%D0%B8%D1%82%D0%B5%D0%BB%D1%8F.jpg&amp;diff=1501</id>
		<title>Файл:АДТ-Исполнения измерителя.jpg</title>
		<link rel="alternate" type="text/html" href="https://docs.kb-agava.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%90%D0%94%D0%A2-%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F_%D0%B8%D0%B7%D0%BC%D0%B5%D1%80%D0%B8%D1%82%D0%B5%D0%BB%D1%8F.jpg&amp;diff=1501"/>
		<updated>2021-12-24T07:38:51Z</updated>

		<summary type="html">&lt;p&gt;Administrator: Administrator переименовал страницу Файл:Adt-100.jpg в Файл:АДТ-Исполнения измерителя.jpg без оставления перенаправления&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Краткое описание ==&lt;br /&gt;
АДТ-Исполнения измерителя&lt;/div&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
	<entry>
		<id>https://docs.kb-agava.ru/index.php?title=%D0%98%D0%B7%D0%BC%D0%B5%D1%80%D0%B8%D1%82%D0%B5%D0%BB%D1%8C_%D0%B4%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%90%D0%94%D0%A2-100&amp;diff=1493</id>
		<title>Измеритель давления АДТ-100</title>
		<link rel="alternate" type="text/html" href="https://docs.kb-agava.ru/index.php?title=%D0%98%D0%B7%D0%BC%D0%B5%D1%80%D0%B8%D1%82%D0%B5%D0%BB%D1%8C_%D0%B4%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%90%D0%94%D0%A2-100&amp;diff=1493"/>
		<updated>2021-12-20T05:27:37Z</updated>

		<summary type="html">&lt;p&gt;Administrator: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Документация ==&lt;br /&gt;
[[Руководство по эксплуатации измерителя давления АДТ-100]]&lt;/div&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
	<entry>
		<id>https://docs.kb-agava.ru/index.php?title=%D0%98%D0%B7%D0%BC%D0%B5%D1%80%D0%B8%D1%82%D0%B5%D0%BB%D1%8C_%D0%B4%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%90%D0%94%D0%A2-100&amp;diff=1492</id>
		<title>Измеритель давления АДТ-100</title>
		<link rel="alternate" type="text/html" href="https://docs.kb-agava.ru/index.php?title=%D0%98%D0%B7%D0%BC%D0%B5%D1%80%D0%B8%D1%82%D0%B5%D0%BB%D1%8C_%D0%B4%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%90%D0%94%D0%A2-100&amp;diff=1492"/>
		<updated>2021-12-20T05:25:07Z</updated>

		<summary type="html">&lt;p&gt;Administrator: Полностью удалено содержимое страницы&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
	<entry>
		<id>https://docs.kb-agava.ru/index.php?title=%D0%98%D0%B7%D0%BC%D0%B5%D1%80%D0%B8%D1%82%D0%B5%D0%BB%D1%8C_%D0%B4%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%90%D0%94%D0%A2-100&amp;diff=1491</id>
		<title>Измеритель давления АДТ-100</title>
		<link rel="alternate" type="text/html" href="https://docs.kb-agava.ru/index.php?title=%D0%98%D0%B7%D0%BC%D0%B5%D1%80%D0%B8%D1%82%D0%B5%D0%BB%D1%8C_%D0%B4%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%90%D0%94%D0%A2-100&amp;diff=1491"/>
		<updated>2021-12-20T05:24:07Z</updated>

		<summary type="html">&lt;p&gt;Administrator: Administrator переименовал страницу Измеритель давления АДТ в Измеритель давления АДТ-100 без оставления перенаправления&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#перенаправление [[Руководство по эксплуатации измерителя давления АДТ-100]]&lt;/div&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
	<entry>
		<id>https://docs.kb-agava.ru/index.php?title=MediaWiki:Vector.css&amp;diff=498</id>
		<title>MediaWiki:Vector.css</title>
		<link rel="alternate" type="text/html" href="https://docs.kb-agava.ru/index.php?title=MediaWiki:Vector.css&amp;diff=498"/>
		<updated>2021-08-25T09:43:07Z</updated>

		<summary type="html">&lt;p&gt;Administrator: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;.mw-body-content a {&lt;br /&gt;
    text-decoration: underline;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
	<entry>
		<id>https://docs.kb-agava.ru/index.php?title=MediaWiki:Vector.css&amp;diff=497</id>
		<title>MediaWiki:Vector.css</title>
		<link rel="alternate" type="text/html" href="https://docs.kb-agava.ru/index.php?title=MediaWiki:Vector.css&amp;diff=497"/>
		<updated>2021-08-25T09:41:52Z</updated>

		<summary type="html">&lt;p&gt;Administrator: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;.mw-body a {&lt;br /&gt;
    text-decoration: underline;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
	<entry>
		<id>https://docs.kb-agava.ru/index.php?title=MediaWiki:Vector.css&amp;diff=496</id>
		<title>MediaWiki:Vector.css</title>
		<link rel="alternate" type="text/html" href="https://docs.kb-agava.ru/index.php?title=MediaWiki:Vector.css&amp;diff=496"/>
		<updated>2021-08-25T09:40:20Z</updated>

		<summary type="html">&lt;p&gt;Administrator: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;p a {&lt;br /&gt;
    text-decoration: underline;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
	<entry>
		<id>https://docs.kb-agava.ru/index.php?title=MediaWiki:Vector.css&amp;diff=495</id>
		<title>MediaWiki:Vector.css</title>
		<link rel="alternate" type="text/html" href="https://docs.kb-agava.ru/index.php?title=MediaWiki:Vector.css&amp;diff=495"/>
		<updated>2021-08-25T09:38:33Z</updated>

		<summary type="html">&lt;p&gt;Administrator: Новая страница: «a {     text-decoration: underline; }»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;a {&lt;br /&gt;
    text-decoration: underline;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
	<entry>
		<id>https://docs.kb-agava.ru/index.php?title=MediaWiki:Sidebar&amp;diff=483</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://docs.kb-agava.ru/index.php?title=MediaWiki:Sidebar&amp;diff=483"/>
		<updated>2021-08-25T08:03:53Z</updated>

		<summary type="html">&lt;p&gt;Administrator: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
* navigation&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
** Каталог изделий КБ АГАВА|Каталог изделий&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
** randompage-url|randompage&lt;br /&gt;
** helppage|help-mediawiki&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
	<entry>
		<id>https://docs.kb-agava.ru/index.php?title=MediaWiki:Sidebar&amp;diff=482</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://docs.kb-agava.ru/index.php?title=MediaWiki:Sidebar&amp;diff=482"/>
		<updated>2021-08-25T08:03:20Z</updated>

		<summary type="html">&lt;p&gt;Administrator: Новая страница: « * navigation ** mainpage|mainpage-description ** Каталог изделий|Каталог изделий ** recentchanges-url|recentchanges ** randompage-url...»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
* navigation&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
** Каталог изделий|Каталог изделий&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
** randompage-url|randompage&lt;br /&gt;
** helppage|help-mediawiki&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
	<entry>
		<id>https://docs.kb-agava.ru/index.php?title=%D0%94%D0%A1%D0%9F:_%D0%A8%D0%BF%D0%B0%D1%80%D0%B3%D0%B0%D0%BB%D0%BA%D0%B0_fail2ban&amp;diff=51</id>
		<title>ДСП: Шпаргалка fail2ban</title>
		<link rel="alternate" type="text/html" href="https://docs.kb-agava.ru/index.php?title=%D0%94%D0%A1%D0%9F:_%D0%A8%D0%BF%D0%B0%D1%80%D0%B3%D0%B0%D0%BB%D0%BA%D0%B0_fail2ban&amp;diff=51"/>
		<updated>2021-02-18T15:01:09Z</updated>

		<summary type="html">&lt;p&gt;Administrator: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;fail2ban-regex --print-all-match /var/log/mail.log  /etc/fail2ban/filter.d/postfix.conf[mode=auth]&lt;br /&gt;
&lt;br /&gt;
fail2ban-client status postfix-auth&lt;br /&gt;
&lt;br /&gt;
fail2ban-client set postfix-auth unbanip 94.140.142.191&lt;/div&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
	<entry>
		<id>https://docs.kb-agava.ru/index.php?title=%D0%94%D0%A1%D0%9F:_%D0%A8%D0%BF%D0%B0%D1%80%D0%B3%D0%B0%D0%BB%D0%BA%D0%B0_fail2ban&amp;diff=50</id>
		<title>ДСП: Шпаргалка fail2ban</title>
		<link rel="alternate" type="text/html" href="https://docs.kb-agava.ru/index.php?title=%D0%94%D0%A1%D0%9F:_%D0%A8%D0%BF%D0%B0%D1%80%D0%B3%D0%B0%D0%BB%D0%BA%D0%B0_fail2ban&amp;diff=50"/>
		<updated>2021-02-18T15:00:34Z</updated>

		<summary type="html">&lt;p&gt;Administrator: Новая страница: «fail2ban-regex --print-all-match /var/log/mail.log  /etc/fail2ban/filter.d/postfix.conf[mode=auth] fail2ban-client status postfix-auth fail2ban-client set postfix...»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;fail2ban-regex --print-all-match /var/log/mail.log  /etc/fail2ban/filter.d/postfix.conf[mode=auth]&lt;br /&gt;
fail2ban-client status postfix-auth&lt;br /&gt;
fail2ban-client set postfix unbanip 94.140.142.191&lt;/div&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
	<entry>
		<id>https://docs.kb-agava.ru/index.php?title=%D0%A0%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80_%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%90%D0%A0%D0%92&amp;diff=47</id>
		<title>Регистратор многофункциональный АРВ</title>
		<link rel="alternate" type="text/html" href="https://docs.kb-agava.ru/index.php?title=%D0%A0%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80_%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%90%D0%A0%D0%92&amp;diff=47"/>
		<updated>2021-02-07T14:16:58Z</updated>

		<summary type="html">&lt;p&gt;Administrator: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Программное обеспечение регистратора АРВ]] - к удалению.&lt;br /&gt;
&lt;br /&gt;
== Описание ==&lt;br /&gt;
&lt;br /&gt;
== Документация ==&lt;br /&gt;
&lt;br /&gt;
== Программное обеспечение ==&lt;br /&gt;
&lt;br /&gt;
===Архиватор===&lt;br /&gt;
Архиватор - программное обеспечение для загрузки и просмотра на персональном компьютере архивов регистратора АРВ.&lt;br /&gt;
===Файлы===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; data-mce-style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!|Файл&lt;br /&gt;
!|Размер&lt;br /&gt;
!|Дата&lt;br /&gt;
!|Описание&lt;br /&gt;
|-&lt;br /&gt;
|[[:Файл:Setup-usbdriver-agava-rndis.zip|setup-usbdriver-agava-rndis.zip]]&lt;br /&gt;
|{{PAGESIZE:Файл:Setup-usbdriver-agava-rndis.zip}}&lt;br /&gt;
|{{REVISIONDAY2:Файл:Setup-usbdriver-agava-rndis.zip}}-{{REVISIONMONTH:Файл:Setup-usbdriver-agava-rndis.zip}}-{{REVISIONYEAR:Файл:Setup-usbdriver-agava-rndis.zip}}&lt;br /&gt;
|{{Файл:Setup-usbdriver-agava-rndis.zip}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[:Файл:Setup-usbdriver-agava-rndis.zip]]&lt;br /&gt;
{{#attach:Файл:Setup-usbdriver-agava-rndis.zip}}&lt;/div&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
	<entry>
		<id>https://docs.kb-agava.ru/index.php?title=%D0%A0%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80_%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%90%D0%A0%D0%92&amp;diff=46</id>
		<title>Регистратор многофункциональный АРВ</title>
		<link rel="alternate" type="text/html" href="https://docs.kb-agava.ru/index.php?title=%D0%A0%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80_%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%90%D0%A0%D0%92&amp;diff=46"/>
		<updated>2021-02-07T13:59:51Z</updated>

		<summary type="html">&lt;p&gt;Administrator: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Программное обеспечение регистратора АРВ]] - к удалению.&lt;br /&gt;
&lt;br /&gt;
== Описание ==&lt;br /&gt;
&lt;br /&gt;
== Документация ==&lt;br /&gt;
&lt;br /&gt;
== Программное обеспечение ==&lt;br /&gt;
&lt;br /&gt;
===Архиватор===&lt;br /&gt;
Архиватор - программное обеспечение для загрузки и просмотра на персональном компьютере архивов регистратора АРВ.&lt;br /&gt;
===Файлы===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; data-mce-style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!|Файл&lt;br /&gt;
!|Размер&lt;br /&gt;
!|Дата&lt;br /&gt;
!|Описание&lt;br /&gt;
|-&lt;br /&gt;
|[[:Файл:Setup-usbdriver-agava-rndis.zip|setup-usbdriver-agava-rndis.zip]]&lt;br /&gt;
|{{PAGESIZE:Файл:Setup-usbdriver-agava-rndis.zip}}&lt;br /&gt;
|{{REVISIONDAY2:Файл:Setup-usbdriver-agava-rndis.zip}}-{{REVISIONMONTH:Файл:Setup-usbdriver-agava-rndis.zip}}-{{REVISIONYEAR:Файл:Setup-usbdriver-agava-rndis.zip}}&lt;br /&gt;
|{{Файл:Setup-usbdriver-agava-rndis.zip}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[:Файл:Setup-usbdriver-agava-rndis.zip]]&lt;/div&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
	<entry>
		<id>https://docs.kb-agava.ru/index.php?title=%D0%A0%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80_%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%90%D0%A0%D0%92&amp;diff=45</id>
		<title>Регистратор многофункциональный АРВ</title>
		<link rel="alternate" type="text/html" href="https://docs.kb-agava.ru/index.php?title=%D0%A0%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80_%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%90%D0%A0%D0%92&amp;diff=45"/>
		<updated>2021-02-07T13:59:15Z</updated>

		<summary type="html">&lt;p&gt;Administrator: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Программное обеспечение регистратора АРВ]] - к удалению.&lt;br /&gt;
&lt;br /&gt;
== Описание ==&lt;br /&gt;
&lt;br /&gt;
== Документация ==&lt;br /&gt;
&lt;br /&gt;
== Программное обеспечение ==&lt;br /&gt;
&lt;br /&gt;
===Архиватор===&lt;br /&gt;
Архиватор - программное обеспечение для загрузки и просмотра на персональном компьютере архивов регистратора АРВ.&lt;br /&gt;
===Файлы===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; data-mce-style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!|Файл&lt;br /&gt;
!|Размер&lt;br /&gt;
!|Дата&lt;br /&gt;
!|Описание&lt;br /&gt;
|-&lt;br /&gt;
|[[:Файл:Setup-usbdriver-agava-rndis.zip|setup-usbdriver-agava-rndis.zip]]&lt;br /&gt;
|{{PAGESIZE:Файл:Setup-usbdriver-agava-rndis.zip}}&lt;br /&gt;
|{{REVISIONDAY2:Файл:Setup-usbdriver-agava-rndis.zip}}-{{REVISIONMONTH:Файл:Setup-usbdriver-agava-rndis.zip}}-{{REVISIONYEAR:Файл:Setup-usbdriver-agava-rndis.zip}}&lt;br /&gt;
|{{Файл:Setup-usbdriver-agava-rndis.zip}}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
	<entry>
		<id>https://docs.kb-agava.ru/index.php?title=%D0%A0%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80_%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%90%D0%A0%D0%92&amp;diff=44</id>
		<title>Регистратор многофункциональный АРВ</title>
		<link rel="alternate" type="text/html" href="https://docs.kb-agava.ru/index.php?title=%D0%A0%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80_%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%90%D0%A0%D0%92&amp;diff=44"/>
		<updated>2021-02-07T13:25:41Z</updated>

		<summary type="html">&lt;p&gt;Administrator: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Программное обеспечение регистратора АРВ]] - к удалению.&lt;br /&gt;
&lt;br /&gt;
== Описание ==&lt;br /&gt;
&lt;br /&gt;
== Документация ==&lt;br /&gt;
&lt;br /&gt;
== Программное обеспечение ==&lt;br /&gt;
&lt;br /&gt;
===Архиватор===&lt;br /&gt;
Архиватор - программное обеспечение для загрузки и просмотра на персональном компьютере архивов регистратора АРВ.&lt;br /&gt;
===Файлы===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; data-mce-style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!|Файл&lt;br /&gt;
!|Размер&lt;br /&gt;
!|Дата&lt;br /&gt;
!|Описание&lt;br /&gt;
|-&lt;br /&gt;
|[[:Файл:Setup-usbdriver-agava-rndis.zip|setup-usbdriver-agava-rndis.zip]]&lt;br /&gt;
|{{REVISIONSIZE:Файл:Setup-usbdriver-agava-rndis.zip}} {{#filesize:Setup-usbdriver-agava-rndis.zip}}&lt;br /&gt;
|{{REVISIONDAY2:Файл:Setup-usbdriver-agava-rndis.zip}}-{{REVISIONMONTH:Файл:Setup-usbdriver-agava-rndis.zip}}-{{REVISIONYEAR:Файл:Setup-usbdriver-agava-rndis.zip}}&lt;br /&gt;
|{{Файл:Setup-usbdriver-agava-rndis.zip}}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
	<entry>
		<id>https://docs.kb-agava.ru/index.php?title=%D0%A0%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80_%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%90%D0%A0%D0%92&amp;diff=43</id>
		<title>Регистратор многофункциональный АРВ</title>
		<link rel="alternate" type="text/html" href="https://docs.kb-agava.ru/index.php?title=%D0%A0%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80_%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%90%D0%A0%D0%92&amp;diff=43"/>
		<updated>2021-02-07T13:17:59Z</updated>

		<summary type="html">&lt;p&gt;Administrator: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Программное обеспечение регистратора АРВ]] - к удалению.&lt;br /&gt;
&lt;br /&gt;
== Описание ==&lt;br /&gt;
&lt;br /&gt;
== Документация ==&lt;br /&gt;
&lt;br /&gt;
== Программное обеспечение ==&lt;br /&gt;
&lt;br /&gt;
===Архиватор===&lt;br /&gt;
Архиватор - программное обеспечение для загрузки и просмотра на персональном компьютере архивов регистратора АРВ.&lt;br /&gt;
===Файлы===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; data-mce-style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!|Файл&lt;br /&gt;
!|Размер&lt;br /&gt;
!|Дата&lt;br /&gt;
!|Описание&lt;br /&gt;
|-&lt;br /&gt;
|[[:Файл:Setup-usbdriver-agava-rndis.zip|setup-usbdriver-agava-rndis.zip]]&lt;br /&gt;
|{{REVISIONSIZE:Файл:Setup-usbdriver-agava-rndis.zip}}&lt;br /&gt;
|{{REVISIONDAY2:Файл:Setup-usbdriver-agava-rndis.zip}}-{{REVISIONMONTH:Файл:Setup-usbdriver-agava-rndis.zip}}-{{REVISIONYEAR:Файл:Setup-usbdriver-agava-rndis.zip}}&lt;br /&gt;
|{{Файл:Setup-usbdriver-agava-rndis.zip}}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
	<entry>
		<id>https://docs.kb-agava.ru/index.php?title=%D0%A0%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80_%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%90%D0%A0%D0%92&amp;diff=42</id>
		<title>Регистратор многофункциональный АРВ</title>
		<link rel="alternate" type="text/html" href="https://docs.kb-agava.ru/index.php?title=%D0%A0%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80_%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%90%D0%A0%D0%92&amp;diff=42"/>
		<updated>2021-02-07T13:11:30Z</updated>

		<summary type="html">&lt;p&gt;Administrator: /* Файлы */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Программное обеспечение регистратора АРВ]] - к удалению.&lt;br /&gt;
&lt;br /&gt;
== Описание ==&lt;br /&gt;
&lt;br /&gt;
== Документация ==&lt;br /&gt;
&lt;br /&gt;
== Программное обеспечение ==&lt;br /&gt;
&lt;br /&gt;
===Архиватор===&lt;br /&gt;
Архиватор - программное обеспечение для загрузки и просмотра на персональном компьютере архивов регистратора АРВ.&lt;br /&gt;
===Файлы===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; data-mce-style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!|Файл&lt;br /&gt;
!|Размер&lt;br /&gt;
!|Дата&lt;br /&gt;
!|Описание&lt;br /&gt;
|-&lt;br /&gt;
|[[:Файл:Setup-usbdriver-agava-rndis.zip|setup-usbdriver-agava-rndis.zip]]&lt;br /&gt;
|{{PAGESIZE:Файл:Setup-usbdriver-agava-rndis.zip}}&lt;br /&gt;
|{{REVISIONDAY:Файл:Setup-usbdriver-agava-rndis.zip}}-{{REVISIONMONTH:Файл:Setup-usbdriver-agava-rndis.zip}}-{{REVISIONYEAR:Файл:Setup-usbdriver-agava-rndis.zip}}&lt;br /&gt;
|{{Файл:Setup-usbdriver-agava-rndis.zip}}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
	<entry>
		<id>https://docs.kb-agava.ru/index.php?title=%D0%A0%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80_%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%90%D0%A0%D0%92&amp;diff=41</id>
		<title>Регистратор многофункциональный АРВ</title>
		<link rel="alternate" type="text/html" href="https://docs.kb-agava.ru/index.php?title=%D0%A0%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80_%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%90%D0%A0%D0%92&amp;diff=41"/>
		<updated>2021-02-07T13:10:46Z</updated>

		<summary type="html">&lt;p&gt;Administrator: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Программное обеспечение регистратора АРВ]] - к удалению.&lt;br /&gt;
&lt;br /&gt;
== Описание ==&lt;br /&gt;
&lt;br /&gt;
== Документация ==&lt;br /&gt;
&lt;br /&gt;
== Программное обеспечение ==&lt;br /&gt;
&lt;br /&gt;
===Архиватор===&lt;br /&gt;
Архиватор - программное обеспечение для загрузки и просмотра на персональном компьютере архивов регистратора АРВ.&lt;br /&gt;
====Файлы====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; data-mce-style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!|Файл&lt;br /&gt;
!|Размер&lt;br /&gt;
!|Дата&lt;br /&gt;
!|Описание&lt;br /&gt;
|-&lt;br /&gt;
|[[:Файл:Setup-usbdriver-agava-rndis.zip|setup-usbdriver-agava-rndis.zip]]&lt;br /&gt;
|{{PAGESIZE:Файл:Setup-usbdriver-agava-rndis.zip}}&lt;br /&gt;
|{{REVISIONDAY:Файл:Setup-usbdriver-agava-rndis.zip}}-{{REVISIONMONTH:Файл:Setup-usbdriver-agava-rndis.zip}}-{{REVISIONYEAR:Файл:Setup-usbdriver-agava-rndis.zip}}&lt;br /&gt;
|{{Файл:Setup-usbdriver-agava-rndis.zip}}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
	<entry>
		<id>https://docs.kb-agava.ru/index.php?title=%D0%A0%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80_%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%90%D0%A0%D0%92&amp;diff=40</id>
		<title>Регистратор многофункциональный АРВ</title>
		<link rel="alternate" type="text/html" href="https://docs.kb-agava.ru/index.php?title=%D0%A0%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80_%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%90%D0%A0%D0%92&amp;diff=40"/>
		<updated>2021-02-07T13:08:27Z</updated>

		<summary type="html">&lt;p&gt;Administrator: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Программное обеспечение регистратора АРВ]] - к удалению.&lt;br /&gt;
&lt;br /&gt;
== Программное обеспечение ==&lt;br /&gt;
&lt;br /&gt;
===Архиватор===&lt;br /&gt;
Архиватор - программное обеспечение для загрузки и просмотра на персональном компьютере архивов регистратора АРВ.&lt;br /&gt;
====Файлы====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; data-mce-style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!|Файл&lt;br /&gt;
!|Размер&lt;br /&gt;
!|Дата&lt;br /&gt;
!|Описание&lt;br /&gt;
|-&lt;br /&gt;
|[[:Файл:Setup-usbdriver-agava-rndis.zip|setup-usbdriver-agava-rndis.zip]]&lt;br /&gt;
|{{PAGESIZE:Файл:Setup-usbdriver-agava-rndis.zip}}&lt;br /&gt;
|{{REVISIONDAY:Файл:Setup-usbdriver-agava-rndis.zip}}-{{REVISIONMONTH:Файл:Setup-usbdriver-agava-rndis.zip}}-{{REVISIONYEAR:Файл:Setup-usbdriver-agava-rndis.zip}}&lt;br /&gt;
|{{Файл:Setup-usbdriver-agava-rndis.zip}}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
	<entry>
		<id>https://docs.kb-agava.ru/index.php?title=%D0%A0%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80_%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%90%D0%A0%D0%92&amp;diff=39</id>
		<title>Регистратор многофункциональный АРВ</title>
		<link rel="alternate" type="text/html" href="https://docs.kb-agava.ru/index.php?title=%D0%A0%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80_%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%90%D0%A0%D0%92&amp;diff=39"/>
		<updated>2021-02-07T13:07:08Z</updated>

		<summary type="html">&lt;p&gt;Administrator: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Программное обеспечение регистратора АРВ]]&lt;/div&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
	<entry>
		<id>https://docs.kb-agava.ru/index.php?title=%D0%9A%D0%B0%D1%82%D0%B0%D0%BB%D0%BE%D0%B3_%D0%B8%D0%B7%D0%B4%D0%B5%D0%BB%D0%B8%D0%B9_%D0%9A%D0%91_%D0%90%D0%93%D0%90%D0%92%D0%90&amp;diff=38</id>
		<title>Каталог изделий КБ АГАВА</title>
		<link rel="alternate" type="text/html" href="https://docs.kb-agava.ru/index.php?title=%D0%9A%D0%B0%D1%82%D0%B0%D0%BB%D0%BE%D0%B3_%D0%B8%D0%B7%D0%B4%D0%B5%D0%BB%D0%B8%D0%B9_%D0%9A%D0%91_%D0%90%D0%93%D0%90%D0%92%D0%90&amp;diff=38"/>
		<updated>2021-02-07T13:05:48Z</updated>

		<summary type="html">&lt;p&gt;Administrator: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Измерители ==&lt;br /&gt;
Измеритель давления АДТ&lt;br /&gt;
&lt;br /&gt;
== Контроллеры ==&lt;br /&gt;
&lt;br /&gt;
=== Контроллеры на базе платформы АГАВА 6432.40 ===&lt;br /&gt;
[[Промышленный контроллер АГАВА ПК-40]]&lt;br /&gt;
&lt;br /&gt;
Программируемый логический контроллер АГАВА ПЛК-40&lt;br /&gt;
&lt;br /&gt;
Панель оператора АГАВА ПО-40&lt;br /&gt;
&lt;br /&gt;
=== Контроллеры на базе платформы АГАВА 6432.50 ===&lt;br /&gt;
[[Промышленный контроллер АГАВА ПК-50]]&lt;br /&gt;
&lt;br /&gt;
Программируемый логический контроллер АГАВА ПЛК-50&lt;br /&gt;
&lt;br /&gt;
Панель оператора АГАВА ПО-50&lt;br /&gt;
&lt;br /&gt;
=== Контроллеры на базе платформы АГАВА 6432.60 ===&lt;br /&gt;
[[Промышленный контроллер АГАВА ПК-60]]&lt;br /&gt;
&lt;br /&gt;
Программируемый логический контроллер АГАВА ПЛК-60&lt;br /&gt;
&lt;br /&gt;
== Регистраторы ==&lt;br /&gt;
[[Регистратор многофункциональный АРВ]]&lt;/div&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
	<entry>
		<id>https://docs.kb-agava.ru/index.php?title=%D0%A0%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80_%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%90%D0%A0%D0%92&amp;diff=37</id>
		<title>Регистратор многофункциональный АРВ</title>
		<link rel="alternate" type="text/html" href="https://docs.kb-agava.ru/index.php?title=%D0%A0%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80_%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%90%D0%A0%D0%92&amp;diff=37"/>
		<updated>2021-02-07T13:05:27Z</updated>

		<summary type="html">&lt;p&gt;Administrator: Создана пустая страница&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
	<entry>
		<id>https://docs.kb-agava.ru/index.php?title=%D0%94%D0%A1%D0%9F:_%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D1%8F_%D0%BF%D0%BE_%D0%BF%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B5_%D0%B8%D0%BD%D1%81%D1%82%D0%B0%D0%BB%D0%BB%D1%8F%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D0%B0%D0%BA%D0%B5%D1%82%D0%B0_1%D0%A1:_%D0%9F%D1%80%D0%B5%D0%B4%D0%BF%D1%80%D0%B8%D1%8F%D1%82%D0%B8%D0%B5_%D0%B4%D0%BB%D1%8F_KSC&amp;diff=29</id>
		<title>ДСП: Инструкция по подготовке инсталляционного пакета 1С: Предприятие для KSC</title>
		<link rel="alternate" type="text/html" href="https://docs.kb-agava.ru/index.php?title=%D0%94%D0%A1%D0%9F:_%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D1%8F_%D0%BF%D0%BE_%D0%BF%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B5_%D0%B8%D0%BD%D1%81%D1%82%D0%B0%D0%BB%D0%BB%D1%8F%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D0%B0%D0%BA%D0%B5%D1%82%D0%B0_1%D0%A1:_%D0%9F%D1%80%D0%B5%D0%B4%D0%BF%D1%80%D0%B8%D1%8F%D1%82%D0%B8%D0%B5_%D0%B4%D0%BB%D1%8F_KSC&amp;diff=29"/>
		<updated>2021-02-04T17:00:54Z</updated>

		<summary type="html">&lt;p&gt;Administrator: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Исполняемый файл: 1CEnterprise 8.msi&lt;br /&gt;
&lt;br /&gt;
Параметры:&lt;br /&gt;
 /qn TRANSFORMS=adminstallrelogon.mst;1049.mst DESIGNERALLCLIENTS=1 THICKCLIENT=1 THINCLIENTFILE=1 THINCLIENT=1 WEBSERVEREXT=0 SERVER=0 CONFREPOSSERVER=0 CONVERTER77=0 SERVERCLIENT=0 LANGUAGES=RU&lt;br /&gt;
При создании инсталляционного пакета поставить галочку «Копировать всю папку в инсталляционный пакет».&lt;br /&gt;
[[Категория:Инструкции]]&lt;/div&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
	<entry>
		<id>https://docs.kb-agava.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Setup-usbdriver-agava-rndis.zip&amp;diff=23</id>
		<title>Файл:Setup-usbdriver-agava-rndis.zip</title>
		<link rel="alternate" type="text/html" href="https://docs.kb-agava.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Setup-usbdriver-agava-rndis.zip&amp;diff=23"/>
		<updated>2021-02-03T14:45:24Z</updated>

		<summary type="html">&lt;p&gt;Administrator: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;USB драйвер для контроллеров АГАВА&lt;/div&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
	<entry>
		<id>https://docs.kb-agava.ru/index.php?title=%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B5_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D1%80%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0_%D0%90%D0%A0%D0%92&amp;diff=22</id>
		<title>Программное обеспечение регистратора АРВ</title>
		<link rel="alternate" type="text/html" href="https://docs.kb-agava.ru/index.php?title=%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B5_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D1%80%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0_%D0%90%D0%A0%D0%92&amp;diff=22"/>
		<updated>2021-02-03T14:31:56Z</updated>

		<summary type="html">&lt;p&gt;Administrator: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Архиватор ==&lt;br /&gt;
Архиватор - программное обеспечение для загрузки и просмотра на персональном компьютере архивов регистратора АРВ.&lt;br /&gt;
&lt;br /&gt;
===Файлы===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; data-mce-style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!|Файл&lt;br /&gt;
!|Размер&lt;br /&gt;
!|Дата&lt;br /&gt;
!|Описание&lt;br /&gt;
|-&lt;br /&gt;
|[[:Файл:Setup-usbdriver-agava-rndis.zip|setup-usbdriver-agava-rndis.zip]]&lt;br /&gt;
|{{PAGESIZE:Файл:Setup-usbdriver-agava-rndis.zip}}&lt;br /&gt;
|{{REVISIONDAY:Файл:Setup-usbdriver-agava-rndis.zip}}-{{REVISIONMONTH:Файл:Setup-usbdriver-agava-rndis.zip}}-{{REVISIONYEAR:Файл:Setup-usbdriver-agava-rndis.zip}}&lt;br /&gt;
|{{Файл:Setup-usbdriver-agava-rndis.zip}}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
	<entry>
		<id>https://docs.kb-agava.ru/index.php?title=%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B5_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D1%80%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0_%D0%90%D0%A0%D0%92&amp;diff=21</id>
		<title>Программное обеспечение регистратора АРВ</title>
		<link rel="alternate" type="text/html" href="https://docs.kb-agava.ru/index.php?title=%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B5_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D1%80%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0_%D0%90%D0%A0%D0%92&amp;diff=21"/>
		<updated>2021-02-03T14:29:24Z</updated>

		<summary type="html">&lt;p&gt;Administrator: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Архиватор ==&lt;br /&gt;
Архиватор - программное обеспечение для просмотра и сохранения на персональном компьютере архивов регистратора АГАВА АРВ.&lt;br /&gt;
&lt;br /&gt;
===Файлы===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; data-mce-style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!|Файл&lt;br /&gt;
!|Размер&lt;br /&gt;
!|Дата&lt;br /&gt;
!|Описание&lt;br /&gt;
|-&lt;br /&gt;
|[[:Файл:Setup-usbdriver-agava-rndis.zip|setup-usbdriver-agava-rndis.zip]]&lt;br /&gt;
|{{PAGESIZE:Файл:Setup-usbdriver-agava-rndis.zip}}&lt;br /&gt;
|{{REVISIONDAY:Файл:Setup-usbdriver-agava-rndis.zip}}-{{REVISIONMONTH:Файл:Setup-usbdriver-agava-rndis.zip}}-{{REVISIONYEAR:Файл:Setup-usbdriver-agava-rndis.zip}}&lt;br /&gt;
|{{Файл:Setup-usbdriver-agava-rndis.zip}}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
	<entry>
		<id>https://docs.kb-agava.ru/index.php?title=%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B5_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D1%80%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0_%D0%90%D0%A0%D0%92&amp;diff=20</id>
		<title>Программное обеспечение регистратора АРВ</title>
		<link rel="alternate" type="text/html" href="https://docs.kb-agava.ru/index.php?title=%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B5_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D1%80%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0_%D0%90%D0%A0%D0%92&amp;diff=20"/>
		<updated>2021-02-03T14:27:57Z</updated>

		<summary type="html">&lt;p&gt;Administrator: Новая страница: «Архиватор  Архиватор - программное обеспечение для просмотра и сохранения на персональн...»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Архиватор&lt;br /&gt;
&lt;br /&gt;
Архиватор - программное обеспечение для просмотра и сохранения на персональном компьютере архивов регистратора АГАВА АРВ.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Д-0292 Спецификация 2021.02.01.pdf|мини|подпись ]]&lt;br /&gt;
&lt;br /&gt;
#attach&lt;br /&gt;
{{#attach: АГАВА ПЛК-40}}&lt;br /&gt;
&lt;br /&gt;
==Файлы==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; data-mce-style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!|Файл&lt;br /&gt;
!|Размер&lt;br /&gt;
!|Дата&lt;br /&gt;
!|Описание&lt;br /&gt;
|-&lt;br /&gt;
|[[:Файл:Setup-usbdriver-agava-rndis.zip|setup-usbdriver-agava-rndis.zip]]&lt;br /&gt;
|{{PAGESIZE:Файл:Setup-usbdriver-agava-rndis.zip}}&lt;br /&gt;
|{{REVISIONDAY:Файл:Setup-usbdriver-agava-rndis.zip}}-{{REVISIONMONTH:Файл:Setup-usbdriver-agava-rndis.zip}}-{{REVISIONYEAR:Файл:Setup-usbdriver-agava-rndis.zip}}&lt;br /&gt;
|{{Файл:Setup-usbdriver-agava-rndis.zip}}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
	<entry>
		<id>https://docs.kb-agava.ru/index.php?title=%D0%94%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D1%8F:_%D0%9F%D1%80%D0%BE%D0%BC%D1%8B%D1%88%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D0%BB%D0%B5%D1%80_%D0%90%D0%93%D0%90%D0%92%D0%90_%D0%9F%D0%9A-60&amp;diff=19</id>
		<title>Документация: Промышленный контроллер АГАВА ПК-60</title>
		<link rel="alternate" type="text/html" href="https://docs.kb-agava.ru/index.php?title=%D0%94%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D1%8F:_%D0%9F%D1%80%D0%BE%D0%BC%D1%8B%D1%88%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D0%BB%D0%B5%D1%80_%D0%90%D0%93%D0%90%D0%92%D0%90_%D0%9F%D0%9A-60&amp;diff=19"/>
		<updated>2021-02-03T06:41:20Z</updated>

		<summary type="html">&lt;p&gt;Administrator: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Руководство программиста&lt;br /&gt;
&lt;br /&gt;
SDK&lt;br /&gt;
[[Категория:Промышленные контроллеры АГАВА]]&lt;/div&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
	<entry>
		<id>https://docs.kb-agava.ru/index.php?title=%D0%94%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D1%8F:_%D0%9F%D1%80%D0%BE%D0%BC%D1%8B%D1%88%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D0%BB%D0%B5%D1%80_%D0%90%D0%93%D0%90%D0%92%D0%90_%D0%9F%D0%9A-60&amp;diff=18</id>
		<title>Документация: Промышленный контроллер АГАВА ПК-60</title>
		<link rel="alternate" type="text/html" href="https://docs.kb-agava.ru/index.php?title=%D0%94%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D1%8F:_%D0%9F%D1%80%D0%BE%D0%BC%D1%8B%D1%88%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D0%BB%D0%B5%D1%80_%D0%90%D0%93%D0%90%D0%92%D0%90_%D0%9F%D0%9A-60&amp;diff=18"/>
		<updated>2021-02-03T06:40:41Z</updated>

		<summary type="html">&lt;p&gt;Administrator: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Руководство программиста&lt;br /&gt;
&lt;br /&gt;
SDK&lt;/div&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
	<entry>
		<id>https://docs.kb-agava.ru/index.php?title=%D0%94%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D1%8F:_%D0%9F%D1%80%D0%BE%D0%BC%D1%8B%D1%88%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D0%BB%D0%B5%D1%80_%D0%90%D0%93%D0%90%D0%92%D0%90_%D0%9F%D0%9A-60&amp;diff=17</id>
		<title>Документация: Промышленный контроллер АГАВА ПК-60</title>
		<link rel="alternate" type="text/html" href="https://docs.kb-agava.ru/index.php?title=%D0%94%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D1%8F:_%D0%9F%D1%80%D0%BE%D0%BC%D1%8B%D1%88%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D0%BB%D0%B5%D1%80_%D0%90%D0%93%D0%90%D0%92%D0%90_%D0%9F%D0%9A-60&amp;diff=17"/>
		<updated>2021-02-03T06:39:56Z</updated>

		<summary type="html">&lt;p&gt;Administrator: Новая страница: «Руководство прогиаммиста  SDK»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Руководство прогиаммиста&lt;br /&gt;
&lt;br /&gt;
SDK&lt;/div&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
	<entry>
		<id>https://docs.kb-agava.ru/index.php?title=%D0%9F%D1%80%D0%BE%D0%BC%D1%8B%D1%88%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D0%BB%D0%B5%D1%80_%D0%90%D0%93%D0%90%D0%92%D0%90_%D0%9F%D0%9A-60&amp;diff=16</id>
		<title>Промышленный контроллер АГАВА ПК-60</title>
		<link rel="alternate" type="text/html" href="https://docs.kb-agava.ru/index.php?title=%D0%9F%D1%80%D0%BE%D0%BC%D1%8B%D1%88%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D0%BB%D0%B5%D1%80_%D0%90%D0%93%D0%90%D0%92%D0%90_%D0%9F%D0%9A-60&amp;diff=16"/>
		<updated>2021-02-03T06:39:28Z</updated>

		<summary type="html">&lt;p&gt;Administrator: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[Категория: Промышленные контроллеры АГАВА]]&lt;br /&gt;
Документация на [[Документация: Промышленный контроллер АГАВА ПК-60|промышленный контроллер АГАВА ПК-60]]&lt;/div&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
</feed>