SCADA, АСУ ТП, контроллеры – основная тематика журнала «ИСУП»
Журнал «Информатизация и Системы Управления в Промышленности» публикует тематические материалы посвященные SCADA, АСУ ТП, контроллерам, автоматизации в промышленности.

Расширения ISaGRAF 5: инновационные функциональные возможности, производительность и открытость

В статье дается обзор фундаментальных и разноплановых расширений целевой задачи ISaGRAF 5, реализованных специалистами компании ­ФИОРД, которые  существенным образом расширили функциональные возможности ISaGRAF, увеличили производительность и детерминизм. Эти расширения ISaGRAF 5 открывают путь для дальнейшего развития системы в соответствии с реальными запросами пользователей за счет использования открытых и детально документированных интерфейсов. Базисом для расширений ISaGRAF 5 является инновационная версия целевой задачи – ISaGRAF 5++ ACE Target.

Компания «Фиорд»,  г. Санкт-Петербург

fiord.jpg


ISaGRAF 5++ ACE Target – базис для расширений 

ISaGRAF 5++ ACE Target – это существенно переработанная специалистами компании «Фиорд» стандартная целевая система от ICS Triplex. Переработка исходного кода целевой системы заключалась в первую очередь в использовании библиотеки АСЕ (Adaptive Communication Environment) для реализации системного уровня. Это обусловило перенос исходного кода целевой системы ISaGRAF 5 в среду компилятора языка С++ и абстрагирование от особенностей работы с различными операционными системами. Что же в результате получилось? Удалось устранить различные «паразитные» задержки и обеспечить время исполнения задачи в рамках одного цикла в режиме «Реальное время» от 5 мкс, повысить стабильность цикла с заданным временем исполнения.

Библиотека ACE появилась в ходе исследовательской деятельности и научных разработок д-ра Дугласа С. Шмидта в Калифорнийс­ком университете в Ирвине, направленных на проектирование шаблонов, представление и анализ объектно-ориентированных технологий, способствующих развитию высокопроизводительных, распределенных вычислительных систем реального времени. Результатом работы стала библиотека ACE – мощный инструментарий, предназначенный для создания сложных многоплатформенных коммуникационных приложений. ACE свободно используется для любых приложений, в том числе коммерческих, без каких-либо лицензионных соглашений. ACE широко применяется во всем мире, а также является одной из самых переносимых C++ библиотек, она поддерживает десятки платформ и продолжает развиваться. Поскольку все системно-зависимые функции были заменены соответствующими вызовами функций библиотеки ACE, исходные тексты целевой системы являются едиными для разных операционных систем. К настоящему времени выполнено портирование и тестирование новой целевой платформы ISaGRAF для следующих ОС: Linux, QNX 4.25, QNX Neutrino, Windows XP, Windows CE, FreeBSD, OpenSolaris. ACE предоставляет возможности, которые могут быть использованы для создания эффективных пользовательских драйверов устройств ввода/вывода, встроенных функций и функциональных блоков. Также оказывается простым перенос с платформы на платформу драйверов протоколов, использующих стандартные коммуникационные устройства (RS-232, Ethernet, USB), поскольку это не требует изменения исходных текстов драйверов – достаточно простой перекомпиляции.

ISaGRAF 5++ ACE Target является инвариантным к платформе – все конечные исполнительные системы имеют одинаковые возможности и единое описание в среде ISaGRAF Workbench, т.е. перенос существующего проекта на конфигурацию с другой ОС не потребует его перекомпиляции. 


Система быстрого доступа к данным (FDA,Fast Data Access) 

Одной из наиболее интересных составных частей исполнительной системы ISaGRAF 5++ ACE Target является система FDA – Fast Data Access, предназначенная для доступа к данным реального времени исполнительной системы ISaGRAF 5++ ACE Target по запросам от OPC-сервера FDA-OPC. Под данными реального времени здесь понимаются текущие данные ISaGRAF на момент получения запроса на их выдачу. Система FDA состоит из двух частей:

1_Исполнительная подсистема ISaGRAF Fast Data Access (ISaFDA) построена на основе технологии ISaGRAF и выполняет функции отслеживания и сохранения значений изменившихся переменных для их чтения и записи по запросам OPC-сервера. Подсистема реализована в виде виртуального устройства ISaGRAF и включает также сервис обработки запросов на выдачу данных и установку новых значений переменных ISaGRAF.

