Универсальная среда разработки Agava
Универсальная среда разработки предназначена для создания и редактирования программного обеспечения для панелей оператора АГАВА ПО, многоканальных программируемых реле АГАВА МПР-60 и систем диспетчеризации на базе SCADA-системы AgavaSCADA.
1 Введение
Среда разработки имеет удобный и эргономичный пользовательский интерфейс со всеми инструментами, необходимыми для создания эффективных проектов-приложений, предназначенных для исполнения на ПК, панелях оператора или встраиваемых компьютерах.
Среда разработки совмещает редакторы текста, редакторы визуальных представлений объектов, компоновщики структуры, средства связывания объектов и других частей проекта, анализаторы проекта в одном приложении и дает пользователю возможность ведения эффективной разработки проектов-приложений от начала и до завершения в одной программе, без использования разнородных приложений-утилит и необходимости переключения между ними.
2 Разработка проекта
2.1 Создание нового проекта
Создание нового проекта в среде разработки осуществляется с помощью команды «Создать проект…» в меню «Файл». После вызова данной команды откроется диалоговое окно создания нового проекта (см. Рисунок 1).
Для создания проекта необходимо в списке типов проектов выбрать необходимый, ввести имя проекта и путь для его сохранения, после чего нажать кнопку «Создать проект».
Доступны несколько типов проектов:
- «Пустой проект» – проект без узлов для создания произвольного проекта;
- «Локальный проект» – предварительно настроенный проект, содержащий необходимые подсистемы и предназначенный для реализации простой системы для одного устройства, при выборе данного типа пользователь имеет возможность выбрать нужные ему подсистемы и получить полностью рабочий проект в минимальной конфигурации.
- «Проект АГАВА МПР-60» - проект, применяемый для реализации задач, предназначенных для исполнения на МПР-60.
2.2 Редактирование существующего проекта
Редактирование существующего проекта начинается с открытия файла проекта путем вызова команды «Открыть…» в меню «Файл». После загрузки файла в основном окне среды разработки будут отображены свойства и параметры проекта (см. Рисунок 2).
По умолчанию основное окно среды разработки содержит перечисленные ниже части:
- Строка заголовка приложения, панель меню и панель инструментов.
- Окно дерева проекта. Предоставляет доступ ко всей структуре проекта (см. раздел #Описание узлов).
- Окно свойств (см. раздел #Редактирование свойств узлов ).
- Область для отображения содержимого, например графического представления окна или задачи ПЛК.
- Область вспомогательных окон (окна наблюдения, ошибок и сообщений)
После открытия проекта можно приступить к его редактированию.
По завершению всех операций по редактированию необходимо выполнить проверку проекта на корректность с помощью команды «Проверить проект», расположенной в меню «Проект» (см. 6.1).
2.3 Структура и состав проекта
Типичный проект содержит следующие части:
- станция – важнейший объект, управляющий работой собственных подсистем и осуществляющий обмен данными с другими станциями;
- транспортная подсистема, выполняющая сбор данных с УСО;
- подсистема визуализации, обеспечивающая отображение информации в различных видах.
Проект также может содержать следующие части:
- подсистема архивирования, сохраняющая данные в БД для последующего извлечения и анализа;
- подсистема проверки прав пользователей, предназначенная для контроля доступа пользователя к объектам в режиме исполнения;
- подсистема тревог, предназначенная для оповещения пользователя об обнаруженных нарушениях;
- подсистема журналирования, выполняющая архивирование зарегистрированных событий в БД для последующего извлечения и анализа.
Проект имеет древовидную структуру, вследствие чего все узлы связаны друг с другом. Узлы нижних уровней подчиняются узлам верхних уровней. К примеру, станции подчинены все подсистемы, а каждой подсистеме подчинены все узлы, которыми она управляет.
Описание всех частей проекта и их узлов приведено в разделе 4.
2.4 Разработка программы
Перед началом разработки рекомендуется проанализировать поставленную задачи и определить подсистемы, необходимые для её реализации. Взаимодействие с подсистемами осуществляется через дерево проекта (см. Рисунок 2), в которое добавляются нужные узлы. Для добавления нового узла, необходимо нажать правой кнопкой мыши на узел верхнего уровня, которому он подчинён, и выбрать в контекстном меню команду «Добавить узел».
Основные части типовой программы и способы их реализации приведены ниже.
2.4.1 Взаимодействие с внешними устройствами
Реализуется через подсистему «Транспорты» в окне дерева проекта. Необходимо добавить в нее нужные протоколы, в зависимости от имеющейся конфигурации контроллера.
- Транспорт для обмена с субмодулями контроллера (для контроллеров с корзиной субмодулей). В качестве порта транспорта необходимо указать “/dev/ttyS0”. В проекте для МПР-60 присутствует по-умолчанию.
- Транспорт последовательный (для управления по RS-232, RS-485 и т.д.).
- Транспорт TCP/IP (для управления по Ethernet).
К транспортам присоединяются либо регистры Modbus, либо субмодули. Для регистра задается адрес устройства, номер регистра, функция чтения/записи и другие параметры, при необходимости. Для субмодуля указывается слот, в котором он установлен, и тип аналоговых входов/выходов.
2.4.2 Визуализация данных
Визуализация данных технологических процессов реализуется с помощью элементов подсистемы «Визуализация».
Система визуализации недоступна в проектах для контроллеров МПР.
Визуализация содержит одно или несколько окон, описанных ниже.
- Форма, которая может использоваться как меню или панель инструментов. Также применяется в небольших проектах, в которых нет необходимости изменения выводимого набора виджетов.
- Окно с композицией, которое позволяет переключаться между различными экранами (например мнемосхемой, настройками, архивированием и т.д). Каждый из этих экранов реализуется на отдельной композиции.
Процесс создания визуализации начинается с добавления нужных окон в группу «Окна» в дереве проекта. В том случае, если используется окно с композицией, необходимо задать ему отображаемую композицию по умолчанию, перед этим добавив ее в группу «Композиции». Созданные окна нужно добавить к одному фрейму, указав их в соответствующем свойстве фрейма.
Редактирование содержимого окна или композиции осуществляется в его графическом представлении (см. раздел #Редактирование графического представления узла).
Более подробное описание подсистемы визуализации приведено в разделе #Подсистема визуализации.
2.4.3 Пользовательские алгоритмы
Реализовать нужные алгоритмы работы программы можно с помощью различных инструментов, которые выбираются в зависимости от сложности проектов и навыков программиста:
- Операции в группе «Сигналы» – отдельные логические операции. В основном используются для небольших проектов, не требующих сложных методов управления;
- Задачи ПЛК – графическое программирование с помощью связывания между собой различных функциональных блоков. Подходит для больших проектов. Реализуется в узле «Задача ПЛК» группы «Задачи». Подробное описание приведено в разделе #Задача ПЛК.
- Скрипты С++ – текстовое программирование на языке высокого уровня. Подходит для больших проектов. Реализуется с помощью операций «Скрипт С++», расположенных в группе «Сигналы» или в задаче ПЛК. Описание реализации языка С++ приведено на странице Описание языка С++ в AgavaPLC.
2.5 Редактирование свойств узлов
Среда разработки обладает развитыми возможностями по редактированию свойств узлов.
2.5.1 Редактирование свойств узлов с помощью окна «Свойства»
Редактирование свойств всех узлов осуществляется с помощью окна «Свойства».
В окне «Свойства» в виде таблицы отображаются все доступные свойства узла, объединенные в группы. В левой колонке отображены наименования свойств, в правой отображены их значения. Свойства, недоступные для изменения, имеют наименование серого цвета. В нижней части окна расположена область подсказки, содержащая пояснение к выделенному свойству.
2.5.1.1 Редактирование свойств группы узлов
В случае, когда необходимо изменить свойства у нескольких узлов, можно воспользоваться возможностью группового редактирования свойств. Для этого нужно выделить несколько узлов в дереве конфигурации либо на графическом представлении с помощью левой кнопки мыши и нажатой кнопки «Ctrl». При этом в окне свойств будут отображены только те свойства, что имеются у всех выделенных узлов. Далее можно изменить нужное свойство, при этом после завершения редактирования измененное значение будет установлено во всех выбранных узлах.
2.5.2 Массовое редактирование свойств узлов
При необходимости редактирования разных свойств у большого количества узлов можно воспользоваться специальным окном «Список узлов».
Открытие окна выполняется с помощью вызова команды «Открыть список узлов» в контекстном меню дерева конфигурации. Открытое окно содержит все узлы, вложенные в выбранные при вызове команды.
Окно позволяет редактировать свойства непосредственно в ячейках таблицы, без переключения на окно «Свойства». Групповое редактирование свойств узлов через окно «Свойства» также доступно.
Щелчок правой кнопкой мыши на списке вызывает контекстное меню, содержащее команды:
- “Свойства”;
- “Экспорт в *.txt”;
- “Импорт из *.txt”;
- “Удалить узел”.
Команда «Свойства» открывает диалоговое окно выбора отображаемых свойств.
Команды «Экспорт», «Импорт» выполняют экспорт списка свойств узлов в текстовый файл и импорт соответственно.
Команда «Удалить узел» производит удаление выделенного узла (узлов).
2.5.3 Функция групповой замены источников в узлах
При разработке сложных проектов может возникнуть необходимость заменить источники сразу в большом количестве узлов. Для этой цели используется функция групповой замены источников. Необходимо перейти в редактирование свойств типа «Список источников», которое производится в соответствующем окне (см. Рисунок 8).
Затем необходимо использовать функцию групповой замены (см. Рисунок 9), выделив нужные узлы, нажав на них правой кнопкой мыши и выбрав «Групповая замена».
2.6 Редактирование графического представления узла
Редактирование содержимого окон, слоев, форм, композиций и других элементов, предназначенных для отображения на экране, осуществляется в окне графического представления. Открытие окна возможно с помощью команды «Открыть графическое представление» в контекстном меню дерева конфигурации или двойного нажатия левой кнопки мыши для узлов следующих типов:
- фрейм;
- форма;
- окно с композицией;
- слой.
Открытое графическое представление выбранного узла может содержать все уже размещенные на нем элементы визуализации и (или) другие узлы и позволяет добавить новые.
На рисунке 10 представлено графическое представление окна «winMain», обведенное пунктирной рамкой серого цвета, обозначающей внешнюю границу открытого узла. Тип рамки пользователь может выбрать по своему усмотрению, выбор производится в окне настроек среды разработки, доступном через команду «Настройки» в меню «Параметры».
Щелчок правой кнопкой мыши на пустом месте в открытом графическом представлении узла вызывает контекстное меню, содержащее команды удаления и вставки виджетов из буфера обмена, а также команды добавления новых виджетов доступных типов.
Добавление новых виджетов также может осуществлять путем их перестаскивания в рабочую область из панели виджетов.
Графическое представление позволяет перемещать выделенные виджеты кнопками перемещения курсора на клавиатуре, а также изменять их размеры кнопками перемещения курсора при нажатой кнопке Shift.
2.6.1 Связывание источников и виджетов
Связывание виджетов и других узлов с источниками данных необходимо для того, чтобы виджеты или другие узлы могли отображать или обрабатывать значения, хранящиеся в источниках.
Для связи виджетов с источниками данных можно воспользоваться обычным способом связывания через окно «Свойства». К примеру, связывание размещенного на форме виджета «Текстовая метка» с регистром Modbus осуществляется добавлением регистра Modbus в свойство виджета «Источник».
Вместе с обычным способом связывания существует и другой, более быстрый способ. Для быстрого связывания регистра с виджетом достаточно нажать на регистр в дереве конфигурации левой кнопкой мыши и перенести его на виджет в открытом графическом представлении.
При помещении курсора над виджетом последний будет заштрихован сеткой зеленого или красного цвета, а курсор изменит свой вид на стрелку с квадратиком (см. рисунок 11).
Зеленая штриховка виджета означает отсутствие связи выделенного виджета с источником данных, в этом случае связывание будет произведено. Красная штриховка говорит об ошибках связывания виджета и сигнала/источника.
2.6.2 Редактирование многослойных композиций
Редактирование многослойных композиций принципиально не отличается от редактирования форм, кроме одного нюанса. Так как композиция может состоять из нескольких слоев, и виджеты на слоях могут располагаться один над другим, для использования наиболее удобного способа редактирования такой композиции можно воспользоваться возможностью открытия каждого слоя в отдельном окне.
Для открытия графического представления слоя нужно воспользоваться командой «Открыть графическое представление» аналогично открытию графического представления формы или композиции.
Открыв одновременно композицию и слой, при редактировании слоя можно видеть, что содержимое композиции также изменяется и наоборот, при редактировании композиции изображение слоя будет изменяться.
Слой обладает важным свойством «Прозрачность для действий». Данное свойство позволяет регулировать доступность виджетов, расположенных на нижележащих слоях, для действий пользователя. Например, если у верхнего слоя данное свойство выключено, то виджеты, расположенные на всех нижележащих слоях, будут недоступны для взаимодействия. Если же у верхнего слоя свойство включено, то виджеты нижележащего слоя будут доступны.
2.7 Сохранение проекта
Для сохранения проекта на диск вызовите команду «Файл->Сохранить проект» или «Файл->Сохранить проект как...», если необходимо сделать копию открытого проекта и продолжить работу в ней после сохранения.
3 Проверка и отладка проекта
3.1 Эмуляция проекта
Проверить работоспособность проекта можно, не загружая его в контроллер. Для этого существует возможность запустить среду исполнения прямо на компьютере.
Для этого необходимо:
- Установить текущий проект как проект по умолчанию. Для этого необходимо вызвать команду "Проект->Установить проект по умолчанию..." и выбрать ранее сохраненный файл конфигурации.
- Запустить среду исполнения. Для этого нужно вызвать команду меню "Проект->Запуск среды исполнения". После этого будет выполнен запуск в новом окне среды исполнения.
3.2 Мониторинг сигналов
Для старта мониторинга сигналов необходимо запустить среду исполнения, затем вызвать команду меню «Устройство->Подключение/отключение», в появившемся окне выбрать IP-адрес и порт устройства, значения узлов которого необходимо мониторить, и нажать кнопку «Подключение».
При необходимости просмотра значений узлов и сигналов в режиме эмуляции проекта на персональном компьютере укажите адрес 127.0.0.1. Если необходимо просматривать значения узлов проекта, выполняющегося на контроллере или панели оператора, укажите IP-адрес контроллера или панели.
В окно наблюдения можно добавлять узлы, имеющие возможность чтения или записи значений – регистры Modbus, сигналы. Для этого необходимо нажать на нужном узле в дереве проекта правой кнопкой мыши и выбрать команду «Добавить в окно наблюдения». Выбранные узлы будут отображаться в окне «Наблюдение».
3.3 Мониторинг событий
Для старта мониторинга необходимо подключиться к нужному устройству способом, рассмотренным в разделе #Мониторинг сигналов, а затем нажать на кнопку «Просмотр событий».
В открывшемся окне будут выводиться все события, регистрируемые устройством. С помощью выпадающего списка в левом верхнем углу окна можно выбрать минимальный уровень выводимого события.
3.4 Отладка в задаче ПЛК
Задача ПЛК (см. раздел #Задача ПЛК) позволяет проводить тестирование проектов с помощью режима симулятора (на компьютере, без использования контроллера) или онлайн отладки (на контроллере).
3.4.1 Управление отладкой
Управление режимом симуляции и онлайн отладкой осуществляется с помощью панели инструментов задачи ПЛК (см. рисунок 16).
Панель инструментов содержит следующие элементы:
- Кнопка «Запустить симуляцию».
- Кнопка «Сделать шаг на один цикл».
- Кнопка «Приостановить симуляцию» - ставит выполнение задачи на паузу.
- Кнопка «Остановить симуляцию» - сбрасывает состояние всех блоков к их состоянию по умолчанию.
- Список выбора периода выполнения задачи.
- Кнопка «Показать окно «Наблюдение».
3.4.2 Режим симулятора
Режим симулятора позволяет провести тестирование работы алгоритмов проекта на компьютере. С помощью симуляции можно выявить ошибки в работе алгоритмов проекта до его загрузки в контроллер.
Управление симуляцией осуществляется через команды на панели инструментов задачи ПЛК.
Для перехода в режим симуляции нажмите кнопку «Режим симулятора» на панели управления задачи ПЛК.
После активации режима симуляции, для изменения значения входа дважды щелкните на нем левой кнопкой мыши и выберите нужный тип и значение. Текущие значения всех блоков, в соответствии с работой программы, будут отображаться в реальном времени.
Для выхода из режима симуляции повторно нажмите кнопку «Режим симуляции» на панели управления задачи ПЛК.
3.4.3 Онлайн отладка
Режим онлайн отладки позволяет провести тестирование проекта, загруженного и исполняемого в контроллере. Для перехода в режим онлайн отладки загрузите конфигурацию в контроллер, подключитесь к нему, после чего нажмите кнопку «Онлайн отладка» на панели инструментов задачи ПЛК.
На рисунке 18 изображен вид задачи ПЛК в режиме онлайн отладки проекта, запущенного на МПР-60 с установленными субмодулями DI (входы) и R (выходы).
Для онлайн отладки на панели инструментов недоступны кнопка «Приостановить симуляцию» и список выбора периода.
4 Компиляция проекта
Перед загрузкой проекта в контроллер или запуском эмуляции проекта необходимо откомпилировать проект и получить файл конфигурации, предназначенный для исполнения средой исполнения, установленной в контроллере или на персональном компьютере (в случае разработки системы диспетчеризации). Для этого необходимо вызвать команду меню "Проект->Сохранить конфигурацию", выбрать папку проекта и нажать кнопку "Сохранить".
4.1 Проверка проекта
Перед сохранением проекта желательно выполнить его проверку на наличие ошибок с помощью команды «Проект->Проверить проект». После проверки обнаруженные ошибки будут отображены в окне «Ошибки».
Если отображение окна «Ошибки» выключено, его можно включить командой «Вид->Показать окно ошибок».
Для облегчения исправления обнаруженных ошибок окно поддерживает выполнение некоторых команд над обнаруженными ошибками, вызывать которые можно из контекстного меню, отображаемого щелчком правой кнопки мыши на строке c ошибкой в окне. Контекстное меню позволяет вызывать команду «Показать узел в дереве конфигурации», выполняющую соответствующее действие.
Также щелчок левой кнопкой мыши на строке с ошибкой открывает окно «Свойства» и дает возможность изменить в нем все свойства узла, содержащего ошибку.
4.1.1 Установка пароля на файл конфигурации
Файл конфигурации, загружаемый в контроллер или панель оператора, можно защитить паролем, чтобы предотвратить его несанкционированное изменение.
Для установки пароля на файл конфигурации необходимо выбрать в дереве проекта узел «Конфигурация» и отредактировать его свойство «Пароль». Допускается использование любых цифр, букв и спецсимволов.
В дальнейшем при открытии файла конфигурации в среде разработки будет появляться окно с запросом пароля.
5 Загрузка проекта в устройство
Загрузка проекта в целевое устройство может быть осуществлена несколькими способами:
- загрузка из среды разработки;
- загрузка с помощью USB-Flash накопителя (для панелей оператора);
- загрузка через браузер (для МПР-60).
5.1 Загрузка из среды разработки
Для загрузки проекта из среды разработки необходимо произвести следующие действия в указанном порядке:
- Создайте файл конфигурации.
- Выполните подключение целевого устройства к ПК по сети Ethernet.
- После подключения вызовите в среде разработки команду «Проект->Загрузка проекта в устройство».
- В открывшемся окне будет отображен список файлов проекта, доступных для загрузки в целевое устройство.
- Выберите необходимые файлы и нажмите кнопку «Загрузить». После нажатия кнопки начнется процесс загрузки файлов, при этом в нижней части окна будет меняться состояние полосы прогресса, а также для каждого файла в таблице будет отображен результат загрузки.
- После окончания загрузки среда исполнения в целевом устройстве будет перезапущена и загруженный проект будет запущен.
5.2 Загрузка через USB-Flash (для ПО-40 и ПО-50)
Для загрузки проекта в устройство с помощью USB-Flash накопителя необходимо произвести следующие действия в указанном порядке:
- Подготовьте USB-Flash накопитель, предварительно отформатировав его в файловую систему FAT32.
- Вызовите в среде разработки команду «Подготовка архива для обновления» в меню «Проект».
- Сохраните архив в корень USB-Flash накопителя.
- Перейдите в системную утилиту, перезагрузив панель оператора, при загрузке во время однократного звукового сигнала нажмите на экран и удерживайте до повторного звукового сигнала. Введите пароль: 111111.
- Перейдите на вкладку «Обновление», затем подключите USB-Flash накопитель через переходник USB-OTG, выберите из списка загрузочный архив, нажать кнопку «Обновить». Дождитесь сообщения «Обновление успешно» и нажмите кнопку «ОК».
- Перейдите на вкладку «Перезапуск» и нажмите кнопку «Перезапуск».
После перезагрузки панели загруженный проект будет запущен.
5.3 Загрузка через браузер (для МПР-60)
Для загрузки проекта через браузер необходимо произвести следующие действия в указанном порядке.
- Вызовите в среде разработки команду «Подготовка архива для обновления» в меню «Проект».
- Сохраните архив.
- Откройте системную утилиту, введя IP-адрес контроллера в адресную строку браузера.
- Перейдите на вкладку «Загрузка ПО». Рисунок 71 - Вкладка системной утилиты «Загрузка ПО»
- Выберите на компьютере архив с проектом, который необходимо загрузить в контроллер.
- Нажмите кнопку «Загрузить».
- Дождитесь окончания загрузки файла и обновления проекта.
6 Узлы проекта
6.1 Корень конфигурации
Корень конфигурации предназначен для хранения общей информации о проекте и связывания частей проекта.
6.2 Станция
Станция – важнейший узел, управляющий работой собственных подсистем и выполняющий обмен данными с другими станциями. Физически станция представляет собой устройство, на котором исполняется проект (компьютер, панель оператора, МПР-60 или другое устройство).
При построении больших проектов станций может быть несколько, и они могут выполнять разные задачи. Например, станция-сервер выполняет сбор и регистрацию данных, клиентские станции выполняют визуализацию данных на рабочих местах и т. д.
Станции подчиняются другие узлы (подсистемы).
6.3 Транспортная подсистема
Транспортная подсистема управляет передачей данных по различным каналам связи. Подсистема состоит из двух взаимосвязанных сущностей: транспорт и протокол.
С одной стороны, транспортная подсистема обращается непосредственно к сигналам и каналам устройства, а с другой стороны, представляет их в виде неких универсальных единиц – узлов-источников. Каждый источник однозначно соответствует определенному сигналу или параметру устройства. При изменении сигнала меняется и значение источника. При записи данных в источник производится подача команды устройству на установку определенного значения конкретного параметра.
Транспортная подсистема допускает использование нескольких пар «транспорт» – «протокол», что дает возможность одновременного обмена данными с большим количеством устройств по разным протоколам.
6.3.1 Транспорт
Транспорт предназначен для приема и передачи блоков данных по определенному сценарию. Один транспорт, в зависимости от типа, позволяет обмениваться данными с одним или несколькими устройствами.
Доступны для использования следующие виды транспортов:
- Последовательный транспорт;
- TCP/IP транспорт.
Последовательный транспорт представляет физический последовательный порт (RS-232, RS-485, RS-422 и т. д.).
Транспорт может работать в двух режимах:
- Ведущий - «Master»;
- Ведомый - «Slave».
При работе в режиме «Master» транспорт выполняет инициативную передачу блоков данных, поступающих от протокола. В режиме «Slave» транспорт прослушивает соответствующий интерфейс и передает принятые данные связанному с ним протоколу.
Транспорт работает в режиме передачи «По задержкам», который позволяет настроить передачу данных между ведущим и ведомыми устройствами согласно заданным задержкам, которые устанавливаются в свойствах «Тайм-аут приема» и «Пауза между пакетами». Окончание приема текущего пакета определяется по заданному пользователем тайм-ауту после приема последнего байта, следующий пакет будет запрошен через время, заданное в свойстве «Пауза между пакетами».
6.3.2 Протокол
Протокол предназначен для кодирования и декодирования данных, передаваемых транспортом. Протокол реализует определенный протокол обмена данными с заданным типом устройств и представляет эти данные в виде, пригодном для использования.
Протоколу подчиняются узлы типа «Источник». Для удобства восприятия подчиненные узлы (источники) можно группировать по определенным критериям, образуя группы.
6.4 Подсистема визуализации
Задачей этой подсистемы является отображение данных в виде набора мнемонических схем (экранов, мнемосхем), а также предоставление пользователю возможности управления.
Каждый экран позволяет в схематичном, понятном пользователю виде представить участок технологической схемы с отображением необходимых параметров технологического процесса.
Изображение на экране строится с помощью окон, на которых размещаются объекты визуализации – виджеты. Виджетами могут быть текстовые метки, изображения, в том числе анимированные, элементы управления, графики и т. д. Виджеты можно объединять в слои для удобного управления отображением виджетов.
Виджеты могут быть статическими и динамическими. Динамические виджеты привязаны к одному или нескольким сигналам и их отображение зависит от значений этих сигналов. Статические виджеты не имеют привязки к сигналам и их изображение всегда постоянно.
Для перехода по экранам, изменения значений параметров и иного управления служат специальные виджеты: кнопки управления, поля ввода и другие.
Для повышения быстродействия и увеличения комфортности работы с системой подсистема визуализации хранит в памяти кэш из нескольких последних открытых экранов. Когда при последовательном открытии экранов этот кэш заполняется, наиболее старые экраны удаляются из него. Это связано с тем, что, как правило, в работе используются несколько одних и тех же экранов, которые отображают сводную информацию о техпроцессе и оператор в штатном режиме переключается только между ними. Сохраняя их в памяти, подсистема ускоряет переключение между ними, поскольку при этом не требуется каждый раз создавать экран, все находящиеся на нем объекты и запускать процессы обновления параметров.
Когда экран переходит в кэш, обновление параметров на нем прекращается для снижения нагрузки на центральный процессор. Если все же необходимо, чтобы экран всегда производил обновление данных (по разным причинам), даже находясь в кэше, необходимо в его настройках включить опцию «Постоянно обновляемый».
Подчиненные типы узлов:
- фрейм;
- окно;
- композиция.
6.4.1 Фрейм
Фрейм – узел, предназначенный для группировки окон, отображаемых на определенном дисплее. Если дисплеев несколько, то для каждого из них можно использовать отдельный фрейм. Окон во фрейме может быть несколько, однако они не могут накладываться друг на друга.
6.4.2 Окно
Окно – узел, осуществляющий отображение видеокадра (мнемонической схемы).
Существуют два вида окон:
1. «Форма», предназначенная для вывода простого набора данных без необходимости управления видимостью или внешним видом его элементов. Для вывода информации в такое окно кроме создания окна и добавления к нему виджетов ничего более не требуется.
2. «Окно с композицией», предназначенное для вывода большого количества информации и позволяющее организовать группировку элементов по слоям, управлять внешним видом элементов, видимостью слоев и отдельных элементов, а также дающее возможность регулирования работы пользователя с элементами. Для вывода информации в такое окно нужно к окну привязать композицию, содержащую минимум один слой, в который уже добавляются виджеты.
6.4.3 Композиция
Композиция – узел, представляющий составленную при разработке проекта мнемоническую схему в виде набора элементов визуализации (виджетов), сгруппированных в один или несколько слоев.
Композиция дает возможность организовать виджеты в слои, видимостью которых можно управлять во время работы проекта.
6.4.4 Слой
Слой – группа элементов визуализации, объединенных каким-то общим признаком.
6.4.5 Виджет
Виджет – элемент визуализации, предназначенный для отображения информации в заданном виде.
6.5 Виджеты
6.5.1 Виджет «Текстовая метка»
Виджет «Текстовая метка» – наиболее часто применяемый виджет, с помощью которого можно реализовать разные способы отображения текстовой информации.
Виджет «Текстовая метка» может использоваться для отображения статичного текста, значений параметров (одного или нескольких) и их комбинаций.
При необходимости отображения значений параметров они указываются в свойстве «Источник». Для задания определенного формата отображения используются спецификаторы формата в стиле языка «Си»:
- %f – значение в виде числа с плавающей точкой;
- %s – строка;
- %i – целое число со знаком;
- %u – целое число без знака;
- %d – целое число со знаком в десятичной системе исчисления.
Для разных типов свойств необходимо использовать строго определенные для них спецификаторы, с другими спецификаторами значения выводиться не будут.
Для отображения знака «%» необходимо указать его дважды: «%%».
Одна метка может использоваться для отображения нескольких значений. Для этого все значения перечисляются в свойстве «Источник», а в свойстве «Текст» указываются несколько спецификаторов формата соответственно порядку перечисления параметров.
6.5.1.1 Модификаторы спецификаторов формата
6.5.1.1.1 Модификатор минимальной ширины поля
Целое число, расположенное между знаком % и кодом формата, играет роль модификатора минимальной ширины поля. Если указан модификатор минимальной ширины поля, то, чтобы ширина поля вывода была не меньше указанной минимальной величины, вывод при необходимости будет дополнен пробелами. Если же выводятся строки или числа, которые длиннее указанного минимума, то они все равно будут отображаться полностью. По умолчанию для дополнения используются пробелы. А если для этого надо использовать нули, то перед модификатором ширины поля следует поместить 0. Например, %05i означает, что любое число, количество цифр которого меньше пяти, будет дополнено таким количеством нулей, чтобы состоять из пяти цифр.
Примеры
Значение | Спецификатор формата | Выводимое значение |
---|---|---|
10.123 | %i | 10 |
10.123 | %d | 10 |
10.123 | %05i | 00010 |
10.123 | %f | 10.123000 |
10.123 | %.1f | 10.1 |
10.123 | %10f | <пробел>10.123000 |
10.123 | %012f | 00010.123000 |
6.5.1.1.2 Модификатор точности
Модификатор точности следует за модификатором минимальной ширины поля (если таковой имеется). Он состоит из точки и расположенного за ней целого числа. Значение этого модификатора зависит от типа данных, к которым его применяют.
Когда модификатор точности применяется к данным с плавающей точкой, для преобразования которых используются спецификаторы преобразования %f, %e или %E, то он определяет количество выводимых десятичных разрядов. Например, %10.4f означает, что ширина поля вывода будет не менее 10 символов, причем для десятичных разрядов будет отведено четыре позиции.
Если модификатор точности применяется к %g или %G, то он определяет количество значащих цифр.
Примененный к строкам, модификатор точности определяет максимальную длину поля. Например, %5.7s означает, что длина выводимой строки будет составлять минимум пять и максимум семь символов. Если строка окажется длиннее, чем максимальная длина поля, то конечные символы выводиться не будут.
Если модификатор точности применяется к целым типам, то он определяет минимальное количество цифр, которые будут выведены для каждого из чисел. Чтобы получилось требуемое количество цифр, добавляется некоторое количество ведущих нулей.
Примеры:
Значение | Спецификатор формата | Выводимое значение |
---|---|---|
10.123 | %f | 10.123000 |
10.123 | %.1f | 10.1 |
10.123 | %10.4f | <пробел><пробел><пробел>10.1230 |
10.123 | %010.3f | 000010.123 |
Это простая проверка | %10.15s | Это простая про |
6.5.2 Виджет «Условная метка»
Виджет «Условная метка» позволяет изменять выводимую строку в соответствии с изменениями привязанной к ней переменной.
Задать соответствие текста необходимому условию можно в свойстве «Список сопоставлений».
6.5.3 Виджет «Изображение»
Виджет «Изображение» предназначен для отображения на окнах статичных изображений форматов png, gif, jpg, bmp или анимированных изображений в формате gif. Отображаемая картинка выбирается в разделе «Оформление» - «Изображение». Она должна находиться в папке проекта.
6.5.4 Виджет «Условное изображение»
Виджет «Условное изображение» позволяет изменять отображаемое изображение в соответствии с изменениями привязанной к нему переменной.
Задать соответствие изображения необходимому условию можно в свойстве «Список сопоставлений».
6.5.5 Виджет «Движущееся изображение»
Виджет предназначен для отображения на окнах изображений, перемещающихся в пределах области виджета. В основном используются на экране спящего режима.
Отображаемая картинка выбирается в разделе «Оформление» - «Изображение». Она должна находиться в папке проекта.
6.5.6 Виджет «Кнопка»
Виджет «Кнопка» предназначен для реализации функций управления:
- ввод данных;
- передача управляющих воздействий;
- смена режима работы АРМ или иного устройства, исполняющего проект.
Выполнение всех функций виджета обеспечивается с помощью узлов типа «Действие», добавляемых в соответствующее свойство (см. раздел #Действия).
6.5.7 Виджет «Гистограмма»
Виджет предназначен для отображения значений сигналов в виде столбчатой диаграммы.
Виджету необходимо задать источник (регистр/сигнал, с которого он будет получать данные), а также минимальное и максимальное значения.
6.5.8 Виджет «Исторический график»
Виджет «Исторический график» предназначен для отображения графиков параметров на двухкоординатной области изображения с привязкой к осям времени и значений.
Виджет может работать с данными, архивируемыми в БД, и напрямую с сигналами, значения которых вычисляются в ходе работы.
При работе с архивируемыми данными интервал обновления графика зависит от режима выдачи значения у базы данных: при выборе сохраняемых в БД он будет соответствовать интервалу архивирования, а при сохраненных в БД - интервалу сохранения БД на диск. Независимо от режима выдачи, график не может обновляться меньше чем за 300 мс.
При работе напрямую с сигналами график обновляется при изменении значения сигнала, но также не чаще чем раз в 300 мс.
Виджет «Исторический график» состоит из нескольких областей:
- область осей Х, Y;
- область легенды, содержащей список кривых и их параметры (цвет кривой, наименование кривой, текущее значение, время последнего зарегистрированного значения);
- область вывода данных.
На виджете имеются несколько областей, содержащих кнопки-пиктограммы управления внешним видом графика (см. Рисунок 28):
- область пиктограмм графика;
- область пиктограмм оси времени (X);
- область пиктограмм оси значений (Y);
- область легенды.
В области пиктограмм графика слева направо расположены следующие кнопки-пиктограммы:
- кнопка переключения режима отображения точек на всех кривых;
- кнопка переключения видимости легенды;
- кнопка включения режима визирной линии.
В области пиктограмм оси времени (X) слева направо расположены следующие кнопки-пиктограммы:
- кнопка открытия окна выбора интервала времени для оси Х, текст кнопки отображает текущий выбранный интервал, например: 5М – 5 минут, 6Ч – 6 часов, 30М – 30 минут;
- кнопка-индикатор включения следящего режима.
В области пиктограмм оси значений (Y) расположена кнопка-пиктограмма «A» – кнопка переключения режима автоматического масштабирования значений.
6.5.8.1 Легенда
Легенда – специальная область в нижней части экрана архива, предназначенная для отображения параметров (наименование, текущее значение и т. д.) выводимых графиков в виде таблицы. Для ознакомления с примерным видом легенды см. Рисунок 28. Информация о каждом сигнале в легенде выводится в несколько колонок:
- «Цвет» – индицирует цвет, которым выводится соответствующая кривая на графике, колонка «Цвет» позволяет нажатием переключать видимость соответствующей кривой на графике (см. Рисунок 29). Также в колонке "Цвет" отображается номер пера, которым выводится кривая параметра на графике;
- «Имя» («Наименование») – содержит наименование параметра;
- «Время» – содержит время последнего зарегистрированного значения параметра;
- «Значение» – содержит последнее зарегистрированное значение параметра.
6.5.8.2 Режимы просмотра графиков
Пользователю доступно два режима просмотра графиков:
- следящий режим;
- режим просмотра истории.
В следящем режиме на графике всегда отображаются актуальные значения параметров, тренд периодически дочитывает поступившие данные из базы и обновляет графики.
В режиме просмотра истории на графике отображаются исторические значения параметров. Просмотр истории технологического процесса осуществляется с помощью кнопок перемещения по осям и кнопок изменения масштаба.
Режим просмотра истории включается автоматически при прокрутке графика назад по времени.
6.5.8.3 Визирная линия
Для просмотра значений параметров в нужный момент времени служит визирная линия, отображаемая на графике как вертикальная линия.
При щелчке левой кнопкой мыши (ЛКМ) в области графиков визирная линия будет отображена в выбранном месте графика.
В точке пересечения визирной линии и кривых параметров отображаются значения этих параметров. Также в нижней части области графиков, возле оси времени, визирная линия отображает время.
6.5.9 Виджет «График кусочно-линейной функции»
Виджет предназначен для отображения графика зависимости двух параметров, расположенном на осях X и Y.
Виджет состоит из нескольких областей:
- область осей Х, Y;
- область легенды, содержащей список кривых и их параметры (цвет кривой, наименование кривой, текущее значение, время последнего зарегистрированного значения);
- область вывода графика.
На области вывода графика виджета имеются несколько областей, содержащих кнопки-пиктограммы управления внешним видом графика (см. Рисунок 31):
- Область пиктограмм графика.
- Область пиктограмм оси первого параметра (X).
- Область пиктограмм оси второго параметра (Y).
В области пиктограмм графика расположены следующие кнопки-пиктограммы:
- кнопка переключения режима отображения точек на всех кривых;
- кнопка переключения видимости легенды;
- кнопка включения режима визирной линии.
В области пиктограмм оси первого (X) и второго (Y) параметров расположены кнопки-пиктограммы «А» – кнопка переключения режима автоматического масштабирования значений.
6.5.10 Виджет «Список событий»
Виджет предназначен для отображения регистрируемых событий в работе.
В верхней части виджета расположена панель управления (1).
Панель управления содержит органы управления журналом:
- кнопка отображения фильтра событий;
- кнопка включения следящего режима журнала;
- кнопка изменения интервала на один день назад;
- кнопка-индикатор выбора интервала, за который отображаются события;
- кнопка изменения интервала на один день вперед;
- кнопка вызова окна со списком активных тревог.
Ниже панели управления, в основном поле экрана, расположена таблица, содержащая зарегистрированные события.
Заголовок таблицы позволяет изменять порядок столбцов и включать сортировку по столбцам. Например, возможно включение сортировки событий сначала по времени, затем по группе. Заголовок таблицы имеет возможность отключения / включения отображения любого столбца.
При большом количестве записей в правой части таблицы появляется полоса прокрутки, позволяющая пролистывать список событий.
Нажатие на кнопку-индикатор выбора интервала вызывает окно выбора интервала (см. Рисунок 33):
После выбора нужного интервала для сохранения выбора необходимо нажать кнопку «ОК». После сохранения будут отображены зарегистрированные события за выбранный интервал.
Нажатие на кнопку отображения окна фильтра вызывает соответствующее окно. Окно фильтра позволяет изменить содержимое основного окна журнала событий путем выбора групп и подгрупп событий, перечисленных в окне фильтра (см. Рисунок 34).
После выбора нужных групп и подгрупп для сохранения выбора необходимо нажать кнопку «ОК». После сохранения будут отображены зарегистрированные события, принадлежащих выбранным группам.
6.5.11 Виджет «Ввод значения»
Виджет «Ввод значения» предназначен для отображения значения привязанного сигнала и его редактирования.
После выбора узла для чтения/записи и соответствующего типа значения необходимо выбрать нужный тип ввода в разделе «Оформление».
Доступны следующие типы ввода:
- кнопки изменения – при нажатии на виджет появляются кнопки увеличения и уменьшения на заданный шаг изменения;
- кнопка редактирования – при нажатии на виджет появляется кнопка, при клике на которую открывается экранная цифровая клавиатура;
Виджет имеет возможность проверки вводимых значений, при активации которой запись будет осуществляться только тогда, когда записываемое значение будет находиться в диапазоне между заданными минимальным и максимальными значениями.
6.5.12 Виджет «Выбор значения из списка»
Виджет «Выбор значения из списка» предназначен для отображения значения привязанного сигнала и его изменения в удобном для пользователя текстовом виде (см. Рисунок 36).
С помощью свойства «Список сопоставлений» задается соответствие между значением сигнала и выводимой в виджете строкой.
При нажатии на кнопку в правой части виджета отображается список всех сопоставлений. При выборе нужного элемента в списке в установленный узел производится запись нового значения.
6.5.13 Виджет «Флаг»
Виджет «Флаг» предназначен для отображения значения и изменения булевой переменной (true/false). Состояние true отображается в виде галочки (см. Рисунок 37).
При нажатии на виджет значение переменной изменяется на противоположное.
В случае, если флаг необходимо использовать только для отображения информации, поставьте галочку в свойстве «Отключен»
6.5.14 Виджет «Отчет»
Виджет «Отчет» предназначен для формирования отчетов по заранее спроектированному макету.
Подробный порядок создания и редактирования отчетов приведен в разделе #Отчеты.
В верхней части виджета размещена панель управления, содержащая кнопки вызова команд:
- печать сформированного отчета на установленном в системе принтере;
- сохранение сформированного отчета в файле формата PDF;
- переход к предыдущей странице отчета;
- переход к следующей странице отчета;
- масштабирование экрана по ширине листа отчета;
- масштабирование экрана по высоте листа отчета.
При формировании отчета для изменения интервала времени, за который будет формироваться отчет, необходимо на панели управления щелкнуть кнопку выбора интервала (на ней отображается текущий выбранный интервал, например, «Начало суток без смещения – Конец суток без смещения»). Далее появится окно «Интервал», в котором можно выбрать начало и конец интервала (см. Рисунок 39).
В качестве начала и конца интервала можно выбрать как конкретную дату по календарю, так относительную, например, «Начало дня», "Конец недели". После выбора желаемого интервала необходимо нажать кнопку «ОК».
Выбранный интервал отобразится на панели управления отчетом. Для формирования отчета за выбранный интервал необходимо нажать кнопку «Сформировать отчет». Через некоторое время, после загрузки данных из БД и их обработки, экран обновится и сформированный отчет за выбранный интервал будет отображен.
6.6 Действия
В свойствах виджетов «Обработка событий» создаются узлы типа «Действие», которые активируются при возникновении соответствующих событий:
- OnLeftButtonDown – нажатие левой кнопки мыши при наличии фокуса ввода на виджете.
- OnLeftButtonUp – отпускание левой кнопки мыши при наличии фокуса ввода на виджете.
- OnFocusOut – потеря фокуса ввода.
- OnButtonPress – нажатие левой кнопки мыши или кнопок "Пробел", "Enter" на виджете типа «Кнопка».
- OnButtonRelease – отпускание левой кнопки мыши или кнопок "Пробел", "Enter" на виджете типа «Кнопка».
6.6.1 Действие «Воспроизведение звукового файла»
Действие «Воспроизведение звукового файла» предназначено для воспроизведения указанного звукового файла через подключенный громкоговоритель или встроенную аудиосистему. Выбранный файл должен располагаться в папке проекта и быть загруженным в контроллер.
6.6.2 Действие «Смена композиции»
Действие «Смена композиции» предназначено для смены текущей отображаемой композиции в указанном окне на другую.
6.6.3 Действие «Отображение окна»
Действие «Отображение окна» предназначено для создания и отображения окна. Окно можно отобразить по центру дисплея либо по заданным координатам.
6.6.4 Действие «Закрытие окна»
Действие «Закрытие окна» предназначено для закрытия окна.
6.6.5 Действие «Запись значения в узел»
Действие «Запись значения в узел» предназначено для записи определенного значения в указанный узел.
6.6.6 Действие «Создание события»
Действие «Создание события» предназначено для создания нового события. События используются для вывода информационных сообщений или активации тревог, которые передаются в подсистемы тревог и журналирования.
6.6.7 Действие «Команда узлу»
Действие «Команда узлу» предназначено для передачи определенной команды («Запуск», «Останов» и др.) указанному узлу.
6.6.8 Действие «Запуск процесса»
Действие «Запуск процесса» предназначено для запуска указанного приложения ОС.
6.6.9 Действие «Авторизация пользователя»
Действие «Авторизация пользователя» предназначено для взаимодействия с системой проверки прав пользователей. При выполнении действия производится регистрация в системе указанного пользователя как текущего.
6.6.10 Действие «Переключение видимости окна»
Действие «Переключение видимости окна» сочетает в себе действия по открытию и закрытию окна. Если окно было изначально закрыто, оно будет отображено, если окно было открыто – оно будет закрыто.
6.6.11 Действие «Выполнение скрипта»
Действие «Выполнение скрипта» предназначено для запуска исполнения скрипта С++. Скрипт создается с помощью операции «Скрипт С++», описание которой приведено в разделе #Операция «Скрипт С++».
6.7 Подсистема тревог
Подсистема тревог предназначена для оповещения пользователя об обнаруженных нарушениях.
Подсистема содержит два типа узлов:
- Группа событий.
- Контроллер событий.
6.7.1 Группа событий
Группа событий – узел, предназначенный для взаимодействия с виджетом «Список событий». Группы событий позволяют группировать события по какому-то признаку, например по уровню тревоги (авария, предупреждение, квитирование и т.д.), технологическому участку и т.д.
Для каждой группы можно выбрать свой цвет шрифта и фона, которые будут использоваться для вывода событий, принадлежащих этой группе в виджете "Список событий".
В свойстве «Описание» грцппы событий указывается текст, который будет отображаться в фильтре списка событий.
6.7.2 Контроллер событий
Контроллер событий – узел, реализующий логику проверки соответствия выбранных сигналов контролируемым условиям. Контроллеры событий выполняют всю работу по проверке значений контролируемых параметров и выполнению соответствующих действий.
Контроллер событий проверяет значения заданных узлов на соответствие заданным условиям и при их совпадении выполняет заданные действия.
В качестве действий можно указать не только действие "Создание события", но и другие (см. раздел #Действия).
6.8 Подсистема архивации
Подсистема архивирования предназначена для управления процессом сохранения значений параметров в базы данных. Параметры, сохраненные в базу данных, могут использоваться для построения графиков пааметров и генерации отчетов.
Архивация параметров производится с помощью архиваторов.
6.8.1 Архиватор SQLite
Архиватор SQLite предназначен для сохранения значений параметров в БД формата SQLite.
Для извлечения и просмотра баз данных формата SQLite с устройств может использоваться программа «Архиватор».
6.8.1.1 Свойства узла "Архиватор SQLite"
Наименование свойства | Идентификатор | Тип | Доступ | Описание |
---|---|---|---|---|
Путь до файла БД | FilePath | STRING | Чтение / запись | Путь до файла БД. Абсолютный или относительный. |
Интервал архивирования | Interval | INT | Чтение / запись | Интервал архивирования, мс. |
Период хранения | Retention | INT | Чтение / запись | Период хранения, дней. |
Разбиение БД | DBSplitting | BOOL | Чтение / запись | Разбиение БД на файлы. При включении база данных будет разделяться на отдельныйе файлы, содержащие данные за одни сутки. |
Интервал сохранения БД на диск | StoringInterval | INT | Чтение / запись | Интервал сохранения БД на диск, мс. |
Режим выдачи значений | ValueReturnMode | ENUM | Чтение / запись | Режим выдачи значений. Режим "Сохраняемые в БД" - данные выдаются сразу после получения архиватором, возможно до фактического сохранения в БД. Режим "Сохраненные в БД" - данные выдаются только после фактической записи в БД на диск. |
Коннекторы БД | Signals | NODESARRAY | Чтение / запись | Список коннекторов, содержащих сигналы для архивирования. |
Текущий размер БД | DBCurrentSize | INT | Только чтение | Текущий размер БД, Мб. |
Максимальный размер БД | DBMaxSize | INT | Только чтение | Максимальный размер БД, Мб. |
Состояние БД | DBStatus | INT | Только чтение | Состояние БД. |
6.9 Подсистема журналирования
Подсистема ведения журналов событий предназначена для управления регистрацией и хранением событий.
Для ведения журналов используются узлы типа "Логгер":
- Логгер файловый. Предназначен для сохранения журналов событий в текстовом формате.
- Логгер SQLite. Предназначен для сохранения информации в СУБД SQLite.
- Логгер SMS. Предназначен для SMS информирования с помощью субмодуля GRPS или внешнего GPRS модема.
6.10 Подсистема проверки прав пользователей
Подсистема проверки прав пользователей предназначена для контроля доступа пользователя к объектам в режиме исполнения.
Принцип настройки и работы подсистемы следующий:
- Создаются роли, в которых определяются доступные действия (привилегии).
- Создаются пользователи, каждому из которых назначается одна или несколько ролей.
- В узлах, в которых нужно ограничить доступ, указываются соответствующие привилегии. Настройка привилегий для узлов производится в отдельном окне, вызываемом командой "Вид -> Открыть привилегии".
Узлы при выполнении действий проверяют наличие установленных привилегий у авторизованного пользователя.
6.11 Сигналы
Регистры и другие узлы, добавленные в группу «Сигналы», являются внутренними для проекта и могут менять свои значения только с помощь скриптов или других узлов, с которыми они связаны.
Сигналы содержат в себе несколько подгрупп.
6.11.1 Сигнал
6.11.1.1 Сигнал простой
Узел типа "Сигнал простой" предназначен для получения значения любого другого узла группы «Сигналы» или регистра Modbus. Позволяет произвести какие-либо действия с этим значением с помощью добавления нужных операций в свойство «Операции после чтения».
6.11.1.2 Постоянная
Узел типа "Постоянная" предназначен для хранения данных выбранного формата и позволяет изменять их в ходе выполнения программы. Изменение осуществляется с помощью специализированных функций или блока установки значения в задаче ПЛК.
6.11.1.3 Массив
Массив - совокупность каких-либо объектов, указанных в свойстве «Входные значения». Нумерация объектов в массиве начинается с 0. Может использоваться для взаимодействия с демультиплексором.
6.11.1.4 Сигнал комплексный
Содержит в себе свойства для настройки следующих параметров:
- ВАУ – верхняя аварийная уставка;
- ВПУ - верхняя предаварийная уставка;
- НПУ - нижняя предаварийная уставка;
- НАУ – нижняя аварийная уставка;
- ФНЧ – фильтр низких частот.
Используется для взаимодействия с виджетом «Цифровой индикатор».
6.11.2 Источник
6.11.2.1 Регистр Modbus
Регистр протокола Modbus, используется для приема и передачи данных по протоколу Modbus, а так же организации работы алгоритмов программы (например для взаимодействия с контроллером событий).
6.11.2.2 Источник индексный
Узел типа "Источник индексный" используется для обработки данных, полученных по протоколу Upd.
6.11.3 Операция
Узлы типа "Операция" используются для реализации вычислительных алгоритмов в задаче ПЛК или отдельно, при их размещении в группе "Сигналы".
В качестве входных значений операций выбираются другие узлы группы «Сигналы» или блоки задачи ПЛК.
6.11.3.1 Операция «Сложение»
Выходным значением является сумма входных значений.
6.11.3.2 Операция «Вычитание»
Выходным значением является разность первого входного значения и суммы всех последующих значений.
6.11.3.3 Операция «Умножение»
Выходным значением является произведение значений всех входных значений.
6.11.3.4 Операция «Деление»
Выходным значением является результат от деления первого входного значения на произведение всех последующих значений.
6.11.3.5 Операция «Условие»
Узел типа "Операция условие" предназначен для сравнения значений двух узлов. Для условия задаются сравниваемые параметры и выбирается режим сравнения.
6.11.3.6 Операция «Пара условий»
Операция содержит в себе два условия. Для каждого условия задаются индивидуальные сравнимаемые параметры и выбирается режим сравнения.
Выходное значение операции зависит от ее режима проверки – при выбранном режиме «Логическое ИЛИ» выходное значение равно логической «1» если одно из условий равно «1», при «Логическом И»- если оба условия равны «1».
6.11.3.7 Операция «Логическое ИЛИ»
Если одно из входных значений становится равно логической «1» (контакты замкнуты), то выходное значение становится логической «1» (выход включен).
6.11.3.8 Операция «Битовое OR»
Для вычисления значения будет произведена операция "ИЛИ" над каждым битом значения в отдельности. Например: 1010 OR 0110 = 1110
6.11.3.9 Операция «Логическое И»
Если все входные значения становятся равны логической «1», выходное значение становится логической «1» (выход включен).
6.11.3.10 Операция «Битовое AND»
Для вычисления значения будет произведена операция "И" над каждым битом значения в отдельности. Если все биты, стоящие на одинаковых позициях в двоичных представлениях значений, поступающих на входы блока, равны логической «1», то на выходе элемента в этой позиции появляется логическая «1» (выход включен). Например: 1010 AND 0110 = 0010
6.11.3.11 Операция «Логическое НЕ»
Если входное значение блока становится равно логическому «0», то выходное значение становится логической «1», и наоборот.
6.11.3.12 Операция «Битовое XOR»
Если только на один из входов блока функции поступает логическая «1», то на выходе элемента появляется логическая «1». Если на входы блока функции поступают целочисленные значения, то операция будет произведена над каждым битом значения в отдельности. Например: 1010 XOR 0110 = 1100
6.11.3.13 Операция «Битовое SHR»
Побитовый логический сдвиг вправо используется для выполнения операции побитового логического сдвига операнда X вправо на N бит с дополнением нулями слева.
6.11.3.14 Операция «Битовое SHL»
Побитовый логический сдвиг влево используется для выполнения операции побитового логического сдвига операнда X влево на N бит с дополнением нулями справа.
6.11.3.15 Операция «Таймер»
Таймер предназначен для выполнения каких-либо действий (см. раздел 4.6) через одинаковые промежутки времени (например запись значения в узел).
6.11.3.16 Операция «Мультиплексор»
Мультплексор осуществляет перевод нескольких булевых переменных в целочисленное значение по формуле: "выход = вход1 + вход2*2^1 + вход3*2^2 + ..."
6.11.3.17 Операция «Демультиплексор»
Демультиплексор осуществляет перевод целочисленных значений из массива в несколько булевых переменных, при этом включается выход, номер которого соответствует числу из массива (например первый элемент массива равен 5, на пятом выходе появится значение true). Нумерация выходов начинается с нуля.
6.11.3.18 Операция «Генератор случайного числа»
Выходным значением является случайное число в диапазоне между указанным минимальным и максимальным значениями.
6.11.3.19 Операция «Скрипт С++»
Операция «Скрипт С++» предназначена для реализации разнообразных алгоритмов на языке С++. Операция предусматривает реализацию одной или нескольких функций, выполняющих необходимые пользователю действия. Для выполнения скрипта, необходимо добавить его в качестве узла для задачи или задачи ПЛК.
Пример скрипта, выполняющего получение значения определенного узла и запись измененного значения в другой узел:
float val() { float f = GetNodeValueAsFloat("/Конфигурация1/stationSimple1/Signals1/Random2"); float f1 = f*100.0; SetNodeValueAsFloat("/Конфигурация1/stationSimple1/Signals1/Constant3", f1); return f*10.0; }
Приведенный выше скрипт возвращает исходное значение, умноженное на 10. Возвращаемое таким образом значение записывается в выход операции для возможности считывания в других операциях, скриптах и т. д.
Скрипты могут возвращать значения следующих типов:
- void;
- float;
- double;
- int.
Описание реализации языка С++ в AgavaPLC приведено на странице "Описание языка С++ в AgavaPLC".
6.11.3.20 Операция «Таймер с задержкой»
Таймер с задержкой используется для операции задержки передачи и/или отключения сигнала. На выходе таймера появится сигнал логической «1» с задержкой относительно фронта входного сигнала продолжительностью равной интервалу включения и выключится по спаду входного сигнала с задержкой продолжительностью равной интервалу выключения. В том случае, если необходимо использовать блок только как таймер с задержкой включения (отключения) интервал выключения (включения) устанавливается равным 0.
6.11.3.21 Операция «Генератор прямоугольных импульсов»
Генератор прямоугольных импульсов используется для формирования прямоугольных импульсов пульсации. На выходе генератора формируются импульсы с заданными параметрами длительности включенного и отключенного импульса на время действия управляющего сигнала на входе (сигнал логической «1»).
6.11.3.22 Операция «Триггер RS»
RS-триггер с приоритетом выключения используется для переключения с фиксацией состояния во время поступления коротких импульсов на соответствующий вход. На выходе появится логическая «1» по фронту сигнала на входе Set, которая будет сброшена в «0», при поступлении импульса на вход Reset.
6.11.3.23 Операция «Триггер SR»
SR-триггер с приоритетом включения используется для переключения с фиксацией состояния в случае поступления коротких импульсов на соответствующий вход. На выходе появится логическая «1» по фронту сигнала на входе Set, которая будет сброшена в «0», при поступлении импульса на вход Reset.
6.11.3.24 Операция «Детектор переднего фронта импульса»
Детектор переднего фронта импульса используется в случае необходимости иметь реакцию на изменение состояния дискретного входного сигнала. На выходе генерируется единичный импульс при изменении состояния входа из «0» в «1».
6.11.3.25 Операция «Детектор заднего фронта импульса»
Детектор заднего фронта импульса используется в случае необходимости иметь реакцию на изменение состояния дискретного входного сигнала. На выходе генерируется единичный импульс при изменении состояния входа из «1» в «0».
6.11.3.26 Операция «D-триггер»
D-триггер используется для формирования импульса включения выхода на интервал времени импульса на входе D, выходной интервал будет синхронизирован с тактовой частотой на входе С. На выходе Q триггера появится сигнал логической «1» по фронту тактовых импульсов на входе С при наличии сигнала логической «1» на входе D. Возврат выхода в сигнал логического «0» произойдет по фронту тактовых импульсов на входе С при наличии сигнала логического «0» на входе D. Вход Set принудительно устанавливает выход в состояние логической «1». Вход Reset является приоритетным и устанавливает выход в состояние логического «0».
6.11.3.27 Операция «Селектор»
Если на вход Value подается логическая «1», то результатом выполнения операции блока на выходе является входной сигнал ValueT. Если же Value равен логической «0», то результатом выполнения операции блока на выходе является входной сигнал ValueF.
6.11.3.28 Операция «Больше чем»
На выход подается логическая «1», если значение in0 больше чем значение in1.
6.11.3.29 Операция «Равенство»
На выход подается логическая «1», если значение in0 равно значению in1.
6.11.3.30 Операция «Абсолютное значение числа»
Результатом операции функции на выходе является модуль подаваемого на вход значения. Если число на входе положительное, то на выход подается само число, если отрицательное – положительное число, получаемое от перемены его знака с «-» на «+».
6.11.3.31 Операция «Возведение в степень»
Результатом операции функции на выходе является значение, равное значению in0, возведенному в степень значения N.
6.11.3.32 Регулятор «PID»
Регулятор PID применяется для поддержания заданного значения параметра. На вход Pv подается текущее значение регулируемой величины, на Sp – ее заданное значение. С помощью изменения коэффициентов ПИД регулятора kP, kI и kD достигается оптимальный режим работы. Min задает минимальное значение на выходе, Max – максимальное. time - период регулятора (в мс.).
6.11.3.33 Регулятор «PWM»
Применяется для преобразования аналогового сигнала в дискретный с помощью ШИМ. На вход in подается текущее значение регулируемой величины, Min задает минимальное значение на входе, Max – максимальное. time - период регулятора (в мс.)
6.11.4 Объект
Узлы типа "Объект" предназначены для взаимодействия с аппаратными компонентами контроллера. Для всех объектов, являющихся субмодулями, необходимо указать слот, в котором они установлены. Доступ к значениям входов/выходов субмодуля осуществляется через его вложенные узлы.
ПЛК процессорный модуль
Предоставляет возможность регулирования подсветки экрана; включения и отключения индикаторов работы, аварии и программы.
ПЛК субмодуль DI
Позволяет получать доступ к значениям входов субмодуля DI.
ПЛК субмодуль R
Позволяет управлять значениями выходов субмодуля R.
ПЛК субмодуль SIM
Позволяет управлять значениями выходов субмодуля SIM.
ПЛК субмодуль DO6
Позволяет управлять значениями выходов субмодуля DO6.
ПЛК субмодуль AI
Позволяет получать доступ к значениям входов субмодуля AI и задавать их тип.
ПЛК субмодуль AIO
Позволяет получать доступ к значениям входов субмодуля AIO, управлять значениями выходов и задавать тип входов и выходов.
ПЛК субмодуль TMP
Позволяет получать доступ к значениям входов субмодуля TMP и задавать их тип.
6.12 Задачи
Группа «Задачи» предназначена для группировки узлов типа «Задача», которые используются для циклического или разового выполнения созданных пользователем алгоритмов.
6.12.1 Задача ПЛК
Данный узел предоставляет возможности для связывания между собой других узлов (таких как сигналы, субмодули ПЛК, постоянные и т. д.) в удобной графической форме (см. Рисунок 64). Для перехода к редактору необходимо щелкнуть правой кнопкой мыши на задачу ПЛК и выбрать в открывшемся контекстном меню команду «Открыть графическое представление» или дважды щелкнуть левой кнопкой мыши на задаче ПЛК в дереве проекта.
Рисунок 64 – Окно графического редактирования задачи «ПЛК-60»
Панель инструментов задачи ПЛК, расположенная в верхней части окна, содержит следующие элементы (см. Рисунок 16):
- Выпадающий список выбора режима подписи портов.
- Выпадающий список выбора режима подписи блоков.
- Кнопка запуска режима симулятора.
- Кнопка запуска онлайн отладки.
- Кнопка печати задачи.
- Инструменты управления симуляцией.
Добавлять узлы в задачу можно перетаскиванием мышью из окна функциональных блоков или из окна дерева проекта. Для связывания узлов между собой необходимо, зажав левую кнопку мыши на выходе одного узла, протянуть линию ко входу другого и затем отпустить левую кнопку мыши для соединения блоков.
Созданную связь можно удалить, выделив ее левой кнопкой мыши и нажав клавишу "Del". Связь можно "разорвать", то есть добавить разрыв, нажав по ней правой кнопкой мыши и выбрав в контекстном меню команду «Добавить разрыв».
Для выделения нескольких блоков рамкой зажмите клавишу "Shift" и выделяйте блоки мышью с нажатой левой кнопкой.
Задача ПЛК предоставляет возможности для проведения тестирования и отладки проекта, описанные в разделе #Проверка и отладка проекта.
6.12.1.1 Блоки задачи ПЛК
Помимо операций, описанных в разделе #Операция, для реализации алгоритмов в задачу ПЛК можно добавлять блоки, описанные ниже.
Функциональный блок
Используется для выделения каких-либо действий в отдельный блок, для упрощения понимания работы алгоритма программы. Содержит входы, выходы и блоки, обеспечивающие работу внутренней логики. Позволяет проводить изолированную отладку, при которой значения на входах функционального блока вручную задаются пользователем. Блок, работающий в данном режиме выделяется черной рамкой. Для включения изолированной отладки необходимо открыть блок и нажать кнопку «Изолированная отладка» на панели управления задачей.
Блок установки значения
Блок осуществляет запись значения, поданного на вход in0, в узел, указанный в свойстве «Узел для чтения/записи»
Блок задержки
Блок задержки используется для создания задержки передачи значения с входа блока на выход на один цикл обработки задачи.
6.13 Устройства
Группа «Устройства» предназначена для группировки узлов типа "Устройство", выполняющие разнообразные задачи, например работа с внешними накопителями и ПЗУ.
Retain-накопитель дает возможность хранить значения регистров, постоянных и сигналов в постоянной памяти контроллера, что позволяет им сохранять свои значения после отключения питания.
Для сохранения переменных необходимо перечислить их в свойстве «Узлы» и указать путь сохранения на выбранном накопителе.
6.14 Отчеты
Данный узел доступен только при исполнении проекта на настольном компьютере. На панелях оператора и контроллерах МПР этот узел не доступен. |
Отчет – технологический документ, содержащий информацию о ходе производственного процесса, обработанную по заложенным в отчет алгоритмам. Отчеты формируются на основе макетов (статической части отчетов) путем добавления в них свойств и значений заданных параметров технологического процесса, которые формируются (выбираются из базы данных технологических параметров и проходят соответствующую обработку) по алгоритмам, размещенным в этих шаблонах.
6.14.1 Создание нового отчета
Создание любого отчета производится в два этапа.
- Создание необходимых узлов в конфигурации: сам отчет и необходимое количество выборок.
- Составление макета отчета.
Создание узла типа «Отчет» в конфигурации и выборок для него производится аналогично созданию узлов других типов. К станции добавляется узел типа «Отчеты» с помощью команды контекстного меню «Добавить узел», далее к узлу типа «Отчеты» добавляется отчет и к отчету добавляется необходимое количество выборок.
Выборка – специальный узел, предназначенный для выборки данных из архива и их обработки для последующего отображения в отчете.
Перед переходом к редактированию макета желательно проделать следующие операции:
- в свойстве отчета «Путь к файлу отчета» установить имя файла, в котором будет храниться макет отчета;
- в свойстве «Источники» выборки (выборок) отчета установить перечень архивных сигналов (коннекторов), которые будут выводиться в отчете.
6.14.2 Редактирование макета отчета
Для редактирования макета отчета необходимо переключиться из редактора конфигурации в редактор макета отчета с помощью команды «Открыть редактор макета отчета», доступной из контекстного меню дерева конфигурации, отображаемого при щелчке правой кнопкой мыши на узле типа «Отчет».
В окне редактора расположены:
- панели инструментов;
- панель объектов отчета;
- окно «Инспектор объектов»;
- окно «Инспектор данных»;
- окно «Инспектор скриптов»;
- область построения макета отчета;
- окно «Структура отчета».
Редактор макета позволяет вызывать команды сочетаниями клавиш:
- Ctrl + N – новый макет;
- Ctrl + O – загрузить макет;
- Ctrl + S – сохранить макет;
- Ctrl + Shift + S – сохранить макет под новым именем;
- Ctrl + P – предварительный просмотр;
- Ctrl + Z – отмена изменений;
- Ctrl + Shift + Z – возврат отмененных изменений;
- Ctrl + C – копировать объект;
- Ctrl + X – вырезать объект;
- Ctrl + V – вставить объект;
- Ctrl + Стрелки – переместить выделенный объект;
- Shift + Стрелки – изменить размер выделенных объектов;
- Del – удалить выделенные объекты;
- Shift + левая кнопка мыши – создать область выделения.
6.14.2.1 Окно «Инспектор объектов»
Окно «Инспектор объектов» содержит список свойств выделенного объекта и предназначено для их редактирования.
6.14.2.2 Окно «Инспектор данных»
Окно «Инспектор данных» содержит список доступных для использования источников данных (выборок) и предназначено для заполнения блока «Данные» элементами соответствующего типа.
6.14.2.3 Окно «Инспектор скриптов»
Окно «Инспектор скриптов» содержит список доступных для использования в отчете скриптов.
6.14.2.4 Окно «Структура отчета»
Окно «Структура отчет» отображает структуру отчета в виде дерева связанных элементов.
6.14.3 Элементы отчета
Для составления макета отчета доступны следующие элементы:
- текст;
- данные;
- изображение;
- фигура;
- компоновка (Layout).
6.14.3.1 Текст
Элемент «Текст» служит для вывода надписей или содержимого полей источников данных.
Объект «Текст» обладает очень широкими возможностями. Он умеет отображать текст, рамку, заливку. Текст может быть отображен любым шрифтом любого размера, цвета и стиля. Большинство настроек делаются визуально с помощью панелей инструментов.
Одна из самых главных особенностей этого универсального объекта – это возможность отображения не только статичного текста, но и текста с применением вычисляемых выражений. Причем, выражения могут располагаться в объекте вперемешку с текстом. Рассмотрим простой пример – поместим в объект «Текст» следующую строку: «Привет! Сегодня $S{now()}».
Если запустить отчет на построение, мы увидим приблизительно следующее: «Привет! Сегодня 20180803». В процессе построения отчета выражение в тексте, заключенное $S{}, было вычислено и полученное значение вставлено обратно в текст. Объект «Текст» может содержать любое количество выражений, смешанных с обычным текстом. В скобки можно заключать и одиночные переменные, и выражения, например, $S{1+2*(3+4)}. В выражениях можно использовать константы, переменные ($V{}), функции, поля БД ($D{}).
Свойства элемента «Текст»:
Наименование свойства | Описание |
---|---|
alignment | Выравнивание текста по вертикали и горизонтали |
angle | Поворот надписи |
autoHeight | Автоматический подбор высоты |
autoWidth | Автоматический подбор ширины |
backgroundColor | Цвет заливки |
backgroundMode | Режим заливки |
backgroundOpacity | Прозрачность заливки |
borders | Границы |
content | Содержимое объекта «Текст» |
font | Шрифт |
fontColor | Цвет шрифта |
foregroundOpacity | Прозрачность шрифта |
geometry | Размер и расположение объекта |
itemLocation | Расположение объекта (страница или бэнд) |
margin | Отступы |
objectName | Имя объекта |
stretchToMaxHeight | Установка значения высоты самого высокого объекта на бэнде |
trimValue | Удаление пробелов в начале и в конце надписи |
Для редактирования свойства «Content» используется диалоговое окно «Text Item Editor», вызов которого осуществляется двойным щелчком левой кнопки мыши на элементе «Текст».
Свойство «Content» может содержать:
- текст;
- значения переменных;
- значения полей из набора данных;
- значения, формируемые посредством исполнения скрипта.
Для вывода значений переменных используется синтаксис «$V{имяПеременной}» (без кавычек), для вывода значения поля данных – «$D{имяНабораДанных.ИмяПеременной}», для вывода результата исполнения скрипта – «$S{телоСкрипта}».
6.14.3.2 Данные
Элемент «Данные» предназначен для размещения других элементов отчета. Элемент «Данные» может быть нескольких типов:
- Report Header – заголовок отчета;
- Report Footer – завершение отчета;
- Page Header – верхний колонтитул страницы отчета;
- Page Footer – нижний колонтитул страницы отчета;
- Data – данные отчета;
- SubDetail – подчиненные данные отчета;
- SubDetailHeader – заголовок подчиненных данных;
- SubDetailFooter – завершение подчиненных данных;
- GroupHeader – заголовок группы;
- GroupFooter – завершение группы.
Элементы «Данные» (бэнд) применяются для логической группировки объектов. К примеру, размещение объекта на элементе «Данные» типа «Page Header», приводит к отображению этого объекта в верхней части каждой страницы готового отчета. Аналогичным образом «Page Footer» выводится внизу каждой страницы со всеми лежащими на нем объектами.
Общие для всех элементов «Данные» свойства:
Наименование свойства | Описание |
---|---|
autoHeight | Автоматический подбор высоты |
backgroundColor | Цвет заливки бэнда |
borders | Границы |
geometry | Размер |
keepBottomSpace | Сохранение отступа от нижней границы бэнда |
objectName | Имя объекта |
printIfEmpty | Отображение пустого бэнда |
splittable | Разделение бэнда, если он не влезает на страницу |
Report Footer:
Наименование свойства | Описание |
---|---|
maxScalePercent | Максимальный процент, на который можно уменьшить бенд, если он не влезает на страницу. Если бэнд даже после сжатия
не влезает на страницу, он будет перенесен полностью или частично – в зависимости от настроек бэнда |
Data:
Наименование свойства | Описание |
---|---|
datasource | Источник данных. Data-бэнд будет сформирован для каждой строки в источнике данных |
keepFooterTogether | Если Report Footer не влезает на страницу, то он будет перенесен на следующую страницу совместно с последним
экземпляром Data-бэнда |
sliceLastRow | Указывает генератору отчетов на то, можно ли разрезать последний экземпляр Data-бэнда или его нужно перенести
целиком |
SubDetail:
Наименование свойства | Описание |
---|---|
datasource | Источник данных. SubDetail-бэнд будет сформирован для каждой строки в источнике данных |
SubDetailHeader, SubDetailFooter:
Наименование свойства | Описание |
---|---|
printAlways | Печатать, даже если SubDetail пустой |
GroupHeader:
Наименование свойства | Описание |
---|---|
groupFieldName | Поле, по которому осуществляется группировка. Экземпляр GroupHeader будет формироваться при смене значения в этом поле |
6.14.3.3 Изображение
Элемент для вывода изображений:
Наименование свойства | Описание |
---|---|
autoSize | Подгонять размер под размер изображения |
borders | Границы |
content | |
datasource | Источник данных |
field | Поле данных |
geometry | Размер и расположение |
image | Изображение |
itemLocation | Расположение объекта (страница или бэнд) |
objectName | Имя объекта |
stretchToMaxHeight | Устанавливать значение высоты самого высокого объекта на бэнде |
6.14.3.4 Фигура
Элемент для вывода фигур:
Наименование свойства | Описание |
---|---|
borders | Границы |
geometry | Размер и расположение |
itemLocation | Расположение объекта (страница или бэнд) |
lineWidth | Толщина линии |
objectName | Имя объекта |
opacity | Прозрачность |
penStyle | Стиль линии |
shape | Фигура |
shapeBrush | Стиль заливки |
shapeBrushColor | Цвет заливки |
shapeColor | Цвет фигуры |
stretchToMaxHeight | Устанавливать значение высоты самого высокого объекта на бэнде |
6.14.3.5 Горизонтальная компоновка (Layout)
Элемент, позволяющий объединять несколько элементов в группу:
Наименование свойства | Описание |
---|---|
borders | Границы |
geometry | Размер и расположение |
itemLocation | Расположение объекта (страница или бэнд) |
objectName | Имя объекта |
stretchToMaxHeight | Устанавливать значение высоты самого высокого объекта на бэнде |