Релиз открытой SCADA(Supervisory control and data acquisition) системы версии 0.6.2 является следующим стабилизирующим релизом ветки 0.6.0. В рамках этой версии проделана большая работа по стабилизации и адаптации к практическим задачам.
Данный документ является обработкой(компиляцией) документа <ChangeLog> системы OpenSCADA версии 0.6.2, который призван вкратце и наглядно осветить новые возможности системы OpenSCADA. Детально ознакомиться с изменениями в системе OpenSCADA можно в файле ChangeLog из пакета дистрибутива системы или здесь: http://wiki.oscada.org/Works/ChangeLog.
Ключевыми особенностями данной версии являются:
Повышение стабильности, устойчивости и производительности системы.
Усовершенствование и стабилизация СВУ.
Общесистемные расширения.
Усовершенствование части модулей подсистемы "Сбор данных".
Новые и обновленные модули:
Archive.FSArch (1.0.0) - Исправление деградации производительности при большом количестве файлов архива. Интеграция механизма глобального контроля за модификацией. Чистка исходного кода.
Archive.DBArch (0.7.0) - Интеграция механизма глобального контроля за модификацией. Чистка исходного кода.
DB.MySQL (1.4.0) - Адаптация к последним версиям MySQL. Добавление всплывающей подсказки по формату адреса БД. Интеграция механизма глобального контроля за модификацией. Чистка исходного кода.
DB.SQLite (1.4.0) - Добавление всплывающей подсказки по формату адреса БД. Интеграция механизма глобального контроля за модификацией. Чистка исходного кода.
DB.FireBird (0.8.0) - Добавление всплывающей подсказки по формату адреса БД. Интеграция механизма глобального контроля за модификацией. Чистка исходного кода.
DB.DBF (1.9.0) - Добавление всплывающей подсказки по формату адреса БД. Интеграция механизма глобального контроля за модификацией. Чистка исходного кода.
DAQ.BlockCalc (1.1.0) - Унификация функции копирования элементов. Замена механизма синхронизации БД на стандартный. Добавление всплывающей подсказки по формату атрибутов параметров DAQ. Стабилизация модуля. Интеграция механизма глобального контроля за модификацией. Чистка исходного кода.
DAQ.DiamondBoards (1.1.0) - Стабилизация модуля. Интеграция механизма глобального контроля за модификацией. Чистка исходного кода.
DAQ.JavaLikeCalc (1.2.0) - Переписан механизм работы с целыми для приведения основных числовых операций в вещественную форму. Интеграция с глобальным механизмом копирования элементов. Стабилизация модуля. Интеграция механизма глобального контроля за модификацией. Чистка исходного кода.
DAQ.SNMP (0.3.2) - Стабилизация модуля. Интеграция механизма глобального контроля за модификацией. Чистка исходного кода.
DAQ.LogicLev (0.9.1) - Стабилизация модуля. Интеграция механизма глобального контроля за модификацией. Чистка исходного кода.
DAQ.ModBus (0.9.0) - Значительное расширение функциональности. Стабилизация и оптимизация модуля. Интеграция механизма глобального контроля за модификацией. Чистка исходного кода.
DAQ.Siemens (1.1.0) - Добавлена поддержка протокола ISO_TSAP (ProfiNet) посредством библиотеки Libnodave. Стабилизация модуля. Интеграция механизма глобального контроля за модификацией. Чистка исходного кода.
DAQ.System (1.6.1) - Стабилизация модуля. Интеграция механизма глобального контроля за модификацией. Чистка исходного кода.
DAQ.Transporter (0.3.2) - Стабилизация модуля. Интеграция механизма глобального контроля за модификацией. Чистка исходного кода.
Transport.Sockets (1.3.5) - Добавление всплывающей подсказки по формату адреса входящего и исходящего сокетов. Стабилизация модуля. Интеграция механизма глобального контроля за модификацией. Чистка исходного кода.
Protocol.HTTP (1.3.2) - Чистка исходного кода.
Protocol.SelfSystem (0.8.0) - Добавлена компрессия трафика, а также возможность формирования прямых запросов без подключения. Стабилизация модуля. Чистка исходного кода.
Special.FLibComplex1 (1.0.2) - Интеграция механизма глобального контроля за модификацией. Чистка исходного кода.
Special.FLibMath (0.5.1) - Интеграция механизма глобального контроля за модификацией. Чистка исходного кода.
Special.FLibSYS (0.6.1) - Интеграция механизма глобального контроля за модификацией. Чистка исходного кода.
Special.SystemTests (1.3.6) - Интеграция механизма глобального контроля за модификацией. Чистка исходного кода.
UI.QTStarter (1.5.1) - Стабилизация модуля. Интеграция механизма глобального контроля за модификацией. Чистка исходного кода.
UI.QTCfg (1.6.0) - Добавлена функция унифицированной загрузки и сохранения. Добавлена функция унифицированного копирования. Добавлены действия над объектами прямо в дереве навигации. Добавлен контроль за модификацией и предупреждение при выходе. Стабилизация модуля. Чистка исходного кода.
UI.VCAEngine (0.7.0) - Реализован механизм сигнализации и уведомления. Пересмотрен механизм разделения прав пользователей. Стабилизация и оптимизация модуля. Интеграция в глобальный механизм копирования. Реализован механизм отложенного удаления. Интеграция механизма глобального контроля за модификацией. Чистка исходного кода.
UI.Vision (0.7.0) - Значительное усовершенствование примитива "ElFigure". Усовершенствован механизм слежения и предупреждения о модификации. Добавлен кеш ресурсов. Унифицирован механизм разделения пользовательского доступа. Добавлена поддержка механизма сигнализации и уведомления. Стабилизация и оптимизация модуля. Чистка исходного кода.
UI.WebVision (0.4.0) - Реализация активного режима работы примитива "ElForm". Добавление обработки событий клавиатуры и мыши. Добавление поддержки фокуса. Чистка исходного кода.
1. Повышение стабильности, устойчивости и производительности системы.
В процессе работ над данной версией, а также её практической адаптации, было обнаружено и исправлено около полторы сотни ошибок. Порядка четверти сотни из них было обнаружено благодаря пристрастному тестированию Попковым Алексеем и около десятка Андреем Калитой. Подавляющее большинство ошибок было обнаружено в компонентах среды визуализации и управления.
Кроме исправления множества ошибок была проделана работа по оптимизации различных компонентов OpenSCADA. Особенно заметной оптимизации подверглась среда визуализации и управления (СВУ) и её визуализаторы. Основным вектором в оптимизации была оптимизация на производительность, вопросы которой начали всплывать по мере роста нагрузки на систему.
2. Усовершенствование и стабилизация СВУ.
В процессе работы с системой OpenSCADA было внесено множество улучшений и оптимизаций в СВУ и её визуализаторы.
Рассмотрим важные улучшения:
Реализация механизма сигнализации и уведомления. Реализована поддержка трёх способов уведомления: визуальная, сигнальная и речевая. В целом механизм интегрированный в концепцию СВУ не является фиксированным и позволяет реализовывать сигнализацию по различным пользовательским критериям, а не только по традиционным для автоматизированных систем управления технологическими процессами (АСУ ТП) критериям.
Для упрощения работы с инспектором атрибутов были добавлен предосмотр шрифтов, изображений и цвета, а также диалоги прямой их модификации.
В примитив "ElFigure" добавлены:
Поддержка заливки замкнутых контуров цветом и изображением. Поддерживается так-же заливка полупрозрачными цветами.
Добавлена функция копирования внутри примитива. Эта функция позволила упростить задачу создания больших статических изображений внутри одного виджета.
Добавлена поддержка масштабирования толщины линии и бордюра по минимальному масштабу по x и y. Сделало процесс масштабирования более адекватным и позволило перерисовать многие элементы с использованием простых линий.
Унифицирован и полностью реализован в Vision механизм разделения прав пользователей. В результате чего добавлена возможность смены пользователя в режиме исполнения с отслеживанием смены прав доступа на отдельные компоненты. Данная работа сделала реальностью возможность формирования пользовательских интерфейсов с разделением прав доступа к отдельным элементам между ними.
Добавлена поддержка автоматического скролинга в контейнерах. Сделано для возможности размещения и адекватного представления больших кадров на пользовательских интерфейсах.
Реализован кеш ресурсов. Призван повысить производительность на высоко-динамизируемых кадрах с часто меняемыми ресурсами в виде изображений и других сущностей.
Важные оптимизационные улучшения визуализатора СВУ - Vision:
Скрытие страниц на момент загрузки с уведомлением о загрузке в режиме исполнения. Делает интерфейс более понятным и убирает вопросы при достаточно продолжительном открытии больших кадров.
Оптимизация операций перемещения и изменения размеров виджетов. Повысила реактивность интерфейса в режиме разработки.
Оптимизирован механизм хранения индивидуальных данных примитивов. Позволила достичь сразу двух целей, первой цели - оптимизации использования памяти и второй цели - повышения производительности формирования примитивов интерфейса.
Выполнена оптимизация удаления и копирования-вставки больших групп виджетов в режиме разработки. Позволило значительно ускорить групповые операции над виджетами в процессе создания высоконагруженных кадров.
Операция выделения мышью и прямоугольником оптимизирована по времени. Теперь на не быстрых вычислительных системах не приходится ждать обновления диспетчера атрибутов после нажатия кнопки мыши с целью выделения группы виджетов прямоугольником, событие выбора елемента генерируется по отпусканию мыши
Выполнены значительные расширения WebVision. А именно:
Все представления примитива елементов формы (FormEl) стали активными, что позволяет формировать формы взаимодействия с пользователем через Web-интерфейс.
Реализована поддержка фокуса мышью и частичная поддержка клавиатурного фокуса. Добавило возможность построения полноценных интерфейсов визуализации с навигацией и управлением.
3. Общесистемные расширения.
В ядро системы OpenSCADA были внесены некоторые изменения расширяющего характера. Перечислим их:
Внедрение механизма глобального контроля за модификацией объектов динамического дерева и, как следствие, добавление возможности избирательной загрузки и сохранением отдельных объектов в ветвях динамического дерева. В язык контроля и управления OpenSCADA добавлены команды для отслеживания состояния модификации ветвей и отдельных объектов, а также для их сохранения и загрузки. Этот механизм был внедрён в QTCfg и Vision, что дало возможность пользователю контролировать изменения и избегать потери данных.
Создан унифицированный механизм копирования объектов динамического дерева. Команды этого механизмы были добавлены в язык контроля и управления OpenSCADA. На основе этих команд в конфигураторе QTCfg были реализованы функции прозрачного копирования объектов в дереве навигации.
Реализован механизм отложенного удаления объектов динамического дерева. Механизм предназначен для обеспечения возможности отката операции удаления и использован для объектов движка среды визуализации и управления (СВУ).
Добавлены функции компрессии с использованием библиотеки ZLib. На основе этих функций была реализована упаковка трафика протокола "SelfSystem".
Расширения языка контроля и управления:
Унификация интерфейса создания и удаления объектов в узлах динамического дерева. На основе этого механизма в QTCfg добавлена функция добавления и удаления элементов дерева объектов прямо в дереве навигации.
Добавлен атрибут для размещения сопроводительной помощи (атрибут "help" полей "fld"). Использован в конфигураторе QTCfg для создания всплывающих подсказок.
Добавлена поддержка элементов статического списка, который призван упростить работу со статическими списками в интерфейсе.
Добавлен общий интерфейс для предоставления возможности выбора БД. Предназначен для простой и унифицированной, с всплывающей помощью, интеграции комбо-бокса выбора БД в объекты этого требующие.
Выполнена адаптация для сборки на компиляторе gcc версии 4.3 и в окружении дистрибутива Mandriva 2008.1.
Выполнена адаптация к особенностям новой версии библиотеки QT 4.4.
Для более гибкого контроля за особенностями установки библиотеки QT в скрипт конфигурации был добавлен параметр "--with-qt4-dir=DIR", позволяющий указывать место расположения инсталляции QT.
Выполнена общая чистка исходного кода проекта от избыточных пробелов и отклонений в стиле оформления.
4. Усовершенствование части модулей подсистемы "Сбор данных".
Значительному усовершенствованию подверглись модули источников данных "DAQ.Siemens", "DAQ.JavaLikeCalc" и "DAQ.ModBus".
В модуль "DAQ.Siemens" добавлена поддержка протокола ISO_TSAP посредством библиотеки Libnodave. Это позволило получить доступ к широкому спектру контроллеров фирмы Siemens посредством сети ProfiNET.
Язык высокого уровня модуля "DAQ.JavaLikeCalc" был расширен операторами побитового сдвига, а в последствии был переписан механизм обработки числовых значений. В результате базовые операции переведены на работу только с вещественными, что устранило неопределённости в синтаксисе, часто приводящие к потере знака вещественных чисел.
В модуль "DAQ.ModBus" было внесено множество изменений. Подавляющее их большинство связано с работами по тестированию Попковым Алексеем. В целом были внесены изменения расширения функциональных возможностей, стабилизации и оптимизации модуля. Рассмотрим их детальнее:
Добавлена возможность установки времени восстановления связи с недоступными контроллерами на последовательных интерфейсах. Используется для уменьшения нагрузки на сеть RS485 за счёт разрежения попыток восстановления связи.
Добавлена возможность установки таймаутов RS485 сети индивидуально для каждого контроллера. Позволяет подключать разнородные контроллеры на последовательную шину и учитывать индивидуальные особенности временных таймаутов контроллеров, оптимизируя производительность сети в целом.
Добавлена поддержка опроса и записи битовых параметров посредством стандартных функций 01 и 05, а также входных регистров (04) и входных битов (02). Таким образом реализована поддержка всех стандартных множеств параметров протокола ModBus.
Добавлен собственный лог протокола обмена. Позволяет решить множество проблем коммуникации путём отслеживания реальных запросов и ответов.
5. Планы дальнейшего развития
К релизу следующей версии запланированы решения таких задач:
Реализация поддержки групповых запросов в язык контроля и управления OpenSCADA и оптимизация на его основе сетевых коммуникаций различных подсистем OpenSCADA.
Разработка и реализация концепции примитива СВУ "Document" предназначенного для формирования отчётной документации.
Миграция модуля конфигурации системы OpenSCADA UI.WebCfg на динамический интерфейс DHTML.
Реализация безопасного транспорта на основе OpenSSL.