2_Серверная подсистема FDA-OPC – OPC-сервер системы быстрого доступа к данным ISaGRAF. FDA-OPC предназначен для извлечения данных ISaGRAF из контроллера, предоставления доступа к ним по OPC-запросам, а также для установки новых значений переменных ISaGRAF. FDA-OPC исполняется на платформе Windows и соответствует спецификациям OPC DA 2.x, OPC DA 3.x. Настройки OPCсер­вера позволяют одновременно работать с несколькими контроллерами. На работу с конкретным контроллером OPC-сервер настраивается автоматически при указании пути к скомпилированному проекту ISaGRAF, загруженному на целевой контроллер. На рис. 1 представлена общая схема работы системы FDA.

По запросу чтения с рабочей станции модуль fda_serv производит чтение данных из таблицы значений переменных ISaGRAF, формирует ответ и отправляет его обратно на рабочую станцию. Подобным же образом новые значения переменных ISaGRAF записываются в контроллер. Для детальной настройки подсистемы ISaFDA целевая система содержит встроенный набор специальных функций, с помощью которых во время построения проекта определяется список переменных, доступных для чтения. Система FDA позволяет работать с переменными всех простых типов ISaGRAF (кроме типа STRING), включая типы, производные от них (массивы, структуры).

Предлагаются следующие возможности конфигурирования:
- регистрация отдельной переменной ISaGRAF, всех пользовательских переменных указанного типа;
- регистрация по имени переменной, массива целиком либо его части (по элементам);
- регистрация структур (по полям), всех полей сложных структур данных (по элементам);
- задание порога чувствительности, разрешение (запрет) регистрации в каждой функции.

Описанные функции также должны быть использованы только один раз перед началом работы. Развитием возможностей, предоставляемых системой FDA для регистрации, а также отображения переменных ISaGRAF в OPC-сервере FDA-OPC, является новое средство настройки – Конфигуратор FDA. Данное средство позволяет отказаться от использования специальных функций для регистрации переменных при создании проекта, а все действия по настройке целевой системы и OPC-сервера выполнять с помощью единого инструмента. При этом в проекте достаточно лишь подключить устройство «Регистратор переменных». После задания необходимых настроек Конфигуратор FDA создаст настроечные файлы и загрузит их на соответствующие контроллеры, после чего перезапустит в них ресурсы ISaGRAF для вступления в силу сделанных изменений. Это позволяет изменять список регистрируемых переменных без внесения изменений в проект ISaGRAF. Конфигуратор FDA также создает соответствующий настройкам ресурсов список переменных для FDA-OPC, что позволяет отображать в OPC-сервере только зарегистрированные в контроллерах переменные.

Отличительной особенностью системы FDA является то, что регистрируются только изменившиеся значения переменных, а значит, по сети не передается лишняя информация, что позволяет существенно ускорить обмен данными. Значение каждой переменной в таблице сопровождается информацией о ее типе и так называемом виртуальном адресе ISaGRAF. На основании этой информации из символьной таблицы, находящейся в каталоге с проектом Workbench, переменной может быть снова сопоставлено ее имя, что, собственно, и выполняет FDA-OPC.

Представленная на рис. 1 схема описывает работу с одним ресурсом ISaGRAF, при наличии нескольких ресурсов для каждого из них строятся свои таблицы переменных, а утилита fda_serv обращается к нужной таблице в соответствии с номером ресурса, указанным в запросе от OPC-сервера либо другого клиентского приложения. Передача данных осуществляется по запросам FDA-OPC (либо другого приложения) и представляет собой обмен данными по схеме «запрос-ответ» и в качестве протокола передачи данных выбран протокол UDP. Выбор протокола UDP сделан по той причине, что для решения описанной задачи мощные механизмы обеспечения надежности протокола TCP не являются обязательными, к тому же простота реализации протокола UDP позволила сократить время разработки. Поскольку сам протокол UDP не обеспечивает надежность передачи данных, указанный недостаток компенсируется использованием дополнительных механизмов повышения надежности, встроенных в приложения, реализующие обмен данными. Помимо статических таймаутов и повторного запроса данных в случае возникновения ошибок, эти механизмы используют порядковые номера пакетов для гарантии того, что полученный ответ соответствует посланному запросу. Целостность пересылаемых данных обеспечивается за счет поля «длина» UDP-дейтаграмм, а также за счет использования встроенного подсчета контрольной суммы UDP. При поступлении запроса на выдачу данных делается попытка чтения очередной порции данных из таблицы переменных. Объем порции данных может меняться в зависимости от наличия данных в таблице в момент попытки чтения. Максимальный объем данных, выдаваемых за один запрос, определяется настройками утилиты обработки запросов, в параметрах которой определяется максимально возможный размер исходящего буфера UDP. Таким образом, каждый ответ представляет собой один пакет UDP, что исключает необходимость разбивать и вновь собирать пакеты при передаче большого количества данных.

Протокол позволяет работать с данными каждого ресурса исполнительной системы ISaGRAF, функционирующей на контроллере, если для него включен режим регистрации данных. Поскольку протокол UDP не требует установления и разрыва соединения, это позволило значительно повысить скорость передачи данных по сравнению с TCP и существенно упростить подключение. Описание протокола передачи данных поставляется вместе с руководством по системе FDA в составе иструмента разработчика FDA DevKit, что позволяет разрабатывать собственные клиентские приложения, осуществляющие обмен данными с исполнительной системой ISaGRAF 5++ ACE Target.

pic1.jpg

Рис.1. Схема работы системы быстрого доступа к данным FDA



Распределенная система архивирования данных ISaGRAF Archive System (IAS)

Система архивирования ISaGRAF Archive System предназначена для ведения архивов исторических данных на контроллерах с целевой системой ISaGRAF, сбора накопленной информации в единую архивную базу и дальнейшего анализа архивных данных. Система IAS представляет собой 4-уровневый комплекс программных компонент:

- IAS Logger – нижний уровень распределенной системы ведения исторических данных IAS. Предназначен для накопления архивных данных, поставляемых целевой системой ISaGRAF и сохранения их на диске контроллера, а также для обеспечения доступа к сохраненным данным локально либо по сети Ethernet по запросам верхнего уровня. IAS Logger построен на основе технологии ISaGRAF и выполняет функции сохранения данных ISaGRAF в локальном архиве контроллера. Подсистема реализована в виде виртуального устройства ISaGRAF и включает также сервис обработки запросов на выдачу данных и управление архивами, предназначенный для транспортировки данных локальных архивов на сервер по запросам последнего. Настройка подсистемы осуществляется с помощью конфигурационных файлов, содержащих перечень архивируемых переменных и задаваемых для каждого ресурса ISaGRAF. Для каждой переменной может быть задан порог чувствительности для предотвращения записи в архив «дребезга» переменной. Настройки IAS Logger позволяют также ограничивать максимальный размер дисковой базы локального контроллера, при этом по заполнении отведенного пространства новые данные записываются вместо старых. Таким образом, система может хранить актуальные архивные данные, накопленные в течение определенного временного отрезка.

- IAS Configurator – конфигуратор системы архивирования, предназначен для импорта проектов ISaGRAF в базу данных SQL (MS SQL либо PostgreSQL), настройки переменных, подлежащих архивированию, формирования конфигурационных файлов и загрузки их в соответствующие контроллеры. Конфигуратор также создает скрипты, позволяющие автоматизировать процесс выкачки архивных данных из контроллеров и их импорт в базу данных SQL. Программа имеет интерфейс, схожий с интерфейсом программы FDA Configurator. Возможное применение – удаленное конфигурирование системы ведения локальных архивов, удобный сервис для конфигурирования больших систем, замена «ручного» конфигурирования.

- IAS Collector – система сбора архивных данных из контроллеров, запись данных в текстовые файлы или в базу данных MS SQL Server, PostgreSQL. Возможное применение – удаленная выкачка архивов в базу данных, централизованный сбор архивов от различных источников в единую базу данных.

- Integrated Project Designer (дизайнер интегрированных проектов) – информационно-справочная система, включающая паспортизацию технологического оборудования, зданий, сооружений и коммуникаций, а также архивные данные системы IAS, хранящиеся в базах данных MS SQL Server. Служит для анализа архивных данных с привязкой к реальному оборудованию. 

Система ведения архивов может функционировать в двух режимах:
1_Непрерывное архивирование данных в локальном контроллере при периодической транспортировке данных на архивный сервер. В этом режиме пересылаются данные, накопившиеся на жестком диске контроллера с момента последней пересылки.
2_Непрерывное архивирование данных при непрерывной транспортировке данных на архивный сервер. В этом режиме данные забираются непосредственно из буфера ОЗУ, запись на диск происходит лишь в случае отказа сети.

Режим, в котором происходит функционирование системы ведения архивов, определяется количеством переменных, подлежащих архивированию, частотой смены их значений, а также настройками сети передачи и размера буфера ОЗУ.

Архивируемые данные заносятся в буфер ОЗУ и по его заполнении записываются на диск контроллера. Накопленные данные могут быть извлечены из архива контроллера локально (с помощью специального конвертера) либо по сети Ethernet (используя механизм удаленного доступа). Каждое значение переменной в архиве сопровождается временной отметкой с точностью до миллисекунды.

Основные свойства системы ведения архивов:
- архивирование только изменившихся переменных и периодическая доставка накопленных данных на архивный сервер;
- архивирование переменных всех простых типов ISaGRAF (кроме типа STRING), включая типы, производные от них (массивы, структуры);
- надежность и высокая скорость передачи данных (до 200 тыс. переменных ISaGRAF в секунду); 
- дистанционное управление локальными архивами и получение статистики о состоянии локальных архивов в реальном времени; 
- непрерывный сбор данных и их архивирование на диске контроллера в случае отказов сети;
- возможность интеграции со SCADA-системами;
- резервирование архивных данных на нескольких архивных серверах.


pic2.jpg

Рис. 2. Схема работы распределенной системы архивирования данных



Система графического интерфейса ISaGUI 

Система ISaGUI предназначена для обеспечения интерактивного графического отображения данных реального времени непосредственно в исполнительной системе ISaGRAF 5++ ACE Target. Система реализована в виде виртуального устройства gui и пакета специальных функций, встроенных в Workbench. Исполнительная система может работать в контроллерах с ОС Linux/ Solaris/FreeBSD/Windows XP. Для проектирования графического интерфейса используется Редактор Графического Интерфейса GLADE (http://glade.gnome.org/) на основе GTK+.

Для детальной настройки системы отображения данных целевая система ISaGRAF содержит встроенный набор специальных функций, с помощью которых во время построения проекта определяется список переменных, отображаемых в Графическом Интерфейсе, и атрибуты отображения. Функции также позволяют задавать порог значения для переменных типа REAL, только при превышении которого значение переменной будет изменено в Графическом Интерфейсе. Также эти функции позволяют определять активные графические элементы и обрабатывать реакции на них в среде Workbench. На рис. 3 показан пример работы целевой системы ISaGRAF с графическим интерфейсом.


pic3.jpg

Рис. 3. Пример отображения мнемосхемы из целевой системы ISaGRAF



Модуль JIT-компиляции для ISaGRAF 5++ ACE Target

Модуль JIT-компиляции для целевой системы ISaGRAF 5++ ACE Target предназначен для ускоренного выполнения фрагментов TIC-кода, путем его преобразования в машинный код процессора (x86), что обеспечивает ускорение работы целевой системы в 3–4 раза. При разработке программы в среде Workbench пользователь должен отметить желаемые фрагменты кода, используя функции compile_begin – начало фрагмента compile_end – конец фрагмента. Количество таких фрагментов ограничено только свободной ОЗУ. При выполнении проекта в целевой системе отмеченные фрагменты компилируются в машинный код процессора (x86) при первом выполнении кода, и при последующих циклах выполняется уже машинный код. В случае некорректной компиляции какого-либо фрагмента функция compile_begin возвращает FALSE, и этот фрагмент впоследствии выполняется обычными средствами ISaGRAF, т.е. без ускорения. Некорректная компиляция возможна в следующих случаях: а) в выделенном фрагменте встретилась TIC-инструкция, не поддерживаемая в настоящий момент в JIT-компиляторе, б) попытка использования вложенных фрагментов для компиляции, например, при вызове из фрагмента функционального блока, в) слишком большой фрагмент для компиляции (код превышает 8 кБ). Этот инструмент главным образом предназначен для ускорения вычисления математических выражений, работы с массивами ускорения циклов FOR, WHILE. Полностью поддерживается работа с типами данных DINT, REAL, LREAL. Для этих типов данных поддерживаются все встроенные функции (abs, sin, log, min, max, ...). Также поддерживаются основные операции для типа BOOL (логические AND, OR, NOT...). Поддерживаются блоки IF, CASE. Частично поддерживается тип STRING, для которого реализована конкатенация строк (+) и присваивание. Поддерживается вызов С-функций, встраиваемых пользователем в целевую систему, при условии использования аргументов вышеперечисленных типов. Поддерживается преобразование перечисленных типов друг в друга (ANY_TO_) и в S TRING (ANY_TO_STRING).


Дополнительные библиотеки функций в ISaGRAF 5++ ACE Target

В состав исполнительной системы входит библиотека функций быстрой обработки данных, позволяющая значительно ускорить обработку массивов вещественных чисел и матриц. Данные функции исполняются в целевой системе со скоростью исполняемого машинного кода и позволяют реализовывать в приложениях ISaGRAF высокопроизводительные алгоритмы обработки массивов данных, необходимые, например, при работе с аудио- и видеопотоками, импульсными формами, регистрируемыми АЦП:

1. Семейство функций Fast_array предназначено для быстрого выполнения математических операций с массивами вещественных чисел и включает в себя следующие функции:
- заполнение массива заданным значением или линейно изменяющимися значениями;
- вычисление суммы, поэлементного произведения или скалярного произведения массивов;
- умножение всех элементов массива на заданное число (масштабирование);
- нахождение суммы элементов, минимального или максимального элемента в массиве;
- копирование содержимого массива в другой массив.

При использовании данных функций операции с массивами вещественных чисел выполняются на порядок быстрее, чем при выполнении аналогичных операций в программе на языке ST.

2. Семейство функций Fast_matrix предназначено для быстрого выполнения математических операций с матрицами и предоставляет следующие возможности:
- обнуление всех элементов матрицы или заполнение матрицы заданным значением;
- вычисление суммы матриц, произведения матрицы на вектор или умножение всех элементов матрицы на заданное число;
- копирование содержимого одной матрицы в другую;
- решение системы линейных уравнений.

При использовании данных функций операции с матрицами выполняются по результатам тестов в 60 раз быстрее, чем при выполнении аналогичных операций в программе на языке ST. Все операции с массивами и матрицами производятся, используя специальные объекты-указатели, представляющие собой структуры определенного вида. Данные объекты-указатели предварительно создаются в словаре переменных Workbench и инициализируются с помощью специальных функций создания массивов и матриц соответственно. Функции создания (инициализации) для каждого желаемого массива или матрицы должны быть вызваны один раз в начале работы, это можно сделать в программе на языке ST, используя переменную типа BOOL в качестве флага, сбрасываемого после выполнения требуемых действий: 
- функции измерения времени с высоким разрешением (микросекунда);
- функции обработки сигналов (FFT, цифровые фильтры) на базе fast_array;
- функции работы с контейнерами С++ (vector, list, hash,bitset);
- функции для работы с COM-портами: открытия, закрытия COM-порта, чтения и записи данных из (в) него, установки сигналов DTR и RTS COM-порта и некоторые другим;
- ПИД-регулятор;
- IODevKit: предоставляет разработчику драйверов возможность использования языка С++ и библиотеки ACE для создания эффективных драйверов устройств и встроенных функций.


Заключение

Расширение целевой задачи ISaGRAF 5 на основе исполнительной системы ISaGRAF 5++ ACE Target предоставляет полный комплекс решений для высокоскоростной обработки, управления и доставки данных на верхний уровень систем АСУ, архивирования и графического отображения данных на уровне контроллера. Базовые возможности ISaGRAF 5++ ACE Target открывают путь для дальнейшего развития системы в соответствии с реальными запросами пользователей за счет использования открытых и детально документированных интерфейсов. На сайтах www.isagraf.ru и www.fiord.com доступны ознакомительные версии исполнительной системы ISaGRAF 5++ ACE Target для различных операционных систем, а также документация и демо-версии различных расширений.


Статья опубликована в журнале «ИСУП», № 2(22)_2009

А.В.Яковлев, технический директор,
 А.В. Липовец, ведущий инженер-программист,
С.В. Золотарев, к.т.н., ведущий эксперт,
компания «Фиорд», г. Санкт-Петербург,
тел.: (812) 323-62-12,  
е-mail: lipovets@fiord.com, zolotarev@fiord.com